收藏 分销(赏)

三菱FX_系列PLC_编程口通信协议总览.doc

上传人:xrp****65 文档编号:7030920 上传时间:2024-12-25 格式:DOC 页数:3 大小:33KB 下载积分:10 金币
下载 相关 举报
三菱FX_系列PLC_编程口通信协议总览.doc_第1页
第1页 / 共3页
三菱FX_系列PLC_编程口通信协议总览.doc_第2页
第2页 / 共3页


点击查看更多>>
资源描述
三菱FX 系列PLC 编程口通信协议总览 三菱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 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 (设备强制中的地址公式: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) As String  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 数组里。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服