三菱FX 系列PLC 编程通信协议总览
来源:互联网 发布:java开发工程师前景 编辑:程序博客网 时间:2024/04/29 15:48
三菱FX 系列PLC 编程口通信协议总览
该协议实际上适用于PLC 编程端口以及 FX-232AW 模块的通信
通讯格式
命令 命令码 目标设备
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,34h33h,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
(设备强制中的地址公式:Address=Address * 100h + (*) (必须为4位,不足4位前面补0)
注:*号所代表值:
C:14 M:8 T:6 Y:5 X:4 S:0
如对M2置位,则为地址为:2*256(100H)+8=0520 转为十六进制为:0208 再换为ASCII就是: 30 32 30 38)
说明
1.帧中的BYTES 表示需要读取或者写入的字节数
2.地址算法上有说明
3.累加和是从STX 后面一个字节开始累加到ETX 的和
VB读写三菱FX系列PLC数据示例
通过前面两篇文章,我们了解了三菱FX系列PLC的编程口通信协议。为了更方便读者学习这里提供一个用VB编写的示例,其中包含一个通用模块,如果你需要对此类PLC进行读写数据区的操作可以下载看看。
三菱FX系列PLC的校验采用的是和校验,在写数据和读数据时都会有这个和校验,和校验用于检查数据包是否有错。因此我们必需知道和校验的算法,才能成功地进行通信。在这里我们提供了一个和校验的VB源代码:
'***************************************************
Private Function Check_FCS(mStr As String) AsString
Dim K As Integer, mTest As Integer
For K = 1 To Len(mStr)
mTest = mTest + Asc(Mid(mStr, K, 1))
Next
Check_FCS = Right(Hex(mTest), 2)
End Function
'***************************************************
函数中的 mStr 参数为命令、位数、数据、终止符的合集,读取时不包括数据。使用Check_FCS函数时将返回和校验码。
当向PLC写数据时,数据必须为四位的十六进制数,并且低位在前、高位在后。这里提供一个循环代码,将一个数组里的整数转换为向PLC写入数据的字符串:
For Q = 0 To UBound(mData)
myHex = myHex & Format(Hex(mData(Q) Mod &HFF),"00") & Format(Hex(mData(Q) \ &HFF), "00")
Next
在上面的代码中 mData 为向PLC写入数据的数组,myHex 最终得到的就是写入PLC时所要的数据字符串。同样的从PLC读出来的数据也是四位的十六进制,低位在前、高位在后。所以我们有必要将其转换为对应的整数。其主要的转换代码如下:
ReDim mData(mCounts - 1)
For Q = 0 To mCounts - 1
mData(Q) = "&H" & (Mid(myHex, 4 + Q *4, 2) & Mid(myHex, 2 + Q * 4, 2))
Next
mCounts 为要读取数据区的个数,myHex 是串口返回来的数据,经过上面计算返回的整数值将排列在 mData 数组里。
- 三菱FX 系列PLC 编程通信协议总览
- 三菱FX系列PLC编程口通信协议总览
- 三菱FX系列PLC编程口通信协议总览
- 三菱FX系列PLC编程口通信协议举例
- 三菱FX系列PLC编程口通信协议举例
- 三菱FX系列PLC编程口通信协议举例
- 三菱FX系列PLC编程口通信协议举例
- 三菱PLC FX系列编程口通信的若干问题
- 三菱Fx系列PLC的编程口协议
- C# SerialPort 读写三菱FX系列PLC
- C# SerialPort 读写三菱FX系列PLC
- C# SerialPort 读写三菱FX系列PLC
- 三菱FX系列PLC的modbusTCP通讯
- 三菱FX系列plc编程软件SWOPC-FXGP/WIN-C中文版下载
- 易控INSPEC软件与三菱FX系列PLC以太网通讯
- PC与三菱FX系列PLC通信实例
- 三菱A系列PLC
- 三菱plc编程步骤
- Codeforces Round #188 (Div. 2) A(数学划分)
- 【SDOI2007】【COGS723】超级数组
- Axure 7.0 mac Yosemite 不能打开的问题
- 黑马程序员_java多线程 单例设计
- Git 分布式工作流程
- 三菱FX 系列PLC 编程通信协议总览
- 好书推荐
- 2015的网页设计趋势
- 那么亲切美好
- Nginx 配置文件
- 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符
- CSS学习笔记(七) 背景
- 【算法20】在字符串中删除特定的字符
- CSS学习笔记(三) CSS选择器