三菱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 编程通信协议总览相关推荐

  1. 三菱FX系列PLC编程口通信协议总览

    该协议实际上适用于PLC编程端口以及FX-232AW模块的通信 通讯格式       命令(CMD)   命令码    目标设备  DEVICE READ  CMD    "0"  ...

  2. 三菱FX系列plc编程软件SWOPC-FXGP/WIN-C中文版下载

    SWOPC-FXGP/WIN-C 由本站工控资料分享专业户提供 三菱编程软件SWOPC-FXGP/WIN-C为一个可应用于三菱FX系列可编程控制器PLC的编程软件,可在windows下运行,在SWOP ...

  3. PC与三菱FX系列PLC通信实例

    本文介绍的 PC 与三菱 FX 系列 PLC 通信,是通过 PLC 的编程口与 PC 机的串口进行的,采用 SC-09 编程电缆作为计算机与 PLC 通信的连线.电缆的 9 芯 D 形插头连接在计算机 ...

  4. plc和pc串口通讯接线_三菱FX系列PLC与电脑之间串口RS232通讯协议简易解析

    本文介绍的 PC 与三菱 FX 系列 PLC 通信,是通过 PLC 的编程口与 PC 机的串口进行的,采用 SC-09 编程电缆作为计算机与 PLC 通信的连线.电缆的 9 芯 D 形插头连接在计算机 ...

  5. 三菱FX系列PLC模拟量输入AD模块的使用方法和相关编程设置详解

    三菱FX系列PLC模拟量输入AD模块的使用方法和相关编程设置详解 本次以FX3U系列PLC的模拟量输入模块FX3U-4AD进行举例说明:  该模块的部分技术数据如下图所示,  该模块的接线端子排列 ...

  6. 三菱je-a系列伺服支持modbusrtu 协议吗_入门课程 | 三菱FX系列PLC的软元件介绍

    点击箭头处"工业之家",选择"关注公众号"!  三菱FX系列PLC的软元件介绍 PLC的软元件很多,主要有输入继电器.输出继电器.定时器.计数器.数据寄存器和常 ...

  7. 三菱FX系列PLC简单总结

    点击 三菱FX系列PLC简单总结 关注微信公众号:小平Linux工作室 获得"0基础学习PLC电气电工知识.数据结构与算法,STC89C51知识,嵌入式STM32.嵌入式Linux C/C+ ...

  8. 三菱FX系列PLC以太网通讯

    三菱FX系列PLC以太网通讯 BCBet-FX用于三菱FX1N/1S/2N/3U/3G/3S等系列PLC,以及汇川.禾川.士林等品牌PLC. BCBet-FX 以太网模块采用三通设计,不占用PLC通讯 ...

  9. 三菱FX系列PLC以太网连接西门子wincc软件

    三菱FX系列PLC以太网连接西门子wincc软件 三菱FX系列PLC,包括FX1N.FX2N.FX3U.FX3S.FX3G等:可以通过MCTCP和ModbusTCP两种以太网方式连接西门子wincc软 ...

最新文章

  1. matlab画CDF曲线
  2. cmake编译时支持gdb调试
  3. Unable to open the physical file XXX.mdf
  4. CUDA编程-gt;CUDA入门了解(一)
  5. Android Binder机制----实现自定义的系统服务
  6. activemq的部署(三)
  7. C# 委托:把方法组合到一个数组中使用
  8. Java反梯形图案_梯形法求定积分(一)设计梯形法求积分的类模板,梯形法
  9. Java——集合(Map集合的两种迭代)
  10. 焦头烂额一个上午还是搞不定,跪地相求大家,朋友帮忙啊。。。
  11. 命令 结构_只需一个命令!从你的U盘里读出更多内容
  12. Linux自学笔记——tcp wrapper
  13. quick-cocos2dx 组件管理器
  14. xlsread服务器出现意外情况
  15. 978_使用emacs lisp安装emacs插件
  16. 设置网站301跳转,直接输入主域名跳转至www域名
  17. 关于vue项目表单验证身份证号的正则表达式
  18. Java面对对象程序设计——面对对象
  19. JAVA计算机毕业设计电影视频在线点播系统Mybatis+系统+数据库+调试部署
  20. 微信小程序实现押金管理(支付押金、申请退还押金、押金明细)

热门文章

  1. lombok无法解析log
  2. python导入opencv解决no module named cv2问题
  3. 【MySQL】MySQL for Mac 环境变量的配置
  4. Struts学习之自定义拦截器
  5. 一个程序猿的生命周期
  6. Apache Thrift - 可伸缩的跨语言服务开发框架
  7. 在线Javascript压缩工具
  8. Hbase常用基础命令
  9. Notadd —— 基于 nest.js 的微服务开发框架
  10. Zilliqa的设计构思 第1部分:网络分片