格西测控大师学习 第4篇 序列

序列的认识

一、序列

序列是提供给用户设计逻辑执行步骤。用户可以设计任意的逻辑执行过程,并且序列可以并行执行,以满足各种测控自动化需求。

序列的基本内容可分为五类,还有一类是扩展工具类,如下图所示:

image-20230211194304018

这五类分别为:

  1. 动作类,包括:值,消息,寄存器和进程。

  2. 容器类,包括:序列和序列容器。

  3. 流程控制类,包括:IF,THEN,ELSE,FOR,WHILE,BREAK,CONTINUE,CASE,PARALLEL和BRANCH。

  4. 变量类,包括:变量赋值,变量传输和变量存储。

  5. 同步类,包括:等待,通知和指示。

扩展工具类放在最后介绍,这一类会进行不断扩充。

接下来分别介绍序列的五类基本内容。

1.动作类

动作类包含4个基本单元,分别是消息寄存器进程。下面分别介绍这4个基本单元。

1.值

值(Value)是值类型动作步骤,该步骤根据 LimitExpression 来判断是否通过,表达式支持判断项目变量表的变量值和判断执行结果变量值;可以使用脚本执行测试和控制逻辑,得到执行数值后,建立一个 Variant 变量并赋值给 Value 属性。

该步骤的主要应用场合:

➢ 用于综合判断汇总执行结果。

➢ 用于调用第三方库,得到执行的结果,相当于对第三方库的一个包装。

的属性描述如下:

属性 描述
(Id) 唯一标识步骤的字符串。
(Name) 步骤名称。名称不是步骤的标识,在同一等级上允许步骤名称相同。
Active 是否激活,不激活的步骤不执行。
Description 步骤描述。
Device 序列绑定的设备和接口的名称,可以在脚本中通过名称访问设备。
LimitExpression 限定值表达式。
Loggable 是否记录结果,不记录的步骤能够执行,结果不记录到结果表,也不参与判错。
Socket 执行槽,用于多个器件并行执行分开记录每个器件的结果。>=0 表示槽号,步骤执行记录归到该槽号;<0 表示步骤执行记录所有槽都有记录。单槽执行,默认为-1 即可。
Timeout 步骤执行超时时间,单位是毫秒。>0 表示实际超时时间,超时后终止步骤执行;<=0 表示无限等待步骤执行完毕。
Value 步骤的值,是一个变量类型,在执行过程通过脚本进行设置。

2.消息

消息(Message)是消息类型动作步骤,该步骤可以自定义任意格式的协议报文,步骤执行时:

➢ 发送模式下,自动组帧发送。

➢ 接收模式下,根据帧结构自动匹配数据,当匹配正确后,自动解析帧数据,如果匹配超时,执行结果设置为失败。

消息的属性描述如下:

属性 描述
(Id) 唯一标识步骤的字符串。
(Name) 步骤名称。名称不是步骤的标识,在同一等级上允许步骤名称相同。
Active 是否激活,不激活的步骤不执行。
ByteInterval 协议字节间隔时间,单位是毫秒。该属性在发送时有效,指每发送一个字节,延时多少毫秒。
Description 步骤描述。
Device 序列绑定的设备和接口的名称,可以在脚本中通过名称访问设备。设备类型只能是消息型设备(IMessageDeviceSession)类型。
EscapeParameters 转义参数,格式:属性=属性值,…。支持 StartPosition 和 EndPosition。StartPosition>=0 和EndPosition >=0 表示从整帧数据开头开始计算,0 表示整帧数据的第 1 个字节,依次类推;EndPosition <0 表示从整帧数据末尾开始计算,-1 表示整帧数据末尾第 1 字节,-2 表示整帧数据末尾第 2 字节,依次类推。例如:StartPosition=1,EndPosition=-2(默认值)
EscapeTable 转义表,格式:转义符=转义数据,...,数据是 16 进制。对应发送,数据发送之前除头尾之外,把和转义符一样的字节变为转义数据;对于接收,数据收完之后除头尾之外,把和转义数据一样的数据变为转义符字节。例如:02=1BE7,03=1BE8,1B=1B00
LimitExpression 限定值表达式。
Loggable 是否记录结果,不记录的步骤能够执行,结果不记录到结果表,也不参与判错。
MatchMode 匹配模式,Static 表示静态匹配,从收到的第一个字节开始匹配,匹配不上认为失败;Scanning 扫描匹配,从收到的第一个字节开始匹配,匹配不上后移一个字节继续匹配,直到匹配成功或者字节用完。
MaxLength 协议帧最大字节数,大于零时有效。
OperationMode 操作模式,有发送(Send)和接收(Receive)两种模式。
Socket 执行槽,用于多个器件并行执行分开记录每个器件的结果。>=0 表示槽号,步骤执行记录归到该槽号;<0 表示步骤执行记录所有槽都有记录。单槽执行,默认为-1 即可。
Timeout 步骤执行超时时间,单位是毫秒。>0 表示实际超时时间,超时后终止步骤执行;<=0 表示无限等待步骤执行完毕。

消息型步骤的内容描述的是通信交互过程的通信协议数据结构。

通信协议是指双方实体完成通信或服务所必须遵循的规则和约定。协议定义了数据单元使用的格式,信息单元应该包含的信息与含义,连接方式,信息发送和接收的时序,从而确保在通信中数据顺利地传送到确定的地方。

格西测控大师可以根据协议数据单元格式的定义,把协议拆分为多个协议单元,逐个进行构建,完全和协议标准的描述一一对应。通信协议应用部分将在第二部分——序列应用中详细介绍。

格西测控大师通信协议有两个基础协议单元,分别是协议字段协议子字段。这两种基础单元使用简单,可以灵活构建通信协议,加快项目开发进度。

image-20230212181035649

协议子字段协议字段属性中配置的功能是一样的,学习其中一个即可,下面介绍协议字段的属性

协议字段属性

格西测控大师定义了协议单元的基本结构,分为五类,分别是:普通型(General),变长型(Variable),重复型(Repeatable),选择型(Choosable)和计算型(Computable)。下面分别描述这几种基本结构的属性。

普通型(General)

普通型(General)协议单元的属性描述如下:

属性 描述
(Name) 协议单元的名称,可以是任意字符串。
(Type) 协议单元的类型,General – 普通型,一般固定长度的单元。
Constant 是否为常量,一般情况协议标准定义的数据单元为常数,则设置为 True。接收时根据该属性决定是否匹配数据,当一条协议的所有 Constant 为True 的协议单元均匹配正确,软件才认为正确收到该协议帧。
DataType 协议单元的数据类型,软件支持的类型有 Boolean、Sbyte、Byte、Int16、UInt16、Int32、Uint32、Int64、Uint64、Float、Double、Decimal、DateTime、String、BitString。
Description 协议单元的描述字符串。
Endian 协议单元的字节序。 ➢ BigEndian – 大端,即高字节在前面,低字节在后面。 ➢ LittleEndian – 小端,即低字节在前面,高字节在后面。 例如,一个 4 字节的 Int32 类型数据 1,大端发送顺序是 00000001,小端发送顺序是 01000000。
Format 协议单元的解析和显示格式,字符串格式的定义和微软.Net 系统的字符串格式定义一样,例如日期类型变量,格式可以定义为 yyyy/MM/dd HH:mm:ss。 参考链接:https://docs.microsoft.com/zh-cn/dotnet/standard/basetypes/formatting-types
Length 协议单元的位长,即比特位的个数。如果设置的 Length 比 DataType 的默认位长小,则多余的位会被剪切。 剪切规则: ➢ Boolean、Sbyte、Byte、Int16、UInt16、Int32、Uint32、Int64、Uint64、Float、Double、Decimal – 保留低位,剪切多余的高位。例如,Boolean 为 True,二进制编码 1 字节为 0b0000001,如果 Length为 1,则剪切后为 0b1。 ➢ String – 数据根据系统设定的字符编码方式编码为字节数组,然后从左到右依次取位,剪切多余的低位。例如,ABC,UTF8 编码 16 进制表示为 0x414243,如果 Length 为 12,则剪切后为 0x41,0b0100。 ➢ BitString - 从左到右依次取位,剪切多余的低位。注意:BitString在创建的时候会根据初始化字符串自动生成位串长度。例如,Length为 1 时,BitString(0x1)剪切后为 0b0(0x1 相当于 0b0001,一个 4 位的 BitString),BitString(0b1)剪切后为 0b1,BitString(0b11)剪切后为 0b1。
Parameters 协议单元的参数,不同的协议单元的类型,有不同的参数组合。
Value 协议单元的数值,根据设置的 DataType 和 Length 来设置,支持通过绑定变量的方式自动双向设置。 ➢ Boolean —— True 或 False ➢ Sbyte、Byte、Int16、UInt16、Int32、Uint32、Int64、Uint64、Float、Double、Decimal —— 10 进制数值 ➢ DateTime —— 微软.Net 系统的 DateTime 格式支持的字符串 ➢ String —— 任意字符串 ➢ BitString —— 位串格式,用逗号分隔的一个符号字符串,0x 开头为 16进制,0o 开头为八进制,0b 开头为二进制,按从左到右的顺序大端方式依次排列。例如:"0xF1,0b10,0o77",则应"0b11110001 10 111 111"。格式区分大小写!只能使用0x,0o和0b?
Visible 协议单元是否解析和显示。
变长型(Variable)

变长型(Variable)协议单元的属性描述如下:

属性 描述
(Name) 协议单元的名称,可以是任意字符串。
(Type) 协议单元的类型,Variable – 变长型,数据是可变长度的,两个变长字段之间需要至少有一个 Constant 属性为 True 的普通型单元分隔,单元的 Length 恒为-1。
Constant 是否为常量,一般情况协议标准定义的数据单元为常数,则设置为 True。接收时根据该属性决定是否匹配数据,当一条协议的所有 Constant 为True 的协议单元均匹配正确,软件才认为正确收到该协议帧。
DataType 协议单元的数据类型,软件支持的类型有 Boolean、Sbyte、Byte、Int16、UInt16、Int32、Uint32、Int64、Uint64、Float、Double、Decimal、DateTime、String、BitString。
Description 协议单元的描述字符串。
Endian 协议单元的字节序。 ➢ BigEndian – 大端,即高字节在前面,低字节在后面。 ➢ LittleEndian – 小端,即低字节在前面,高字节在后面。 例如,一个 4 字节的 Int32 类型数据 1,大端发送顺序是 00000001,小端发送顺序是 01000000。
Format 协议单元的解析和显示格式,字符串格式的定义和微软.Net 系统的字符串格式定义一样,例如日期类型变量,格式可以定义为 yyyy/MM/dd HH:mm:ss。 参考链接:https://docs.microsoft.com/zh-cn/dotnet/standard/basetypes/formatting-types
Length 协议单元的位长,即比特位的个数。如果设置的 Length 比 DataType 的默认位长小,则多余的位会被剪切。 剪切规则: ➢ Boolean、Sbyte、Byte、Int16、UInt16、Int32、Uint32、Int64、Uint64、Float、Double、Decimal – 保留低位,剪切多余的高位。例如,Boolean 为 True,二进制编码 1 字节为 0b0000001,如果 Length为 1,则剪切后为 0b1。 ➢ String – 数据根据系统设定的字符编码方式编码为字节数组,然后从左到右依次取位,剪切多余的低位。例如,ABC,UTF8 编码 16 进制表示为 0x414243,如果 Length 为 12,则剪切后为 0x41,0b0100。 ➢ BitString - 从左到右依次取位,剪切多余的低位。注意:BitString在创建的时候会根据初始化字符串自动生成位串长度。例如,Length为 1 时,BitString(0x1)剪切后为 0b0(0x1 相当于 0b0001,一个 4 位的 BitString),BitString(0b1)剪切后为 0b1,BitString(0b11)剪切后为 0b1。
Parameters 协议单元的参数,不同的协议单元的类型,有不同的参数组合。
Value 协议单元的数值,根据设置的 DataType 和 Length 来设置,支持通过绑定变量的方式自动双向设置。 ➢ Boolean —— True 或 False ➢ Sbyte、Byte、Int16、UInt16、Int32、Uint32、Int64、Uint64、Float、Double、Decimal —— 10 进制数值 ➢ DateTime —— 微软.Net 系统的 DateTime 格式支持的字符串 ➢ String —— 任意字符串 ➢ BitString —— 位串格式,用逗号分隔的一个符号字符串,0x 开头为 16进制,0o 开头为八进制,0b 开头为二进制,按从左到右的顺序大端方式依次排列。例如:"0xF1,0b10,0o77",则应"0b11110001 10 111 111"。格式区分大小写!只能使用0x,0o和0b?
Visible 协议单元是否解析和显示。
重复型(Repeatable)

重复型(Repeatable)协议单元的属性描述如下:

属性 描述
(Name) 协议单元的名称,可以是任意字符串。
(Type) 协议单元的类型,Repeatable - 重复型,可以指定重复 n 次,或者匹配重复 n 次。
Constant 是否为常量,一般情况协议标准定义的数据单元为常数,则设置为 True。接收时根据该属性决定是否匹配数据,当一条协议的所有 Constant 为True 的协议单元均匹配正确,软件才认为正确收到该协议帧。
DataType 协议单元的数据类型,软件支持的类型有 Boolean、Sbyte、Byte、Int16、UInt16、Int32、Uint32、Int64、Uint64、Float、Double、Decimal、DateTime、String、BitString。
Description 协议单元的描述字符串。
Endian 协议单元的字节序。 ➢ BigEndian – 大端,即高字节在前面,低字节在后面。 ➢ LittleEndian – 小端,即低字节在前面,高字节在后面。 例如,一个 4 字节的 Int32 类型数据 1,大端发送顺序是 00000001,小端发送顺序是 01000000。
Format 协议单元的解析和显示格式,字符串格式的定义和微软.Net 系统的字符串格式定义一样,例如日期类型变量,格式可以定义为 yyyy/MM/dd HH:mm:ss。 参考链接:https://docs.microsoft.com/zh-cn/dotnet/standard/basetypes/formatting-types
Length 协议单元的位长,即比特位的个数。如果设置的 Length 比 DataType 的默认位长小,则多余的位会被剪切。 剪切规则: ➢ Boolean、Sbyte、Byte、Int16、UInt16、Int32、Uint32、Int64、Uint64、Float、Double、Decimal – 保留低位,剪切多余的高位。例如,Boolean 为 True,二进制编码 1 字节为 0b0000001,如果 Length为 1,则剪切后为 0b1。 ➢ String – 数据根据系统设定的字符编码方式编码为字节数组,然后从左到右依次取位,剪切多余的低位。例如,ABC,UTF8 编码 16 进制表示为 0x414243,如果 Length 为 12,则剪切后为 0x41,0b0100。 ➢ BitString - 从左到右依次取位,剪切多余的低位。注意:BitString在创建的时候会根据初始化字符串自动生成位串长度。例如,Length为 1 时,BitString(0x1)剪切后为 0b0(0x1 相当于 0b0001,一个 4 位的 BitString),BitString(0b1)剪切后为 0b1,BitString(0b11)剪切后为 0b1。
Parameters 协议单元的参数,重复型的协议单元的参数组合如下。
Repetitions 重复次数。范围-1~n。 接收模式时,-1 表示 0~任意次重复,>=0 按实际次数接收; 发送模式时,>0 按实际次数发送,<=0 不发送。
Value 协议单元的数值,根据设置的 DataType 和 Length 来设置,支持通过绑定变量的方式自动双向设置。 ➢ Boolean —— True 或 False ➢ Sbyte、Byte、Int16、UInt16、Int32、Uint32、Int64、Uint64、Float、Double、Decimal —— 10 进制数值 ➢ DateTime —— 微软.Net 系统的 DateTime 格式支持的字符串 ➢ String —— 任意字符串 ➢ BitString —— 位串格式,用逗号分隔的一个符号字符串,0x 开头为 16进制,0o 开头为八进制,0b 开头为二进制,按从左到右的顺序大端方式依次排列。例如:"0xF1,0b10,0o77",则应"0b11110001 10 111 111"。格式区分大小写!只能使用0x,0o和0b?
Visible 协议单元是否解析和显示。
选择型(Choosable)

选择型(Choosable)协议单元的属性描述如下:

属性 描述
(Name) 协议单元的名称,可以是任意字符串。
(Type) 协议单元的类型,Choosable - 选择型,根据条件选择字段是否有效,该类型单元的Constant 属性恒为 True。
Constant 是否为常量,一般情况协议标准定义的数据单元为常数,则设置为 True。接收时根据该属性决定是否匹配数据,当一条协议的所有 Constant 为True 的协议单元均匹配正确,软件才认为正确收到该协议帧。
DataType 协议单元的数据类型,软件支持的类型有 Boolean、Sbyte、Byte、Int16、UInt16、Int32、Uint32、Int64、Uint64、Float、Double、Decimal、DateTime、String、BitString。
Description 协议单元的描述字符串。
Endian 协议单元的字节序。 ➢ BigEndian – 大端,即高字节在前面,低字节在后面。 ➢ LittleEndian – 小端,即低字节在前面,高字节在后面。 例如,一个 4 字节的 Int32 类型数据 1,大端发送顺序是 00000001,小端发送顺序是 01000000。
Format 协议单元的解析和显示格式,字符串格式的定义和微软.Net 系统的字符串格式定义一样,例如日期类型变量,格式可以定义为 yyyy/MM/dd HH:mm:ss。 参考链接:https://docs.microsoft.com/zh-cn/dotnet/standard/basetypes/formatting-types
Length 协议单元的位长,即比特位的个数。如果设置的 Length 比 DataType 的默认位长小,则多余的位会被剪切。 剪切规则: ➢ Boolean、Sbyte、Byte、Int16、UInt16、Int32、Uint32、Int64、Uint64、Float、Double、Decimal – 保留低位,剪切多余的高位。例如,Boolean 为 True,二进制编码 1 字节为 0b0000001,如果 Length为 1,则剪切后为 0b1。 ➢ String – 数据根据系统设定的字符编码方式编码为字节数组,然后从左到右依次取位,剪切多余的低位。例如,ABC,UTF8 编码 16 进制表示为 0x414243,如果 Length 为 12,则剪切后为 0x41,0b0100。 ➢ BitString - 从左到右依次取位,剪切多余的低位。注意:BitString在创建的时候会根据初始化字符串自动生成位串长度。例如,Length为 1 时,BitString(0x1)剪切后为 0b0(0x1 相当于 0b0001,一个 4 位的 BitString),BitString(0b1)剪切后为 0b1,BitString(0b11)剪切后为 0b1。
Parameters 协议单元的参数,不同的协议单元的类型,有不同的参数组合。
Value 协议单元的数值,根据设置的 DataType 和 Length 来设置,支持通过绑定变量的方式自动双向设置。 ➢ Boolean —— True 或 False ➢ Sbyte、Byte、Int16、UInt16、Int32、Uint32、Int64、Uint64、Float、Double、Decimal —— 10 进制数值 ➢ DateTime —— 微软.Net 系统的 DateTime 格式支持的字符串 ➢ String —— 任意字符串 ➢ BitString —— 位串格式,用逗号分隔的一个符号字符串,0x 开头为 16进制,0o 开头为八进制,0b 开头为二进制,按从左到右的顺序大端方式依次排列。例如:"0xF1,0b10,0o77",则应"0b11110001 10 111 111"。格式区分大小写!只能使用0x,0o和0b?
Visible 协议单元是否解析和显示。
计算型(Computable)

计算型(Computable)协议单元的属性描述如下:

属性 描述
(Name) 协议单元的名称,可以是任意字符串。
(Type) 协议单元的类型,Computable - 计算型,由自身或者其他数据通过一定的算法计算得到。
Constant 是否为常量,一般情况协议标准定义的数据单元为常数,则设置为 True。接收时根据该属性决定是否匹配数据,当一条协议的所有 Constant 为True 的协议单元均匹配正确,软件才认为正确收到该协议帧。
DataType 协议单元的数据类型,软件支持的类型有 Boolean、Sbyte、Byte、Int16、UInt16、Int32、Uint32、Int64、Uint64、Float、Double、Decimal、DateTime、String、BitString。
Description 协议单元的描述字符串。
Endian 协议单元的字节序。 ➢ BigEndian – 大端,即高字节在前面,低字节在后面。 ➢ LittleEndian – 小端,即低字节在前面,高字节在后面。 例如,一个 4 字节的 Int32 类型数据 1,大端发送顺序是 00000001,小端发送顺序是 01000000。
Format 协议单元的解析和显示格式,字符串格式的定义和微软.Net 系统的字符串格式定义一样,例如日期类型变量,格式可以定义为 yyyy/MM/dd HH:mm:ss。 参考链接:https://docs.microsoft.com/zh-cn/dotnet/standard/basetypes/formatting-types
Length 协议单元的位长,即比特位的个数。如果设置的 Length 比 DataType 的默认位长小,则多余的位会被剪切。 剪切规则: ➢ Boolean、Sbyte、Byte、Int16、UInt16、Int32、Uint32、Int64、Uint64、Float、Double、Decimal – 保留低位,剪切多余的高位。例如,Boolean 为 True,二进制编码 1 字节为 0b0000001,如果 Length为 1,则剪切后为 0b1。 ➢ String – 数据根据系统设定的字符编码方式编码为字节数组,然后从左到右依次取位,剪切多余的低位。例如,ABC,UTF8 编码 16 进制表示为 0x414243,如果 Length 为 12,则剪切后为 0x41,0b0100。 ➢ BitString - 从左到右依次取位,剪切多余的低位。注意:BitString在创建的时候会根据初始化字符串自动生成位串长度。例如,Length为 1 时,BitString(0x1)剪切后为 0b0(0x1 相当于 0b0001,一个 4 位的 BitString),BitString(0b1)剪切后为 0b1,BitString(0b11)剪切后为 0b1。
Parameters 协议单元的参数,计算型的协议单元的参数组合如下。
Algorithm 算法类型。 软件支持常用的 36 种计算算法,如果内置的算法不能满足要求,用户可以通过 IProtocolAlgorithm 和 IProtocolAlgorithmParameter 接口扩展自定义的算法。 扩展方法请参考:<软件安装目录>\Examples\Basics\Steps\Extensions中的 ProtocolAlgorithmExt1.cs。扩展算法的代码除了使用外部 DLL 的方式编写外,也可以直接在脚本中编写。
Priority 计算的优先级,是大于等于 0 的整数,0 优先级最高,依次降低,优先级越高计算越优先,同级则按出现顺序计算。
Display 计算单元的结果显示方式,Original 表示采用计算前数据显示,Computed表示采用计算后的数据显示。
Location 计算单元在待计算数据的位置。 ➢Front – 前面,StartPosition 或 EndPosition >=0 表示从计算单元末尾起始开始计算,0 表示紧挨着计算单元末尾的第 1 个字节,依次类推;StartPosition 或 EndPosition <0 表示从整帧数据末尾开始计算,-1 表示整帧数据末尾第 1 字节,-2 表示整帧数据末尾第 2 字节,依次类推。 ➢ Middle – 中间,StartPosition 在计算单元前面,StartPosition>=0 表示从整帧数据开头开始计算,0 表示整帧数据的第 1 个字节,依次类推,StartPosition <0 表示从计算字段的前面开始计算,-1 表示紧跟计算字段的前 1 个字节,-2 表示前 2 个字节起始,依次类推。EndPosition 在计算单元后面,EndPosition >=0 表示从计算单元末尾起始开始计算,0 表示紧挨着计算单元末尾的第 1 个字节,依次类推,EndPosition <0 表示从整帧数据末尾开始计算,-1表示整帧数据末尾第 1 字节,-2 表示整帧数据末尾第 2 字节,依次类推。 ➢ Back – 后面,StartPosition 在计算单元前面, StartPosition>=0表示从整帧数据开头开始计算,0 表示整帧数据的第 1 个字节,依次类推,StartPosition <0 表示从计算字段的前面开始计算,-1 表示紧跟计算字段的前 1 个字节,-2 表示前 2 个字节起始,依次类推。EndPosition 在计算单元前面,EndPosition>=0 表示从整帧数据开头开始计算,0 表示整帧数据的第 1 个字节,依次类推,EndPosition <0 表示从计算字段的前面开始计算,-1 表示紧跟计算字段的前 1 个字节,-2 表示前 2 个字节起始,依次类推。 用法请参考:<软件安装目录>\Examples\Basics\Steps\Steps.gpj 的“序列\基本步骤\ActionMessage 测试\计算型测试”
StartPosition 待计算数据的起始字节序号,具体定义参考 Location 属性的描述。
EndPosition 待计算数据的结束字节序号,具体定义参考 Location 属性的描述。
Deviation  
Scaler  
Value 协议单元的数值,根据设置的 DataType 和 Length 来设置,支持通过绑定变量的方式自动双向设置。 ➢ Boolean —— True 或 False ➢ Sbyte、Byte、Int16、UInt16、Int32、Uint32、Int64、Uint64、Float、Double、Decimal —— 10 进制数值 ➢ DateTime —— 微软.Net 系统的 DateTime 格式支持的字符串 ➢ String —— 任意字符串 ➢ BitString —— 位串格式,用逗号分隔的一个符号字符串,0x 开头为 16进制,0o 开头为八进制,0b 开头为二进制,按从左到右的顺序大端方式依次排列。例如:"0xF1,0b10,0o77",则应"0b11110001 10 111 111"。格式区分大小写!只能使用0x,0o和0b?
Visible 协议单元是否解析和显示。

3.寄存器

寄存器(Register)是寄存器类型动作步骤,该步骤可以访问寄存器类型设备的寄存器数值,可以一次访问任意数量的设备寄存器。

寄存器的属性描述如下:

属性 描述
(Id) 唯一标识步骤的字符串。
(Name) 步骤名称。名称不是步骤的标识,在同一等级上允许步骤名称相同。
Active 是否激活,不激活的步骤不执行。
Description 步骤描述。
Device 序列绑定的设备和接口的名称,可以在脚本中通过名称访问设备。设备类型只能是寄存器型设备(IRegisterDeviceSession)类型。
LimitExpression 限定值表达式。
Loggable 是否记录结果,不记录的步骤能够执行,结果不记录到结果表,也不参与判错。
OperationMode 操作模式,有读(Read)和写(Write)两种模式。
Socket 执行槽,用于多个器件并行执行分开记录每个器件的结果。>=0 表示槽号,步骤执行记录归到该槽号;<0 表示步骤执行记录所有槽都有记录。单槽执行,默认为-1 即可。
Timeout 步骤执行超时时间,单位是毫秒。>0 表示实际超时时间,超时后终止步骤执行;<=0 表示无限等待步骤执行完毕。

寄存器型步骤的内容结构

寄存器型步骤的内容描述是一张寄存器表,定义了需要读或写的一组寄存器。

寄存器型协议单元的属性描述如下:

属性 描述
(Name) 协议单元的名称,可以是任意字符串。
Address 寄存器单元的地址,地址的格式由设备驱动定义
DataType 寄存器单元的数据类型,软件支持的类型有 Boolean、Sbyte、Byte、Int16、UInt16、Int32、Uint32、Int64、Uint64、Float、Double、Decimal、DateTime、String、BitString。
Description 协议单元的描述字符串。
Endian 协议单元的字节序。 ➢ BigEndian – 大端,即高字节在前面,低字节在后面。 ➢ LittleEndian – 小端,即低字节在前面,高字节在后面。 例如,一个 4 字节的 Int32 类型数据 1,大端发送顺序是 00000001,小端发送顺序是 01000000。
Format 协议单元的解析和显示格式,字符串格式的定义和微软.Net 系统的字符串格式定义一样,例如日期类型变量,格式可以定义为 yyyy/MM/dd HH:mm:ss。 参考链接:https://docs.microsoft.com/zh-cn/dotnet/standard/basetypes/formatting-types
Length 寄存器单元的位长,即比特位的个数。如果设置的 Length 比 DataType 的默认位长小,则多余的位会被剪切。对于 String 或者 BitString 类型的数据,可以设置为负数,表示不定长
Value 协议单元的数值,根据设置的 DataType 和 Length 来设置,支持通过绑定变量的方式自动双向设置。 ➢ Boolean —— True 或 False ➢ Sbyte、Byte、Int16、UInt16、Int32、Uint32、Int64、Uint64、Float、Double、Decimal —— 10 进制数值 ➢ DateTime —— 微软.Net 系统的 DateTime 格式支持的字符串 ➢ String —— 任意字符串 ➢ BitString —— 位串格式,用逗号分隔的一个符号字符串,0x 开头为 16进制,0o 开头为八进制,0b 开头为二进制,按从左到右的顺序大端方式依次排列。例如:"0xF1,0b10,0o77",则应"0b11110001 10 111 111"。格式区分大小写!只能使用0x,0o和0b?
Visible 协议单元是否解析和显示。

4.进程

进程(Process)是执行外部可执行文件的动作步骤,主要应用场合:

➢ 调用外部可执行文件,获取执行的结果。

进程步骤对外部可执行文件的编写要求:

➢ 进程终止时返回的 int 类型值作为进程步骤的结果状态值,大于 0 表示执行通过,小于 0 表示执行失败。

➢ 进程执行过程中,所有输出到标准输出流的字符串,都被保存到进程步骤的结果变量Result.Data 中,用户可以对该值进行处理。

进程的属性描述如下:

属性 描述
(Id) 唯一标识步骤的字符串。
(Name) 步骤名称。名称不是步骤的标识,在同一等级上允许步骤名称相同。
Active 是否激活,不激活的步骤不执行。
Arguments 可执行文件的命令行参数,支持表达式。
CreateNoWindow 执行时不创建窗口。
Description 步骤描述。
Device 序列绑定的设备和接口的名称,可以在脚本中通过名称访问设备。
FileName 可执行文件的文件名,可以是绝对路径或者相对路径,相对路径相对于项目文件所在目录。
LimitExpression 限定值表达式。
Loggable 是否记录结果,不记录的步骤能够执行,结果不记录到结果表,也不参与判错。
Socket 执行槽,用于多个器件并行执行分开记录每个器件的结果。>=0 表示槽号,步骤执行记录归到该槽号;<0 表示步骤执行记录所有槽都有记录。单槽执行,默认为-1 即可。
Timeout 步骤执行超时时间,单位是毫秒。>0 表示实际超时时间,超时后终止步骤执行;<=0 表示无限等待步骤执行完毕。
WaitMode 等待模式,No 表示触发执行后立即完成步骤,WaitForExit 表示步骤等待,直到执行的进程结束或者步骤超时。
WindowStyle 指定在启动进程时新窗口应如何显示。

2.容器类

嵌套类包含2个基本单元,分别是序列步骤序列容器步骤。下面分别介绍这2个基本单元。

1.序列

序列(Sequence)步骤是容器类型步骤,可以容纳的任意类型步骤,使用层次化方式组织执行序列。

序列的属性描述如下:

属性 描述
(Id) 唯一标识步骤的字符串。
(Name) 步骤名称。名称不是步骤的标识,在同一等级上允许步骤名称相同。
Active 是否激活,不激活的步骤不执行。
Description 步骤描述。
Loggable 是否记录结果,不记录的步骤能够执行,结果不记录到结果表,也不参与判错。
SequenceType 序列类型。 ⭕ Container —— 容器类型,允许单个执行子步骤;运行时子步骤失败不影响继续运行其他子步骤。 ⭕ Sequence —— 序列类型,不允许单个执行子步骤;运行时任何一个子步骤失败,则整个序列失败并终止执行。
Socket 执行槽,用于多个器件并行执行分开记录每个器件的结果。>=0 表示槽号,步骤执行记录归到该槽号;<0 表示步骤执行记录所有槽都有记录。单槽执行,默认为-1 即可。
Timeout 步骤执行超时时间,单位是毫秒。>0 表示实际超时时间,超时后终止步骤执行;<=0 表示无限等待步骤执行完毕。

2.序列容器

序列容器(SequenceContainer)步骤是容器类型步骤,只能容纳 Sequence 步骤SequenceContainer 步骤,使用层次化方式组织 Sequence 步骤。

序列容器的属性描述如下:

属性 描述
(Id) 唯一标识步骤的字符串。
(Name) 步骤名称。名称不是步骤的标识,在同一等级上允许步骤名称相同。
Active 是否激活,不激活的步骤不执行。
Description 步骤描述。
Loggable 是否记录结果,不记录的步骤能够执行,结果不记录到结果表,也不参与判错。
SequenceType 序列类型。 ⭕ Container —— 容器类型,允许单个执行子步骤;运行时子步骤失败不影响继续运行其他子步骤。 ⭕ Sequence —— 序列类型,不允许单个执行子步骤;运行时任何一个子步骤失败,则整个序列失败并终止执行。
Socket 执行槽,用于多个器件并行执行分开记录每个器件的结果。>=0 表示槽号,步骤执行记录归到该槽号;<0 表示步骤执行记录所有槽都有记录。单槽执行,默认为-1 即可。
Timeout 步骤执行超时时间,单位是毫秒。>0 表示实际超时时间,超时后终止步骤执行;<=0 表示无限等待步骤执行完毕。

注:使用 SequenceContainer 组织用例集, Sequence 组织用例,可以满足粗粒度和细粒度的数据管理和报表管理要求。

3.流控类

流程控制类包含9个基本单元。下面分别介绍这9个基本单元。

1.如果(If)步骤、那么(Then)步骤、否则(Else)步骤

If 步骤是分支类型步骤,配合 Then 步骤和 Else 步骤一起使用,当 ConditionExpression 的值为 True时,执行 Then 分支,否则执行 Else 分支。

If 步骤,Then 步骤和 Else 步骤属性描述如下:

属性 描述
(Id) 唯一标识步骤的字符串。
(Name) 步骤名称。名称不是步骤的标识,在同一等级上允许步骤名称相同。
Active 是否激活,不激活的步骤不执行。
ConditionExpression 条件表达式,可以通过表达式编辑器进行编辑。 例如:Variants["变量表/发送位置"] < Variants["变量表/总长度"]
Description 步骤描述。
Loggable 是否记录结果,不记录的步骤能够执行,结果不记录到结果表,也不参与判错。
Socket 执行槽,用于多个器件并行执行分开记录每个器件的结果。>=0 表示槽号,步骤执行记录归到该槽号;<0 表示步骤执行记录所有槽都有记录。单槽执行,默认为-1 即可。
Timeout 步骤执行超时时间,单位是毫秒。>0 表示实际超时时间,超时后终止步骤执行;<=0 表示无限等待步骤执行完毕。

2.循环(For)步骤

For 步骤是循环类型步骤,循环范围[Start,End],包括初始值和结束值。

循环(For) 属性描述如下:

属性 描述
(Id) 唯一标识步骤的字符串。
(Name) 步骤名称。名称不是步骤的标识,在同一等级上允许步骤名称相同。
Active 是否激活,不激活的步骤不执行。
Description 步骤描述。
EndExpression 结束值表达式,如 3,Variants["Vars/Int1"]等。
IncrementExpression 增量值表达式,可以是正数或负数。
Loggable 是否记录结果,不记录的步骤能够执行,结果不记录到结果表,也不参与判错。
Socket 执行槽,用于多个器件并行执行分开记录每个器件的结果。>=0 表示槽号,步骤执行记录归到该槽号;<0 表示步骤执行记录所有槽都有记录。单槽执行,默认为-1 即可。
StartExpression 初始值表达式,如 1。
Timeout 步骤执行超时时间,单位是毫秒。>0 表示实际超时时间,超时后终止步骤执行;<=0 表示无限等待步骤执行完毕。

3.循环(While)步骤

循环(While) 属性描述如下:

属性 描述
(Id) 唯一标识步骤的字符串。
(Name) 步骤名称。名称不是步骤的标识,在同一等级上允许步骤名称相同。
Active 是否激活,不激活的步骤不执行。
ConditionExpression 条件表达式,可以通过表达式编辑器进行编辑。 例如:Variants["变量表/结束标志"] = False
Description 步骤描述。
Loggable 是否记录结果,不记录的步骤能够执行,结果不记录到结果表,也不参与判错。
Socket 执行槽,用于多个器件并行执行分开记录每个器件的结果。>=0 表示槽号,步骤执行记录归到该槽号;<0 表示步骤执行记录所有槽都有记录。单槽执行,默认为-1 即可。
Timeout 步骤执行超时时间,单位是毫秒。>0 表示实际超时时间,超时后终止步骤执行;<=0 表示无限等待步骤执行完毕。

4. 中断(Break)步骤

Break 步骤用于循环类型步骤中,终止整个循环的执行,用法类似 C/C++等高级语言 break 语句。

中断(Break) 属性描述如下:

属性 描述
(Id) 唯一标识步骤的字符串。
(Name) 步骤名称。名称不是步骤的标识,在同一等级上允许步骤名称相同。
Active 是否激活,不激活的步骤不执行。
Description 步骤描述。
Loggable 是否记录结果,不记录的步骤能够执行,结果不记录到结果表,也不参与判错。
Socket 执行槽,用于多个器件并行执行分开记录每个器件的结果。>=0 表示槽号,步骤执行记录归到该槽号;<0 表示步骤执行记录所有槽都有记录。单槽执行,默认为-1 即可。
Timeout 步骤执行超时时间,单位是毫秒。>0 表示实际超时时间,超时后终止步骤执行;<=0 表示无限等待步骤执行完毕。

5.继续(Continue)步骤

Continue 步骤用于循环类型步骤中,结束本次循环,而不终止整个循环的执行。用法类似 C/C++等高级语言 continue 语句。

继续(Continue) 属性描述如下:

属性 描述
(Id) 唯一标识步骤的字符串。
(Name) 步骤名称。名称不是步骤的标识,在同一等级上允许步骤名称相同。
Active 是否激活,不激活的步骤不执行。
Description 步骤描述。
Loggable 是否记录结果,不记录的步骤能够执行,结果不记录到结果表,也不参与判错。
Socket 执行槽,用于多个器件并行执行分开记录每个器件的结果。>=0 表示槽号,步骤执行记录归到该槽号;<0 表示步骤执行记录所有槽都有记录。单槽执行,默认为-1 即可。
Timeout 步骤执行超时时间,单位是毫秒。>0 表示实际超时时间,超时后终止步骤执行;<=0 表示无限等待步骤执行完毕。

6.开关(Switch)步骤

Switch 步骤是分支类型步骤,用法类似 C/C++等高级语言 switch 语句。

开关(Switch) 属性描述如下:

属性 描述
(Id) 唯一标识步骤的字符串。
(Name) 步骤名称。名称不是步骤的标识,在同一等级上允许步骤名称相同。
Active 是否激活,不激活的步骤不执行。
Description 步骤描述。
DiscriminantExpression 判别式,一般引用变量的值,如 Variants["Vars/Int1"]。
Loggable 是否记录结果,不记录的步骤能够执行,结果不记录到结果表,也不参与判错。
Socket 执行槽,用于多个器件并行执行分开记录每个器件的结果。>=0 表示槽号,步骤执行记录归到该槽号;<0 表示步骤执行记录所有槽都有记录。单槽执行,默认为-1 即可。
Timeout 步骤执行超时时间,单位是毫秒。>0 表示实际超时时间,超时后终止步骤执行;<=0 表示无限等待步骤执行完毕。

7.开关分支(Case)步骤

Case 步骤只能配合 Switch 步骤使用。

开关分支(Case) 属性描述如下:

属性 描述
(Id) 唯一标识步骤的字符串。
(Name) 步骤名称。名称不是步骤的标识,在同一等级上允许步骤名称相同。
Active 是否激活,不激活的步骤不执行。
ConditionExpression 条件表达式,一般为常量,可以是软件支持的任意数据类型。
Description 步骤描述。
Loggable 是否记录结果,不记录的步骤能够执行,结果不记录到结果表,也不参与判错。
Socket 执行槽,用于多个器件并行执行分开记录每个器件的结果。>=0 表示槽号,步骤执行记录归到该槽号;<0 表示步骤执行记录所有槽都有记录。单槽执行,默认为-1 即可。
Timeout 步骤执行超时时间,单位是毫秒。>0 表示实际超时时间,超时后终止步骤执行;<=0 表示无限等待步骤执行完毕。

8.并行(Parallel)步骤

Parallel 步骤为并行执行步骤,可以同时执行其下的所有 Branch 步骤。

并行(Parallel) 属性描述如下:

属性 描述
(Id) 唯一标识步骤的字符串。
(Name) 步骤名称。名称不是步骤的标识,在同一等级上允许步骤名称相同。
Active 是否激活,不激活的步骤不执行。
Description 步骤描述。
Loggable 是否记录结果,不记录的步骤能够执行,结果不记录到结果表,也不参与判错。
ParallelMode 并行模式。 ➢ All –无 Specific 分支,则完成所有分支后退出;有 Specific 分支,则完成所有 Specific 分支后马上退出。 ➢ Any –无 Specific 分支,完成任意一个分支后退出;有 Specific 分支,完成所有 Specific 分支,并完成除 Specific 分支之外的任意一个 Default 分支后马上退出。
Socket 执行槽,用于多个器件并行执行分开记录每个器件的结果。>=0 表示槽号,步骤执行记录归到该槽号;<0 表示步骤执行记录所有槽都有记录。单槽执行,默认为-1 即可。
Timeout 步骤执行超时时间,单位是毫秒。>0 表示实际超时时间,超时后终止步骤执行;<=0 表示无限等待步骤执行完毕。

9.并行分支(Branch)步骤

Branch 步骤为并行执行步骤的分支步骤,必须配合 Parallel 步骤使用。

并行分支(Branch)属性描述如下:

属性 描述
(Id) 唯一标识步骤的字符串。
(Name) 步骤名称。名称不是步骤的标识,在同一等级上允许步骤名称相同。
Active 是否激活,不激活的步骤不执行。
BranchMode 分支模式。 ➢ Default – 默认 ➢ Specific - 分支运行完毕是退出判断的一个必要条件,具体用法需要结合其父 Parallel 步骤的并行模式设置。
Description 步骤描述。
Loggable 是否记录结果,不记录的步骤能够执行,结果不记录到结果表,也不参与判错。
Socket 执行槽,用于多个器件并行执行分开记录每个器件的结果。>=0 表示槽号,步骤执行记录归到该槽号;<0 表示步骤执行记录所有槽都有记录。单槽执行,默认为-1 即可。
Timeout 步骤执行超时时间,单位是毫秒。>0 表示实际超时时间,超时后终止步骤执行;<=0 表示无限等待步骤执行完毕。

4.变量类

变量类包含3个基本单元,分别是:变量赋值步骤变量传输步骤变量存储步骤。下面分别介绍这3个基本单元。

1.变量赋值

变量赋值(Variant Assignment)步骤是给变量名为 Variant 的变量赋值的操作,使用 Expression 属性表示的表达式进行赋值。

变量赋值步骤属性描述如下:

属性 描述
(Id) 唯一标识步骤的字符串。
(Name) 步骤名称。名称不是步骤的标识,在同一等级上允许步骤名称相同。
Active 是否激活,不激活的步骤不执行。
Description 步骤描述。
Expression 变量赋值表达式。当表达式为空时,复位变量,清空变量历史数据。
Loggable 是否记录结果,不记录的步骤能够执行,结果不记录到结果表,也不参与判错。
Socket 执行槽,用于多个器件并行执行分开记录每个器件的结果。>=0 表示槽号,步骤执行记录归到该槽号;<0 表示步骤执行记录所有槽都有记录。单槽执行,默认为-1 即可。
Timeout 步骤执行超时时间,单位是毫秒。>0 表示实际超时时间,超时后终止步骤执行;<=0 表示无限等待步骤执行完毕。
Variant 变量名,如:变量集 1/变量 1。

2.变量传输

变量传输(Variant Transmission)步骤是从变量名为 Source 的变量中读出数量为 Count 的最新数据,赋值给变量名为 Destination 的变量。当 Destination 为空时,不执行赋值操作。该步骤可以和通道类变量一起使用,达到按需控制通道变量的数据更新。

变量传输步骤属性描述如下:

属性 描述
(Id) 唯一标识步骤的字符串。
(Name) 步骤名称。名称不是步骤的标识,在同一等级上允许步骤名称相同。
Active 是否激活,不激活的步骤不执行。
Count 传输数量,如果 Source 的数据量不足,则按实际数量传输。
Description 步骤描述。
Destination 目的变量名,如:变量集 1/变量 1。
Loggable 是否记录结果,不记录的步骤能够执行,结果不记录到结果表,也不参与判错。
Socket 执行槽,用于多个器件并行执行分开记录每个器件的结果。>=0 表示槽号,步骤执行记录归到该槽号;<0 表示步骤执行记录所有槽都有记录。单槽执行,默认为-1 即可。
Source 源变量名。
Timeout 步骤执行超时时间,单位是毫秒。>0 表示实际超时时间,超时后终止步骤执行;<=0 表示无限等待步骤执行完毕。

3.变量存储

变量存储(Variant Storage)步骤是存储变量缓存数据的操作,可以对指定变量的缓存数据做快照存储。

变量存储步骤属性描述如下:

属性 描述
(Id) 唯一标识步骤的字符串。
(Name) 步骤名称。名称不是步骤的标识,在同一等级上允许步骤名称相同。
Active 是否激活,不激活的步骤不执行。
Description 步骤描述。
Variant 变量名,如:变量集 1/变量 1。
Loggable 是否记录结果,不记录的步骤能够执行,结果不记录到结果表,也不参与判错。
Socket 执行槽,用于多个器件并行执行分开记录每个器件的结果。>=0 表示槽号,步骤执行记录归到该槽号;<0 表示步骤执行记录所有槽都有记录。单槽执行,默认为-1 即可。
Timeout 步骤执行超时时间,单位是毫秒。>0 表示实际超时时间,超时后终止步骤执行;<=0 表示无限等待步骤执行完毕。
Location 存储文件位置表达式。 例如: 绝对路径:"D:\Temp\Test.vdata" ; 相对项目文件所在目录的路径:"Test.vdata"; 取当前日期时间格式化路径:Format("Test{0}.vdata",Now.ToString("yyyyMMddHHmmss"))

 

5.同步类

同步类包含3个基本单元,分别是:等待步骤通知步骤指示步骤。下面分别介绍这3个基本单元。

1.等待

等待步骤属性描述如下:

属性 描述
(Id) 唯一标识步骤的字符串。
(Name) 步骤名称。名称不是步骤的标识,在同一等级上允许步骤名称相同。
Active 是否激活,不激活的步骤不执行。
Description 步骤描述。
Loggable 是否记录结果,不记录的步骤能够执行,结果不记录到结果表,也不参与判错。
Socket 执行槽,用于多个器件并行执行分开记录每个器件的结果。>=0 表示槽号,步骤执行记录归到该槽号;<0 表示步骤执行记录所有槽都有记录。单槽执行,默认为-1 即可。
Time 等待时间,支持表达式计算,单位是毫秒。表示等待一定时间再执行后续的步骤。
Timeout 步骤执行超时时间,单位是毫秒。>0 表示实际超时时间,超时后终止步骤执行;<=0 表示无限等待步骤执行完毕。

2.通知

通知步骤属性描述如下:

属性 描述
(Id) 唯一标识步骤的字符串。
(Name) 步骤名称。名称不是步骤的标识,在同一等级上允许步骤名称相同。
Active 是否激活,不激活的步骤不执行。
Content 通知的内容,是一个表达式,可以为空。
ContentTopic 通知的内容主题,可以是一个字符串,也可以引用一个变量,引用格式用@()符号括住,如@(变量集 1/变量 1),如果是变量引用,执行步骤相当于把 Content 属性的值赋给该变量。
Description 步骤描述。
Loggable 是否记录结果,不记录的步骤能够执行,结果不记录到结果表,也不参与判错。
Socket 执行槽,用于多个器件并行执行分开记录每个器件的结果。>=0 表示槽号,步骤执行记录归到该槽号;<0 表示步骤执行记录所有槽都有记录。单槽执行,默认为-1 即可。
Timeout 步骤执行超时时间,单位是毫秒。>0 表示实际超时时间,超时后终止步骤执行;<=0 表示无限等待步骤执行完毕。

3.指示

指示(Indication)步骤用于等待同步信号,等待的信号可以是消息,也可以是一个变量发生变化后的变量值,通常和通知(Notification) 步骤联合一起使用。

指示步骤属性描述如下:

属性 描述
(Id) 唯一标识步骤的字符串。
(Name) 步骤名称。名称不是步骤的标识,在同一等级上允许步骤名称相同。
Active 是否激活,不激活的步骤不执行。
Content 指示的内容,是一个表达式,可以为空。当指示的内容和收到的内容一致时,步骤完成执行。如果为空,则收到指示的内容主题即可完成执行。
ContentTopic 指示的内容主题,可以是一个字符串,也可以引用一个变量,引用格式用@()符号括住,如@(变量集 1/变量 1)。
Description 步骤描述。
Loggable 是否记录结果,不记录的步骤能够执行,结果不记录到结果表,也不参与判错。
Socket 执行槽,用于多个器件并行执行分开记录每个器件的结果。>=0 表示槽号,步骤执行记录归到该槽号;<0 表示步骤执行记录所有槽都有记录。单槽执行,默认为-1 即可。
Timeout 步骤执行超时时间,单位是毫秒。>0 表示实际超时时间,超时后终止步骤执行;<=0 表示无限等待步骤执行完毕。

工具类

工具类目前只有1个基本单元,是声音步骤。下面介绍该单元。

1.声音

声音(Audio)步骤用于播放.wav 文件声音。

声音步骤属性描述如下:

 

属性 描述
(Id) 唯一标识步骤的字符串。
(Name) 步骤名称。名称不是步骤的标识,在同一等级上允许步骤名称相同。
Active 是否激活,不激活的步骤不执行。
Description 步骤描述。
FileName 声音文件的文件名,可以是绝对路径或者相对路径,相对路径相对于项目文件所在目录。
Loggable 是否记录结果,不记录的步骤能够执行,结果不记录到结果表,也不参与判错。
Socket 执行槽,用于多个器件并行执行分开记录每个器件的结果。>=0 表示槽号,步骤执行记录归到该槽号;<0 表示步骤执行记录所有槽都有记录。单槽执行,默认为-1 即可。
Timeout 步骤执行超时时间,单位是毫秒。>0 表示实际超时时间,超时后终止步骤执行;<=0 表示无限等待步骤执行完毕。

二.序列的应用

这一章将分为三块说明序列的具体使用,这三部分分别是:步骤的创建脚本的使用通信协议的编写

1.步骤的创建和删除

该测试使用免费版功能:

✧支持开发项目,限制资源数(项目 1 个,设备 2 个,变量 16 个,步骤 16 个,画面 2 个);

✧支持运行项目,限制运行时间(累计时长 1 小时);

✧ 支持发布项目,限制资源数(项目 1 个,设备 2 个,变量 16 个,步骤 16 个,画面 2 个)。

这里我们可以创建多达16个步骤供我们练习。

1.创建序列

新建工程之后,我们看到序列功能部分,右键点击序列,选择新建序列

image-20230212110823600

这时输入序列名称,例如:测试序列,点击确定

image-20230212110956354

至此序列创建完毕。

image-20230212111048492

2.创建步骤

步骤是序列的功能单元,每一个步骤要依赖其序列存在。

步骤有五大类,还有一小类是工具类。下面给出创建消息步骤等待步骤的过程。

创建消息步骤

❇ 1.新建序列,若已经创建序列,此步骤可跳过。

❇ 2.打开序列,在序列选项卡的空白处,右键,选择添加,选择消息,即创建了消息步骤。

image-20230212113144858

image-20230212113326201

❇ 3.消息步骤的配置。

创建等待步骤

❇ 1.新建序列,若已经创建序列,此步骤可跳过。

❇ 2.打开序列,在序列选项卡的空白处,右键,选择添加,选择等待,即创建了等待步骤。

image-20230212173003296

3.创建嵌套序列

序列容器可以嵌入子序列子序列容器序列可以嵌入子序列

序列容器中嵌套序列

❇ 1.新建序列容器,并命名为:测试序列容器。

image-20230212173924819

image-20230212173854490

❇ 2.在测试序列容器中,新建子序列或子序列容器。这里新建序列,命名为:子序列。

image-20230212174020696

image-20230212174407204

序列嵌套序列

❇ 1.选择测试用序列

❇ 2.新建序列,并命名为:测试子序列。

image-20230212174630738

4.创建嵌套步骤

流控类步骤可以嵌入其他类型的步骤(包括流控类),实现逻辑的控制。下面以IF流控步骤举例,介绍创建方式。

创建IF流控步骤

❇ 1.选择测试用序列

image-20230212174948512

❇ 2.右键点击空白处,选择添加,选择如果(IF)

image-20230212175036936

❇ 3.左键点击IF步骤,右键选择添加,选择那么(Then)步骤,可以实现逻辑嵌套。在Then步骤中,嵌入动作类步骤,可以实现数据处理动作。例如,左键点击Then步骤,右键选择添加,选择,可以添加值步骤

image-20230212175313504

Then步骤中可以嵌入多个动作类步骤。如下图中,我们嵌入多个动作步骤。

image-20230212175820495

 

5.删除步骤

任意一类步骤,可选择下面两种方式之一进行删除:

❇ 1.左键选中,按键盘Delete按键删除。

❇ 2.右键选中,选择删除

image-20230212173553635

2.脚本的使用

每一个步骤都支持脚本功能

脚本的作用:

①调用公共的接口;

②调用.Net Framework 类库;

③调用第三方托管库来实现执行逻辑和处理执行的结果。

注意:本软件的步骤脚本类和画面脚本类,用于在需要执行脚本函数时临时创建一个对象作为容器媒介来执行脚本函数,不是持久存在的一个对象,故不能使用私有变量保存状态。需要状态保存,可以使用项目上下文变量 Context 的数据操作函数或者创建静态类保存。

下面是 C#版本的步骤脚本模版,由一个.NET 类 Step_<步骤 Id>构成,该类包含一个 Context 属性,两个方法,分别是 BeginExecute 方法,EndExecute 方法。

image-20230212180221763

打开脚本窗口

创建步骤的脚本有两种方式,下面分别介绍这两种方法。

第一种:左键选中所选步骤,点击首页——脚本,也可打开脚本窗口。

image-20230213202706125

第二种:右键选中所选步骤,点击脚本,也可打开脚本窗口。

image-20230213202825481

3.通信协议的编写

动作类步骤中的消息步骤寄存器步骤包含通信协议。通信协议是在接收和发送数据时使用的一种规定好的条款,收发双方都要遵守这一份协议。下面叙述如何实际编写简单的通信协议。

打开通信协议窗口

有两种方式可以打开所选步骤的通信协议窗口,下面介绍这两种方法。

第一种:左键双击所选步骤可以打开通信协议窗口,如下图所示是打开的消息步骤的通信协议。

image-20230212180436912

第二种,左键选中所选步骤,点击首页——内容,也可打开通信协议窗口。

image-20230213201407193

第三种,右键选中步骤,选择内容,也可打开通信协议窗口。

image-20230213202516037

通信协议的编写

这里以帮助手册中的开发示例来说明如何编写一个通信协议。此节文字参考《格西测控大师 用户手册 2.4 创建一个数据采集与监控项目》

下面使用 MODBUS 通信协议,创建一个发送请求数据步骤和接收消息步骤。

首先,我们删除测试序列中的其他步骤,创建一个流控步骤——while步骤,默认条件参数 ConditionExpression 为 True,即无限循环执行此任务。

接着,在while步骤中,嵌入两个步骤:发送一个请求数据的步骤和接收消息的步骤。

发送请求数据步骤

①在while步骤中嵌入消息步骤,并进行配置。

在while中创建消息步骤:

image-20230213205117079

配置该消息步骤:

image-20230213205345896

属性 描述
(Id) 默认。
(Name) 修改为:采集命令.request
Active 默认。
ByteInterval 默认。
Description 修改为:发送请求数据指令
Device 修改为设备:串口
EscapeParameters 默认。
EscapeTable 默认。
LimitExpression 默认。
Loggable 默认。
MatchMode 默认,Scanning
MaxLength 默认,-1
OperationMode 默认,Send
Socket 默认,-1
Timeout 默认,5000

其中,配置Device时,方法如下:

image-20230213212158494

②打开通信协议窗口,编写通信协议。

通信协议中添加字段,各协议字段属性如下:

(Name) (Type) Constant DataType Endian Length Value
节点地址 General   BitString LittleEndian 8 0x00
功能码 General BitString LittleEndian 8 0x03
起始地址 General BitString BigEndian 16 0x0000
寄存器数量 General   BitString BigEndian 16 0x0001
校验码 Computable BitString LittleEndian 16 0x0000

其中,校验码的参数配置如下表:

属性 描述
Algorithm CRC16MODBUS 计算的算法
Priority 1 计算优先级,在有多个计算型字段时有用。
Location Back 表示计算型字段在需要计算的数据后面。
StartPosition 0 起始计算字节序号
EndPosition -1 结束计算字节序号,-1 表示计算到该字段前面。

配置完毕后如图所示:

image-20230213213243645

接收消息步骤

①在while步骤中接着嵌入消息步骤,并进行配置。

创建消息步骤:

image-20230213213556157

配置消息步骤:修改步骤名称(Name)采集命令.responseOperationMode 设置为 Receive,表示接收,Device 属性选择名称为“串口”的设备,修改Description接收数据

image-20230213213628174

属性 描述
(Id) 默认。
(Name) 修改为:采集命令.response
Active 默认。
ByteInterval 默认。
Description 修改为:接收数据
Device 修改为设备:串口
EscapeParameters 默认。
EscapeTable 默认。
LimitExpression 默认。
Loggable 默认。
MatchMode 默认,Scanning
MaxLength 默认,-1
OperationMode 默认,Receive
Socket 默认,-1
Timeout 默认,5000

②接下来打开通信协议窗口,编写通信协议。

通信协议中添加字段,各协议字段属性如下:

(Name) (Type) Constant DataType Endian Length Value
节点地址 General   BitString LittleEndian 8 0x00
功能码 General BitString LittleEndian 8 0x03
字节数 General BitString LittleEndian 8 0x02
温度 General   Int16 BigEndian 16 0
校验码 Computable BitString LittleEndian 16 0x0000

其中,校验码的参数配置如下表:

属性 描述
Algorithm CRC16MODBUS 计算的算法
Priority 1 计算优先级,在有多个计算型字段时有用。
Location Back 表示计算型字段在需要计算的数据后面。
StartPosition 0 起始计算字节序号
EndPosition -1 结束计算字节序号,-1 表示计算到该字段前面。

配置完毕后如图所示:

image-20230213214543634

至此,我们已经配置好了一个简单的测试通讯协议。

4.数据的采集和回放

格西测控大师支持在运行时对步骤数据进行显示、采集和回放。

运行时,点击工具栏序列数据,打开当前项目的序列数据页面,如图所示。

image-20230213214814765

点击工具栏的显示——汇总,可以切换到汇总页面,分类统计步骤的执行信息,如图所示。

image-20230213214849993

posted @ 2023-02-11 20:53  夜寐天明  阅读(85)  评论(0编辑  收藏  举报