一、PLC本体的IP地址设置
首先需要确认一个概念:PLC本体网口只有一个IP,无论使用什么功能都是共用一个IP。
图1
二、ModbusTCP从站功能
三菱iQ-FX5U系列,通过参数设置即可实现从站功能的启用,无需编写程序。
1)在对象设备连接配置设置中添加“Modbus/TCP连接设备”这个时候作为从站默认端口是502。
记得点击“反应设置并关闭”
图2
注意:如果需要添加多个从站连接,这个时候我们从以太网设备(通用)中添加多个“Modbus/TCP连接设备,这时候选择的端口号都是502,但是不会发生冲突。系统会自动分配好每一个连接的设备。
2)在保存后可以看到“Modbus/TCP使用有无显示启用,点进详细设置可以看到对应的Modbus地址
图3
3)写入参数,重启设备,本体的ModbusTCP从站就启动了。
三、ModbusTCP主站功能
三菱的PLC做ModbusTCP主站功能一般通过程序实现,需要用到“通信协议支持功能”。
1)在对象设备连接配置设置中添加“Active连接设备”选择“通信协议”,需要填写本机的端口号,对方IP以及对方端口号(图4)。其中本机端口号需要注意不要使用系统默认已经分配的端口。(图5)
active设备是指主动发起连接的设备
【记得点击“反应设置并关闭”】
2)打开“通信协议支持功能”,选择CPU(以太网),并新建,添加协议,选择ModbsuTCP,选择功能码。(图6-图7)
3)红色字“变量未设置”意思为:没有对这个连接协议分配对应的软元件用来写参数和数据存储用。可以右键“软元件批量设置”,占用其实软元件后一部分用作通讯协议用。(图7)
4)分配好后可以点进去看分配的每个软元件对应的定义,现在以03功能码D400做起始地址,对主要用到的寄存器做说明,后面一些储存报错信息的寄存器可以点开变量设置查看。(图8)
D400:握手ID,如果是本体以太网口,握手ID就是0,模块就不是0
D401:从站站号
D402:03功能码对应就是读取的寄存器起始Modbus地址
D403:读取的点数(寄存器数)
D406~D531:储存读取到的数据(注意!,D406保存的是数据的个数(数据长度),D407开始才是数据内容)
5)编辑好后通过在线、写入模块,将这部分内容写入PLC
(这部分通信协议编辑,保存的时候是一个独立的文件,与Works3文件独立,需要注意关闭这个窗口前记得保存)
6)在程序中建立连接、调用通信协议。
①建立连接,使用SP.SOCOPEN指令,对应关闭连接使用SP.SOCCLOSE指令
SP.SOCOPEN的第一个操作数没有实际意义,按照说明填写“U0”即可;
S1:连接编号对应图4中的连接编号;
S2:对应OPEN指令的一些参数占用10个寄存器,其中如果我们在图4中做了参数设置,我们只需要把参数首地址置位0,就可以调用设置好的参数。
其中,SD10680,SD10681是通信打开和请求标志位,在这两个标志位都没有导通的情况下我们才执行建立连接的动作。
②通过SP.ECPRTCL指令调用预先设置好的通讯协议。
其中
S1 的连接编号是指图4中的连接编号
S2 连续执行的协议数是指中S3+2开始的“执行协议编号指定”,如果只有1个就写K1,并且给S3+2赋值需要执行的协议,对应的是图8中的协议编号。
下面是通信协议触发示例
SP.ECPRTCL的第三个操作数为k1,对D202赋值1,表示执行且只执行通信协议1。
D402赋值k10,D403赋值K4,表示从 从站保持寄存器的10地址开始读取,读取4个寄存器。
在触发后,我们可以在D407开始的4个寄存器看到读取到的值。
通讯关闭的部分我们不做讲解,有需要可以配合下列手册进行编程
FX5编程手册(指令/通用FUN/FB篇)
附图:
图4
图5
图6
图7
图8