汇川AM403PLC作为ModbusTCP主站通讯实例

AM403作为ModbusTCP主站通讯实例

一、通讯方案实例

 1.客户端/服务端

  客户端和服务端是计算机网络中常见的两种网络设备类型,在工业通信中也称之为主站/从站,它们在网络通信过程中扮演着不同的角色。简单来说,客户端通常在网络中发起请求,而服务端则为客户端提供资源或数据。本例中使用主站/从站来描述这种关系。

   本例以汇川AM403作为ModbusTCP主站,与从站进行数据交互,主站IP设为 192.168.0.10,从站IP设为192.168.0.11。
阅读本博文前请先熟悉汇川中型PLC的编程环境,即 InoProShop。

 2.通讯方案设计

   在从站未指定的前提下实现以下几种通讯方案:
   ● 读取从站输入状态;
   ● 读取从站状态寄存器;
   ● 更新从站线圈;
   ● 更新保持寄存器;
   ● 读取地址连续的混合类型变量(即struct,结构体);
   ● 更新地址连续的混合类型变量(即struct,结构体)。

二、AM403作为Modbus主站的配置过程

 1.将AM403设为主站

  AM403本体带一路EtherNET口(CN3),本例使用该网口作为ModbusTCP通讯口。
  如下图所示展开项目树,从设备树中找到网络组态(或者Network Configuration):
在这里插入图片描述

  双击该节点标题打开网络组态设置界面,在Ethernet选项框中找到ModbusTCP 主站,勾选该复选框,如下图所示:
在这里插入图片描述

 2.给主站添加从站节点

  展开【网络设备列表】中的【以太网口】节点:
在这里插入图片描述
  双击【Modbus_TCP】或拖动【Modbus_TCP】放置到网络组态界面即可添加从站设备,可以添加多个从站。
在这里插入图片描述

 3.修改通讯参数
  • 修改主站通讯参数
     双击设备节点打开设备属性界面,选择【系统设置】选项框:
    在这里插入图片描述

  找到【网络】→【网口0】,在此处的EhtherNet 口地址即是 Modbus TCP 通讯口,将该网口参数设置为工程实际值。

  • 修改从站通讯参数
     找到并展开设备节点下的Modbus TCP主站节点,该节点下挂载了刚才添加的从站设备:
    在这里插入图片描述

  双击从站节点打开通讯设置:
在这里插入图片描述

  在【ModbusTCP从站设置】选项卡里即可设置从站IP等通讯参数,当寄存器SM3001为1时从站被使能。

三、Modbus主站与从站通讯任务配置

汇川AM403通过设置通讯任务而不需要编程即可完成Modbus通讯。

 1.通讯任务设置入口

  汇川中型PLC的Modbus TCP通讯任务是配置在从站节点中的:

  a).找到Modbus TCP主站节点下挂载的从站设备节点:
在这里插入图片描述

  b).双击从站设备打开通讯设置,切换选项卡到【Modbus TCP通信设置】选项:
在这里插入图片描述

  c).点击选项卡最底部的【添加】按钮或者右击选项卡空白处在右键选项卡中选择【添加】,弹出【Modbus 通信设置】页面:
在这里插入图片描述
  每个从站可以配置多个Modbus TCP通信通道,每个通道对应一条通讯任务。下面分别介绍实现实例的通讯目标。

 2.读取从站输入状态
  • Channel 01:电平触发读取一个输入状态,读取失败则返回最后一次成功的值,输入状态地址为0x0000
     存取类型设置为【读输入状态(功能码02)】,触发器设置为电平触发,触发变量为 SM3101;起始地址为0x0000,长度为1;错误处理方式是保持最后的值。
    在这里插入图片描述
  • Channel 02:持续读取八个输入状态,读取失败则返回0,状态起始地址为0x0010
     存取类型设置为【读输入状态(功能码02)】,触发器设置为循环执行,每隔100ms发起一次请求;起始地址为0x0010,长度为8;错误处理方式是设置为0。
    在这里插入图片描述
      不建议将循环事件设置的太短,会增加CPU的负担。
 3.读取从站输入寄存器
  • Channel 03:电平触发读取一个输入寄存器,读取失败则返回最后一次成功的值,输入寄存器地址为0x0002
     存取类型设置为【读输入寄存器(功能码04)】,触发器设置为电平触发,触发变量为 SM3102;起始地址为0x0002,长度为1;错误处理方式是保持最后的值。
    在这里插入图片描述

  • Channel 04:持续读取2个输入寄存器,读取失败则返回0,输入寄存器起始地址为0x0003
     存取类型设置为【读输入寄存器(功能码04)】,触发器设置为循环执行,每隔100ms发起一次请求;起始地址为0x0003,长度为2;错误处理方式是设置为0。
    在这里插入图片描述

 4.更新从站线圈
  • Channel 05:电平触发更新一个线圈状态,线圈地址为0x0000
     存取类型设置为【写单个线圈(功能码05)】,触发器设置为电平触发,触发变量为 SM3103;起始地址为0x0000。
    在这里插入图片描述

  • Channel 06:持续更新一组连续线圈状态,线圈起始地址为0x0010
     存取类型设置为【写多个线圈(功能码15)】,触发器设置为循环执行,起始地址为0x0010,长度为8。同理,循环时间应当适当延长以降低CPU负载。
    在这里插入图片描述

 5.更新保持寄存器
  • Channel 07:电平触发更新一个寄存器,寄存器地址为0x0000
     存取类型设置为【写单个寄存器(功能码06)】,触发器设置为电平触发,触发变量为 SM3104;起始地址为0x0000。
    在这里插入图片描述

  • Channel 08:持续更新2个寄存器,寄存器起始地址为0x0001
     存取类型设置为【写多个寄存器(功能码16)】,触发器设置为循环执行,循环时间即为两次通讯间隔时间;起始地址为0x0001,长度为2。同理,循环时间应当适当延长以降低CPU负载。
    在这里插入图片描述

 5.读取复杂数据的寄存器
  • Channel 09:读取Real类型变量,寄存器地址为0x0003
     Modbus无法直接读取浮点型变量,需要将数据进行转换。假如从站有一个地址为0x0003的Real类型变量(长度为32位),主站可以通过读取两位寄存器,然后再组装的方式获取该Real类型变量。
     利用InoProShop中的联合数据单元可以方便的实现数据转换,联合中可以设置内存对齐的数据,这样无需编程就可以安全的实现数据转换:
// wBuffer 、byteBuffer 和 rValue 是长度相同的数据结构,通过联合 (UNION) ,使它们共用一块对齐的内存。
// 如果你熟悉西门子的PLC,你可能很容易理解 MW0、MW2和MD0的联系,联合即是这种关系的另一种描述。
TYPE uW_R:
UNION
    wBuffer : ARRAY[0..1] OF WORD ;
	byteBuffer : ARRAY[0..3] OF BYTE;
	rValue : REAL;
END_UNION
END_TYPE

在这里插入图片描述

  • Channel 10:读取struct类型变量,寄存器地址为0x0005
     假如从站有连续的 16个 bool 型变量、1个 word 、1个 float ,主站读取这写数据,bool、word、float 都属于值类型。InoProShop 中,struct 也是值类型的,int、word、float 等都是 struct 的简单方式。使用Modbus通讯复杂结构的数据时可以将复杂数据组装成 struct ,然后通过联合获取 struct 序列化的寄存器(word)数组:
// 将数据组装成 STRUCT
TYPE MixData :
STRUCT
	arrayBool : ARRAY[0..15] OF BOOL;
	wValue : WORD;
	fValue : REAL;
END_STRUCT
END_TYPE
// 将数据序列化成 WORD 数组
TYPE uW_St:
UNION
    wBuffer : ARRAY[0..1] OF WORD ;
	stValue : MixData ;
END_UNION
END_TYPE

在这里插入图片描述
   同理,将float变量换成结构体,即可利用联合实现由寄存器数组到结构体的数据转换。

 6.更新复杂数据的寄存器
  • Channel 11:更新Real类型变量,寄存器地址为0x0007
     和读取Real类型变量同理。
    在这里插入图片描述

  • Channel 12:更新struct类型变量,寄存器地址为0x0009
     和读取复杂结构数据同理。
    在这里插入图片描述

  其它通信任务请自行测试,此处不再赘述。

四、配置通讯地址

 1.IO映射

  完成通讯配置后在从站属性里会多出一个Internal I/O映射选项卡,通过【通道】名称,I/O映射表和通讯设置里的变量形成映射关系。
  只能将从站的数据映射到主站的I/O存储区,用户需要通过编程将数据转移到需要的变量存储区。
在这里插入图片描述

 2.修改映射地址

  I/O映射表中的【地址】即为主站与从站通讯的数据,配置完通信通道后编程环境会自动为用户匹配默认的通讯地址,用户可自行修改该地址,但不能修改寄存器类型。对于单次读取一个输入状态和单次读取多个输入状态,时间开销差别并不大,建议将需要通讯的数据放到一起一次完成通讯以节省握手等待时间。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
汇川AM403PLC是一种常用的工业自动化控制设备,具备Modbus TCP通讯协议的主站功能。作为主站AM403PLC可以与其他支持Modbus TCP协议的设备建立通讯链路,实现数据的读取和写入。 在建立通讯链路之前,首先需要配置和设置AM403PLC的网络参数,包括IP地址、子网掩码和网关等。确保与其他设备在同一个网络中。然后,在AM403PLC的编程软件中,编写相应的程序来实现Modbus TCP通讯。 具体的通讯步骤如下: 1. 创建通讯对象:在编程软件中创建一个Modbus TCP通讯对象,设置好通讯协议、IP地址和通讯端口等参数。 2. 建立连接:通过调用相应的函数或指令,将通讯对象与目标设备建立连接。这一步骤会自动进行TCP握手等通讯协议的处理,确保连接的可靠性。 3. 数据读取和写入:通过调用相应的函数或指令,实现数据的读取和写入操作。可以根据需要,读取其他设备的数据,或者将数据写入其他设备。 4. 关闭连接:通讯完成后,需要通过调用相应的函数或指令,关闭与目标设备的连接。这样可以释放资源,并确保通讯的正常结束。 需要注意的是,对于Modbus TCP通讯,需严格遵守通讯协议的规定,包括数据传输格式、寄存器地址的定义等。同时,在编写程序时,需要考虑到通讯的可靠性和实时性,以及异常情况的处理等。 总之,汇川AM403PLC作为Modbus TCP主站通讯实例,可以通过配置网络参数、建立连接、数据读写等步骤来实现与其他设备的通讯。这为工业自动化控制系统的设计和实现提供了一种可靠的通讯方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穷的捡破烂儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值