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

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

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

 

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

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

相关文章

Bootstrap5 响应式导航栏

Bootstrap5 响应式导航栏 我们可以使用 Bootstrap5 导航栏组件为网站或应用程序创建响应式导航标题。 这些响应式导航栏在手机等小视口的设备上会折叠,但当用户单击切换按钮时会展开。 但是,它在中型和大型设备(例如笔记本电脑或台式机&#…

考研数据结构笔记(4)

链表(链式存储) 单链表定义基本操作的实现单链表的插入按位序插入指定节点的前插指定节点的后插 单链表的删除 小结 单链表 定义 顺序表优点:可随机存取,存储密度高,缺点:要求大片连续空间,改变容量不方便。 单链表优…

中科星图——如何利用中科星图智脑引擎来下载0.5米分辨率的高清遥感影像

简介 如何利用中科星图智脑引擎来下载0.5米分辨率的高清遥感影像,这里我们一旦您有GEE的基础那么还是非常好的接入到这个平台当中的,所以这里我们依旧是使用的JavaScript语言来进行编程,地球计算器-地球编程 (geovisearth.com) 这里有一个好处是这里的函数我们可以直接悬浮…

1898_野火FreeRTOS教程阅读笔记_链表操作

1898_野火FreeRTOS教程阅读笔记_链表操作 全部学习汇总: g_FreeRTOS: FreeRTOS学习笔记 (gitee.com) 新的节点的插入,影响到的是链表中最后一个元素的后继以及当前被插入元素的前驱、后继以及归属属性。具体的操作效果为:新的节点更新自己的前…

2 月 7 日算法练习- 数据结构-树状数组

树状数组 lowbit 在学习树状数组之前,我们需要了解lowbit操作,这是一种位运算操作,用于计算出数字的二进制表达中的最低位的1以及后面所有的0。 写法很简单: int lowbit(int x){return x &am…

2024.02.08

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);this->setWindowIcon(QIcon(":/zh.png"));ui->lineEdit->setPlaceholderText("账号/手…

WordPress Plugin HTML5 Video Player SQL注入漏洞复现(CVE-2024-1061)

0x01 产品简介 WordPress和WordPress plugin都是WordPress基金会的产品。WordPress是一套使用PHP语言开发的博客平台。该平台支持在PHP和MySQL的服务器上架设个人博客网站。WordPress plugin是一个应用插件。 0x02 漏洞概述 WordPress Plugin HTML5 Video Player 插件 get_v…

Python进阶--爬取美女图片壁纸(基于回车桌面网的爬虫程序)

目录 一、前言 二、爬取下载美女图片 1、抓包分析 a、分析页面 b、明确需求 c、抓包搜寻 d、总结特点 2、编写爬虫代码 a、获取图片页网页源代码 b、提取所有图片的链接和标题 c、下载并保存这组图片 d、 爬取目录页的各种类型美女图片的链接 e、实现翻页 三、各…

ZooKeeper安装及配置(Windows版)

步骤: 1.官网下载二进制版本ZooKeeper安装包。 2.解压到你要安装的目录下 3.配置 3.1进入目录 D:\Install\apache-zookeeper-3.9.1-bin 新增两个文件夹:data和log 3.2 进入目录D:\Install\apache-zookeeper-3.9.1-bin\conf 复制zoo_sample.cfg文件&a…

手把手教你开发Python桌面应用-PyQt6图书管理系统-主窗体点击菜单显示功能窗体实现

锋哥原创的PyQt6图书管理系统视频教程: PyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~_哔哩哔哩_bilibiliPyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~共计24条视频&…

【人工智能】人工智能 – 引领未来科技的潮流

写在前面 引言红利挑战结论 引言 人工智能是指使计算机系统表现出类似于人类智能的能力。其目标是实现机器具备感知、理解、学习、推理和决策等智能行为。人工智能的发展可以追溯到上世纪50年代,随着计算机技术和算法的不断进步,人工智能得以实现。 今天…

visual studio code could not establish connection to *: XHR failed

vscode远程连接服务器时,输入密码,又重新提示输入密码,就这样循环了好几次,然后会报上述的错误。由于我是window系统,我用cmd,然后ssh */你的IP地址/*发现可以远程到服务器上,但是通过Vscode就不…

向量搜索查询faiss、annoy

首先介绍annoy : 转发空间:https://download.csdn.net/blog/column/10872374/114665212 Annoy是高维空间求近似最近邻的一个开源库。 Annoy构建一棵二叉树,查询时间为O(logn)。 Annoy通过随机挑选两个点,并使用垂直于这个点的等距离超平面…

新书速览|PyTorch 2.0深度学习从零开始学

实战中文情感分类、拼音汉字转化、中文文本分类、拼音汉字翻译、强化学习、语音唤醒、人脸识别 01 本书简介 本书以通俗易懂的方式介绍PyTorch深度学习基础理论,并以项目实战的形式详细介绍PyTorch框架的使用。为读者揭示PyTorch 2.0进行深度学习项目实战的核心技…

Git介绍和常用命令说明

目录 一、Git概述 1.1 Git是什么 1.2 Git有什么用 1.3 Git仓库介绍 二、Git下载与安装 三、Git代码托管服务(远程仓库) 四、Git常用命令 4.1 设置用户信息 4.2 获取Git仓库 4.2.1 本地初始化Git仓库 4.2.2 从远程仓库克隆 4.3 本地仓库操作 …

相机图像质量研究(10)常见问题总结:光学结构对成像的影响--光圈

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…

SERVLET线程模型

1. SERVLET线程模型 Servlet规范定义了两种线程模型来阐明Web容器应该如何在多线程环境中处理servlet。第一种模型称为多线程模型,默认在此模型内执行所有servlet。在此模型中,每次客户机向servlet发送请求时Web容器都启动一个新线程。这意味着可能有多个线程同时访问servle…

机器人运动学林沛群——旋转矩阵

旋转矩阵 基本概念 三个主轴,可以看作是三个向量,为b在a的表达,以a为基准 旋转矩阵 B相对于A的姿态: B A R [ A X B ^ A Y B ^ A Z B ^ ] [ X ^ B ⋅ X ^ A Y ^ B ⋅ X ^ A Z ^ B ⋅ X ^ A X ^ B ⋅ Y ^ A Y ^ B ⋅ Y ^ A Z …

牛客网SQL264:查询每个日期新用户的次日留存率

官网链接: 牛客每个人最近的登录日期(五)_牛客题霸_牛客网牛客每天有很多人登录,请你统计一下牛客每个日期新用户的次日留存率。 有一个登录(login。题目来自【牛客题霸】https://www.nowcoder.com/practice/ea0c56cd700344b590182aad03cc61b8?tpId82 …

C语言笔试题之实现C库函数 strstr()(设置标志位)

实例要求: 1、请你实现C库函数strstr()(stdio.h & string.h),请在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始);2、函数声明:int strStr(char* h…