分享

mcgs通过串口与单片机通信...

 5ccampus 2021-08-02
a96cd9f33a8d11602cdb8ae8d3f33827.png

应用背景

自动化工程师在设备开发中,可能会碰到一些行业专用仪器仪表,并不支持常用规范接口,没有现成的通讯驱动,这时就需要使用PLC或者其他网关的自由口通讯功能,今天也给大家介绍下McgsPro软件下,自由口通讯如何快捷地实现,上次因为大概讲过使用本人自制驱动实现ascii字符串通讯,所以这次主要讲一下hex数据类型的通讯。

剑指工控:快捷实现MCGS人机界面的ASCII自由通讯(文末有彩蛋)​zhuanlan.zhihu.com
073801e6942d15905009eec42d4b5c69.png

软件介绍

McgsPro为昆仑通态MCGS最新E/K/G系列HMI所使用的组态开发软件,在自由口通讯这部分功能上,与原先的Mcgs嵌入版存在差异,增加了部分数据解析函数,提升了数据解析便利性与功能性,如果您还在使用Mcgs嵌入版及其对应HMI,建议尽快升级到新系列产品。


操作步骤

1. 添加驱动:将串口收发数据驱动,放置到以下路径后,即可在设备窗口添加调用D:McgsProProgramDrivers用户定制设备串口数据收发

ba0c453482b19419604b7ca1378d78b6.png

2. 关联变量:设备窗口添加设备,按照所使用的的串口以及下位机串口参数,设置串口父设备参数,然后对应在串口收发数据设备内,添加一个我们后面要用到的字符型变量(可自由命名,本次设置为STRDATA)

c5d54bf0e4ae604da5c2edd5d36c5211.png

串口收发数据设备的设备编辑窗口内,还有一些参数设置,仅应用于数据帧接收,如HMI只需发送指令,则无需设置;这里可以自由选择接收数据帧的格式、起始字符、结束字符等,这些项需要按照具体通讯协议情况,对应设置。例如我本次连接的设备数据帧结尾固定为0x7D,即10进制的125,具体说明如下:

  • 协议类型:指定收发帧的格式是16进制还是ASCII码形式。
  • 读串口的结束方式:设置读取数据时的结束方式,配合下面4个参数共同使用.详细看一下备注
  • 通讯等待时间:采集是收帧时的等待时间,超过等待时间后就返回。
  • 读串口停止字符:设置收帧时串口的停止字符,以ASCII编码给出
  • 读串口停止长度:设置收帧时的停止长度,当收到设置的长度时就返回
  • 读串口起始字符:设置串口收帧时的起始字符

备注:0.给定结束字符:在指定的通讯等待时间内收到结束字符则返回结束字符以前(包含结束字符)的字符串,否则全部返回

  1. 给定长度:在指定的通讯等待时间内收到指定的长度后立即返回,否则全部返回(注:如果没发帧,下次采集时会读到当前帧的后半部字符串)
  2. 给定时间:读取在整个通信等待时间内收到的字符串
  3. 给定结束字符或给定长度:综合0,1两个条件,谁先满足就执行谁
  4. 给定起始字符和结束字符:在指定的通讯等待时间内,未收到起始字符则返回全部字符串,收到起始字符未收到结束字符,则返回起始字符以后(包含起始字符)的字符串,如果收到起始字符和结束字符,则返回起始字符和结束字符之间的字符串(包含起始字符和结束字符).

3. 发送命令帧:熟悉MCGS软件的朋友应该都知道,软件内各种构件和策略可以自由编写命令脚本,实现灵活的执行效果,例如我们这次以最简单的方式:写在按钮脚本。当用户点击该按钮,就会执行按钮设置内的脚本,发送你所设置的命令帧。当然,一些周期性采集用的命令帧,可以写在我们的后台策略或者循环策略,实现后台周期性采集读取数据的效果。

例如我们通过按钮发送该停止测试的命令:

b66e12cc34261a7b298d279ec399533c.png

对应设置按钮指令:

88efb8cc13777e2d7ba995c1741d2f0a.png
2ece41385853dc2ade77f310c323333d.png

按钮内直接给我们前面关联的字符型变量STRDATA赋值需要发送的指令即可,当用户点击该按钮,McgsPro监控就会到该变量的值有改变,立刻自动将变量内的数据通过串口发出,监控串口就能看到串口发出的数据帧,无需做其他任何操作;有时候为了第二次操作时,仍然可以正常发送,发送完之后我们需要把STRDATA的值清空,清空STRDATA的操作按照实际情况设置,不需要可以不写。

4. 接收数据帧:简单的操作命令发送按照第3点设置即可,但是串口通信更常用的是应答式的通讯方式,即:上位机发送命令,下位机响应回复相关结果。为了区分发出和收到的数据,这时就要分开处理了,使用Write设备命令发送,然后接收数据帧。

162b5d728e8986a8813b941e143a2862.png

串口数据收发设备工作原理是:执行Write命令时,发出对应的指令,串口接收到数据时,自动放置到关联变量STRDATA内。这时候我们要做其实也是很简单的,分三步:① 发送命令:使用设备命令,执行Write指令发送需要的数据。② 通讯等待:等待下位机回复数据,这时候可以参考前面提到的设备编辑窗口内,对应的参数设置,确保有足够的时间接收完所有的响应数据,这个时间主要跟下位机的响应速度以及数据的长度有关。③ 解析数据:等待足够时间后,接收到的数据帧就会完整更新在变量STRDATA内,然后我们按照通讯协议,从接收到的数据帧内,对应分析提取数据即可。

d546d60277f413d8268125be840195ce.png
8b2fd9d66d10a862fb226a2963845e98.png

上图就是一个简单的命令收发,然后我们按照前面提到的步骤,编写指令:

18ffc2b6c4209d25714e8d6d80d1f205.png

如上图所示,遵循应答式通讯的发送→等待→解析流程,对应编写脚本即可;新建一个字符型变量WriteData来放置需要发送的命令字段,然后执行Write指令发送,通讯等待过后,对应提取下位机回复数据的命令字,按照命令字所在的字符串位置及长度提取出来,转换成十进制的数值,就可以用来显示和判断当前的接地方式。如果有需要还可以提取对应的校验位,进行数据校验,保证数据准确性。

McgsPro内提供了大量字符串操作指令,可以灵活地实现各种进制数以及字符串的转换、比较、提取等操作;并且加入了单精度浮点数解析函数,直接调用即可,无需进行繁琐运算,方便了用户快速解析各种类型的数据。上图用到的两个字符串操作函数!!Hex2I()和!Mid()大家也可以到帮助里面查看具体用法,帮助位置如下图所示:

6a48ca202b00b44e401fec0b38b0ebed.png

使用McgsPro的过程中,也建议大家有空多打开帮助内的脚本函数查看,相信能让您发现很多意想不到的小功能!


功能总结

MCGS软件内置了丰富的脚本函数和灵活的脚本系统,使用熟悉之后,可以很快捷的某些相对”复杂”的功能,但这也为软件入门带来了一些门槛,导致部分原先使用其他品牌人机界面的用户,使用初期会有点摸不着头脑,甚至觉得繁琐,希望能引导大家认识McgsPro在这方面的优势,更好地发挥出MCGS产品的价值。

通讯驱动文件下载

像风一样自由———MCGS自由口通讯(通讯驱动文件下载)​mp.weixin.qq.com

免责申明:本机构号所载文章为本号原创或根据网络搜索编辑整理,文章版权归原作者所有。因转载众多,无法找到真正来源,如标错来源,或对于文中所使用的图片,资料,下载链接中所包含的软件,资料等,如有侵权,请跟我们联系协商或删除,谢谢!


本文为剑指工控原创技术类文章,2020年10月13日首次发表于《剑指工控》公众号。

特别鸣谢本文作者

阮旭芬

广州番禺 昆仑通态 莞福大区客户经理


本账号为《剑指工控》官方知乎账号。剑指工控由一群带有工控情结的技术青年组织在一起,他们都是在工控一线的技术达人,如果你是工控一线的工程师,如果你在日常工控工作当中会遇到种种的技术问题,如果你热爱工控技术和工控生活,欢迎加入我们,随手提出你的技术问题会有技术达人第一时间为你解答。可以分享你的工控喜怒哀乐,会有兄弟们跟你产生共鸣。可以获得最新的工控资讯,指明技术和行业路线,做到未雨绸缪。

欢迎大家关注我们的公众号剑指工控(JZGKCHINA),更多的了解我们。

Ps. 进入公众号,“群&社区”菜单中有各个”技术交流学习群“的入口链接,获取小编微信号,添加小编微信并备注“行业+微信名+城市”(格式不对能通过好友验证,但一律不加群)

高校在校生请告知小编,进入“高校自动化专业交流群”~

高校自动化专业群,旨在专业课程学习,专业方向选择,课程设计,毕业设计,就业方向,考研方向,高校杯自动化竞赛等方面进行交流和经验分享~

期待你的加入~

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多