上位机开发之三菱PLC通信
前言
三菱MC协议是开发三菱系列PLC必须掌握的一种通信协议,其目的是让外部设备,可以通过串行通信模块C24或以太网接口模块E71,实现对可编程控制器CPU的数据访问。
MC协议是Melsec协议的简称。
通信帧类型
外部设备通过C24/E71访问可编程控制器CPU时,可以选择不同的通信帧及数据格式来实现,具体如下所示:
通信帧命名规格
通信帧命名格式如下:
xxx 兼容 n m 帧(示例: QnA 兼容 3C 帧、QnA 兼容 3E 帧)
1、xxx 用于表示与以前产品模块的指令兼容性的对象可编程控制器 CPU
A : A 系列可编程控制器 CPU
QnA : QnA 系列可编程控制器 CPU
2、n对应的以前产品模块的帧
1 : 兼容 A 系列的计算机链接模块、以太网接口模块支持的指令的通信帧
2 : 兼容 QnA 系列串行通信模块支持的 QnA 简易帧
3 : QnA 系列串行通信模块支持的 QnA 帧及兼容 QnA 系列以太网接口模块支持的通信帧
4 : 兼容 QnA 系列串行通信模块支持的 QnA 扩展帧
3、m是指相应帧进行数据通信的对象模块
C : C24
E : E71
通信方式
从前面的描述,我们可以知道,MC协议是兼容串口通信和以太网通信的。
一般我们使用比较多的是以太网通信,对于FX5U系列/Q系列/Qna系列/L系列的PLC,通常会使用QnA兼容3E帧,对于FX3U系列,我们需要加以太网模块,采用A兼容1E帧。
对于串口设备,一般会使用QnA兼容2C帧和QnA兼容4C帧。
通信编码格式有ASCII和二进制两种方式,通过二进制编码数据进行的通信与通过ASCII编码数据进行的通信相比,前者的通信数据量约为后者的二分之一,因此二进制编码的方式可缩短通信时间。
通过MC协议进行的数据通信,一般情况下都是以半双工通信进行。
对可编程控制器CPU进行访问时,应在接收到来自于可编程控制器CPU侧的对应于之前发送的指令报文的响应报文后,再发送下一个指令报文。
在响应报文的接收完毕之前,不能发送下一个指令报文
PLC设置
三菱PLC如果要走MC协议,是不需要额外编程的,但是需要做一些简单的配置。
1.在右侧工程栏中双击PLC参数;
2、在弹框中选择内置以太网端口设置,设置IP,设置通信数据代码设置,勾选允许RUN中写入;
3.点击打开设置,在弹框第一栏中选择TCP协议,MC协议,端口号根据自己需求设置比如4999,然后设置结束,设置结束,重新下载PLC程序;
4、断电重启PLC。
协议帧
通过以上了解之后,下面我们对协议帧进行更深入地了解,为了方便起见,我们以以太网的Qna兼容3E帧为例进行说明,其他的帧都是大同小异。
协议帧一般分为三种,分别是请求帧、响应帧及异常帧。
请求帧:表示发送请求的报文。
响应帧:如果请求正确,控制器CPU会以响应帧进行返回。
异常帧:如果请求错误,CPU会以异常帧返回。
读取请求帧报文格式:
读取响应帧报文格式:
读取异常帧报文格式:
写入请求帧报文格式:
写入响应帧报文格式:
写入异常帧报文格式:
实际案例
读取案例:读取从D0开始的5个寄存器,我们结合协议文档,按照报文格式进行报文拼接。
发送报文如下:
副头部:0x50 0x00
网络编号:0x00
PLC编号:0xFF
请求目标模块I/O编号:0xFF 0x03
请求目标模块站号:0x00
请求数据长度:0x0C 0x00
CPU监视定时器:0x0A 0x00
指令:0x01 0x04
子指令:0x00 0x00
起始软元件:0x00 0x00 0x00
软元件代码:0xA8
软元件点数:0x05 0x00
响应报文如下:
副头部:0xD0 0x00
网络编号:0x00
PLC编号:0xFF
请求目标模块I/O编号:0xFF 0x03
请求目标模块站号:0x00
响应数据长度:0x0C 0x00
结束代码:0x00 0x00
软元件数据:0x0B 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
网络调试助手测试结果:
这样就知道了D0-D4分别为0x0B 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,将其转换成数据,就是11,0,0,0,0。
其他存储区的读写也是同样的原理。
附录
上位机开发之三菱PLC通信相关推荐
- C#上位机开发连接三菱PLC
C#上位机开发连接三菱PLC 之前没有接触过三菱PLC的上位机开发程序,第一次连PLC花了一整天的功夫,请教各种高手.主要是三菱PLC的安装包特别多,不像西门子的PLC只要你安装一个就可以通信了.当时 ...
- 信捷plc485通信上位机_上位机开发之三菱FX3U以太网通信实践
上次跟大家介绍了一下上位机与三菱Q系列PLC通信的案例,大家可以通过点击这篇文章: dotNet工控上位机:上位机开发之三菱Q系列PLC通信实战zhuanlan.zhihu.com 今天以三菱FX3 ...
- C#上位机与台达PLC通信,modbus TCP协议
C#上位机与台达PLC通信,modbus TCP协议. 1.真实使用项目,该程序框架完整,适合在此基础上开发项目. 2.使用VS2019开发. 3.项目还涉及到halcon视觉检测功能. YID:76 ...
- java开发plc上位机软件开发_上位机开发之西门子PLC-S7通信实践
写在前面: 就目前而言,在中国的工控市场上,西门子仍然占了很大的份额,因此对于上位机开发而言,经常会存在需要与西门子PLC进行通信的情况.然后对于西门子PLC来说,通信方式有很多,下面简单列举一下: ...
- 上位机通过MX component version 组件与三菱PLC通信解决办法,最新MX component version5支持X64
上位机通过MX component version4组件与三菱PLC通信解决办法,最新MX component version5支持X64 第一节:MX Component Version软件与手册下 ...
- 上位机通过MX component version4 组件与三菱PLC通信解决办法
引用:https://blog.csdn.net/txb13145826106/article/details/115007885 上位机通过MX component version4 组件与三菱PL ...
- 工业监测自动化上位机软件开发,支持PLC通信,以及与各类品牌 的电流表、频谱仪、电子负载、功率计等通信
工业监测自动化上位机软件开发,支持PLC通信,以及与各类品牌 的电流表.频谱仪.电子负载.功率计等通信 本人拥有十多年工业项目.仪器仪表产品.教学产品开发以及培训经验,精通STM32.Msp430等各 ...
- 485通信原理_上位机开发之单片机通信实践
经常会有一些学员会问到上位机与单片机之间通信的问题,而我们经常会讲上位机与PLC之间通信,那么其实对上位机开发来说,不管是和PLC通信,还是和单片机通信,通信原理都是一样的.PLC的本质就是单片机,在 ...
- pythonqt4上位机开发_上位机开发之单片机通信实践(一)
经常会有一些学员会问到上位机与单片机之间通信的问题,而我们经常会讲上位机与PLC之间通信,那么其实对上位机开发来说,不管是和PLC通信,还是和单片机通信,通信原理都是一样的.PLC的本质就是单片机,在 ...
最新文章
- 【Data】数据结构之C++程序设计(1)
- Android studio 报错解决:Error:SSL peer shut down incorrectly
- opengl光照效果_【图形学基础 | Shader】Blinn-Phong 光照模型
- python函数参数定义不合法_下列哪种函式参数定义不合法?
- randperm--生成随机整数排列
- vivado SOC——hello word(上)建立SOC系统
- numpy np.polyfit()(最小二乘多项式拟合曲线)(有待进一步研究)
- Flask 教程 第十八章:Heroku上的部署
- python二分法求方程的根_Python查找函数f(x)=0根的解决方法
- aem 渲染_AEM中的单元测试(大声思考)
- 用计算机玩游戏最简单的方法,如何制作电脑简易命令小游戏
- 【Linux】Linux中变量#,@,0,1,2,*,$$,$?的解释
- Can't use Subversion command line client:svn
- UI-12组结对编程作业总结
- Linux内存分配小结--malloc、brk、mmap【转】
- 基于jquery实现身份证验证
- 整体大于部分_整体叶盘球头鼓锥形铣刀五轴加工技术
- ps裁剪和裁切的区别_ps裁剪工具怎么用?调整图像与画布的尺寸(三)
- linux磁盘写保护怎么修改_用\RAID 0.0999\ 写保护 Linux 硬盘分区-me09-ChinaUnix博客...
- Mysql 笛卡尔积