三菱modbus rtu通讯实例_三菱PLC实现modbus通讯方法

前两天做了一个小的改造项目,需要使三菱Q系列PLC和一块LED显示屏进行数据通讯,LED显示屏经改造后支持RS232和RS485接口的MODBUS协议,PLC侧安装有一块型号为QJ71C24N-R2的通讯模块,查此模块资料可知道此模块提供两个RS232物理接口CH1的CH2,可进行基于串口的无协议通讯,唯独不能支持MODBUS协议。考虑到成本问题,不打算更换硬件,最后经过查询资料和验证后,最终实现MODBUS协议通讯。以下是大概方法,供各位朋友交流参考,不对之处请指正。

首先要了解下什么是无协议通讯和MODBUS协议通讯。根据度娘所说:

所谓无协议通讯就是说通信网络的两个或多个终端通过通信网络实现数据的传输,而不必遵循共同的规定或规则。

Modbus 协议是应用于电子控制器上的一种语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。

说简单点无协议通讯就相当于画图,想表达什么就画什么,基本上全世界都能看懂。而MODBUS协议就是中文,只有中国人能看懂。要想让一个不会中文的人和一个只懂中文的人交流,就只能让这个不懂汉字的人模仿汉字的写法,尽管他不认识这个字。所以咱要做的就是教会PLC按照MODBUS协议的格式来和下位机对话,

接下来看下MODBUS协议的格式内容,以MODBUS-RTU为例。

27ee813af732749f33d496be13c46947.png

站地址:MODBUS网络中设备都有一个属于自己的站地址,用来区分是哪个设备来接收这个信息。

功能代码:MODBUS设备所支持的功能代码(需要查询设备手册),比如这次使用的MODBUS协议卡支持的功能码如下:

01 读线圈、

03 读取保持寄存器、

04 读输入寄存器、

05 写单个线圈、

06 写单个寄存器、

15 写多个线圈、

16 写多个寄存器。

数据地址:MODBUS设备对应的寄存器地址,查设备手册可知道。

CRC校验码:CRC16校验码占用1个字节。

PLC侧按照手册上接好线,打开模块设置,配置好CH2通道的参数,如图:

v2-607e97e7b20db4b340afe532d0e8800c_b.jpg

然后创建一个子程序,先把CH2 的错误处理程序写上,防止通讯错误,影响其他设备通讯,然后向指定地址写入数据,确定CH2通讯数据长度单位。具体程序如图所示:

faf011550a7e3660ca02150704cc1de1.png

上图只是做演示,具体使用地址要看项目中模块的配置数据,具体查询模块手册。

例如我要往画面编号 1 输入内容 ABCD在屏幕上显示出来,

91c90686fbce34e8ec00dafffaa540e5.png

先配置设备MODBUS参数,必须为RTU模式,从站地址24,字节顺序为1234

字节顺序具体看目标设备指定,

/*********************************************************/

18 从站地址 24

10 功能码 16 写多个寄存器地址

00 00 寄存器起始地址 0

00 02 寄存器个数 8 位(画面编号1对应寄存器地址为0,占用8个寄存器共16字节,超过16字节数据会被丢弃)

41 42 AB 的十六进制 ACSII 码

43 44 CD 的十六进制 ACSII 码

C1 53 CRC16 校验码

要从PLC发送内容,先确定数据存储区,按照前面所示的数据结构,来定义数据存储区数据。本例子中从D200开始,因为数据全部是按16进制传送,要发送数据必须转换为16进制后再写入存储区,PLC发送数据是按照先低八位后高八位的顺序,所以在定义数据发送顺序时必须遵守这个原则,如下面图中程序所示:

fbbed17202804794091cff1d9a4abfd3.png

这里重点要说一下CRC校验指令应用,

0e4a3527597bc37f7fd5743b8f9561c9.png

这里这个N是8位数据个数,一个D地址是16位,一定要注意,

CRC指令在三菱FX-2N以上系列中被支持,但在三菱Q系列中,目前只有Q03UDV以上的CPU支持,往下的CPU只能通过梯形图编写CRC校验程序,这种例程在百度上能搜索到很多。

三菱Q系列数据发送使用的是G.OUTPUT指令。

写入控制数据下图为例程:

e5c4586f3424544166b2553cebdf266f.png

5e69f6e693f30632682fc53075019620.png

Un的数值要根据模块配置时起始XY地址确定清除错误状态

ce0800665999e03ecb2f82f221cf3af8.png

程序编写完成后,要使用串行模块线路跟踪工具进行发送数据测试,具体路径在工具-智能功能模块用工具-串行通信模块-线路跟踪

查看此区域发送的数据是不是想要发送的数据,数据发送触发完成之后点停止点开始跟踪再选择通道先选择模块

84cceb018f61171fa87d400418ac6ec8.png

在实际应用中,可能需要对数据进行整理,以下是几个常用数据处理指令

WTOB指令:字节转换为字,BTOW指令:字转换为字节。SWAP指令:高低位互换。

具体参数编程手册。

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 三菱485 Modbus RTU 通讯实例: 1. 首先,需要确定三菱 PLC 的型号和通讯模块的型号,以便正确配置通讯参数。 2. 在三菱 PLC 中,需要设置好 Modbus RTU 通讯协议,包括通讯地址、波特率、数据位、停止位、校验位等参数。 3. 在 Modbus RTU 主站设备中,需要配置好从站设备的地址和寄存器地址,以便正确读取和写入数据。 4. 在程序中,需要使用 Modbus RTU 通讯协议的相关函数,如读取保持寄存器、写入 ### 回答2: 三菱485Modbus RTU通讯是一种常用的工业通讯协议,实现了设备之间的数据交换。本文将介绍一个三菱485Modbus RTU通讯实例。 实验环境: 1. 三菱PLC FX3U-32MT/ES 2. 三菱485通讯模块FX2NC-485ADP 3. Modbus工具:Modscan32 实验步骤: 1. 三菱PLC编程,设置对应的寄存器地址和数据。 2. 三菱485通讯模块和Modbus工具设置好通讯参数。 3. 连接三菱PLC三菱485通讯模块之间的485串口。 三菱PLC编程部分: 在PLC编程软件中,设置数据存储区地址和具体的数据,例如在D寄存器区域(D1000-D1005)存储灯的开关状态(0-关;1-开)。然后将D寄存器的数值写入到对应的寄存器地址(例如将D1000的数值写入到寄存器地址0)。 三菱485通讯模块和Modbus工具设置部分: 首先,需要设置485通讯模块的通讯参数,包括波特率、数据位、校验位和停止位。然后,在Modbus工具中设置连接的串口号和相应的地址。通过Modbus工具读取和写入三菱PLC的数据。 在实验中,可以使用Modscan32工具进行调试,将设备地址设置为0,功能码设置为0x03,地址偏移值设置为0,读取数据长度设置为6。此时就可以读取到PLC中D寄存器区域的数据。 总结: 通过这个实例,我们可以了解到三菱485Modbus RTU通讯的基本原理和实现方法。在实际应用中,可以根据具体的场景和需求设置寄存器地址、数据类型等参数,实现设备之间的数据交换。 ### 回答3: 三菱485 Modbus RTU通讯实例三菱PLC是工业控制系统中常用的一种控制设备,而Modbus RTU是一种常用的实现PLC和其他设备通讯的协议。本文将以建立三菱PLC和PC通过Modbus RTU进行通讯为例展开分析。 一、通讯方式的选择: 在建立Modbus RTU通讯前需要考虑通讯方式,通讯方式的选择对PLC的寿命、通讯的稳定性和通讯的速度有很大影响。常用的三种方式有串口通讯、以太网通讯和USB通讯。 二、PLC与PC的连接方式: PLC与PC的连接方式有很多种,但是在Modbus RTU通讯中一般采用串口方式进行连接。在连接过程中需要注意控制PLC的串口参数和PC的串口参数一致,其中包括波特率、奇偶校验位、数据位和停止位等参数。 三、通讯协议的编写: 在PC使用Modbus RTU通讯协议与PLC通讯时,需要编写相应的通讯协议。协议中需要包含从PLC读取数据和向PLC写数据的程序代码。其中从PLC读取数据主要包括读取寄存器和读取输入输出状态两种方式;向PLC写数据主要包括写入寄存器和写入输入输出状态两种方式。 四、程序流程的设计: 程序流程的设计包括程序初始化、通讯协议的编写、数据的处理和程序结束等四个方面。程序初始化包括设定串口通讯参数和PLC的硬件参数等;通讯协议的编写可以参考Modbus RTU的规范;数据的处理包括分析从PLC读取的数据和向PLC写入的数据以及数据的转换等处理;程序结束时需要清除相应的资源和句柄等。 五、注意事项: 在建立PLC和PC之间的通讯时,需要注意以下几个方面: 1、确保PLC的串口参数与PC的串口参数一致; 2、程序编写时需要考虑通讯的稳定性和速度; 3、数据的读写需要注意数据的格式和转换、精度等问题; 4、程序结束时需要清理相应的资源和句柄等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值