前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

三菱modbus通讯指令ADPRW和M8029(modbus 三菱)

qiguaw 2024-11-14 17:12:11 资源文章 198 ℃ 0 评论


本章以两台FX3U使用MODBUS通讯模块相互通讯为例,介绍了通讯时数据交互指令ADPRW指令和特殊寄存器M8029.

ADPRW指令和M8029只需在主站中编写,从站只负责根据主站要求接收和发送数据。

阅读本章之前,需要对在使用MODBUS通讯模块的情况下,如何设置主站和从站PLC的通讯参数要有详细的了解,如下图:

其指令格式如下图:

从站站号:即被通讯的从站的站号

功能代码:上图表格中列出了使用各个代码时的功能含义,我们要严格按照各种含义来进行MODBUS通讯读出和写入。

MODBUS地址:读取的/写入的从站modbus地址

读写个数:设置需要读/写从MODBUS地址开始的几个字

读写对象软元件:设置读过来的数据存储到本地PLC的哪个存储区里(一般为D存储区)/设置从本地PLC哪个存储区内写出去

下图是MODBUS通讯ADPRW指令示例:

K1:从站站号为1号站

H3:3号功能码,保持寄存器读出。

K0:0号modbus地址

K1:读写从0号modbus地址开始的一个字,即只读一个0号modbus地址

D0:读过来存储到自己的D0存储区中

M8029:当ADPRW指令完成执行后,M8029=1,此时复位M0,以达到执行完毕后停止ADPRW指令读写的目的

如果对于MODBUS地址和功能码尚不清楚,继续往下看:

现在对于modbus地址和功能码进行解释:

对于位读写操作的解释:

如下图,表述的是modbus地址对应的plc位软元件地址,以第一条为例modbus地址0~1DFF对应PLC地址的M0~M7079,左侧为输入读,对应功能码为H2,右侧为线圈读/写对应功能码为H1.

当使用功能码H1时(线圈读),可以对PLC执行读的操作,但是不能对PLC的X存储区进行读的操作。

当使用功能码H2时(输入读),也可以对PLC执行读操作,而且此时也可以对PLC的X存储区进行读操作。

对于功能码H5和H6,他们的区别是前者只能执行对一个位进行写操作,后者可以对多个点进行写操作,我们只需记住批量写即可(功能码F)

对于字读写操作的解释:

如下图,表述的是modbus地址对应的plc字软元件地址。当使用功能码H3时,modbus地址以右侧为准。当使用功能码H4时,modbus地址以左侧为准。

例如使用功能码H3,以第一条为例,0~1F3F分别对应PLC的D0~D799

当要以字状态读写的方式读位状态时,以倒数第二条为例,使用的功能码为H3,A7B8对应X0~X16,连续读出16个位,因为现在的模式为字状态读取模式。

对于字状态下的写模式,也分为单寄存器写和批量寄存器写,批量寄存器写已经包含了单寄存器写的功能,我们只用记住批量寄存器写(功能码H10)即可。

功能码H3和H4的区别在于能否读PLCX存储区的区别。

对于位读写操作的解释:

需要说明:ADPRW H1 H5 HA K0 M0

需要注意,如果使用的写功能码是单点写的功能H5,那么不管指令里指定写几个,主站都只会向从站写1个modbus地址。指令中写入个数的参数位设置为K0即可,默认就是写一个,字的读写操作也是遵循这个规则。

这个指令里面的所有参数都是16进制的形式在表示的,H0~H9对应M0~M9,到M10的时候,MODBUS地址就是HA,M11对应HB,M16对应H10。我们可以使用手机计算器中的进制转换快速算出PLC存储区对应的16进制modbus地址是多少。


FX系列PLC的modbus地址可能略有不同,比方说FX3G就没有FX3U多,详情查看PLC对应的modbus通讯篇手册

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表