Modbus TCP 从站:IP 地址的动态设置


此处使用 FAQ Modbus Communication Master/Slave via Ethernet中的 Modbus 从站。

  • 创建“标准项目”并选择 CODESYS Control Win V3 作为设备。
  • 通过网络扫描定义目标系统。

图1

  • 在设备树中插入以太网适配器并指定要使用的接口。

如果尚未定义目标系统,则会显示错误消息“未配置网关”。

图2

在设备树中的以太网适配器下方 插入一个Modbus TCP Master 。 在设备树中的 Modbus TCP Master 下方 插入一个 Modbus TCP Slave 。

图3

请注意地址与 Modbus 从站设备的地址相同。

  • 修改 PLC_PRG如下:

声明

VAR
    xUpdate        :    BOOL;   
    sIp            :    STRING;
    udiResult      :    UDINT;
    abyNewIp       :    ARRAY [0..3] OF BYTE := [192,168,99,198]; // Insert here the correct IP-Address of the Modbus_Slave_Device
END_VAR

实现

sIp := IoDrvEthernet.IPARRAY_TO_IPSTRING(Modbus_TCP_Slave.ComSettings.ipAddress);
Modbus_TCP_Slave.xConfirmError := FALSE;

IF xUpdate THEN
    xUpdate := FALSE;   
    udiResult := Modbus_TCP_Slave.UpdateCommunicationSettings(ipAddress := abyNewIp, uiPort := 502);   
    Modbus_TCP_Slave.xConfirmError := TRUE;
END_IF

  • 启动项目后,无法建立连接。

图4

  • 将变量 xUpdate 设置为 TRUE,以便传递新的 IP 地址。

图5

无法重置为无效的 IP 地址。 必须先停用 Modbus 组件。 这是通过“启用”属性完成的,该属性仅在激活设备诊断后可用。