[西门子] 三菱FX3U利用RS指令实现Modbus RTU通信

[复制链接]
查看57672 | 回复0 | 2024-1-31 16:04:12 | 显示全部楼层 |阅读模式


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

指令介绍

一、软件准备



    虚拟串口工具

    Modbus Slave

    凌一PLC仿真器

    GX works2编程软件


二、RS指令

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

1)基本格式

         



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

2)示例



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

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

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

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

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

三、特殊辅助继电器

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

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



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



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

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



         

         

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

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



四、通信参数设置

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

1)直接设置

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



2)通过D8120设置

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



3)示例

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



编辑程序将参数传入D8120。



五、CRC指令

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



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

         

指令运用

一、项目要求

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

二、编辑程序

1)初始化

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



2)添加RS指令

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

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



3)编辑读取程序

a)计算读取程序报文

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



b)编辑报文传送程序

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

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



c)添加CRC指令

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



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



d)发送数据

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



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

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





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



4)编辑写入程序

a)编辑报文传送程序

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







b)发送数据



c)接收数据

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



         

仿真环境配置

一、添加虚拟串口

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



二、配置凌一仿真器

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



三、配置GX works2

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

         



四、配置Modbus Slave

1) 配置Modbus Slave连接

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



2)配置Modbus Slave从站功能

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



五、仿真演示

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

1)读取演示

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



2)写入演示

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



六、程序整体浏览




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则