mcgs脚本驱动.docx
- 文档编号:7392220
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:48
- 大小:928.66KB
mcgs脚本驱动.docx
《mcgs脚本驱动.docx》由会员分享,可在线阅读,更多相关《mcgs脚本驱动.docx(48页珍藏版)》请在冰豆网上搜索。
mcgs脚本驱动
脚本驱动V2.0使用指导手册
版本号:
0.1
第一章新脚本驱动说明
一.脚本驱动适用范围
1.脚本驱动适用的版本
A.MCGS嵌入式组态软件;
版本号:
6.5(01.0010)注:
此版本以上为新版本,以下为旧版本
B.MCGS通用版的定制版组态软件
C.MCGS网络版的定制版组态软件
2.脚本驱动适用的设备
A.独立板卡设备
B.串口通信设备
3.脚本驱动适用的协议
二.脚本驱动兼容性
1.旧版本脚本驱动兼容新版本组态软件
2.新版本脚本驱动不兼容旧版本的组态软件,旧版本组态软件无法识别新版本脚本驱动
三.脚本驱动新增内容
1.脚本驱动新增功能
新增加生成向导功能,具体参照第三章内容。
2.脚本驱动新增函数
(1)数据解析函数
1.!
SvrGetByteFromByteArr(ByRefByteArr,start,ByRefn,Flag)
2.!
SvrGetShortFromByteArr(ByRefByteArr,start,ByRefn,Flag)
3.!
SvrGetIntFromByteArr(ByRefByteArr,start,ByRefn,Flag)
4.!
SvrGetSingleFromByteArr(ByRefByteArr,start,ByRefx,Flag)
5.!
SvrGetByteFromHexStr(str,ByRefn,Flag)
6.!
SvrGetShortFormHexStr(str,ByRefn,Flag)
7.!
SvrGetIntFromHexStr(str,ByRefn,Flag)
8.!
SvrGetSingleFromHexStr(str,ByRefx,Flag)
(2)数据校验函数
1.!
SvrByteArraySum(ByRefByteArr,start,length)
2.!
SvrStrSum(str,Flag)
3.!
SvrByteArrayXOR(ByRefByteArr,start,length)
4.!
SvrStrXOR(str,Flag)
5.!
SvrStrModbusCRC(ByRefByteArr,start,length)
6.!
SvrStrModbusLRC(str,start,length)
7.!
OpenLog()
8.!
CloseLog()
(3)字节数组操作函数
1.!
HStr2HByre(str,arByte)
2.!
HByte2HStr(arByte,str)
第二章基础概念讲解
一.通讯协议
1.ACSII码通讯协议(字符型协议)
通讯信息按照ASCII码方式解析得到的参数信息称为ASCII码通讯。
比如:
主站接收到从站发送的4个字符:
0x310x340x2E0x36,用ASCII码表示为14.6。
2.HEX通讯协议(字节数组协议)
通讯信息按照十六进制方式解析得到的参数信息称为十六进制通讯。
比如:
主站接收到从站发送的4个字符:
0x310x340x2E0x36,用HEX表示为0x31342E36
3.ASCII码通讯与HEX通讯的区别
1)ASCII码通讯传送的字符能清楚的了解发送命令和接收信息,但是传送的信息速度量少;十六进制通讯发送的字符信息速度量大,但是发送命令和接收信息不明了。
2)ASCII码的通讯帧1个字占4个字符,而HEX的通讯帧1个字占2个字符。
如:
发送0x1427信息,ASCII码发送4个字符:
0x310x340x320x37,而HEX只需要发送2个字符:
0x140x27。
二.
第三章向导使用说明
一.完全适用向导的协议
1.ASCII码协议,多条命令通讯示例
1.1步骤1:
协议分析
通讯命令1:
模仿ADAM4018协议,协议格式如下:
发送命令:
#xx\r
帧头:
长1个字符,固定为#
地址:
固定长2个字符
帧尾:
长1个字符,为回车
接收命令:
#+xxx.xx+xxx.xx+xxx.xx+xxx.xx+xxx.xx+xxx.xx+xxx.xx+xxx.xx\r
帧头:
长1个字符,固定为#
数据体:
共8个数据体,每个数据体固定长7个字符,按ASCII码方式解析
帧尾:
长1个字符,为回车
模拟数据:
发送命令1:
#01\r
接收命令1:
#+11.111+22.222+33.333+44.444+55.555+66.666+77.777+88.888\r
通讯命令2:
自己定义,解析数据非等长通讯协议,分两种情况:
数据长度已知;数据长度未知。
下面以数据长度未知,数据之间用分隔符分离的协议,协议格式如下:
发送命令:
#xxxxxx\r
帧头:
长1个字符,固定为#,参与校验
地址:
固定长2个字符,参与校验
校验:
长2个字符,累加和校验
结束符号:
长1个字符,固定为回车
接收命令:
#xxAA,BBB,CCCC,DDDDD,EEEE,FFF,GG,HHHHxx\r
帧头:
长1个字符,固定为#
数据体:
8个数据体,以“,”分隔
校验:
长2个字符,累加和校验
结束符号:
长1个字符,固定为回车
模拟数据:
发送命令:
#0184\r
接收命令:
#11,222,3333,44444,5555,666,77,8888E3\r
1.2步骤2:
新建工程进入向导
新建工程后进入新建工程模式,如图3-1-1-1所示。
图3-1-1-1
1.选择“使用向导新建工程”,则进入向导界面,如图3-1-1-2所示。
2.选择“不使用向导新建工程”,流程和原来一样,直接生成示例脚本。
图3-1-1-2
1.3步骤3:
配置驱动属性
图3-1-1-3
1.添加属性,添加除“设备地址”和“通讯延时”以外的属性,当所添加属性的数据类型选择枚举型时,属性范围处填写枚举量,并用“;”隔开,如图3-1-1-4所示。
2.删除属性,对多余的属性进行删除,其中“设备地址”和“通讯延时”为默认属性,不允许删除。
3.设置属性,修改设置已添加的属性。
图3-1-1-4
1.4步骤4:
配置通道
图3-1-1-5
1.添加通道,可进行批量添加操作。
2.删除通道,对多余的通道进行删除,可批量删除(按住Ctrl键,选择要删除的通道,点击“删除通道”按钮即可),其中“通讯状态”为默认通道,不允许删除。
3.设置通道,修改设置已添加的通道,设置通道中不能修改通道个数。
1.5步骤5:
配置通讯帧
图3-1-1-6
5.1添加收发通讯帧
根据协议分析知,2组通讯帧结构信息配置分别如图3-1-1-7,图3-1-1-8所示。
图3-1-1-7
图3-1-1-8
5.2设置收发通讯帧
图3-1-1-9
对于ASCII码通讯帧的数据体设置主要有以下几种情况:
1.无特别属性,数据内容为可见ASCII字符,如图图3-1-1-10所示。
图3-1-1-10
2.无特别属性,数据内容为不可见ASCII字符,如图图3-1-1-11所示。
图3-1-1-11
3.数值不确定的数据体,配置“设备属性”中的某个属性获得其值,如图图3-1-1-12所示。
图3-1-1-12
4.数据解析
1)可知长度的解析,如图3-1-1-13所示。
图3-1-1-13
2)未知长度的解析,如图3-1-1-14所示。
图3-1-1-14
5.校验,如果命令中的数据都是确定的,那么可以直接计算出校验值,如图3-1-1-15所示。
图3-1-1-15
6.预览功能,命令信息设置完之后,可点击“命令预览”查看命令格式,如图3-1-1-16所示。
图3-1-1-16
7.对于各属性同前一个的数据体,点击“默认设置”即可。
1.6步骤6:
配置预览
在此预览通道和解析数据的匹配关系,并检查配置是否正确,如果正确就可以,完成配置生成驱动,否则不完成配置生成代码。
图3-1-1-17
1.7步骤7:
完成配置,进行调试
1.代码的生成与编译。
(1)配置都正确后,可以“完成配置”直接生成脚本代码,如图3-1-1-18所示。
组建命令帧
发送命令帧并接收数据,对接收数据进行校验
对接收的数据进行解析,并设置通道值
图3-1-1-18
(2)编译生成的代码。
选择“调试”“检查整个驱动”,若没有问题输出窗口会提示“设备编辑检查通过”,如图3-1-1-19所示。
图3-1-1-19
2.配置“串口参数”。
(1)创建虚拟串口,如图3-1-1-20所示,串口COM2和COM3虚拟串口。
图3-1-1-20
(2)配置脚本驱动中的串口参数
选择“设置”“串口父设备配置”,配置串口参数,如图3-1-1-21所示。
图3-1-1-21
(3)设置串口转发工具SmartCom.exe。
首先,设置串口,如图3-1-1-22所示。
图3-1-1-22
其次,设置模拟设备,串口设置完后,打开串口,选择“使能”,添加收发帧,如图3-1-1-23所示。
图3-1-1-23
然后,将2组命令帧的模拟数据分别添加进去,选择启动,如图3-1-1-24所示。
图3-1-1-25
3.进行调试。
在脚本驱动中,选择“调试”“定时通道采集”进行调试,如图3-1-1-26所示。
图3-1-1-26
2.HEX码协议,单条命令通讯示例
2.1步骤1:
协议分析
通讯命令:
模仿ModbusRTU协议,协议格式如下:
发送命令:
从4区寄存器地址0开始,连续读8个16位无符号二进制
地址:
长1BYTE,内容从属性“设备地址”中获得
命令码:
长1BYTE,固定为0x03
起始地址:
长2BYTE,固定为0x0000
连续元件个数:
长2BYTE,固定为0x0008
校验:
长2BYTE,CRC校验
接收命令:
地址:
长1BYTE,内容不重要
命令码长1BYTE,内容预计为0x03
回收字节长度:
长1BYTE,内容预计为0x10
数据体00:
长2BYTE,内容由回收数据解析获得,解析方式为16位无符号二进制数据
数据体01:
长2BYTE,内容由回收数据解析获得,解析方式为16位无符号二进制数据
数据体02:
长2BYTE,内容由回收数据解析获得,解析方式为16位无符号二进制数据
数据体03:
长2BYTE,内容由回收数据解析获得,解析方式为16位无符号二进制数据
数据体03:
长2BYTE,内容由回收数据解析获得,解析方式为16位无符号二进制数据
数据体05:
长2BYTE,内容由回收数据解析获得,解析方式为16位无符号二进制数据
数据体06:
长2BYTE,内容由回收数据解析获得,解析方式为16位无符号二进制数据
数据体07:
长2BYTE,内容由回收数据解析获得,解析方式为16位无符号二进制数据
校验:
长2BYTE,内容不重要
2.2步骤2:
新建工程进入向导
新建工程后进入新建工程模式,如图3-1-2-1所示。
图3-1-2-1
1.选择“使用向导新建工程”,则进入向导界面,如图图3-1-2-2所示。
2.选择“不使用向导新建工程,流程和原来一样,直接生成示例脚本。
图3-1-2-2
2.3步骤3:
配置驱动属性
图3-1-2-3
1.添加属性,添加除“设备地址”和“通讯延时”以外的属性,当所添加属性的数据类型选择枚举型时,属性范围处填写枚举量,并用“;”隔开,如图3-1-2-4所示。
2.删除属性,对多余的属性进行删除,其中“设备地址”和“通讯延时”为默认属性,不允许删除。
3.设置属性,修改设置已添加的属性。
图3-1-2-4
2.4步骤4:
配置通道
图3-1-2-5
1.添加通道,可进行批量添加。
2.删除通道,对多余通道进行删除,可批量删除,其中“通讯状态”为默认通道,不允许删除。
3.设置通道,修改设置已添加的通道,设置通道中不能修改通道个数。
2.5步骤5:
配置通讯帧
图3-1-2-6
5.1添加收发通讯帧
根据协议分析知,通讯帧结构信息配置分别如图3-1-2-7所示。
图3-1-2-7
5.2设置收发通讯帧
图3-1-2-8
对于HEX格式命令帧的数据体设置主要有以下几种情况:
(注释:
对于HEX格式的命令帧,其各帧数据体的数据类型均为字节数据[HEX格式])
1.无特别属性,如图3-1-2-9所示。
图3-1-2-9
2.数值不确定的数据体,配置“设备属性”中的某个属性获得其值,如图3-1-2-10所示。
图3-1-2-10
3.解析属性数据,数据内容为不需要填写,由回收数据解析获得,如图3-1-2-11所示。
图3-1-2-11
4.校验,如果命令中的数据都是确定的,那么可以直接计算出校验值,如图3-1-2-12所示。
图3-1-2-12
5.预览功能,命令信息设置完之后,可点击“命令预览”查看命令格式,如图3-1-2-13所示。
图3-1-2-13
2.6步骤6:
配置预览
在此预览通道和解析数据的匹配关系,并检查配置是否正确,如果正确就可以,完成配置生成驱动,否则不完成配置生成代码。
图3-1-2-14
2.7步骤7:
完成配置
1.代码的生成与编译。
(1)配置都正确后,可以“完成配置”直接生成脚本代码,如图3-1-2-15所示。
组建命令帧
发送命令帧并接收数据,对接收数据进行校验
对接收的数据进行解析,并设置通道值
图3-1-2-15
(2)编译生成的代码。
选择“调试”“检查整个驱动”,若没有问题输出窗口会提示“设备编辑检查通过”,如图3-1-2-16所示。
图3-1-2-16
2.配置“串口参数”。
(1)创建虚拟串口,如图3-1-2-17所示,串口COM2和COM3虚拟串口。
图3-1-2-17
(2)配置脚本驱动中的串口参数
选择“设置”“串口父设备配置”,配置串口参数,如图3-1-2-18所示。
图3-1-2-18
(3)设置Modbus串口转发工具mbslave.exe
A.打开mbslave.exe,选择“Connection”“Connect”进行设置,如图3-1-2-19所示。
图3-1-2-19
B.选择“Setup”“SlaveDefinition”进行设置,如图3-1-2-20所示。
图3-1-2-20
C.选择“Connection”“Quickconnect”运行,并设置各地址数据。
3.进行调试。
在脚本驱动中,选择“调试”“定时通道采集”进行调试,如图3-1-2-22所示。
图3-1-2-22
二.不完全适用向导
1.步骤1:
协议分析
设备命令:
模仿三菱Q系列串口协议,协议格式如下:
发送命令:
从D寄存器地址0开始,连续读8个16位无符号二进制
帧头:
长1个字符,固定为ENQ即0x05
帧识别号:
长2个字符,固定为FB
本地站号:
长2个字符,内容从设备属性中获得
上位站号(即设备地址):
长2个字符,内容从设备属性中获得
命令码:
长1个字符,固定为2
寄存器地址:
长2个字符,固定为D*
起始地址:
长6个字符,固定为000000
软元件个数:
长4个字符,固定为0008
累加和校验:
长2个字符,通过自动计算获得
接收命令:
帧头:
长1个字符,内容不重要
帧识别号:
长2个字符,内容不重要
本地站号:
长2个字符,内容不重要
上位站号:
长2个字符,内容不重要
数据体00~07:
长4个字符,内容由回收数据解析获得,解析方式为16位无符号二进制数据
帧尾:
长1个字符,内容不重要
校验:
长2个字符,内容不重要
分析:
由协议格式所知,脚本驱动向导无法生成此协议格式,但是此协议可以由脚本驱动实现,因此,我们先通过脚本驱动向导生成框架,然后在生成的代码中修改即可。
2.步骤2:
根据向导生成模板
向导使用步骤在此不在介绍,主要说明需注意的几部分:
1.配置属性
由协议知,本地站号也需要通过设备属性获得,因此设备属性添加“本地站号”,如图3-2-1所示。
图3-2-1
2.配置通讯帧
A.配置通讯帧结构信息,如图3-2-2所示。
图3-2-2
B.设置收发通讯帧,如图3-2-3所示。
图3-2-3
注释:
1.由于“本地站号”用向导无法生成,因此需要在代码中修改;
帧识别号是固定值,可在向导中添加(合在帧头中),也可在代码中修改。
2.由于接收命令只需要各部分的数据长度,
因此:
帧头为帧头+帧识别号;
地址为本地站号+设备地址
3.步骤3:
修改向导生成的代码
1.根据向导生成的代码如下所示。
2.根据步骤2所知,组帧部分代码需要修改,添加“本地站号”和“帧识别号”,修改完代码如下所示。
4.步骤4:
进行调试
调试过程与ASCII码协议的调试相同,此处不再介绍。
第四章新增函数使用说明
一.数据解析函数
1.!
SvrGetByteFromByteArr(ByRefByteArr,start,ByRefn,Flag)
函数意义:
将字节数组ByteArr中从start位置开始的内容输出到变量n中,输出格式为1个字节整数,字节数组位置计数从1开始。
返回值:
整型,判断输出是否正常。
0:
正常
小于0:
错误,具体意义如下:
-1:
起始索引start小于1;
-2:
起始索引start大于数组上限;
-3:
字节数组长度不足;
-4:
n不是整型变量;
-5:
其他错误。
参数:
ByteArr:
传址型,字节型数组。
start:
整型,输出的首位置,从1开始。
n:
传址型,长整型。
Flag:
长整型,解析方式[0:
8位无符号;1:
8位有符号;2:
8位BCD码]。
实例:
!
SvrGetByteFromByteArr(BA,2,A,1),字节数组为:
0001020304050607080900,则A=1。
2.!
SvrGetShortFromByteArr(ByRefByteArr,start,ByRefn,Flag)
函数意义:
将字节数组ByteArr中从start位置开始的内容输出到变量n中,输出的格式为2字节整型,字节数组位置计数从1开始。
返回值:
整型,判断是输出是否正常:
0:
正常;
小于0:
错误,具体意义如下:
-1:
启始索引start小于1;
-2:
启始索引start大于数组上限;
-3:
字节数组长度不足;
-4:
n不是整型变量;
-5:
其他错误。
参数:
ByteArr:
传址型,字节型数组。
start:
整型,输出的首位置,从1开始。
n:
传址型,长整型。
Flag:
长整型,解析方式[0:
16位无符号;1:
16位有符号;2:
16位BCD码]。
实例:
!
SvrGetByteFromByteArr(BA,2,A,1),字节数组为:
000102030405060708090000,则A=513。
3.!
SvrGetIntFromByteArr(ByRefByteArr,start,ByRefn,Flag)
函数意义:
将字节数组ByteArr中从start位置开始的内容输出到变量n中,输出的格式为4字节整型,字节数组位置计数从1开始。
返回值:
整型,判断是输出是否正常:
0:
正常;
小于0:
错误,具体意义如下:
-1:
启始索引start小于1;
-2:
启始索引start大于数组上限;
-3:
字节数组长度不足;
-4:
n不是整型变量;
-5:
其他错误。
参数:
ByteArr:
传址型,字节型数组。
start:
整型,输出的首位置,从1开始。
n:
传址型,长整型。
Flag:
长整型,解析方式[0:
32位无符号;1:
32位有符号;2:
32位BCD码]。
实例:
!
SvrGetByteFromByteArr(BA,2,A,1),字节数组为:
000102030405060708090000,则A=513。
4.!
SvrGetSingleFromByteArr(ByRefByteArr,start,ByRefx,Flag)
函数意义:
将字节数组ByteArr中从start位置开始的内容输出到变量x中,输出的格式为4字节数值型,字节数组位置计数从1开始。
返回值:
整型,判断是输出是否正常:
0:
正常;
小于0:
错误,具体意义如下:
-1:
启始索引start小于1;
-2:
启始索引start大于数组上限;
-3:
字节数组长度不足;
-4:
n不是浮点型变量;
-5:
其他错误。
参数:
ByteArr:
传址型,字节型数组。
start:
整型,输出的首位置,从1开始。
n:
传址型,长整型。
Flag:
长整型,对应4种解码次序[0:
“”;1:
“”;2:
“”;3:
“”]。
实例:
!
SvrGetByteFromByteArr(BA,1,x,3),字节数组为:
000008400405060708090000,则A=4.0
5.!
SvrGetByteFromHexStr(str,ByRefn,Flag)
函数意义:
获得将HEX表示的字符数据的内容输出到变量x中,输出的格式为1字节数值型,从头取2个字符转换成一个字节HEX值
返回值:
整型,判断是输出是否正常:
0:
正常;
小于0:
错误,具体意义如下:
-1:
解析字符长度不足,至少长度为2字符
-2:
解析字符长度一定为偶数个
-3:
解析字符长度大于2个,只取左边2字符解析
-4:
变量
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mcgs 脚本 驱动