作者 | 主题 |
---|---|
WWCWWC 至圣 经验值: 71712 发帖数: 8024 精华帖: 145 |
楼主 2019-01-09 08:09:18
主题:西门子200 smart 与富士温控仪的modbus rtu通讯案例 西门子200 smart 与富士温控仪的modbus rtu通讯案例 今天在整理年底备件库时,发现在备件箱角落中还静静的躺着一块之前用余的工程预料,一块带modbus通讯功能的富士温控仪。该温控仪是之前在300系统工程中应用过,采用的是cp341 modbus通讯的,温控仪订货号:PXR9NEY1-GWM00-C。于是,有了再次拿来做一个200 smart modbus rtu通讯验证的念头。 通讯架构: 一块经济型西门子200 smart PLC,订货号:6ES7 288-1CR60-0AA0,作为modbus rtu主站;温控仪,订货号:PXR9NEY1-GWM00-C作为modbus rtu从站。参考资料:西门子 S7-200 SMART 技术参考 V2.1版本、富士温控仪 MICRO CONTROLLER X COMMUNICATION FUNCTIONS(RS-485 MODBUS)手册英文版。 根据西门子modbus rtu通讯硬件连接要求,集成在plc侧的 RS-485通讯口,其中,3# RS-485信号B,8# RS-485信号A,富士温控仪端子1# RS485信号+,2# RS485信号-,由于是验证,用双绞导线替代屏蔽双绞电缆,相对通讯距离短,未连接终端电阻器。如果实际应用,需要在首站(主站)和末站分别安装100欧姆1/2W电阻器或按具体连接手册安装其它阻值的终端电阻器,目的是消除回波,提高通讯质量。 程序:硬件设置;连接。 1) 利用集成的RS-485作为modbus rtu通讯的主站口,调用modbus rtu主站初始化指令;调用modbus rtu读、写的MSG指令编写主站程序; 2) 将富士温控仪设置为modbus rtu通讯的从站,从站地址设置为1。将温控仪参数:STno设置为1(从站地址);CoM设置为2(无校验);PCoL设置为1(modbus通讯),这些需要与PLC侧通讯参数设置保持一致。 3) 创建一个新项目,编辑modbus rtu通讯程序:参考官方例子或F1帮助。 初始化:通讯频率9600kpbs;无校验;prot0口;超时1000mS,初始化完成标志位M0.0;错误信息MB1。 先试着给富士温控仪写入(SV值),功能码:41003的温度数据设置值: Slave(从站地址):1#地址; RW(读、写):1写数据; Addr:写功能码41003; Count:(写一个字长度的数据)一个word数据(设置SV温度值); DataPtr:(写入数据预先存放地址)VW100中; Done:MSG指令完成标志位; Error:错误信息存放地址字节。 完成后,利用Done位或其它指令关闭MSG指令。 将富士温控仪按通讯要求设置,将用户程序下载到PLC,监控运行状态结果: 一个简单的modbus rtu通讯就这样做好了,有一点意思吧?创建modbus rtu通讯几个需要注意的问题: 1) 硬件连接,西门子200 smart PLC侧集成的RS-485口必须按3+;8-的信号极性连接到从站的通讯端子上,这个必须先看手册的连接图示后确认后再连接,对于有一些从站可能还需要重新断电后,设置参数才能够有效,这点对于刚刚开始做项目的同行可能会疏漏这步。 2) 从站参数的设置,对于有一些从站(第三方从站),必须理解了功能号的具体含义,是读取还是写入参数还是读取、写入共用参数,参数(功能)号是什么及作用,功能号调用是否正确并理解。 3) 编辑程序后下载测试,先看Error错误报警字节的值是否为0,通讯正常时,该错误报警字节应该是0值。“状态图表”中MB2的值为0值,说明通讯正常。 4) 通讯程序中调用的地址及库指令存储V区,注意地址的调用情况,不要重复调用,到时程序出错还是需要自己找出来麻烦的。 一个完整的modbus rtu通讯一般总不至于仅仅只有一条MSG指令吧,那么,modbus rtu的轮询机制是做工程项目的一种“标配”了。Modbus通讯以及优异的经济性,应用于对实时相应要求不高的工程项目中,能够充分体现它的经济性及便利性。 假设,还需要读取P / I的参数呢?刚刚在前不久论坛上讨论比较有热度的轮询话题,modbus rtu通讯的MSG指令错误报警值中的讨论,有网友给出了一个仅仅只调用一个MSG指令,该指令的管脚用变址方式进行,有兴趣的同行可以去看看。链接:http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1533543&b_id=64&s_id=83&num=36#anch。这里列举一个简单的轮询程序吧,轮询机制就是利用上一个MSG的Done(指令完成标志位)触发下一个MSG指令,引成的闭环轮询进行的。 程序: 注意:实际在温控仪上设置的参数,如P = 5.0 ,而PLC实际读取到的是P = 50,如果这个值需要更新或计算,需要根据双方通讯协议内容进行适当的算术运算或用指令转换,以获取真实的实际值,其它富士温度仪参数的读、写仍然可以按类似的步骤进行。 在实际应用中,对于一些常用的仪表参数,需要用SM0.1特殊标志位事先初始化一个相对“标准”的数据,方便用户通过人机界面等工具修改少量的工作参数。 注:富士温控仪modbus 参数手册可以到富士中国官网上注册下载应用。 |
不断攀登 至圣 经验值: 12543 发帖数: 1843 精华帖: 0 |
1楼 2019-01-09 09:11:02
主题:回复:西门子200 smart 与富士温控仪的modbus rtu通讯案例 感谢分享!
邮箱 yongquancun@126.com
|
菜腿骑菜车买菜 至圣 经验值: 13377 发帖数: 644 精华帖: 7 |
2楼 2019-01-09 09:18:14
主题:回复:西门子200 smart 与富士温控仪的modbus rtu通讯案例 "有网友给出了一个仅仅只调用一个MSG指令,该指令的管脚用变址方式进行,有兴趣的同行可以去看看。" 能给个帖子的链接吗?或者给个关键字,好搜索.
菜腿骑菜车买菜
|
WWCWWC 至圣 经验值: 71712 发帖数: 8024 精华帖: 145 |
3楼 2019-01-09 09:18:16
主题:回复:西门子200 smart 与富士温控仪的modbus rtu通讯案例 对于西门子200及200 smart PLC集成的RS-485口,官方实际上已经很目前表明接口针脚的含义。 3#信号的+;8#信号的-,按这个定义连接到其它从站通讯信号端子上,由于是差分方式输出的,所以对信号的极性可能会引起一些不必要的“模糊”概念。 |
WWCWWC 至圣 经验值: 71712 发帖数: 8024 精华帖: 145 |
4楼 2019-01-09 09:21:24
主题:回复:西门子200 smart 与富士温控仪的modbus rtu通讯案例 哦,抱歉,我没有给出链接。 http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1533543&b_id=64&s_id=83&num=36#anch |
黑猫警长W 至圣 经验值: 18377 发帖数: 2409 精华帖: 1 |
5楼 2019-01-09 11:38:11
主题:回复:西门子200 smart 与富士温控仪的modbus rtu通讯案例 实际例子,感谢分享哦! |
2016LWW 侠客 经验值: 926 发帖数: 38 精华帖: 0 |
6楼 2019-01-09 11:42:06
主题:回复:西门子200 smart 与富士温控仪的modbus rtu通讯案例 谢谢分享。。。 |
天芯 至圣 经验值: 18789 发帖数: 2104 精华帖: 0 |
7楼 2019-01-09 11:48:34
主题:回复:西门子200 smart 与富士温控仪的modbus rtu通讯案例 跟着大神学习! |
手机用户20190307492200 游民 经验值: 128 发帖数: 1 精华帖: 0 |
8楼 2019-03-16 17:53:04
主题:回复:西门子200 smart 与富士温控仪的modbus rtu通讯案例 谢谢分享。 |
我爱周末 至圣 经验值: 15669 发帖数: 1493 精华帖: 3 |
9楼 2019-03-20 20:04:15
主题:回复:西门子200 smart 与富士温控仪的modbus rtu通讯案例 @WWCWWC,请教下,是不是带有485接口的仪表都可以做modbus rtu通讯。比如,我手头有个奥托尼克斯TZ4M-14S温控仪,如图 是不是200 smart的com口8脚连温控仪10脚,3脚连温控仪9脚就可以?
期待周末~~
|
WWCWWC 至圣 经验值: 71712 发帖数: 8024 精华帖: 145 |
10楼 2019-03-21 08:04:07
主题:回复:西门子200 smart 与富士温控仪的modbus rtu通讯案例 基本是可以的。 但是,如果这个仪表是支持modbus rtu的,就可以用库指令读、写;反之不支持modbus rtu的,需要自己编辑通讯程序,即自由口通讯了。 通讯接线是你说的是对的。 |
死猫子哈 游民 经验值: 107 发帖数: 6 精华帖: 0 |
12楼 2019-05-15 19:54:25
主题:回复:西门子200 smart 与富士温控仪的modbus rtu通讯案例
你好,请问你的温控仪的SV保持寄存器的功能码是多少,add地址是怎么算的,我有一台RKC的温控仪,引用你的程序,SV功能码是06H,我的地址写的是40006,结果温控仪的SV值直接超过上限报警了,VW100读数有2000多,第一次用modbus,麻烦帮我看一下。
|