通讯材料:
1)、plc2台,分别是200smart 的cr60和sr20;
2)、2个dp插头(6es7972-0bx12-0xa0)
3)、连接导线若干(plc电源及通讯)
验证内容:
令:cr60 plc为主站,发送plc系统时钟(8个字节的信息)给sr20从站;sr20从站发送一个双字的循环移位数据给主站,并由通讯数据vd100接收输出到qd0。
主站程序:
在验证过程中曾经出现一个错误,使msg指令始终显示为6,表示从站无响应。我验证时,由于连接2台plc之间的3+、8-没有确认,造成接线错误,使msg的error错误信息为6,检查后找到原因,重新接线后仍然报警6。最后检查为控制程序不完整,主要原因是没有给mb0一个初始化操作,造成错误值没有得到有效的刷新。于是,在程序段1中加入初始化操作得到解决。
主站msg指令主要理解addr地址的应用,下面有描述。
从站程序: 从站通讯地址设置为1#
从站自vb31开始为读取主站vb11开始的8个字节主站系统时钟数据,指定vb31的起始地址是由addr地址40011定义的,从站循环指令vd11运行结果,将由mbus_init的holdstart定义的起始地址发送和接收。
编写小结:
自简而深进行编写modbus rtu通讯程序,相对从站通讯程序比较简单,仅仅只是指定通讯种类由
mbus_init
管脚指定maxiq/maxai/maxhold/holdstart定义,其它管脚根据主站定义匹配进行,相对主站需要根据从站地址偏移量来确定。
通讯数据:
modbus通讯程序相对的难点是通讯映射的地址关系。
主站读取从站的数据,起始地址是根据从站holdstart管脚定义的起始地址开始算,而不是指从站的v区物理地址。在验证程序中,从站的mbus_init起始地址为vb11,那么,主站msg指令的addr 40001,应该是指从站的vb11地址。
同理,从站读取主站系统时钟,主站的msg指令的addr 40011,对应到从站的地址相当于偏移了10个字(偏移量10word + 11byte = 31byte) ,即为vb31开始的8个字节中存放,modbus通讯地址计算是40001开始的。
兰德麦奈利宣布推出新一代卡车导航设备
基于NOR Flash存储器与MCS-51单片机之间的接口设计
快速、自动化的系统和磁盘映像软件
基因芯片的工作原理及组成_基因芯片可以查哪些病
3A游戏大作怎样能“火力全开”,试试这款海信Hard Plus电竞屏就知道
两台西门子S7-200 SMART PLC通过Modbus RTU协议通讯的流程简析
宁德时代、小米长江产业基金入股杭州芯迈半导体
2019年CES展上 法雷奥将推出其首辆自动驾驶汽车法雷奥Drive4U
什么是IPS-α液晶面板/逐点晶晰技术
360无线产品重返苹果APP store
华为新一代分布式数据库GaussDB向全球客户提供服务
Linux如何安装软件
汽车碳中和,一场不仅关乎CO₂的博弈
智能家居魔镜是如何控制整个家庭的?
增益模块放大器的的工作原理
激光打印机的打印速度
基于DSP的自适应数字抗噪声模块
3G 毫微微蜂窝基站产品的大规模制造测试解决方案
中美严峻局势下 国产FPGA迎来历史性发展机遇
一名软件工程师的必备素质是什么