Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。
标准的Modbus协议物理层接口有RS232/RE422/RS485和以太网口。
采用Master/Slave(主/从 Client/Server)方式通信。
优点:
公开的协议,完全免费;
简单易用,性能稳定;
广泛的知识资源支持;
缺点:
自适应性差,需合理组态;
通信效率低;
查看1756和1769选型指南文档,确认这两款PLC均支持Modbus TCP协议。
1756 《1756-sg001_-zh-p》
1756-EN2TR模块直接支持Modbus TCP协议,不过需要将硬件升级到5.007及以上。
1769 《1769-sg001_-zh-p》
1769的CPU模块上的以太网口直接支持Modbus TCP协议。
进入罗克韦尔官网下载例子程序 网址
里面包含例子程序和介绍文档
进行1756-EN2TR固件升级,首先上官网下载Firmware 网址
若必要,同时下载AOP和EDS文件。
下载的Firmware文件中包含以下两个文件,双击ControlFLASH.msi进行安装。
安装后打开ControlFLASH软件,即出现1756-EN2TR,此时即可利用该软件进行刷固件。
若需要,也同时安装AOP文件,并导入新EDS文件
准备Modbus测试软件,这里以下面两种为例
查看文档TCP and UDP Port Configuration,确认AB PLC利用Modbus TCP端口号为502(说明:一般Modbus TCP端口号均为502)
PLC作为Slave的通信测试,下载ModbusTCP_Slave_R102.ACD到1756或1769
根据1756-EN2TR所在位置,修改MBTU_EnetModulePort值,本例中位于solt1,所以这里为$01$01,对于1769,为$01$00
之后重新使能Modbus TCP通讯
确认报警信息为0时,PLC端已设置完毕,若不为0,根据文档介绍进行诊断
打开测试软件,以ModbusTCP_Master.exe为例。
输入IP地址及端口号,点击“打开”,接受日志里显示Connected即表示连接成功,之后可选择功能码,点击“读取数据”即可读取到PLC数据。
以“TCP测试工具(客户端模式)”为例,输入本地及远程IP地址及端口号,点击启动。
之后点击MODBUS/TCP,查看具体值。
监控PLC变量,确认变量值是否相等。
PLC作为Master的通信测试,下载ModbusTCP_Master_R102.ACD到1756或1769
根据1756-EN2TR所在位置,修改MBTU_EnetModulePort值,本例中位于solt1,所以这里为$01$01,对于1769,为$01$00
设置要与PLC连接的Slave端IP地址,并使能,主要将不需要连接的从站连接设定MBTU_Connections[x]中使能取消。
进行从站通讯的功能码,通讯地址区间,偏移量等设定。
重新使能Modbus TCP通信功能,判断报警号是否为0。
注意:若以上配置数据更改,必须重新使能MBTU_EnMBTCP才能生效。
这里通过Transaction’s TransLastError and MBTI_ConnLastError可判断当前从站的连接状态。
打开“TCP测试工具(服务器模式)”,输入本地IP地址和端口,点击启动,会自动识别并连接到远程IP地址和端口号,如下图,表示连接成功
点击“MODBUS/TCP”,之后在这个页面设定相关值,如下
监控PLC变量值是否一致