C#上位机与三菱PLC的通信02--MC协议介绍

news2024/11/17 23:47:38

1、协议介绍

三菱 PLC MC 协议是一种用于三菱 PLC 与上位机之间进行数据通信的协议,也称为 Mitsubishi Communication Protocol。该协议支持串口、以太网等多种通讯方式,可实现实时数据的采集和交换。三菱PLC的MC协议是一种数据通信协议,它用于在计算机和三菱PLC之间传输数据。MC协议是三菱公司独有的一种协议,主要用于控制三菱PLC。三菱MC协议目的是让外部设备实现与PLC的通信,也就数据的读取和写入。

MC协议是Melsec协议的简称。

MC 协议包含两种通信方式:ASCII 码方式和二进制方式。其中,ASCII 码方式使用英文字符进行编码传输,通讯速率较慢;二进制方式则使用二进制进行编码传输,通讯速率更快。同时,MC 协议也支持多个 PLC 之间的通信,可实现分布式控制和数据共享。

MC 协议具有以下特点:

  1. 通讯速度快,适用于实时控制和数据采集等场景。
  2. 支持多种通信方式和多个 PLC 之间的通信,具有较好的通用性和兼容性。
  3. 支持多种数据格式,包括位、字、浮点数等类型,可实现多种数据传输和交换。
  4. 具有高效的数据校验和重发机制,保证通信的可靠性和稳定性。

三菱 PLC MC 协议可以支持许多三菱 PLC 设备,包括以下系列:

  • FX 系列:FX3G、FX3U、FX3UC、FX5U 等
  • A 系列:A0J、A1S、A2S、A3S 等
  • Q 系列:Q02H、Q03UDCPU、QD75 等
  • L 系列:L02CPU、L02SCPU、L06CPU 等
  • GOT 系列:GT10、GT11、GT14 等
  • iQ-R 系列:R04CPU、R08CPU、R16CPU 等
  • iQ-F 系列:F04CPU、F08CPU、F16CPU 等
  • C 系列:C24、C40、C60 等

 1.三菱MC协议的目的
MC协议的目的是开放PLC内部寄存器给外部设备,实现外部设备和PLC的数据交互。简单说就是允许外部设备通过MC协议来读/写PLC里面的寄存器

2. 通信协议方式
通讯方式有485和TCP/IP两种,本次只介绍TCP/IP下的配置和通讯方法。采用一发一收模式,外部设备主动发起通讯,发送特定网络帧给PLC;PLC在接收后返回一帧,如果接收的帧格式错误,则返回帧中会提示错误类型,如果接收帧格式正确,则返回写入成功帧或返回对应数据帧。

3. 通讯格式和内容
MC协议的通讯格式有很多种:3E、3C、4C、4E帧格式

2、MC协议帧模式

在三菱的PLC通信的MC协议中,分为串行通信的报文和以太网接口的报文。MC协议有A-1E和Qna-3E两种模式,这两种都是三菱PLC通信协议中比较常用的两种。

A-1E是三菱PLC通信协议中最早的一种,它是一种基于二进制通信协议的协议,适用于三菱FX系列PLC和A系列PLC。该协议支持点对点通信和多点通信,可以实现PLC之间的数据交换和远程监控等功能。

Qna-3E模式是三菱PLC通信协议中较新的一种,它是一种基于ASCII码通信协议的协议,适用于三菱Q系列PLC和FX3U系列PLC。该协议支持点对点通信和多点通信,可以实现PLC之间的数据交换、远程监控和远程编程等功能。

总的来说,三菱PLC通信协议是三菱PLC与其他设备之间进行通信的重要手段,不同的协议适用于不同的PLC型号和通信需求。

一般我们使用比较多的是以太网通信,对于FX5U系列/Q系列/Qna系列/L系列的PLC,通常会使用QnA兼容3E帧,对于FX3U系列,我们需要加以太网模块,采用A兼容1E帧。

MC协议的数据格式为16位寄存器,支持读取和写入操作。其中,读取操作可以读取单个寄存器或多个连续寄存器,写入操作可以写入单个寄存器或多个连续寄存器,总之,三菱PLC MC协议是一种高效、安全、可靠的通信协议,广泛应用于工业自动化控制系统中。

3、MC协议的A-1E帧

 

 

 

 

4、MC协议的Qna-3E帧

举例说明:指令为向软元件D7000写入值H000C
发送帧内容为:50 00 00 FF FF 03 00 0E 00 10 00 01 14 00 00 58 1B 00 A8 01 00 0C 00
响应帧内容为:D0 00 00 FF FF 03 00 02 00 00 00


发送帧内容解析: 

响应帧内容解析:

 具体的实例例子将在下节详细介绍

5、软元件类型介绍

PLC是在继电器控制路线基础上发展起来的,继电器控制线路有时间继电器、中间继电器等,而PLC内部也有类似的器件,由于这些器件以软件形似存在,故称为软元件。PLC程序由指令和软元件组成,指令的功能是发出命令,软元件是指令的执行对象,比如,SET为1指令,Y000是PLC的一种软元件(输出继电器),“SET Y000”就是命令PLC的输出继电器Y000的转台变为1。由此可见,编写PLC程序必须了解PLC的指令级软元件。

软元件就是存储区

软元件就是存储区

软元件就是存储区

三菱PLC软元件有:(X/Y)输入输出继电器;(M)辅助继电器;(S)状态继电器;(T)定时器;(C)计数器;(D)数据寄存器;(P)指针;(N)嵌套层数;(K、H、E)常数。

一、输入继电器(X)和输出继电器(Y)

1)输入继电器(X)

输入继电器用于接受PLC输入端子送入的外部开关信号,它与PLC的输入端子连接,其表示符号为X,按八进制方式编号,输入继电器与外部对应的输入端子编号的相同的。三菱FX3U-48MR/ES-A型PLC外部有8个输入端子,其编号为X000~X007、X010~X017、X020~X027,相应的内部也有24个相同编号的输入继电器来接收这样端子输的开关信号。

一个输入继电器可以有无数个编号相同的常闭触点和常开触点,当某个输入端子(如X000)外接开关闭合时,PLC内部相同编号输入继电器(X000)状态变为ON,那么程序中相同编号的常开触点处于闭合,常闭触点处于断开。

2)输出继电器(Y)

输出继电器(常称输出线圈)用于将PLC内部开关信号送出,它与PLC输出端子连接,其表示符号为Y,也按八进制方式编号,输出继电器与外部对应的输出端子编号是相同的。三菱FX3U-48MR/ES-A型PLC外部有24个输出端子,其编号为Y000-¥007、Y010-1017、Y020~Y027,相应地内部有24个相同编号的输出继电器,这些输出继电器的状态由相同编号的外部输出端子送出。

一个输出继电器只有一个与输出端子连接的常开触点(又称硬触点),但在编程时可使用无数个编号相同的常开触点和常闭触点。当某个输出继电器(如Y000)状态为ON时它除了会使相同编号的输出端子内部的硬触点闭合外,还会使程序中的相同编号的常开触点闭合,常闭触点断开。

三菱FX系列PLC支持的输入继电器、输出继电器如图表所示

二、辅助继电器(M)

辅助继电器是PLC内部继电器,它与输入、输出继电器不同,不能接收输入输入端子送来的信号,也不能驱动输出端子。辅助继电器表示符号为M,按十进制方式编号,如M0~M499、M500~M1023等。一个辅助继电器可以有无数个编号相同的常闭触点和常开触点。

辅助继电器分为四类:一般型、停电保持型、停电保持专用型、特殊用途型。

 三、D数据寄存器

数据寄存器D是专门用于存储数据的软元件,供数据传送、数据比较、

数据运算等操作。数据寄存器都是16位,可存放16位二进制数,也可将两

个数据寄存器组合存放32位二进制数。数据寄存器主要有通用数据寄存器、

锁存数据寄存器、特殊数据寄存器和变址数据寄存器。

1)通用数据寄存器:一旦写入数据,并在未写入其它数据时,寄存器中

的数据是不会变化的。但如果PLC停止或断电时,所有数据清零。

FX0S/1S/1N(D0-D127)128点;FX2N/3U(D0-D199)200点。

2)锁存数据寄存器:具有断电保持功能,PLC从运行到停止,寄存器内

部数据不变。FX0S/1S(D128-D255)128点;FX1N(D128-D7999)7872点;

FX2N/3U(D200-D7999)7800点。

3)特殊数据寄存器:特殊寄存器分为两种,一种是只能读取或利用其

中数据的寄存器,另一种是用来写入特定数据的寄存器。

FX0S/1S/1N/2N(D8000-D8255)256点,FX3U(D8000-D8511)512点。

4)变址寄存器:用V、Z来表示,与数据寄存器相同也可以用于读写操

作,但主要用于寄存器地址的修改。例如当Z0=10时,则D10Z0相当于

D20(10+10)V0与Z0可组成一个32位数据,V为高位,Z为低位。

 6、三菱PLC数据“位”与“字”的区别

对于没有计算机基础的工控人员可能对数据这块不太清楚,现在就说下三菱PLC数据类型。

首先我们先了解下的区别,位一共有两种状态01,0代表关、1代表开,对用于PLC中的XYMS,处理关/开信号的软元件称之为位软元件。我们再说下字,字有单字和双字,单字由16个位组成的,双字由32个位组成,对应于PLCTCDR处理数值信号的软元件称之为字软元件。

位和字的表示通过上图,我们知道位是1位二进制,字是16位二进制,在PLC中说的几位几位就是二进制的并非十进制。位软元件的组合也能处理数值,通过Kn和起始位软元件的组合来表示,在PLC程序中经常看到MOV d100 K4M0MOV d100 K2M0我们看下是怎么回事:


 

MOV d100 K4M0

K4M0的数值就是D0Kn表示位数以4为单位,K1M0表示M0M1M2M3

 

MOV d100 K2M0

数据长度不足的高位部分不被传送。

了解这些我们再说下,PLC基本的数据类型:2进制数、8进制数、10进制数、16进制数。

2进制数,PLC中内部数据处理方式,它是最基本的存储和运算的方式,所有的10机制、16进制在PLC中都要转化为2进制处理,在触摸屏等上位机会自动抓换成10进制显示。

8进制,FX系列可编程控制器中,输入继电器、输出继电器的软元件编号都是以8进制数分配的,由于在8进制数中,不存在[8,9]所以按[071017…7077100107]上升排列。

10进制,辅助继电器(M)、定时器(T)、计数器(C)、状态(S)软元件编号(其他牌子的PLC的编号方式有12进制等),应用指令的操作数中的数值指定和指令动作的指定。

16进制,应用指令的操作数中的数值指定和指令动作的指定,通常在变频器的通讯地址、命令码表示。

 

三菱PLC(可编程逻辑控制器)支持多种数据类型,其中包括:

  1. 位(bit):通常表示为 `BOOL` 类型,用于表示开关状态(ON或OFF)。
  2. 字节(Byte):等同于8位,从0到255。
  3. 字(Word):等同于16位,从0到65535。
  4. 双字(DoubleWord):等同于32位,从0到4294967295。
  5. 16位整数(Int):有符号数,范围为-32768至32767。
  6. 32位整数(Dint):同样是有符号数,范围为-2147483648至2147483647。
  7. 浮点数(Real):32位,可以表示小数。

此外,还有其他特殊类型的变量,如:

  • 定时器(Timer):用于计时功能。
  • 累计定时器(Retentive Timer):用于记录周期性事件的时间间隔。
  • 计数器(Counter):用于递增或递减数值。
  • 长计数器(Long Counter):用于长时间计数的应用。
  • 指针(Pointer):指向内存中某个地址的位置。

这些数据类型可以根据需要进行组合和使用,以满足不同的编程需求,了解这些对于上位机软件开发很重要。

打字不易,截图不易,代码不易,准备不易,原创不易,多多点赞收藏,江湖有你,共同致富。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1438201.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

跟着pink老师前端入门教程-day21

5.4 常见flex布局思路 5.5 背景线性渐变 语法: background: linear-gradient( 起始方向 , 颜色 1, 颜色 2, ...); background: -webkit-linear-gradient(left, red , blue); background: -webkit-linear-gradient(left top, red , blue); 背景渐变必须添加浏览…

【Mybatis】从0学习Mybatis(1)

前言 本篇文章是从0学习Mybatis的第一篇文章,由于篇幅太长CSDN会限流,因此我打算分开三期来写,这是第一期! 1.怎么理解MyBatis是一个框架? 温馨提示:接下来的你不一定能看懂! MyBatis是一个J…

1Panel面板如何安装并结合内网穿透实现远程访问本地管理界面

文章目录 前言1. Linux 安装1Panel2. 安装cpolar内网穿透3. 配置1Panel公网访问地址4. 公网远程访问1Panel管理界面5. 固定1Panel公网地址 前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器,包括主机监控、…

照片去除水印的方法有哪些?这些方法快收藏保存起来

当你踏破铁鞋无觅处,在茫茫网海中寻得心仪的头像或壁纸美图,却发现那完美的画面上赫然带着平台水印,是不是感觉如鲠在喉?但又不知道照片去除水印的方法有哪些而束手无策?别担心,今天我就为你带来几招去水印…

Instagram SEO如何优化?10个技巧

Instagram SEO 是优化 Instagram 内容以使其在平台搜索结果中被发现的做法。如果你希望你可以更快的让你的Ins获得流量,做好SEO就成功了一半。Instagram 搜索结果包括相关内容、帐户、音频、主题标签和地点,下面为你总结10个策略技巧! 一、In…

Windows 安装 MySQL 最新最简教程

Windows 安装 MySQL 最新最简教程 官网地址 https://dev.mysql.com/downloads/mysql/下载 MySQL zip 文件 配置 MySQL1、解压文件 2、进入 bin 目录 搜索栏输入 cmd 回车进入命令行 C:\Users\zhong\Desktop\MySQL\mysql-8.3.0-winx64\mysql-8.3.0-winx64\bin 注意这里是你自己…

windows下ngnix自启动(借助工具winSw)

文章目录 前言一、winsw工具二、使用步骤下载 windsw-x86.exe同级目录创建一个xml文件以管理员权限打开cmd 运行设置自启动 总结 前言 在windows下安装nginx后,不想每次都手动启动。本文记录下windows下ngnix自启动(借助工具winSw)的操作流程…

Pandas数据处理技能大全:索引标签修改函数全攻略【第65篇—python:索引标签】

文章目录 Pandas数据处理技能大全:索引标签修改函数全攻略1. rename函数参数说明:代码实例: 2. set_index函数参数说明:代码实例: 3. reset_index函数参数说明:代码实例: 4. reindex函数参数说明…

Spring Web Body 转化常见错误

在 Spring 中,对于 Body 的处理很多是借助第三方编解码器来完成的。例如常见的 JSON 解析,Spring 都是借助于 Jackson、Gson 等常见工具来完成。所以在 Body 处理中,我们遇到的很多错误都是第三方工具使用中的一些问题。 真正对于 Spring 而…

学习Spring的第十六天

AOP底层两种生成Proxy的方式 我来解释这两种方式 1 目标类有接口 , 调用JDK的动态代理实现 2 目标类没有接口 , 用Cglib实现 , 即生成目标类的子类 , 来实现动态代理 , 所以要求目标类不能时final修饰的 . (若有接口 , 也可用Cglib方式实现 , 需要手动配置<aop: config pr…

Java Map 集合的几种常用遍历方式

Java Map 集合的几种常用遍历方式 package com.zhong.mapdemo.map;import java.util.HashMap; import java.util.Map; import java.util.Set;/*** ClassName : MapFor* Description : Map 的遍历* Author : zhx* Date: 2024-02-07 13:43*/ public class MapFor {public static …

腾讯云游戏联机服务器配置价格表,4核16G/8核32G/4核32G/16核64G

2024年更新腾讯云游戏联机服务器配置价格表&#xff0c;可用于搭建幻兽帕鲁、雾锁王国等游戏服务器&#xff0c;游戏服务器配置可选4核16G12M、8核32G22M、4核32G10M、16核64G35M、4核16G14M等配置&#xff0c;可以选择轻量应用服务器和云服务器CVM内存型MA3或标准型SA2实例&am…

C++ || 模板初阶 | 函数模板 | 类模板

泛型编程 泛型编程&#xff0c;编写与类型无关的通用代码&#xff0c;是代码复用的一种手段。模板是泛型编程的基础。 可以理解为活字印刷术类似的方式。 函数模板 函数模板概念 函数模板&#xff0c;代表一个函数家族&#xff0c;该函数模板与类型无关&#xff0c;在使用…

【SpringBoot】application配置(5)

type-aliases-package: com.rabbiter.cm.domaintype-aliases-package: 这个配置用于指定mybatis的别名&#xff0c;别名是一个简化的方式&#xff0c;让你在Mapper xml 文件中引用java类型&#xff0c;而不需要使用使用完整的类名。例如&#xff0c;如果你在 com.rabbiter.cm.d…

《数字孪生城市建设指引报告(2023年)》指引智慧城市行动方向

2023年12月27日&#xff0c;中国信息通信研究院&#xff08;简称“中国信通院”&#xff09;产业与规划研究所、中国互联网协会数字孪生技术应用工作委员会和苏州工业园区数字孪生创新坊联合发布《数字孪生城市建设指引报告&#xff08;2023年&#xff09;》。该报告提出了三大…

jsp康养小镇管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP康养小镇管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&a…

【大模型上下文长度扩展】YaRN:以文匹意,精细化衔接长篇

YaRN 核心问题上下文窗口限制位置编码的限制YaRN的原理 YaRN方法 NTK-aware NTK-by-parts Dynamic NTK子问题1: 高频信息丢失子解决1: “NTK-aware”插值子问题2: 相对局部距离的丢失子解决2: “NTK-by-parts”插值子问题3: 动态缩放子解决3: “Dynamic NTK”插值分析不足 核…

JVM双亲委派机制

双亲委派模型是一种组织类加载器之间关系的一种规范,他的工作原理是:如果一个类加载器收到了类加载的请求,它不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,这样层层递进,最终所有的加载请求都被传到最顶层的启动类加载器中,只有当父类加载器无法完成这个加载…

STM32TIM定时器(4)

文章目录 前言一、介绍部分编码器简介正交编码器编码器接口基本结构工作模式均不反向实例均反向实例 二、代码部分编码器接口测速连接线路 代码实现 前言 这部分主要介绍定时器编码器接口&#xff0c;了解使用编码器对计数器的控制&#xff0c;理解正交编码器的工作模式&#…

【JavaScript 漫游】【010】属性描述对象

本文为【JavaScript 漫游】专栏的第 010 篇文章&#xff0c;记录了属性描述对象的重要知识点。 什么是属性描述对象Object.getOwnPropertyDescriptorObject.getOwnPropertyNamesObject.defineProperty、Object.definePropertiesObject.prototype.propertyIsEnumerable元属性存…