分享

快捷实现MCGS人机界面的ASCII自由通讯

 阿明哥哥资料区 2020-04-19

因为MCGS HMI完善的曲线功能、灵活海量的历史报表功能以及丰富的硬件及软件接口,目前在各类单机检测设备中应用广泛,但在这类设备中应用时,经常会需要接入各类测试仪表,并且这些专业仪表很大一部分不支持modbus/OPC等相对通用化通讯协议接口,仅支持SCPI或者ascii格式的非标准通讯协议。为了方便客户接入各种仪表,抽空做了个专门用于ascii格式通讯的设备驱动,通过剑指工控独家分享给大家,希望能对大家有帮助。


一、 驱动样例说明

设备帮助:

驱动目录: D:\MCGSEPRO\Program\Drivers\用户定制设备\万能STR收发
由于建议驱动开发工具不支持字符型通道,所以需在“工程>实时数据库> ”对应手动添加同名变量,请注意变量名如果有误,则无法使用。
变量1:自动发送STR+设备地址值
类型:字符型
含义:周期性通过串口发送的字符串内容
 
变量2:自动接收STR+设备地址值  
类型:字符型
含义:周期性通过串口返回的字符串内容
 
变量3:命令发送STR+设备地址值  
类型:字符型
含义:需要通过串口设备命令发送的字符串,无论是带返回的命令还是无返回的命令,均使用改变量
 
变量4:命令接收STR+设备地址值  
类型:字符型
含义:通过设备命令发送指令后,接收到的字符串,仅对返回的发送命令有效
 
通道1:自动命令采集
类型:开关型
含义:为1时打开自动采集功能,后台周期行发送字符串内容,并接收返回的字符串
 
通道2:自动采集
类型:开关型
含义:为1时打开自动采集功能,后台周期性接收返回的字符串
 
通道3:结束符CR
类型:开关型
含义:为1时打开,发送的字符串内容会自动加上回车符0x0D(请注意,最少要使用其中一个结束符,否则可能无法接收返回数据)
 
通道4:结束符LF
类型:开关型
含义:为1时打开,发送的字符串内容会自动加上换行符0x0A(请注意,最少要使用其中一个结束符,否则可能无法接收返回数据)

如上图所示所以,在通用串口父设备下添加万能STR收发设备,按照设备帮助说明连接设备通道变量,并且在实时数据库手动建立四个存放收发字符串的变量,对应在工程内调用即可。


二、 测试样例画面组态

随驱动文件还提供完整功能的测试样例,可以按照通讯协议往STR变量内赋值对应的指令字符串即可,目前驱动可以实现周期性地发送变量1:自动发送STR,对应等待一定周期,或者读到特定结束符后,将读回来的数据储存在变量2:自动接收STR中,实现周期性的应答通讯;当然,如果下位机为主动上传数据,打开通道2:自动采集,串口所读到的数据也会直接存在变量2:自动接收STR中,并且可以通过简单的开关按钮选择是否验证结束符;

另外驱动还支持触发式的命令语句,可按照上图步骤添加触发命令,在需要时收发特殊的字符串,配合脚本系统,实现灵活的收发命令操作。


三、 实例测试

某检测设备厂商工程师跟我联系,表示需要通过串口读取一个称重天平的数据,通讯说明如下:

1. 通讯协议:波特率9600;数据位:8位;停止位1位;无校验。
2. 输出数据:按一次打印键或串口接收到一次打印命令就输出一次数据,数据为14位ASCII码。
  符号   数据   单位   回车   换行
  1位    8位   3位    1位   1位
数据不为负时,第一位为空格,不显示的数据输出为空格。
例:显示为123.45g时,输出数据为□□□123.45□g□↓←
例:显示为-123.45g时,输出数据为-□□123.45□g□↓←
共14位数据。
3. 接收命令:需要先接收到对应的通讯号,再接收命令。当通讯号为27(出厂状态),即16进制的1B时,命令如下(数据为16进制);
1B70:打印
1B71:校准
1B72:计数
1B73:单位转换
1B74:去皮
 

由通讯协议说明可以了解到,想读取当前天平读数的话,需要先发送打印命令,才能对应接收到当前读数,那我们就可以按照通讯协议要求设置通讯参数与收发数据。

我们先用电脑串口连接天平通讯,使用串口调试工具测试一下,发现每次发送 1B70:打印 指令,并且按照要求加上回车和换行,我们都能收到天平返回的称重数据,格式也没有问题,然后我们使用MCGS HMI软件对应测试:

1. 使用自动周期发送命令功能,启动策略内设置后,每次开机对应给 变量1:自动发送STR赋值打印指令,这样HMI启动后,就会一直周期性发送打印指令给天平。 

2. 使用后台策略或者循环策略,对应把周期性读回来的ascii字符串数据转换成浮点数,方便做运算或者写入PLC。

3. 运行MCGS HMI程序,对应分别打开自动命令采集功能、结束符回车、结束符换行,就可以看到 变量2:自动接收STR 接收到了天平发回的数据,并且也对应完整地转换成了浮点数据,简单的仪表通讯就完成了;当然也还可以使用设备命令功发送校准、去皮等指令,这里就不再赘述。

4. 因为ascii格式通讯读回来的数据都是字符串格式,大家可以按照上面路径到软件帮助查找可以用得上的字符串函数,可以实现很灵活的字符串拆分查找格式化等功能,方便解析通讯数据。

四、彩蛋

由于手上没有上面提到的称重天平实物,为了测试截图,只能手动利用万能STR收发功能,用MCGS HMI模拟该称重天平,截图内所有读取到的数据,均为一台MCGS HMI实时响应发送;步骤也非常简单,按照下图配置即可,希望大家可以灵活的把这个通讯驱动应用在各种ascii数据通讯场景上:

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多