说下这个项目:
某扬水站的5台机组的远程控制,有5台智能表,检测5台机组的工作电压,工作电流,有功功率,功率因数等参数
还有5台软起的参数读取,因为怕用485控制软起不可靠,所以只读取软起的工作状态,不知道做过的,有没有知道,用modbus控制好不好用
言归正传
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 从站寄存器地址 可以参考官网的说明,实际这里如果是寄存器操作 40001 400001好像都可以 注意你的设备地址,数据
40001 400001是首地址
Count 要读写的数据个数 这个刚开始很纠结,后来才知道的,新手是不是都纠结这个呀??????
这个是你要读写的数据的个数,特别提醒,这个是字的个数,不是字节的个数,在485协议里可以看看
Dataptr 数据指针,你要读出的数据,和要写会的数据都放在这里
Done 模块读写完成位,也是下一个模块的执行条件,当一个模块读写完成后,尽快的把要采集的数据读出
Error 错误标志位,在程序里用来检测错误,和错误处理
程序说明:
因为还没有调试完,暂时只读了6个从站
首先是初始化modbus 然后读第一个MBUS_MSG 然后读第二个,读完最后一个后,根据条件把数据导出
注意数据导出条件 读完标志位上升沿导出,不加条件,读的数据会窜站
读完数据后,更改从站地址,继续下个从站的读写,一直把所有的都读完。然后,在读首从站 ,从站地址在程序里控制
然后是数据刷新,和总线故障处理
S7200的modbus通讯例程.rar
(32.47 KB, 售价: 1 E币)
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|