三菱Fx系列PLC的编程口协议 - young525

young525 2021-12-14 原文


三菱Fx系列PLC的编程口协议

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

编写 PC 的通信程序可采用汇编语言、各种高级语言,也可以采用工控组态软件或直接采用 PLC 厂家的通信软件。本文采用 VB6 . 0 软件,它必须依据所连接 PLC 的通信规程来编写通信协议,所以先简单介绍 FX 系列 PLC 的通信协议。

数据传输格式

FX 系列 PLC 采用异步格式,由 1 位起始位、 7 位数据位、 1 位偶校验位及1位停止位组成,波特率为 9600bps ,字符为 ASCII码。

PLC的存储单元分别为: X 为输入继电器; Y 为输出继电器; M 为辅助继电器; S 为状态元件; T 为定时器; C 为计数器; D 为数据寄存器。

三菱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

五个标示:

ENQ            05H             请求

ACK            06H             PLC正确响应

NAK           15H             PLC错误响应
STX             02H             报文开始
ETX             03H             报文结束

使用累加方式的和校验,帧格式如下:
STX CMD DATA …… DATA ETX SUM(upper) SUM(lower)
和校验:
SUM= CMD+……+ETX。 如SUM=73H,SUM=“73”。


设备状态读取与写入

地址算法为:address=address×2+1000h

1、DEVICE READ(读出软设备状态值)
计算机向PLC发送:
始          命令             首地址                        位数             终                 和校验
STX       CMD             GROUP ADDRESS       BYTES         ETX              SUM
PLC 返回
STX 1ST DATA 2ND DATA ….. LAST DATA ETX SUM

举例:PC 从 PLC 中读取数据

假设 PC 要从 PLC 中读入从 D123 开始的 4 个字节的数据 ( 占用两个数据寄存器: D123 、 D124) ,其报文如表 5 所示。

根据三菱 FX 系列 PLC 编程口通信协议,地址算法为

address=address×2+1000h

将地址 123 转换成十六进制为 7Bh ,因此首地址为:

address=addressx2+1000h=7Bhx2+1000h=10F 6h .

再转换成 ASCII 码为 31h,30h,46h,36h

校验和 SUM=30H+31H+30H+46H+36H+30H+34H+03H=174H ,溢出部分不计,故 SUMH 为 “7” , SUML 为 “4” ,相应的 ASC Ⅱ码为“ 37H ”和“ 34H ”。

计算机向PLC发送:                                                               

始       命令    首地址      位数       终       和校验   
    STX

02h

    CMD

30h

   GROUP ADDRESS

31h,30h,46h,36h

    BYTES

30h,34h

   ETX

03h

    SUM
37h,34h

PLC返回,从指定的存储器单元读到3584这个数据                                     

STX

1ST DATA

   ND DATA    ….       LAST DATA       ETX    SUM  

                                     

   02h    33h       35h    38h    34h    03h       44h,36h  

    2、DEVICE WRITE(向PLC 软设备写入值)
计算机向PLC发送:
始          命令      首地址          位数             数据             终                  和校验
PLC 返回
ACK (06H) 接受正确
NAK (15H) 接受错误

举例:向D123开始的两个存储器中写入1234,ABCD

   始       命令     首地址    位数      数据      终       和校验  
   STX    CMD       GROUP ADDRESS      BYTES       1ST DATA      2ND DATA      ……      LAST DATA     ETX       SUM   

                                     

   02h       31h      31h,30h,46h,36h      30h,34h       33h,34h,31h,32h,43h,44h,41h,42h       03h      34h,39h  

 

PLC返回:ACK (06H) 接受正确 ;或者是NAK (15H) 接受错误

位设备强制置位/复位

设备强制中的地址公式:Address=Address/8+100h

FORCE ON 置位
始                 命令             地址                    终                 和校验
STX              CMD             ADDRESS            ETX              SUM

02h               37h               address                 03h             sum

                                             
                                   

   始       命令    地址    终    和校验
STX    CMD    ADDRESS    ETX    SUM   
 02h    37h    address    03h    sum

FORCE OFF 复位
始                 命令             地址                    终                 和校验
STX              CMD             ADDRESS            ETX              SUM

02h               38h               address                 03h               sum

                                              
                              

  始    命令    地址    终    和校验
   STX    CMD    ADDRESS    ETX       SUM 
02h       38h       address    03h    sum

PLC 返回
ACK(06H) 接受正确
NAK(15H) 接受错误

以上可以看出,协议非常简单,但是由于没有寄存器类型信息,所以地址的计算十分关键,如D100和M100分别对应哪个地址呢?下面就是三菱Fx系列PLC地址对应表:

Public Const PLC_D_Base_AddRess = 4096

Public Const PLC_D_Special_Base_AddRess = 3584

Public Const PLC_Y_Group_Base_AddRess = 160

Public Const PLC_PY_Group_Base_AddRess = 672

Public Const PLC_T_Group_Base_AddRess = 192

Public Const PLC_OT_Group_Base_AddRess = 704

Public Const PLC_RT_Group_Base_AddRess = 1216

Public Const PLC_M_SINGLE_Base_AddRess = 2048(命令为7或8时)

Public Const PLC_M_Group_Base_AddRess = 256

Public Const PLC_PM_Group_Base_AddRess = 768

Public Const PLC_S_Group_Base_AddRess = 0

Public Const PLC_X_Group_Base_AddRess = 128

Public Const PLC_C_Group_Base_AddRess = 448

Public Const PLC_OC_Group_Base_AddRess = 960

Public Const PLC_RC_Group_Base_AddRess = 1472

Public Const PLC_TV_Group_Base_AddRess = 2048

Public Const PLC_CV16_Group_Base_AddRess = 2560

Public Const PLC_CV32_Group_Base_AddRess = 3072

发表于
2014-09-23 20:47 
young525 
阅读(1920
评论(0
编辑 
收藏 
举报

 

版权声明:本文为young525原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/young525/p/5873796.html

三菱Fx系列PLC的编程口协议 - young525的更多相关文章

  1. ssdb – 关攀攀

    ssdb ssdb https://github.com/ideawu/ssdb   http://www.i […]...

  2. Django 框架篇(七) : 中间件 以及 5种方法

    中间件介绍:   官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子。它是一个轻量、低级 […]...

  3. 检查浏览器是否开启JavaScript功能代码 – HackerVirus

    检查浏览器是否开启JavaScript功能代码 code: <!DOCTYPE html PUBLIC […]...

  4. Pytest系列(30)- 使用 pytest-xdist 分布式插件,如何保证 scope=session 的 fixture 在多进程运行情况下仍然能只运行一次

    如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/p […]...

  5. Excel – vlookup 函数 – tomcat and jerry

    Excel – vlookup 函数 VLOOKUP是按列查找,最终返回该列所需查询列序所对应的值 […]...

  6. svn下载 – jacunjpg

    svn下载 首先介绍的是SVN安装包的下载,分别包括服务器版和客户端版 下载地址:http://subvers […]...

  7. pg数据库系统表 – 步留痕

    pg数据库系统表 系统表部分: 大多数系统表都是在数据库创建的过程中从模版数据库中拷贝过来的,因此都是数据库相 […]...

  8. 超级维度表处理(亿行数据级别) – 李梦蛟

    超级维度表处理(亿行数据级别) 最近在优化公司的数据仓库项目中ETL部分,发现有一处明显可以改进的地方,发出来 […]...

随机推荐

  1. mysql数据库NO CONNECTION问题分析以及解决方案

    自己的站点有时候会挂掉,着实比较麻烦,我不会24小时都看着,说多的都是泪   出现mysql出现NO CONN […]...

  2. ERP SYSTEM 开发指南(一)简单模块开发

    今天演示一下在框架下制作一个测试模块的过程   通过框架向导新建一个BPL模块 保存工程,习惯性地把DCP,B […]...

  3. Linux nfs服务讲解

    Linux nfs服务讲解 nfs服务介绍 nfs(Network File System) 网络文件系统,能 […]...

  4. awakeFromNib与initWithCoder – supper_Ho

    awakeFromNib与initWithCoder 2017-01-16 09:17  supper_Ho  […]...

  5. MySQL优化(1)——–常用的优化步骤

    在开始博客之前,还是同样的给一个大概的目录结构,实则即为一般MySQL的优化步骤 1、查看SQL的执行频率&# […]...

  6. 使用xampp将angular项目运行在web服务器

    需求 在开发angular项目时,因为需要做自适配以适应不同的屏幕,而我的电脑只有1366的。所以我现在需要在 […]...

  7. 免费远程软件 服务器群控

    远程桌面连接已停止工作 服务器群控远程桌面是微软公司为了便于网络管理员管理维护服务器推出的一项服务。从wind […]...

  8. Infragistics.WebUI.UltraWebGrid中嵌套控件的属性设置 – CANYOUNG

    Infragistics.WebUI.UltraWebGrid中嵌套控件的属性设置 当我刚接触ASP.NET的 […]...

展开目录

目录导航