在前面的文章中,我们按接口类型列举了AB常见PLC通讯接口上支持的工业通讯协议,对于AB公司来说,自己开发的通讯协议就有好几种,比如DF1,DH485,DeviceNet,ControlNet,EtherNet/IP等,如果只是在这AB的产品之间进行通讯的话,选一种它自己的协议就行,但是如果要连接外部第三方设备,就不得不使用一些其他公司或者工控届通用性较强的协议了,其中modbus协议可以说应用最为广泛。并不是所有的AB产品都会支持Modbus协议,按物理接口来说,多数AB产品上带Rs485接口的一般都会支持ModbusRTU协议,只有Micrologix1400 B系列产品才会支持ModbusTCP协议,当然,CompactLogix和Controllogix系列部分产品通过编写程序也可以支持到ModbusTCP协议,该部分另有文章说明。 本文主要介绍在Micrologix里面使用ModbusTCP协议与第三方设备通讯,此处,Micrologix1400产品既可以作为Master读取其他ModbusTCP节点的数据,也可以作为Slave向其他设备通过ModbusTCP协议提供数据。
小笔记- 当作为ModbusTCP Server(Slave)或者ModbusTCP Client(Master)时,Micrologix1400 PLC最多支持16个连接。
- ModbusTCP功能默认没有启用,需要在ChannelConfiguration里面配置一下。
- 作为ModbusTCP Server时,ChannelConfiguration里面有个Enable Access Control for IP Addre选项,如果不勾选,可以允许任意Client访问。如果勾选,就必须要在下方填写具体的Client IP地址才能允许访问,并且只允许写5个Client IP地址。
- 此处Modbus协议只能传输BOOL类型和INT类型。
- Micrologix1400 PLC 配置完Channel参数后需要将PLC断电重启才能生效。
本文以Micrologix1400 系列1766-L32BWA型号PLC为例,配合modsim软件测试。
先配置好modsim备用
01打开Logix500编程软件,创建一个对应PLC型号的工程,同时可以指定PLC的连接路劲。自定义程序名称,并且点击下方Who Active按钮再弹出框选择Rslinx软件连接的PLC型号。
02双击程序左侧的Channel Configuration菜单,弹出配置画面,选择Channel1(以太网口),勾选ModbusTCP Enable选项,其余默认。
03勾选完ModbusTCP enable后,会在该也上部菜单选项位置多出来一个Channel 1-Modbus选项,点选该选项。
Channel 1-Modbus选项页面为ModbusTCP Server功能的一些参数配置页面,其中Modbus Data Table File Numbers:指定modbus协议里面的数据区对应在该PLC内的内数据文件及位置。0xxx区和1xxx去只能对应填写PLC内BINARY类型的数据文件编号,如3。3xxx和4xxx只能填写PLC内INTEGER类型数据文件的编号,如7。填写之后,该数据文件及作为对应数据区地址区间,其他MobusTCP Client访问时实际访问到的就是这些数据文件。默认地,0xxxx和1xxxx分别有0-255是位地址。3xxxx和4xxxx分别有0-255是INT类型地址。另外,4xxxx后面有个选项Expand,如果勾选了,还可以增加5个数据文件,总共可以达到1536个INT类型的寄存器地址。Enable Access Control for IP Address:选择是否使用下列IP地址作为ModbusTCP的Client。建议不要勾选。
配置完毕点击下方应用并确定。
04作为ModbusTCP Client连接Modsim软件
在Micrologix1400PLC内,需要使用MSG指令配置modbus Client功能参数,并且该MSG指令每次读完后会返回一个完成状态为。另外,我们也可以在程序内使用定时器定时触发该MSG指令执行。程序如下选中DataFile,右键新建一个MSG类型的数据文件,File:默认数字即可,Type:Message,Name:modbus(自定义的)。Elements:改数据文件内包含的Message文件个数,一个MSG指令需要一个Message文件,此时根据需要填写,后期可以修改。其余默认,点击OK创建。
另外需要再创建一个类型为RouteInformation的数据文件,用于存放modbus连接的状态信息。
在LAD里面创建定时器触发MSG程序。
点击程序里面MSG指令的 setup Screen,编辑MSG指令。指令配置页面中,channel:选择本PLC的通讯接口,我们配置的是ModbusTCP协议的通讯,所以选择1-ModbusTCP。选择了1-ModbusTCP后,下面会变成ModbusTCP相关的参数:Modbus Commend:modbus的功能码选择,支持01/02/03/04/05/06/15/16。本次实验我们选择03功能码,读取modsim里面40001-40010地址的数据。Data Table address:使用03功能码时,读取回来的数据存储起始地址,本文设置为N7:0,表示从N7数据文件的第0个INT开始。Size in Elements:数据区文件里面为modbus协议开辟的地址区大小,一般可以设置大点,我测试设置为100,表示N7:0到N7:99之间的地址都用来存储读取回来的数据。在Target Device区域内配置第三方ModbusTCP通讯的参数,此处我们要读取modsim软件。Data table Address:目标modbus协议的起始地址,配合功能码使用,此处输1,下面的Modbus Address会自动变成40001,依次类推。Unit identifier: 这用于识别连接到PLC的远程设备是串口或其他接口。默认值为255。如果目标设备不是网关,请使用此默认值。Modbus Address:自动生成的Modbus协议数据地址。Routing Information File:MSG连接状态信息文件。EtherNetIP Adress:目标设备IP地址,本例中为运行modsim软件的计算机IP地址。Port:默认502即可
配置完成后将程序下载到PLC内,运行PLC。至此,ModbusTCP功能实验完成。
,