三菱FX3U PLC利用RS指令实现Modbus RTU通信

工业控制

1096人已加入

描述

MODBUS

在了解了Modbus通信的基本格式后,本期将通过仿真的方式实现Modbus RTU通信协议在三菱FX3U PLC上的应用。

指令介绍

一、软件准备

  • 虚拟串口工具
  • Modbus Slave
  • 凌一PLC仿真器
  • GX works2编程软件

二、RS指令

RS指令是在执行串口通信时用来接收和发送数据的指令,使用该指令时需要在PLC上插入FX3U-485-BD通信模块。

1)基本格式

MODBUS

其中m(发生数据的个数)和n(接收数据的个数)需要根据外部设备的报文格式指令,不能随便设置。

2)示例

MODBUS

X0: RS指令触发条件,当X0位ON时RS指令进入发送或接收数据的等待状态。

D10: 发送数据的起始寄存器。

K8: 发送数据的个数,表示每次发送D10~D17范围内八个寄存器的数据。

D20: 接收数据的起始寄存器。

K7: 接收数据的个数,表示将外部设备返回的数据存入D20~D26范围内的七个寄存器里。

三、特殊辅助继电器

1)M8161 数据处理位数标志继电器

当M8161=OFF时处理16位数据。

MODBUS

当M8161=ON时处理低8位数据。

MODBUS

2)M8122 数据发送标志继电器

当RS指令处于发送或接收数据的等待状态时置位M8122,此时RS指令中发送数据寄存器里的数据将会被发送给外部设备。数据发送完成后系统会自动复位M8122,不能使用程序对其进行复位操作。

MODBUS

3)M8123 数据接收标志继电器

RS指令将数据发送完成后,进入接收数据状态。此时M8123被置位为ON,并对接收到的数据进行处理,数据处理完成后需要将M8123复位为OFF,否则无法接收下一轮的数据。

MODBUS

四、通信参数设置

通信参数既可以在PLC系统设置中直接设置,也可以通过改变D8120的值进行设置,两种设置方式任选一种即可(本文主要介绍通过D8120进行设置)。

1)直接设置

依次单击参数列表中的“PLC参数”→“PLC系统设置2” →勾选“进行通信设置”,然后根据实际需求设置通信参数,设置完成并检查无误后单击“设置结束”按钮保存设置。

MODBUS

2)通过D8120设置

根据下表给定的参数并结合实际需求设置b0~b15的值,并转换成十六进制数传送给D8120,实现通信参数设置。

MODBUS

3)示例

将通信参数设置按如下要求进行设置:数据长度为8位、偶校验、停止位为1位、波特率为9600、无报头报尾,控制线为无协议的RS-485接口。

MODBUS

编辑程序将参数传入D8120。

MODBUS

五、CRC指令

CRC指令的作用是计算Modbus RTU通信报文的校验码。

MODBUS

在低8位模式下(M8161=ON),当X0为ON时CRC指令计算出D10~D15六个寄存器产生的效验码,并将计算结果的高八位存入D16,低八位存入D17。

指令运用

一、项目要求

按下X0按钮读取1号从站保持寄存器40000的值,按下X1将100写入1号从站保持寄存器40002中,通信参数与上文示例中保持一致。

二、编辑程序

1)初始化

在初始化程序中需要将M8161设置为处理低8位数据模式(M8161=ON),将通信参数传入特殊寄存器D8120以及复位程序中用到的寄存器。

MODBUS

2)添加RS指令

如果每次处理的数据长度一致,那么只需添加一次RS指,并且让RS指令一直处于等待发送或接收数据状。

发送或接收的数据长度需要根据外部设备的要求进行设置,此处外部设备为Modbus Slave,其报文格式与标准报文格式一致,所以此处发送和接收的数据长度分别为K8和K7。

MODBUS

3)编辑读取程序

a)计算读取程序报文

可以借助串口调试助手自动生成报文,其中84 0A为CRC校验码。

MODBUS

b)编辑报文传送程序

当检测到X0的上升沿时将生成的报文传入用来发送数据的寄存器D10~D15中。

报文需要用十六进制表示。

MODBUS

c)添加CRC指令

CRC指令将根据前六个报文计算出校验码,并将结果的高八位存入D16,低八位存入D17。

MODBUS

由于仿真中CRC指令时好时坏,所以本项目不使用CRC指令,而是将校验码直接传入D16和D17。

MODBUS

d)发送数据

当检测到X0的下降沿时置位M8122完成数据的发送。

MODBUS

e)接收并处理读取回来的数据

从站返回的数据如同所示,通过分析报文可得从站返回的数据高八位和低八位分别储存在D23和D24中。

MODBUS

MODBUS

通过计算把D23和D24的数据合并,然后存放到D31中。

MODBUS

4)编辑写入程序

a)编辑报文传送程序

参照读取程序的编辑方式。

MODBUS

MODBUS

MODBUS

b)发送数据

MODBUS

c)接收数据

由于不需要接收从站返回的数据所以直接复位M8123。

MODBUS

仿真环境配置

一、添加虚拟串口

需要添加两对虚拟串口,一对用来实现GX works2和凌一PLC仿真器的连接,另一对用实现凌一PLC仿真器和Modbus Slave的连接

MODBUS

二、配置凌一仿真器

配置完成后需要打开下载口和开启扩展通信,并让PLC处于运行状态。

MODBUS

三、配置GX works2

其配置方式与连接实体PLC时的方式一致,主要选择端口号。设置完成后单击“通信测试”,测试成功后单击“确定”保存设置,并将程序下载到仿真器中。

MODBUS

四、配置Modbus Slave

1) 配置Modbus Slave连接

连接参数需要与D8120中的通信参数保持一致。
MODBUS

2)配置Modbus Slave从站功能

如图所示设置从站功能,并修改寄存器40000的值。

MODBUS

五、仿真演示

配置好仿真环境后,将程序下载到仿真器中,并进入监视状态。

1)读取演示

单击仿真器中的X0按钮,观察D31的值是否与Modbus Slave中保持寄存器40000设置的值一致。

MODBUS

2)写入演示

单击仿真器中的X1按钮,观察100是否被写入到从站的保持寄存器40002中。

MODBUS

六、程序整体浏览

MODBUS

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分