stc12单片机通过串口采集modbus协议的智能仪表
小弟刚入论坛,没有积分,若能解决问题,小弟必有感谢!
自顶一下
那你需要这个电表的MODBUS协议文档。
单片机根据协议文档,通过rs232串口向电表发送modbus指令,然后电表回复你要的数据(比如电阻值)。
两个串口也是一样的原理。
PS:其实1个串口也能采集2个MODBUS设备,因为MODBUS协议中自带地址,1个串口最大支持254个设备。
用一个就可以了,可以设置地址的
大神,这个是协议,能举个例子么
大神可否帮看下5楼的协议
自顶一下
这个没什么难度,首先 你在STC12 上配置好两个串口,然后按照你那个仪表的 MODBUS协议发命令就可以了,MODBUS只是一种通讯协议,无论你使用RS232 还是 RS485 和协议是没有关系的 ,可以看一下我的帖子,有相关MODBUS的资料,你可以先了解一下:http://bbs.elecfans.com/forum.ph ... =1322486&extra=
你上面的那张纸 写的已经很明白了,串口设置为 96 N 8 1 ,十六进制发送:01 03 00 62 00 02 65 D5 ,然后,传感器器就会回复的
好的,我先试一下
这张图片举的例子就很好:
向仪表发送:01 03 00 62 00 02 65 D5
01:设备地址(应该是默认为1)
03:读寄存器命令的功能码
00 62:PV1的寄存器地址(也就是说PV1测量值存在这个地址,命令读取的就是这个地址)
00 02:从0x0062这个地址读取2个字的数据,也就是4个字节的数据(MODBUS一个字等于2字节)。
65 D5:CRC校验码
然后仪表返回:01 03 04 6D 96 49 F3 71 66
01:设备地址(应该是默认为1)
03:读寄存器命令的功能码
04:读命令返回了4个字节的数据
6D 96 49 F3:PV1数据值
71 66:CRC校验码
你需要两个东西:
1.modbus协议文档
2.智能表的数据表
根据modbus文档来写通讯程序,根据智能表的数据表来读取数据、写入数据等操作。