关于C#和三菱MX Component通讯干货分享 点击:142 | 回复:4



AI雪

    
  • 精华:1帖
  • 求助:0帖
  • 帖子:7帖 | 238回
  • 年度积分:77
  • 历史总积分:2545
  • 注册:2016年8月07日
发表于:2025-05-12 20:19:03
楼主

最近一个项目,因为种种限制,不能使用常规的触摸屏+PLC结构,只能选择那种小尺寸的电脑充当触摸屏与PLC进行通讯。

考虑了一番 还是决定自己写了,不用组态软件。


三菱MX Component可以简单理解为是一个OPC,专门针对三菱PLC产品的一种接口软件。因为三菱系列的产品太多了,串口232

485,本体网口,外接模块网口,USB接口各种各样,于是官方做了一个这个软件,让这个软件先去和下面的PLC建立通讯,

然后统一在和上位机进行通讯,之前用过力控的产品也是要和MX Component搭配使用的。


网上搜了一圈资料吧,发现干货比较少。主要都是介绍了一些连接函数,寄存器函数读取,写入这些基本功能。但是实际应用做起来的时候发现

问题很多。举例子 比如里面有个连接open函数,这个函数你只能open一次,如果你已经连接成功了,再open就会卡UI,再有如果你已经建立连接了,

但是PLC掉电了,你在执行你的读取函数,写入函数的时候也会卡UI。这算是第一个问题断线重连,后来我用了一个心跳机制+异步解决了这个事情。

就是PLC程序里面D0数值一直+1,我检测这个值变化来确保当前的连接状态。


第二个问题,D区变量,现有的库文件里面的函数只是单纯的读了D0 D1 D2这些数值,但是D2 D3组合成浮点数这种的解析和写入,没有,

于是我补充写了几个方法,因为这次项目我只用到浮点数所以只写了浮点数的方法。


第三个问题,M区变量读取,M变量是bool量,但是他那个读取函数读上来是按照16位整数,并不是M0本身的0或者1,你需要把这个整数2进制,在找到你是对应的第几位,

才是你真正的M变量。这也写了一个方法


MX Component这个软件啊,我个人觉得不是太完善,但是毕竟是免费的嘛,也就挑不出来那么多理了。然后补充一下,这个软件不光能和三菱PLC通讯,也能和那些仿三菱PLC使用,

深圳顾美,石家庄陆杰,仿FX3G  FX3U我都测试过了没问题。


三菱家现在高端一些的PLC  5U Q系列这些,还可以走MC通讯协议,跳过这个MX Component,网上也有相应的库文件。具体搭配使用呢还是看实际情况和个人喜好。


最后附上一些资料,我的软件是VS2019编的,如果你们运行的时候报错,那是因为电脑没有安装MX Component,装一下就好了,我部署的时候发现的这个事情。

PLC程序仿真跑起来,MX Component建立仿真驱动,就能无硬件情况下运行我这个软件了。里面的CX3G类就是我封装的上面说的核心的东西


正在下载,请等待……
下载附件需0积分!



楼主最近还看过



AI雪

  • 精华:2帖
  • 求助:0帖
  • 帖子:7帖 | 238回
  • 年度积分:98
  • 历史总积分:2566
  • 注册:2016年8月07日
发表于:2025-05-12 20:46:42
1楼


回复本条

    

fighting2021

  • [管理员]
  • 精华:4帖
  • 求助:4帖
  • 帖子:1258帖 | 8176回
  • 年度积分:484
  • 历史总积分:22880
  • 注册:2008年11月11日
发表于:2025-05-13 08:01:13
2楼

感谢楼主的热心分享

回复本条

    

zy123518763

  • 精华:0帖
  • 求助:1帖
  • 帖子:4帖 | 38回
  • 年度积分:0
  • 历史总积分:150
  • 注册:2011年11月14日
发表于:2025-05-13 14:01:45
3楼

感谢热心分享

回复本条

    

江苏成振

  • 精华:0帖
  • 求助:0帖
  • 帖子:13帖 | 454回
  • 年度积分:2
  • 历史总积分:725
  • 注册:2006年6月06日
发表于:2025-05-13 18:15:05
4楼

这个就是组件编程。还是比较高端的,比较专业的人才能玩得转。

回复本条

    

热门招聘
相关主题

官方公众号

智造工程师