[西门子] Logix5000使用ModbusTCP通讯之master(含例程下载)

[复制链接]
查看70900 | 回复0 | 2024-1-24 10:01:38 | 显示全部楼层 |阅读模式

JZGKCHINA工控技术分享平台

尊重原创 勿抄袭

勿私放其他平台



以前,AB的PLC本身都是不支持ModbusTCP通讯的,所以很多使用AB PLC的用户都需要配第三方的协议转换网关将ModBusTCP协议转换为AB自己的EthernetIP协议。

可是,从Logix5000编程软件15版本(实测20版本及以上)以后,对于CompactLogix和Controllogix系列的PLC,支持了使用PLC程序编写出来的ModbusTCP协议通讯,目前来看,支持该通讯的协议的产品和版本主要有:



以上产品刷对应固件后即可支持ModbusTCP协议,并且可作为Master和Slave与其他第三方设备进行通讯,AB官方提供的例程分为Master和Slave两部分,可按需分别使用。Master功能部分可能会占用PLC内200-230K的存储空间,Slave功能部分可能会占用PLC的280-300K空间。


关于例程下载地址的获取,请关注“剑指工控“微信公众号后,添加管理员,加入剑指工控微信群后获取。





注意事项

    此示例代码可能不适用于所有应用程序,示例代码会消耗的控制器内存、资源、CPU带宽和控制器缓冲区,这可能会影响用户程序的其余部分。确保在使用Modbus代码之前考虑了使用Modbus代码的影响。

    该例程支持的Modbus协议功能码有 01,02,05,15,03,04,06,16

    该例程内默认支持访问4个不同IP地址ModbusTCP设备。每个连接支持最多5个操作(读取或者写入指令)。每个操作支持最多120个地址(Registers或者Coils)。最大本地地址范围为1024个Coils和DiscreteInput,240个Registers和InputRegisters。



开 整

先说Master

例程的使用

获取到ModbusTCP通讯例程后,有三种使用方法,

    一种是直接使用Logix5000编程软件打开后缀为.ACD的程序文件,在该例程基础上编写你的其他程序。

    第二种办法就是将该例程导出为L5X格式的文件,再导入到你已经使用的程序中。

    第三,下载ModbusTCP的AOI块导入到你的程序中。此处我们以第二种方法为例说明。


1、将ModbusTCP程序导出

使用Logix5000软件打开例程的ACD文件后,点击Task里面的程序名,右键,导出(Export Program),然后使用默认的名字即可。





记住保存的位置。

2、程序导入

打开你的程序,将刚才导出的文件导入到你的程序里面。(20及以后版本软件可以在线导入,不会导致PLC停机)







导入完成后会在Task里面看到ModbusTCP通讯程序。导入进来后是一个单独的Task,与原有的MainProgram平级的,所以不需要调用。导入的程序部分也不需要修改。



然后可以看到在程序的标签库里面自动创建了很多标签,所有的配置都在这些标签里面进行。



为了实际测试效果,我们在这个计算机上运行Modsim软件模拟一个ModbusTCP Server,提供一些数据。模拟了40001-40010共10个数



3、标签库内ModbusTCP的配置

该例程是作为Master功能,所以,在ModbusTCP协议里面,我们需要进行常规的设置,如,目标主机IP地址和端口,功能码,目标主机数据起始地址,读取数量,本地数据区起始地址等。

注意事项:
针对不同的PLC型号,MBTU_EnetModulPort参数需要设置为不同的内容,如下表


除此之外,还需要设置如下表所示的标签。



上表标签在程序里如下位置





上表标签在程序里如下位置



对于一个具体指令操作来说,需要设置如下标签。(指令操作就是我们常说的使用功能码读取或写入那个地址)



上表标签在程序里位置如下



小笔记:
每次修改完modbus通讯参数后,请手动将ReqBuilt标签值置0,意为重新使能该命令。

至此,通过ModbusTCP协议读取第三方设备数据配置完毕,读取回来的数据在MBTU_M4xx这个数组里面显示,如下图



根据之前配置的不同的功能码读取回来的数值就存储在对应的数据区内。

类似地,我们可以配置通过modbusTCP协议从PLC内写数据到第三方设备,与读取稍微不同,写入时会将MBTU_MB_0xx、MBTU_MB_4xx、数据区内相应的数据写入到对端,ModBus协议支持单个写和连续写功能码,分别05/15写单个、多个线圈、06/16写单个、多个保持寄存器。

小笔记:
读取和写入的数据区需要提前规划好,不能重叠。比如使用40001-40050作为读取回来的数据存储区,40051-40099作为写数据到对端数据区。
我们以16功能码为例测试,将40006-40009连续写4个数据到modsim

程序配置如下:





实际效果如下





至此,在Logix5000内使用ModbusTCP协议程序实验完毕。

有兴趣的同学可以考虑如果要传输浮点数时,应该注意那些地方






思考

未完待续:Logix5000使用

ModbusTCP通讯之Slave

往期精选











人气推荐

more+











1.Smart200&V90伺服系统:已更新15课

2.贝加莱直播课程:已更新16课

3.力控科技产品培训:已更新5课
4.剑指工控经典公开课:已更新22课5.新品推荐:已更新3课
6.专家课堂:已更新12课

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则