本文介绍的 PC 与三菱 FX 系列 PLC 通信,是通过 PLC 的编程口与 PC 机的串口进行的,采用 SC-09 编程电缆作为计算机与 PLC 通信的连线。电缆的 9 芯 D 形插头连接在计算机串口上,另一端连接 PLC 的 RS-422 编程口。
编写 PC 的通信程序可采用汇编语言、各种高级语言,也可以采用工控组态软件或直接采用 PLC 厂家的通信软件。本文采用 VB6 . 0 软件,它必须依据所连接 PLC 的通信规程来编写通信协议,所以先简单介绍 FX 系列 PLC 的通信协议。
数据传输格式
FX 系列 PLC 采用异步格式,由 1 位起始位、 7 位数据位、 1 位偶校验位及1位停止位组成,波特率为 9600bps ,字符为 ASCII码。
PLC的存储单元分别为: X 为输入继电器; Y 为输出继电器; M 为辅助继电器; S 为状态元件; T 为定时器; C 为计数器; D 为数据寄存器。
三菱PLC编程口的通讯只有四个命令,即:
命令 命令码 目标设备ENQ 05H 请求
ACK 06H PLC正确响应
NAK 15H PLC错误响应
地址算法为:address=address×2+1000h
1、DEVICE READ(读出软设备状态值)举例:PC 从 PLC 中读取数据
假设 PC 要从 PLC 中读入从 D123 开始的 4 个字节的数据 ( 占用两个数据寄存器: D123 、 D124) ,其报文如表 5 所示。
根据三菱 FX 系列 PLC 编程口通信协议,地址算法为
address=address×2+1000h
将地址 123 转换成十六进制为 7Bh ,因此首地址为:
address=addressx2+1000h=7Bhx2+1000h=10F 6h .
再转换成 ASCII 码为 31h,30h,46h,36h
校验和 SUM=30H+31H+30H+46H+36H+30H+34H+03H=174H ,溢出部分不计,故 SUMH 为 "7" , SUML 为 "4" ,相应的 ASC Ⅱ码为“ 37H ”和“ 34H ”。
计算机向PLC发送:
始 | 命令 | 首地址 | 位数 | 终 | 和校验 |
STX 02h |
CMD 30h |
GROUP ADDRESS 31h,30h,46h,36h |
BYTES 30h,34h |
ETX 03h |
SUM 37h,34h |
PLC返回,从指定的存储器单元读到3584这个数据
STX |
1ST DATA |
ND DATA | .... | LAST DATA | ETX | SUM |
02h | 33h | 35h | 38h | 34h | 03h | 44h,36h |
举例:向D123开始的两个存储器中写入1234,ABCD
始 | 命令 | 首地址 | 位数 | 数据 | 终 | 和校验 | |||
STX | CMD | GROUP ADDRESS | BYTES | 1ST DATA | 2ND DATA | ...... | LAST DATA | ETX | SUM |
02h | 31h | 31h,30h,46h,36h | 30h,34h | 33h,34h,31h,32h,43h,44h,41h,42h | 03h | 34h,39h |
PLC返回:ACK (06H) 接受正确 ;或者是NAK (15H) 接受错误
设备强制中的地址公式:Address=Address/8+100h
02h 37h address 03h sum
始 | 命令 | 地址 | 终 | 和校验 |
STX | CMD | ADDRESS | ETX | SUM |
02h | 37h | address | 03h | sum |
02h 38h address 03h sum
始 | 命令 | 地址 | 终 | 和校验 |
STX | CMD | ADDRESS | ETX | SUM |
02h | 38h | address | 03h | sum |