项目采用的是西门子1214C中插入了CB1241-RS485模块,通讯的对象是一个电能表,采集功率和电能数据。因中间没有通讯成功,使用了一个USB转485通讯线,在电脑上装了MODBUS通讯软件作为从站和PLC进行了测试通讯,接线图如下:
PLC-RS485A--------->电能表RS485B
PLC-RS485B--------->电能表RS485A
接线不要弄错!!!!!!!!!!!
首先是PLC端,组态CB1241模块后设置波特率、奇偶校验、数据位和停止位。
电能表参数需和以上参数一致,电能表的从站地址为001,如下图,
PLC的MODBUS-RTU通讯有两个,新版比旧版多出一些功能,但对于本项目来说都可以使用。
首先初始化MODBUS通讯端口
其次是进行主站通讯,因本项目需要2个MODBUS地址位置不同的数据,采用了两个主站块进行轮询。程序如下:
因本项目需要采集电压功率数据,电能表的电压MODBUS地址为2000H(16进制),转换为十进制为8192,在加上西门子MODBUS的偏移量40001,所以要写入的地址为48193,
以上完成了和电能表的MODBUS通讯。
用电脑测试软件作为MODBUS从站和PLC通讯,可用来查找通讯不正常的原因。下载地址为Modscan和Modsim 两种Modbus调试工具使用说明-CSDN博客中。
采用了USB转RS485
接线图如下,1接PLC-RS485B,2接PLC-RS485A
首先把串口连接电脑,在设备管理器中查看串口对应的端口号,本机是COM4口。打开Modsim32软件,点击“连接设置”->“连接”->“端口4”,设置如下参数与PLC一致后确认。
点击文件-->新建,如下图设置
双击地址下的数据,就是为PLC主站读取PC测试软件从站的数据
将PLC程序DATA_ADDR修改为40001,长度为6,就可在DB23数据块中读到测试软件中的数据。