找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
S7-200SMART通过RS485接口读取120个从站的数据,使用MBUS_MSG指令,任何时候只能有一条MBUS_MSG使能有效,涉及的参数有En、First、Slave、RW、Addr、Count、DataPtr等参数:
1、可以使用如SM0.5的脉冲信号使能、触发通信请求(连接En、边沿指令连接First)以保障只有一条MBUS_MSG激活;关于轮询可以参考下午尾末所附例程:
http://www.ad.siemens.com.cn/productportal/prods/s7-200-smart-portal/200smarttop/communication/serial_port/modbus/Master/Master.htm
2、Slave可以是Byte型变量,RW只读可以固定为0,Addr是从站待读取区的首地址,Count读取的寄存器数量。若从只能地址是连续的、而且读取的从站的映射地址及数量是相同的。则可以例用主循环,每次读取1个从站。或者写一个循环读120个站。读一个站Slave对应的变量+1(INC_B指令)
3、DataPtr则是读回来后存在PLC的位置的首地址,显然读不同的从站,这个地址一定要不同,可以使用地址指针如AC0=&VB200或VD1000=&VB200等,由于这是4个字节的指针变量,因此使用INC_DW实现加1.
4、判断120个从站是否读完毕。已遍历完,将Slave、DataPtr指向的变量恢复初值,指向首站。
总结来看,若你的从站地址连续、读取的寄存器空间及其数量相同,则很容采用指针、循环来实现,而不用写120条MBUS_MSG指令
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!