三菱PLC编程口协议

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

最近做一个PC通过编程口与FX PLC通讯的程序,在网上找好久,部软元件的地址还是找不全。没办法,只好使用串口监视软件分析GX Developer PLC编程软件发送的代码

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

Public Const PLC_D_Base_AddRess = 4096

Public Const PLC_D_Special_Base_AddRess = 3584

Public Const PLC_Y_Group_Base_AddRess = 160

Public Const PLC_PY_Group_Base_AddRess = 672

Public Const PLC_T_Group_Base_AddRess = 192

Public Const PLC_OT_Group_Base_AddRess = 704

Public Const PLC_RT_Group_Base_AddRess = 1216

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

Public Const PLC_M_Group_Base_AddRess = 256

Public Const PLC_PM_Group_Base_AddRess = 768

Public Const PLC_S_Group_Base_AddRess = 0

Public Const PLC_X_Group_Base_AddRess = 128

Public Const PLC_C_Group_Base_AddRess = 448

Public Const PLC_OC_Group_Base_AddRess = 960

Public Const PLC_RC_Group_Base_AddRess = 1472

Public Const PLC_TV_Group_Base_AddRess = 2048

Public Const PLC_CV16_Group_Base_AddRess = 2560

Public Const PLC_CV32_Group_Base_AddRess = 3072

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

这也没有什么复杂的,不是吗?可是三菱公司好像不甘于如此,FORCE ON/Off命令中地址排列与DEVICE READ/WRITE不同,是低位在前高位在后。如Y20,地址是0510H,代码中4个字节地址表示为:1005。(注意:Y寄存器为八进制,如Y20 地址=16+1280=0510 H)

三菱FX系列PLC编程口通信协议总览

该协议实际上适用于PLC编程端口以及FX-232AW 模块的通信。感网友visualboy提供。

通讯格式:

命令命令码目标设备

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 //复位

传输格式: RS232C

波特率: 9600bps

奇偶: even

校验: 累加方式(和校验)

字符: ASCII

16进制代码:

ENQ 05H 请求

ACK 06H PLC正确响应

NAK 15H PLC错误响应

STX 02H 报文开始

ETX 03H 报文结束

帧格式:

STX CMD DATA ...... DATA ETX SUM(upper) SUM(lower) 例子:

STX ,CMD ,ADDRESS, BYTES, ETX, SUM

02H, 30H, 31H,30H,46H,36H, 30H,34H, 03H, 37H,34H SUM=CMD+......+ETX;

30h+31h+30h+46h+36h+30h+34h+03h=74h;

累加和超过两位取低两位

命令格式

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

计算机向PLC发送:

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

STX CMD GROUP ADDRESS BYTES ETX SUM

例子:从D123开始读取4个字节数据

02h 30h 31h,30h,46h,36h 30h,34h 03h 37h,34h

地址算法:address=address*2+1000h

再转换成ASCII

31h,30h,46h,36h

PLC返回

STX 1ST DATA 2ND DATA ..... LAST DATA ETX SUM 注:最多可以读取64个字节的数据

例子:从指定的存储器单元读到3584这个数据

02h 33h 35h 38h 34h 03h 44h,36h

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

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

STX CMD GROUP ADDRESS BYTES 1ST DATA 2ND DATA ...... LAST DAT

A ETX SUM

例子:向D123开始的两个存储器中写入1234,ABCD

02h 31h 31h,30h,46h,36h 30h,34h 33h,34h,31h,32h,43h,44h,41h,42h 03h 3 4h,39h

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) 接受错误

设备强制中的地址公式:Address=Address/8+100h

说明:

1.帧中的BYTES表示需要读取或者写入的字节数。

2.地址算法上有说明。

3.累加和是从STX后面一个字节开始累加到ETX的和。

通过串口监视得到的数据如下:

PLC型号:FX0N

使用GX Developer 的在线-调试-软元件测试功能

以下列出不同的操作发送的不同容,前面一段是Hex码后面一段是对应的ASCI I码

//////////////////////////////////CMD ON YO//////////////////

相关文档
最新文档