通讯波特率 9600,7,e,1 rs232
电脑端SEND:02 30 30 45 30 32 30 32 03 36 43
发送完了以后
PLC端 ACK: 02 36 32 36 36 03 44 37
SEND:02 45 30 30 30 31 43 30 30 31 03 44 44
ACK: 02 30 41 03 37 34
SEND:02 30 30 45 30 32 30 32 03 36 43
ACK: 02 36 32 36 36 03 44 37
SEND:02 45 30 31 38 30 30 30 32 45 03 45 38
ACK: 02 30 38 30 30 43 35 44 43 30 30 30 30 30 30 30 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 03 44 36
SEND:02 45 30 31 38 30 32 45 32 45 03 46 46
ACK: 02 32 30 32 30 46 34 30 39 46 46 30 42 46 34 30 31 45 37 30 33 36 34 30 45 43 37 30 45 44 43 30 45 46 46 30 45 39 30 30 31 46 45 30 33 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 03 45 35
SEND:02 45 30 30 30 45 30 36 30 32 03 45 35
ACK: 02 31 30 30 30 03 43 34
这些对于FX1N PLC都是固定的开头通讯块。
接下来读取一段程序
SEND: 02 45 30 31 38 30 35 43 34 30 03 45 44
(单元一) (步数*2)
ACK: 02 N个字节 03 两个检验码
。
。
。
同上
接着
SEND:02 45 37 37 36 30 45 03 36 31
ACK:06
接下来写程序到PLC
SEND: 02 45 31 31 38 30 35 43 34 30 + 32步指令+03+两个检验码(第一单元)
ACK:06
SEND: 02 45 31 31 38 30 39 43 34 30 + 32步指令+03+两个检验码(第二单元)
ACK:06
。
。
。
同上
接下来
SEND: 02 45 38 37 36 30 45 03 36 32 (写结束)
ACK:06
SEND:02 42 03 34 35 (检验开始)
ACK:06
接下来读取全部刚才所下载程序
SEND: 02 45 30 31 38 30 35 43 34 30 03 45 44
(单元一) (步数*2)
ACK: 02 N个字节 03 两个检验码
SEND: 02 45 30 31 38 30 39 43 34 30 03 45 44
(单元二) (步数*2)
ACK: 02 N个字节 03 两个检验码
。
。
。
同上
读取完则校验结束,下载过程也全部结束
指令编码
30 30 32 34 LD X0
30 31 32 34 LD X1
30 31 34 34 AND X1
30 30 45 35 SET Y0
30 31 45 35 SET Y1
30 30 32 35 LD Y0
30 31 34 35 AND Y1
30 31 35 35 ANI Y1
30 31 35 34 ANI X1
30 30 34 38 AND M0
30 30 44 38 SET M0
32 LD 34 X
33 LDI 35 Y
34 AND 36 T
35 ANI 45 C
36 OR 38 M0-M255
37 ORI 39 M256-M511
38 上升下降沿 41 M512-M767
43 OUT 42 M768-M1023
44 SET 43 M1024-M1279
45 RST 44 M1280-M1535
46 M8000-M8255
43 41 30 31 LDF 43 42 30 31 30 31 38 34 LDF X1
43 42 30 31 LDP 43 41 30 31 30 31 38 34 LDP X1
46 38 46 46 ANB
46 39 46 46 ORB
46 46 46 46 NOP
43 43 30 31 ANDP
43 44 30 31 ANDF
43 45 30 31 ORP
43 46 30 31 ORF
30 46 30 30 END
46 41 46 46 MPS
46 43 46 46 MPP
30 30 30 36 30 31 38 30 30 30 38 30 OUT T0 K1
(T0 ) (低8位) (高8位)
30 30 30 45 30 32 38 30 30 30 38 30 OUT C0 K2
(T0 ) (低8位) (高8位)
39 34 30 30 ALT
39 34 30 30 30 31 38 34 30 35 38 30 ALT Y1
(ALT ) (1 ) (Y)
30 43 30 30 30 31 38 45 RST C1
(RST ) (1 ) (C)
30 43 30 30 30 31 38 36 RST T1
(RST ) (1 ) (T)
32 38 30 30
36 34 38 30
30 30 38 30
30 30 38 36
30 30 38 36 MOV K100 D0
32 38 30 30
30 32 38 36
30 30 38 34
30 30 38 36
30 30 38 36 MOV C1 D0
32 38 30 30
30 34 38 36
30 30 38 34
30 30 38 36
30 30 38 36 MOV C2 D0
32 38 30 30
30 30 38 36
30 32 38 34
30 30 38 36
30 30 38 36 MOV C200 D0
32 38 30 30
30 34 38 36
30 32 38 34
30 30 38 36
30 30 38 36 MOV C201 D0
32 38 30 30
30 34 38 36
30 32 38 34
30 32 38 36
30 30 38 36 MOV C201 D1
32 38 30 30
43 38 38 36
30 30 38 34
30 32 38 36
30 30 38 36 MOV C100 D1
30 44 30 30
30 30 38 36
30 30 38 36 RST D0
36 30 30 30
30 30 38 36
30 30 38 36
43 38 38 36
30 30 38 36 ZRST D0 D100
36 30 30 30
30 30 38 36
30 30 38 34
43 38 38 36
30 30 38 34 ZRST C0 C100
34 30 30 30
30 30 38 36
30 30 38 34 INC C0
34 30 30 30
30 30 38 36
30 30 38 36 INC D0
34 32 30 30
30 30 38 36
30 30 38 36 DEC D0
34 38 30 31
39 38 38 30
33 41 38 30
46 34 38 30
30 31 38 30
30 30 38 34
30 34 38 30
30 30 38 34
30 35 38 30 ZRN K15000 K500 X0 Y0
34 41 30 31
45 38 38 30
30 33 38 30
30 30 38 34
30 35 38 30
30 32 38 34
30 35 38 30 PLSV K1000 Y0 Y2
34 43 30 31
44 30 38 30
30 37 38 30
43 38 38 30
33 32 38 30
30 30 38 34
30 35 38 30
30 32 38 34
30 35 38 30 DRVI K2000 K13000 Y0 Y2
38 32 30 30
45 38 38 30
30 33 38 30
30 30 38 30
30 30 38 30
30 30 38 34
30 35 38 30 PLSY K1000 K0 Y0
30 41 30 30
30 30 38 30
36 34 38 38 MC N0 M100
30 42 30 30
30 30 38 30 MCR N0
31 30 30 30
30 45 38 38
30 30 38 30 CJ P7
31 30 30 30
31 30 38 38
30 30 38 30 CJ P8
31 30 30 30
31 32 38 38
30 30 38 30 CJ P9
30 38 42 30 P8
30 39 42 30 P9
31 32 30 30
31 32 38 38
30 30 38 30 CALL P9
31 34 30 30 SRET
31 43 30 30 FEND
三菱FX1S 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
传输格式: 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 DATA ETX SUM
例子:向D123开始的两个存储器中写入1234,ABCD
02h 31h 31h,30h,46h,36h 30h,34h 33h,34h,31h,32h,43h,44h,41h,42h 03h 34h,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的和。
三菱FX系列PLC编程口通信源代码
fx_comm.h
FX系列PLC四种通信模式的特性
首先讲讲FX系列PLC的通信方式。
FX系列PLC根据使用的通信模块与协议不同,分为以下四种通信模式:
1、PLC的N:N通信方式
2、PLC双机并联通信方式
3、PLC与计算机专有协议通信方式(无须梯形图,电脑直接读写操纵PLC)
4、PLC与计算机无协议通信方式(梯形图RS指令方式,可自定义通信协议)
以下将详细列出各通信模式的特性:
N:N网络 PLC并联 专用协议计算机连接 无协议通信
传输标准 RS485 RS485/RS422 RS485/RS422或RS232
传输距离 500m RS485/RS422:500mRS232:15m
连接数量 8站 1:1 1:N(N<=16) 1:1
通信方式 半双工 FX,FX2c,FXon:半双工FX2n: 全双工
数据长度 固定 7bit/8bit
校验 无/奇/偶
停止位 1bit/2bit
波特率 38400bps 19200bps 300/600/1200/2400/4800/9600/19200
头字符 固定 无/有效
尾字符
控制线 ------
协议 --- 格式1/格式4 无
和校验 固定 无/有效
适用机型 FX2n,FXon FX2n,FX,FX2c FX2n,FXon,FX,FX2c
FX系列PLC专用协议通信指令一览
以下将详细列出PLC专用协议通信的指令:
指令 注释
BR 以1点为单位,读出位元件的状态
WR 以16点为单位,读出位元件的状态,或以1字为单位,读出字元件的值
BW 以1点为单位,写入位元件的状态
WW 以16点为单位,写入位元件的状态,或以1字为单位,写入值到字元件
BT 以1点为单位,SET/RESET 位元件
WT 以16点为单位,SET/RESET 位元件,或写入值到字元件
RR 控制PLC运行RUN
RS 控制PLC停止STOP
PC 读出PLC设备类型
TT 连接测试
注:位元件包括X,Y,M,S以及T,C的线圈等;
字元件包括D,T,C,KnX,KnY,KnM等。
FX系列PLC专用协议通信指令格式详解
约定说明:
ENQ为请求标志,ASCII值5,VB中以chr(5)表示;
ACK为正确标志,ASCII值6,VB中以chr(6)表示;
STX为请求标志,ASCII值2,VB中以chr(2)表示;
EXT为请求标志,ASCII值3,VB中以chr(3)表示;
表格中红色字为需要求和效验的部分;
和效验为每一项的ASCII值的总和转换成十六进制后区低两位;
站号、PLC号、元件数量、和效验都是以十六进制表示;
等待延时为0-150毫秒,以十六进制0H-FH表示,如100ms为AH。
1、批量读出位元件--BR指令
格式:
1 2 3 4 5 6 7 8 15 16 17
PC侧: ENQ 站号 PLC号 BR 延时 首地址 数量 和效验 ACK 站号 PLC号
PLC侧: STX 站号 PLC号 数据 EXT 和效验
9 10 11 12 13 14
[注] 上述中:1、"PLC号"系统默认为"FF";2、"首地址 "应以十进制表示,如首地址"X0018"表示从X寄存器的第18地址单元开始读取I/O量;3、"数量"表示读取的I/O量个数;4、"和效验"是指从"站号"到"数量"之间的各代码的ASCII码的累加和;5、PLC侧的响应码中"和效验"是指从"站号"到"EXT"之间的各代码的ASCII码的累加和。6、可以读出"X"、"Y"和"M"寄存器的内容。
例如:要读出站号为0的Fx2n系列PLC的X00到X08共9点的状态值,延时100ms,假设采用Communication Format(D8120)的Format 1 方式::
注 释: 请求 站号 PLC号 命令 延时 元件首地址 元件数量 和效验
代 码: ENQ 0 0 F F B R A X 0 0 0 0 0 9 4 2
ASCII码: 05H 30H 30H 46H 46H 42H 52H 41H 58H 30H 30H 30H 30H 30H 35H 34H 32H
您只要将以上兰色部分的代码以字符串形式(VB中可以表示为CHR(5)&" 00FFBRAX00000942")发送到PLC,就会有正确的回应信息,如下:
注 释: 头 站号 PLC号 元件首地址 尾 和效验
代 码: STX 0 0 F F 0 0 1 1 0 1 1 0 1 EXT 0 5
ASCII码: 02H 30H 30H 46H 46H 30H 30H 31H 31H 30H 31H 31H 30H 31H 03H 30H 35H
若发送码有误,则有以下回应:
注 释: 头 站号 PLC号 和效验
代 码: NAK 0 0 F F 0 6
ASCII码: 15H 30H 30H 46H 46H 30H 36H
2、批量读出字元件--WR指令
格式:
1 2 3 4 5 6 7 8 15 16 17
PC侧: ENQ 站号 PLC号 WR 延时 首地址 数量 和效验 ACK 站号 PLC号
PLC侧: STX 站号 PLC号 数据 EXT 和效验
9 10 11 12 13 14
该命令使用方法与1(BR)命令相同,不再赘述。
3、批量写入位元件--BW指令
格式:
1 2 3 4 5 6 7 8 9
PC侧: ENQ 站号 PLC号 BW 延时 首地址 数量 写入值 和效验
PLC侧: ACK 站号 PLC号
10 11 12
4、批量写入字元件--WW指令(M寄存器100单元置"1")
格式:01FFWWAM01000100010C
1 2 3 4 5 6 7 8 9
PC侧: ENQ 站号 PLC号 WW 延时 首地址 数量 写入值 和效验
PLC侧: 05H 01 FF A M0100 01 0001 0C ACK 站号 PLC号
10 11 12