关于三菱PLC与变频器ASCII通讯的讲解

说明:

1、本文档注释说明了三菱 PLC 用 RS 进行ASCII 通讯的一个案例 

2、本实例使用PLC为为三菱 Fx-3G系列,变频器为三菱通用变频器 FR-D700 系列

3、本实例内容原创,转载注明出处后,可随意分享使用

先展示一下代码,然后分析代码,依次详细讲解

 

 

 

 

RS指令解释

RS D10 D50 D100 K20

D10 为发送数据的起始地址,D10后续的连续地址依次为 D11、D12........

D50 表示发送的数据个数,D50的值为12,因此一共发送12个字的数据,即发送 D10~D21中存储的数据个数

D100 表示通讯接收变频器的数据起始地址

K20 表示 接收数据的地址数位20个字,即接收数据存储于 D100~D119 中

ASCI指令解释

ASCI D141 D16 K4

将D141参数转换成4个字的ASCII码存入到 D16,D17,D18,D19 中

例如 D141 的值为 1234,则 D16~D19的值如下表所示

通讯发送了哪些数据? 

PLC与变频器的通讯就像人与人之间对话一样,是一个信息交互的过程,就像发电报一样,

报头,即一条信息,一条报文的标题,意思告诉对方信息开始发送了,接下来是报文信息

报文,是要表达的实际数据内容

报尾,一般用来校验发送的报文数据是否正确,用来告诉对方,我发送的数据已经完成了。

例如程序中 M140 = ON ,D141=1234时,PLC 发送了 D10~D21中存储的数据,一共12个字

P0子程序中D20与D21的解释

D50=12时候,则D51=9,即发送的数据个数去掉1个字的报文、再去掉2个字的报尾巴,剩下就是报文的字个数为9位

通过执行 for 指令循环 依次对 D11Z0 地址进行累加,值存储于 D52中

Z0 是个变量,可以视为当前循环次数的指针,从1依次递增到9,所以 D11Z0 最终指向D11-D19的数据地址

下面进行for循环的演示:

比如 D52初始值为 0 

第1次循环开始,Z0=0,则 D11Z0 代表的地址值即 D11的值,D52 = D11,循环结束Z0自增1,Z0的值为2

第2次循环开始,Z0=1,则 D11Z0 表示D12中的值,D52 =  D11+D12,Z0=3

。。。

第9次循环开始,Z0=8,则 D11Z0 表示 D19中的值,D52 = D11+D12+。。。+D19,Z0=9

由上可以看出,D52最终的值在for循环结束后即D11-D19的值之和,我们称之为和校验,

校验用来告诉信息接收方进行报文的数据验证信息,如果报文在通讯过程中受干扰或丢失,则校验和便会出错

循环结束后,Z0的值为9,此时 D11Z0 表示 D20 中的值

因此 ASCII D52 D11Z0 K2 此时可以理解为  ASCII D52 D20 K2,

 这个for循环的累加过程 数学表示如下 :

(先写到这,如过有疑问,欢迎留言,再解答)

原文地址:https://www.cnblogs.com/aiyauto/p/12105224.html