liuchengliaaa 发表于 2015-6-16 09:38:51

发个S7200的modbus通讯例程

第一次做S7200的modbus通讯
程序可能有些混乱,因为之前在网上也搜过一些例子,但都没有详细的说明
在这个例子里,都是自己一步一步的按照官网的例程加上去的,会有详细的解释,供新手参考
说下这个项目:
某扬水站的5台机组的远程控制,有5台智能表,检测5台机组的工作电压,工作电流,有功功率,功率因数等参数
还有5台软起的参数读取,因为怕用485控制软起不可靠,所以只读取软起的工作状态,不知道做过的,有没有知道,用modbus控制好不好用
言归正传
首先是硬件,s7200的485口的接线
先看看200的内部接口,链接在这里
http://wenku.baidu.com/link?url=z5jhcvSG8XurkvF23RRddKLV6adkirkZhpnhkF_w79aqRYewFJxLgRzBcO3MZcdUwbiNMHUJ9xlkGIiPe1nCsT2EGBwdm1KbcRXaazekZOu

PLC那边是母头,这边准备一个9针的公头就可以了3脚是A    8脚是B    2or5是地线,也就是内部的M端子
如果距离近,可以不接地线,有关这个地线怎么的说法很多,有的说可以不接,有的说接地是消除共模电压,打过西门子技术,说是和设备地连一起
度娘了下,也有的说接地了反而不好的,现场实际,我是把所有的地线(注意不是屏蔽哦,是GND)都连一起,不知那种做法好
另外说下,短距离通讯,只要从设备支持,用高点的波特率,提高反应速度西门子技术说:s7200只支持50m的通讯距离,再远了要加中继器
设备上就不说了,就A B GND
还啰嗦一句,从设备的链接不能用星型解法,是一个一个的串联的,手牵手链接

下面是程序了
说说我的方法:
按照官网的例程,是采用的轮询,在初始化后,启动modbus读写,启动后要做循环,就是操作完最后一个读写块后,要重新启动第一个读写块
也就是说,读MBUS_MSG这个模块要一个一个读,官网上说,不能同时执行2个MBUS_MSG读写,启动MBUS_MSG后,第一个读完的完成位是第二个MBUS_MSG启动的条件
第二个MBUS_MSG是后一个的启动条件,最后一个读完后,再启动第一个MBUS_MSG
具体做法看程序,我这里是读的一个从站的2个地址,还有另一个从站的一个地址
在最开始调试的时候,可以用sm0.5这个位作为启动条件,测试一个MBUS_MSG测试硬件是否正常,用状态表监控收到的数据


重点说说这个模块
EN   使能位,这个是模块执行的条件,也是模块的启动条件
Fisrt   模块触发位,上升沿启动模块通讯
Slave   从站地址,这个不用说了吧
RW    读写控制   0读 1写
Addr    从站寄存器地址可以参考官网的说明,实际这里如果是寄存器操作40001400001好像都可以 注意你的设备地址,数据
       40001400001是首地址
Count    要读写的数据个数这个刚开始很纠结,后来才知道的,新手是不是都纠结这个呀??????
          这个是你要读写的数据的个数,特别提醒,这个是字的个数,不是字节的个数,在485协议里可以看看
Dataptr    数据指针,你要读出的数据,和要写会的数据都放在这里
Done    模块读写完成位,也是下一个模块的执行条件,当一个模块读写完成后,尽快的把要采集的数据读出
Error   错误标志位,在程序里用来检测错误,和错误处理



程序说明:
因为还没有调试完,暂时只读了6个从站
首先是初始化modbus   然后读第一个MBUS_MSG    然后读第二个,读完最后一个后,根据条件把数据导出
注意数据导出条件   读完标志位上升沿导出,不加条件,读的数据会窜站
读完数据后,更改从站地址,继续下个从站的读写,一直把所有的都读完。然后,在读首从站 ,从站地址在程序里控制
然后是数据刷新,和总线故障处理

有不通的可以@qq1571746795
程序在这里

aozima 发表于 2015-6-16 09:50:15

前排学习

yylwt 发表于 2015-6-21 11:05:42

不错,支持经验贴

sdxjgby 发表于 2015-6-21 17:12:04

支持,适合初学者。

dongwang_fl 发表于 2015-6-21 18:07:15

我拆过我们的PLC,他的通信线是2根线呢?所有的PLC通过通信线连接,是手牵手的。

dongwang_fl 发表于 2015-6-21 18:08:08

不是拆PLC,是他的通信线。当时是不稳定,拆开发线里面的2根线绞在一起了。

yinhe 发表于 2015-7-19 00:10:25

记录一下

yinhe 发表于 2015-7-19 00:39:50

记录一下

lufcn 发表于 2015-9-22 10:32:59

谢谢楼主分享,很好的资料。
页: [1]
查看完整版本: 发个S7200的modbus通讯例程