上海制菱实业有限公司

新闻动态

公司新闻
行业新闻
行业新闻
三菱PLC编程口的通讯协议
2018-10-12

三菱PLC编程口的通讯协议,其实比较简单,只有四个命令,即:

命令 命令码 目标设备

DEVICE READ CMD "0" X,Y,M,S,T,C,D

DEVICE WRITE CMD "1" X,Y,M,S,T,C,D

FORCE ON CMD " 7" X,Y,M,S,T,C

FORCE OFF CMD "8" X,Y,M,S,T,C

五个标示:

ENQ 05H 请求

ACK 06H PLC正确响应

NAK 15H PLC错误响应

STX 02H 报文开始

ETX 03H 报文结束

使用累加方式的和校验,帧格式如下:

STX CMD DATA ...... DATA ETX SUM(upper) SUM(lower)

和校验:

SUM= CMD+??+ETX。 如SUM=73H,SUM=“73”。

1、DEVICE READ(读出软设备状态值)

计算机向PLC发送:

始命令 首地址 位数 终和校验

STX CMD GROUP ADDRESS BYTES ETX SUM PLC 返回

STX 1ST DATA 2ND DATA ..... LAST DATA ETX SUM

2、DEVICE WRITE(向PLC 软设备写入值)

计算机向PLC发送:

始命令 首地址 位数 数据 终和校验

PLC 返回

ACK (06H) 接受正确

NAK (15H) 接受错误

3、位设备强制置位/复位

FORCE ON 置位

始命令 地址 终和校验

STX CMD ADDRESS ETX SUM 02h 37h address 03h sum FORCE OFF 复位

始 命令 地址 终 和校验 STX CMD ADDRESS ETX SUM 02h 38h address 03h sum PLC 返回

ACK(06H) 接受正确

NAK(15H) 接受错误

以上可以看出,协议非常简单,但是由于没有寄存器类型信息,所以地址的计算十分关键,如D100和M100分别对应哪个地址呢?下面就是三菱Fx系列PLC地址对应表:

Public Const PLC_D_Base_AddRess = 4096 =1000H

Public Const PLC_D_Special_Base_AddRess = 3584 =E00H

Public Const PLC_Y_Group_Base_AddRess = 160 =A0H

Public Const PLC_PY_Group_Base_AddRess = 672 =2A0H

Public Const PLC_T_Group_Base_AddRess = 192 =C0H

Public Const PLC_OT_Group_Base_AddRess = 704 =2C0H

Public Const PLC_RT_Group_Base_AddRess = 1216 =4C0H

nbsp; =100H

Public Const PLC_PM_Group_Base_AddRess = 768 =300H

Public Const PLC_S_Group_Base_AddRess = 0 =0H

Public Const PLC_X_Group_Base_AddRess = 128 =80H

Public Const PLC_C_Group_Base_AddRess = 448 =1C0H

Public Const PLC_OC_Group_Base_AddRess = 960 =3C0H

Public Const PLC_RC_Group_Base_AddRess = 1472 =5C0H

Public Const PLC_TV_Group_Base_AddRess = 2048 =800H

Public Const PLC_CV16_Group_Base_AddRess = 2560 =A00H

Public Const PLC_CV32_Group_Base_AddRess = 3072 =C00H

当我们用DEVICE READ命令时,D100地址=100*2+4096;M100地址=100+256;不同的是D类型寄存器存放的是字,M寄存器存放的是位,同样是读两个字节,D100返回的就是PLC中D100地址的值,M类型寄存器返回的是M100到M116的值。所以当我们用FORCE ON 命令时,M100寄存器地址=100+2048;

这也没有什么复杂的,不是吗?可是三菱公司好像不甘于如此,FORCE ON/Off命令中地址排列与DEVICE READ/WRITE不同,是低位在前高位在后。如Y20,地址是0510H,代码中4个字节地址表示为:1005。(注意:Y寄存器为八进制,如Y20地址=16+1280=0510H) 其实一点技术含量都没有,就是拐了几个弯,偏偏很多时候又不都告诉你,让人浪费不少时间。不废话了,自己做个程序试试吧。

Public Const PLC_M_SINGLE_Base_AddRess = 2048(命令为7或8时) =800H

Public Const PLC_M_Group_Base_AddRess = 256 &

 地址:上海市嘉定区永盛路1218号金元大厦16层             邮编:201800   电话:021-51097789/51097889 传真:021-64511533 版权所有 上海制菱实业有限公司