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

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):指向内存中某个地址的位置。

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

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

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入理解ES的倒排索引

目录 数据写入过程 词项字典 term dictionary 倒排表 posting list FOR算法 RBM算法 ArrayContainer BitMapContainer 词项索引 term index 在Elasticsearch中,倒排索引的设计无疑是惊为天人的,下面看下倒排索引的结构。 倒排索引分为词项索引【…

数据结构(C语言)代码实现(八)——顺序栈实现数值转换行编辑程序汉诺塔

目录 参考资料 顺序栈的实现 头文件SqStack.h(顺序栈函数声明) 源文件SqStack.cpp(顺序栈函数实现) 顺序栈的三个应用 数值转换 行编辑程序 顺序栈的实现测试 栈与递归的实现(以汉诺塔为例) 参考资…

2024-2-9-复习作业

1> 要求: 源代码: CCgcc EXEa.out OBJS$(patsubst %.c,%.o,$(wildcard *.c)) CFLAGS-c -oall:$(EXE)$(EXE):$(OBJS)$(CC) $^ -o $%.o:%.c$(CC) $(CFLAGS) $ $^.PHONY:cleanclean:rm $(OBJS) $(EXE) 效果图: 2> 要求: 源…

【JAVA WEB】标签的应用

个人简历信息填写界面 通过上篇博客对java web标签的介绍&#xff0c;这里我们简单的应用一下这些标签。 效果 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content&q…

c#cad 创建-点(六)

运行环境 vs2022 c# cad2016 调试成功 一、代码说明 创建一个点的命令方法。代码的主要功能是在当前活动文档中创建一个点&#xff0c;并将其添加到模型空间块表记录中。 代码的主要步骤如下&#xff1a; 获取当前活动文档、数据库和编辑器对象。使用事务开始创建点的过程…

【开源】JAVA+Vue.js实现高校实验室管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 实验室类型模块2.2 实验室模块2.3 实验管理模块2.4 实验设备模块2.5 实验订单模块 三、系统设计3.1 用例设计3.2 数据库设计 四、系统展示五、样例代码5.1 查询实验室设备5.2 实验放号5.3 实验预定 六、免责说明 一、摘…

AWS配置内网EC2服务器上网【图形化配置】

第一种方法&#xff1a;创建EC2选择启用分配公网ip 1. 创建vpc 2. 创建子网 3. 创建互联网网关 创建互联网网关 创建互联网网关 &#xff0c;设置名称即可 然后给网关附加到新建的vpc即可 4. 给新建子网添加路由规则&#xff0c;添加新建的互联网网关然后点击保存更改 5. 新建…

vue3项目实现预览图片、旋转图片功能

一、需求&#xff1a; 在点击图片时&#xff0c;能预览大图&#xff0c;弹出一个包含旋转图片功能按钮的弹窗。用户可通过点击按钮实现对图片的旋转操作 二、思路&#xff1a; 点击图片预览&#xff1a; 用户通过点击图片触发预览功能。接收图片的 URL&#xff0c;弹出一个模…

Vue-Vue3 集成编辑器功能

1、安装依赖 编辑器插件需要安装 wangeditor/editor 和 wangeditor/editor-for-vue 两个插件 npm install wangeditor/editor --savevue3运行如下命令安装 npm install wangeditor/editor-for-vuenext --savevue2运行如下命令安装 npm install wangeditor/editor-for-vue -…

云计算运维1

1、企业服务器LNMP环境搭建 集群&#xff1a;多台服务器在一起作同样的事 。分布式 &#xff1a;多台服务器在一起作不同的事 。 环境准备&#xff1a; 1、设置静态ip&#xff08;NAT模式网关为.2&#xff09; # cat /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE"E…

Stable Diffusion 模型下载:majicMIX realistic 麦橘写实 - V7

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十下载地址模型介绍 非常推荐的一个写实模型,由国人“Merjic”发布,下载量颇高。这款大模型带来非常高的写实度以及光影感,特别是光线在画面中生成的感觉,也相比其他的人物大模型带来…

查看NodeJs版本和查看NPM版本

Windows10 Dos命令下 查看NodeJs版本和查看NPM版本 NodeJs的命令是&#xff1a;node -v Npm的命令是&#xff1a;npm -v 下图&#xff1a; 记录下&#xff01;~

Leetcode—61. 旋转链表【中等】

2024每日刷题&#xff08;114&#xff09; Leetcode—61. 旋转链表 实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) …

springboot微信小程序uniapp学习计划与日程管理系统

基于springboot学习计划与日程管理系统&#xff0c;确定学习计划小程序的目标&#xff0c;明确用户需求&#xff0c;学习计划小程序的主要功能是帮助用户制定学习计划&#xff0c;并跟踪学习进度。页面设计主要包括主页、计划学习页、个人中心页等&#xff0c;然后用户可以利用…

C++分支语句

个人主页&#xff1a;PingdiGuo_guo 收录专栏&#xff1a;C干货专栏 大家新年快乐&#xff0c;今天&#xff0c;我们来了解一下分支语句。 文章目录 1.什么是分支语句 1.if语句 基本形式 用法说明 练习 2.if-else语句 基本形式 用法说明 练习 3.switch语句 基本形式…

生成验证码-超简单

引言 在Web开发中&#xff0c;验证码是一种常见的防止恶意破解、自动化提交的有效手段。在Java项目中&#xff0c;我们可以使用Hutool工具库快速实现验证码功能。Hutool是一个Java工具包&#xff0c;它以简洁易用著称&#xff0c;其中包含了验证码模块&#xff0c;可以让我们轻…

【RPA】智能自动化的未来:AI + RPA

伴随着人工智能&#xff08;AI&#xff09;技术的迅猛进步&#xff0c;机器人流程自动化&#xff08;RPA&#xff09;正在经历一场翻天覆地的变革。AI为RPA注入了新的活力&#xff0c;尤其在处理复杂任务和制定决策方面。通过融合自然语言处理&#xff08;NLP&#xff09;、机器…

Codeforces Round 260 (Div. 1)A. Boredom(dp)

最开始写了一发贪心wa了&#xff0c;然后这种选和不选的组合优化问题&#xff0c;一般是考虑动态规划 d p [ i ] [ 0 ] &#xff1a; dp[i][0]&#xff1a; dp[i][0]&#xff1a;表示第i个数不选的最大值 d p [ i ] [ 1 ] &#xff1a; dp[i][1]&#xff1a; dp[i][1]&#xf…

sql相关子查询

1.什么是相关子查询 相关子查询是一个嵌套在外部查询中的查询&#xff0c;它使用了外部查询的某些值。每当外部查询处理一行数据时&#xff0c;相关子查询就会针对那行数据执行一次&#xff0c;因此它的结果可以依赖于外部查询中正在处理的行。 2.为什么要使用相关子…

C++面试宝典第27题:完全平方数之和

题目 给定正整数 n,找到若干个完全平方数(比如:1、4、9、16、...),使得它们的和等于n。你需要让组成和的完全平方数的个数最少。 示例1: 输入:n = 12 输出:3 解释:12 = 4 + 4 + 4。 示例2: 输入:n = 13 输出:2 解释:13 = 4 + 9。 解析 这道题主要考察应聘者对于…