签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
西门子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 参数手册可以到富士中国官网上注册下载应用。
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1535638&b_id=64
感谢分享!
"有网友给出了一个仅仅只调用一个MSG指令,该指令的管脚用变址方式进行,有兴趣的同行可以去看看。"
能给个帖子的链接吗?或者给个关键字,好搜索.
对于西门子200及200 smart PLC集成的RS-485口,官方实际上已经很目前表明接口针脚的含义。
3#信号的+;8#信号的-,按这个定义连接到其它从站通讯信号端子上,由于是差分方式输出的,所以对信号的极性可能会引起一些不必要的“模糊”概念。
哦,抱歉,我没有给出链接。
http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1533543&b_id=64&s_id=83&num=36#anch
实际例子,感谢分享哦!
谢谢分享。。。
跟着大神学习!
谢谢分享。
@WWCWWC,请教下,是不是带有485接口的仪表都可以做modbus rtu通讯。比如,我手头有个奥托尼克斯TZ4M-14S温控仪,如图
是不是200 smart的com口8脚连温控仪10脚,3脚连温控仪9脚就可以?
基本是可以的。
但是,如果这个仪表是支持modbus rtu的,就可以用库指令读、写;反之不支持modbus rtu的,需要自己编辑通讯程序,即自由口通讯了。
通讯接线是你说的是对的。
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录