MCGS脚本驱动开发工具使用指导手册.docx

上传人:b****4 文档编号:24349963 上传时间:2023-05-26 格式:DOCX 页数:52 大小:1.14MB
下载 相关 举报
MCGS脚本驱动开发工具使用指导手册.docx_第1页
第1页 / 共52页
MCGS脚本驱动开发工具使用指导手册.docx_第2页
第2页 / 共52页
MCGS脚本驱动开发工具使用指导手册.docx_第3页
第3页 / 共52页
MCGS脚本驱动开发工具使用指导手册.docx_第4页
第4页 / 共52页
MCGS脚本驱动开发工具使用指导手册.docx_第5页
第5页 / 共52页
点击查看更多>>
下载资源
资源描述

MCGS脚本驱动开发工具使用指导手册.docx

《MCGS脚本驱动开发工具使用指导手册.docx》由会员分享,可在线阅读,更多相关《MCGS脚本驱动开发工具使用指导手册.docx(52页珍藏版)》请在冰豆网上搜索。

MCGS脚本驱动开发工具使用指导手册.docx

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:

变量类型,不是整形

-5:

其他错误

参数:

str,字符数据。

n,传址型,长整型;

Flag,长整型,解析方式[0:

8位无符号;1:

8位有符号;2:

8位BCD码]

实例:

!

SvrGetByteFromHexStr(str,n,0),str为:

“0102030405060708”则n

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1