接收事件

接收事件可对外部设备发送给VM数据进行解析配置,使其从一段数据解析成所需要的值。将接收到的数据或自定义数据重新组装再回复给外部设备,同时还支持作为全局触发中的触发事件执行相关操作。

完成数据解析后,可将接收到的数据或自定义数据重新组装再回复给外部设备,也可作为全局触发中的触发事件执行相关操作。

接收事件包括文本-协议解析文本-协议组装字节匹配-协议组装脚本四种方式。

操作方法:

  1. 打开通信管理并选择接收事件

  2. 点击接收事件列表右侧的

  3. 根据需求选择处理方式事件类型

  4. 点击创建即可完成接收事件的添加。

  5. (可选)接收事件列表处选中事件并右键单击可重命名事件或删除事件。

文本-协议解析

文本-协议解析可将外部设备发送给VM的字符串数据根据设置的分隔符和规则进行解析。只有内容与完全符合设置的规则才可解析成功。

相关参数释义如下:

绑定设备

选择该事件接收哪个外部设备发送的字符串数据。仅支持选择设备管理中已添加的设备。若选择的是PLC设备,还需在绑定地址处选择具体的寄存器地址。

分隔符

可下拉选择或自定义输入分隔符,将VM接收的字符串数据根据设置的分隔符隔开。

字符长度比较

启用该功能后,只有VM接收的字符串长度与设置的字符长度完全一样,才会进行数据解析,否则不对接收的字符串数据进行解析。

说明:
  • 字符长度默认为0,此时解析会失败,需根据需求自行修改。

  • 分隔符也代表一个字符。

输出列表

点击可添加一条数据,每条数据需根据需求进行设置。支持添加多条数据。

说明:

解析字符串数据时,按照输出列表添加的数据顺序从上往下依次执行解析。其中一条解析失败,说明发送的字符串数据不符合规则,无法解析。

名称

解析后数据的名称,默认为out*,可自定义修改。

类型

可设置此条解析数据的类型,可选int、float和string。

数据结果

显示解析后每条数据的内容。解析失败时,此处不显示或显示上次成功解析的数据。

文本-协议组装

文本-协议组装可理解为在文本-协议解析的基础上,增加单个数据的比较以及组装功能,同时还可以将组装结果回复给外部设备。参数分为输入配置组装配置

输入配置

将外部设备发送给VM的字符串数据根据设置的分隔符和规则进行解析。

绑定设备

选择该事件接收哪个外部设备发送的字符串数据。仅支持选择设备管理中已添加的设备。若选择的是PLC设备,还需在绑定地址处选择具体的寄存器地址。

分隔符

可下拉选择或自定义输入分隔符,将VM接收的字符串数据根据设置的分隔符隔开。

字符长度比较

启用该功能后,只有VM接收的字符串长度与设置的字符长度完全一样,才会进行数据解析,否则不对接收的字符串数据进行解析。

说明:
  • 字符长度默认为0,此时解析会失败,需根据需求自行修改。

  • 分隔符也代表一个字符。

解析列表

点击可添加一条数据,每条数据需根据需求进行设置。支持添加多条数据。

说明:

解析数据时,按照解析列表添加的数据顺序从上往下依次执行解析。其中一条解析失败,说明发送的字符串数据不符合规则,无法解析。

名称

解析后数据的名称,默认为in*,可自定义修改。

类型

可设置此条解析数据的类型,可选int、float和string。

比较规则配置

可选不比较!=(不等于)和=

不比较

按照设置的类型解析,无需设置具体比较的内容。

!=
=

需设置具体比较的内容,int或float类型数据需设置数值范围,string类型数据设置具体的字符内容即可。

组装配置

将输入配置解析后的数据组装成新的数据,并设置是否回复给外部设备。

回复给设备

将按照组装列表组装后的数据发送后外部设备。

分隔符

可下拉选择或自定义输入分隔符,将VM发送的数据根据设置的分隔符隔开。

组装列表

点击可添加一条数据,每条数据需根据需求进行设置。支持添加多条数据。

说明:

组装数据时,按照组装列表添加的数据顺序从上往下依次进行组装。

名称

解析后数据的名称,默认为out*,可自定义修改。

类型

可设置此条解析数据的类型,可选int、float和string。

内容

可从输入配置的解析列表订阅相同类型的数据,也可自定义。

字节匹配-协议组装

字节匹配-协议组装与前面两种接收事件有所差别,是对外部设备发送的16进制字节数据进行解析和组装。该接收事件根据字节位置以及其他规则进行解析。参数分为解析配置组装配置

解析配置

将外部设备发送给VM的字节数据根据设置的规则进行解析。

解析数据的判断逻辑为:判断字节长度是否符合要求 > 判断规则列表中的每条数据是否符合设置的要求 > 根据规则列表每条数据的比较结果,结合规则匹配逻辑判断是否符合要求

说明:

任何一步解析失败,则整体解析失败。

绑定设备

选择该事件接收哪个外部设备发送的内容。仅支持选择设备管理中已添加的设备。若选择的是PLC设备,还需在绑定地址处选择具体的寄存器地址。

字符长度比较

启用该功能后,只有VM接收的字符长度与设置的字符长度完全一样,才会进行数据解析,否则不对接收的内容进行处理。

说明:
  • 字符长度默认为0,此时解析会失败,需根据需求自行修改。

  • 分隔符也代表一个字符。

ASCII数据

未开启该功能时,直接对外部设备发送的HEX数据进行解析;开启时,先将ASCII数据转换为HEX数据,再进行解析。

规则匹配逻辑

可选。设置规则列表解析后的数据时都要满足设置的比较规则(对应)还是满足一条即可(对应)。

规则列表

点击可添加一条数据,每条数据需根据需求进行设置。支持添加多条数据。

名称

解析后数据的名称,默认为in*,可自定义修改。

字节起止位置

选择需解析字节的起始和终止位。第一位为起始位,第二位为终止位。VM对选择的起始和终止位间的数据(包含起始和终止位)进行解析。

类型

可设置此条解析数据的类型,可选int、float、string和byte。

顺序

可设置数据解析后的排列顺序,可选ABCD、BADC、DCBA、CDAB。

假设:收到的数据为01 00 64 00 00 00,类型设置为int,字节起止位置为2、5,则需要64 00 00 00进行解析。当顺序选择ABCD时,输出为1677721600;选择DCBA时,输出为100。

说明:

类型选择byte时,该参数无效,无需设置。

比较规则配置

可选不比较!=(不等于)、=上升沿下降沿更改为

不比较

按照设置的类型解析,无需设置具体比较的内容。

!=
=

需设置具体比较的内容,int或float类型数据需设置数值范围,string或byte类型数据设置具体的字符内容即可。

上升沿

类型选择int时,比较规则可使用该选项。表示和上次解析的数据比较,本次由其他值变为1则符合要求。

下降沿

类型选择int时,比较规则可使用该选项。表示和上次解析的数据比较,本次由1变为其他值则符合要求。

更改为

类型选择int时,比较规则可使用该选项。表示和上次解析的数据比较,本次由其他值变为设置的数值,则符合要求。

组装配置

将输入配置解析后的数据组装成新的数据,并设置是否回复给外部设备。

说明:

此处的组装配置与文本-协议组装的组装配置仅新增byte类型数据的组装,其他操作及功能基本一致,具体参见文本-协议组装的组装配置,此处不再赘述。

脚本

脚本通过加载的python脚本对外部设备发送的数据解析后输出到组装列表中。

VM安装后自带接收事件的脚本示例RecvEventTest.py,可到软件安装路径下获取。具体路径为:..\VisionMaster4.3.0\Applications\ModuleProxy\x64。

说明:
  • 示例脚本仅供参考,可根据需求自行修改或全新开发。

  • 此处使用的脚本为通信相关脚本,使用python开发。与VM中的全局脚本、脚本模块存在差别,不可混用。

相关参数释义如下:

绑定设备

选择该事件接收哪个外部设备发送的数据。仅支持选择设备管理中已添加的设备。若选择的是PLC设备,还需在绑定地址处选择具体的寄存器地址。

回复给设备

将按照组装列表输出的数据结果发送后外部设备。

分隔符

可下拉选择或自定义输入分隔符,将VM发送的数据根据设置的分隔符隔开。

载入路径

点击选择接收事件的脚本文件。

组装列表

显示加载脚本后解析的内容。下图为VM自带脚本示例解析的内容。

图 1 示例脚本效果
名称
类型
getOutputParam()函数定义,仅支持string、int、float、byte四种类型。
数据结果

handleMessage(info)函数处理。

满足要求时,在数据结果处显示并上传接收事件;不满足要求时,数据结果处不显示且不上传事件。

说明:
  • handleMessage(info)函数定义默认分隔符为#,故外部设备发送的数据需以#隔开。

  • 更多示例脚本相关功能,请查看脚本文件的注释。