FX系列PLC专用协议通信指令一览以下将详细列出PLC专用协议通信的指令:指令注释BR以1点为单位,读出位元件的状态WR以16点为单位,读出位元件的状态,或以 1字为单位,读出字元件的值BW以1点为单位,写入位元件的状态WW以16点为单位,写入位元件的状态,或以 1字为单位,写入值到字元件BT以1点为单位,SET/RESET位元件WT以16点为单位> SET/RESET位元件,或写入值到字元件RR控制PLC运行RUNRS控制PLC停止STOPPC读出PLC设备类型TT连接测试注:位元件包括X,Y,M,S以及T,C的线圈等;字元件包括D,T,C,KnX,KnY,KnM等三菱FX系列PLC编程口通信协议总览该协议实际上适用于PLC编程端口以及 FX-232AW模块的通信通讯格式:命令命令码目标设备DEVICE READ CMD "0" X,Y,M,S,T,C,DDEVICE WRITE CMD"1" X,Y,M,S,T,C,DFORCE ON CMD " 7H X,Y,M,S,T,CFORCE OFF CMD ”8" X,Y,M,S,T,C 传输格式:RS232C 波特率:9600bps 奇偶:even校验:累加方式(和校验)字符:ASCII16进制代码: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, SUM02H, 30H, 31H,30H,46H,36H, 30H,34H, 03H, 37H,34HSUM=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再转换成ASCII31h,30h,46h,36hPLC返回STX 1ST DATA 2ND DATA LAST DATA ETX SUM注:最多可以读取64个字节的数据例子:从指定的存储器单元读到3584这个数据02h 33h 35h 38h 34h 03h 44h,36h2、DEVICE WRITE(向PLC软设备写入值)始命令首地址位数数据终和校验STX CMD GROUP ADDRESS BYTES 1 ST DATA 2ND DATA LAST DATA ETX SUM例子:向D123开始的两个存储器中写入1234,ABCD03h 34h,39h02h 31 h 31h,30h,46h,36h 30h,34h 33h,34h,31 h,32h,43h,44h,41 h,42hPLC返回ACK (06H)接受正确NAK(15H)接受错误3、位设备强制置位/复位FORCE ON 置位始命令地址终和校验STX CMD ADDRESS ETX SUM02h 37h address 03h sumFORCE OFF 复位始命令地址终和校验STX CMD ADDRESS ETX SUM02h 38h address 03h sumPLC返回ACK(06H)接受正确NAK(15H)接受错误 设备强制中的地址公式:Address=Address/8+100h说明:1 .帧中的BYTES表示需要读取或者写入的字节数。
2 .地址算法上有说明3 .累加和是从STX后面一个字节开始累加到ETX的和三菱FX系列PLC编程口通信源代码 fx_comm.hFX系列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校验 无/奇/偶停止位 1 bit/2bit波特率 38400bps 19200bps 300/600/1200/2400/4800/9600/19200 头字符 固定 无/有效尾字符控制线——协议一格式1/格式4无和校验固定无/有效适用机型 FX2n,FXon FX2n,FX,FX2c FX2n,FXon,FX,FX2cFX系列PLC专用协议通信指令一览以下将详细列出PLC专用协议通信的指令:指令注释BR以1点为单位,读出位元件的状态WR以16点为单位,读出位元件的状态,或以1字为单位,读出字元件的值BW以1点为单位,写入位元件的状态WW以16点为单位,写入位元件的状态,或以1字为单位,写入值到字元件BT以1点为单位,SET/RESET位元件WT以16点为单位,SET/RESET位元件,或写入值到字元件RR控制PLC运行RUNRS控制PLC停止STOPPC读出PLC设备类型TT连接测试注:位元件包括X,Y,M,S以及T,C的线圈等: 字元件包括D,T,C,KnX,KnY,KnM等。
FX系列PLC专用协议通信指令格式详解 约定说明:ENQ为请求标志,ASCII值5,VB中以chr⑸表示;ACK为正确标志,ASCII值6,VB中以chr(6)表示; STX为请求标志,ASCII值2,VB中以chr⑵表示; EXT为请求标志,ASCII值3,VB中以chr(3)表示; 表格中红色字为需要求和效验的部分; 和效验为每一项的ASCII值的总和转换成十六进制后区低两位;站号、PLC号、元件数量、和效验都是以十六进制表示;等待延时为0-150毫秒,以十六进制0H-FH表示,如100ms为AH批量读出位元件--BR指令格式:23 4 5PCPLCENQ站号678PLC 号 BRSTX延时站号首地址PLC号数量 数据15 16 17和效验EXT和效验ACK站号 PLC号[注]上述中:9 1011 1213 141、叩LC号系统默认为“FF” ;“首地址"应以十进制表示,如首地址 nX0018H表示从x寄存器的第18地址单元开始读取I/O量;3」数量”表示读取的I/O量个数;4、”和效验”是指从“站号”到“数量”之间的各代码的ASCII码的累加和;5、PLC侧的响应码中“和效验是指从“站号”到”EXT”之 间的各代码的ASCII码 的累加和。
6、可以读出“X”、和”M”寄存器的内容例如:要读出站号为0的Fx2n系列PLC的X00到X08共9点的状态值,延时100ms,假设采用Communication Format(D8120)的 Format 1注 释:请求站号PLC号代 码:ENQO OFFBASCII 码: 05H 30H 30H 46H方式■命令延时元件首地址R A X00 0 046H 42H 52H41H58H元件数量和效验0 9 4 230H 30H 30H 30H 30H 35H 34H 32您只要将以上兰色部分的代码以字符串形式(VB 中可以表示为 CHR(5)&” 00FFBRAX00000942)发送到PLC,就会有正确的回应信息,如下:注 释:头站号PLC号元件首地址尾和效验代码:STXO OFF 00110ASCII 码: 02H 30H 30H 46H 46H 30HH若发送码有误,则有以下回应:注释:头站号PLC号 和效验代码:NAKO OFF 06ASCII 码: 15H 30H 30H 46H 46H 30H30H 31H36H1 EXTO31H 30H 31H31H 30H 31H 03H 30H 352、批量读出字元件--WR指令格1 2 34567 8 15 16 17PC侧: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 9PC侧:ENQ站号PLC号BW延时首地址数量写入值和效验PLC 侧: ACK 站号 PL—10 11 124、批量写入字元件-WWW令(M寄存器100单元置"1")格式:01FFWWAM01000100010C1 23456789PC狈 ENQ站号 PLC号 WW延时 首地址 数量 写入值和效验PLC 05H01 FF A M0100 01 0001 0C ACK 站号 PLC 号rrw.t1011 12请自行分析以上代码请继续关注如何控制PLC的运行/停止三菱PLC与PC机通讯的VB源程序PLC与PC机通讯的VB源程序大体如下:采用的是 FX232BD!讯模块,协议就是 FX通讯协议强制PLC为RUNPrivate Sub command1_Click()Dim dat As String commli.OutBufferCount = 0 commli.InBufferCount = 0 dat = H01FFRRO" commli.Output = Chr$(5) + dat + SumChk(dat)End Sub,强制PLC为STOPPrivate Sub command2_Click()Dim dat As String commli.OutBufferCount = 0 commli.lnBufferCount = 0 dat = n01 FFRSO" commli.Output = Chr$(5) + dat + SumChk(dat)End Sub强制Y0为1Private Sub command3_Click()Dim dat As String commli.OutBufferCount = 0 commli.lnBufferCount = 0 commli.Output = "01FFBW0Y001010 1End Sub强制丫0为0Private Sub command3_Click()Dim dat As String commli.OutBufferCount = 0 commli.lnBufferCount = 0 commli。