文章目录
- 前言
- 1.通讯管理
-
- [1.1 设备管理](#1.1 设备管理)
- [1.2 接受事件](#1.2 接受事件)
-
- [1.2.1 文本-协议解析](#1.2.1 文本-协议解析)
-
- [1.2.1.1 使用举例:](#1.2.1.1 使用举例:)
- [1.2.2 文本-协议组装/比对](#1.2.2 文本-协议组装/比对)
-
- [1.2.2.1 文本-协议组装示例(`不比较规则`)](#1.2.2.1 文本-协议组装示例(
不比较规则)) - [1.2.2.2 文本-协议组装示例(`比较规则`)](#1.2.2.2 文本-协议组装示例(
比较规则))
- [1.2.2.1 文本-协议组装示例(`不比较规则`)](#1.2.2.1 文本-协议组装示例(
- [1.2.3 字节匹配-协议组装](#1.2.3 字节匹配-协议组装)
-
- [1.2.3.1 字节匹配-协议组装:`字节位数说明`](#1.2.3.1 字节匹配-协议组装:
字节位数说明) - [1.2.3.2 字节匹配-协议组装:`新增功能说明`](#1.2.3.2 字节匹配-协议组装:
新增功能说明) - [1.2.3.3 字节匹配-协议组装(`int`)](#1.2.3.3 字节匹配-协议组装(
int)) - [1.2.3.4 字节匹配-协议组装(`float`)](#1.2.3.4 字节匹配-协议组装(
float))
- [1.2.3.1 字节匹配-协议组装:`字节位数说明`](#1.2.3.1 字节匹配-协议组装:
- [1.2.4 组合解析](#1.2.4 组合解析)
- [1.3 发送事件](#1.3 发送事件)
-
- [1.3.1 文本-直接输出](#1.3.1 文本-直接输出)
- [1.3.2 文本-组装输出](#1.3.2 文本-组装输出)
- [1.4 心跳管理](#1.4 心跳管理)
-
- [1.4.1 心跳参数功能](#1.4.1 心跳参数功能)
- [1.5 响应配置](#1.5 响应配置)
-
- [1.5.1 响应配置:方案加载](#1.5.1 响应配置:方案加载)
- [1.5.2 响应配置:流程控制](#1.5.2 响应配置:流程控制)
- [1.5.3 响应配置:`相机响应配置`](#1.5.3 响应配置:
相机响应配置)
- 2.全局触发
-
- [2.1 事件触发](#2.1 事件触发)
-
- [2.1.1 切换方案](#2.1.1 切换方案)
- [2.1.2 执行流程](#2.1.2 执行流程)
- [2.1.3 执行模块](#2.1.3 执行模块)
- [2.1.4 执行模块动作](#2.1.4 执行模块动作)
- [2.2 字符串触发](#2.2 字符串触发)
- 3.其他
-
- [3.1 全局变量](#3.1 全局变量)
- [3.2 全局脚本](#3.2 全局脚本)
- [3.3 脚本](#3.3 脚本)
- [3.4 设置-方案切换](#3.4 设置-方案切换)
- 4.通讯数据流图
-
- [4.1 通信接收功能图](#4.1 通信接收功能图)
- [4.2 通信发送功能图](#4.2 通信发送功能图)
- 5.学习资料
前言

1.通讯管理
通信是连通算法平台和外部设备的重要渠道,在算法平台中既支持外部数据的读入也支持数据的写出,当通信构建起来以后既可以把软件处理结果发送给外界,又可以通过外界发送字符来触发相机拍照或者软件运行。

包含了五个部分的功能:设备管理 ,接受事件 ,发送事件 ,心跳管理 ,响应配置。

1.1 设备管理
创建通信设备,支持TCP、UDP、串口通信、Modbus、PLC等通信协议。


1.2 接受事件
数据的解析和校验,可以将接收到的对应设备地址的数据按照设置的规则进行解析(按分隔符解析 、按字节解析 和脚本解析 )和校验(长度比较、等于、不等于和上升沿、下降沿)。

目前的接收事件有四种事件,分别是文本-协议解析 、文本-协议组装 、字节匹配-协议组装 和脚本。
1.2.1 文本-协议解析
主要针对接收到的数据为ASCLL类型的字符进行解析。

主要的功能是对接收到的数据按照设置的分隔符解析成对应的数据类型。如:"1;2"可以解析成int的"1"和int的"2"。有字符长度比较的功能。
1.2.1.1 使用举例:

1.2.2 文本-协议组装/比对
1.主要功能是将接收到的数据按照设置的分隔符解析成对应的数据,并按照配置好的规则进行数据校验,校验成功后可以将数据在组装列表中配置以传到模块参数中使用。实现发送的数据传到模块中的功能。
2.有字符长度的比较、数据的比较(不比较、=、!=)功能。

1.2.2.1 文本-协议组装示例(不比较规则)

注:当使用不比较规则时,只要数据类型与解析列表设置相符,即可正常解析组装。
1.2.2.2 文本-协议组装示例(比较规则)

注:当使用比较规则时,收到的数据与设置的值符合设置的校验规则时,才能正常使用组装以及回复设备功能
1.2.3 字节匹配-协议组装
1.主要功能是将接收到的数据按照字节顺序进行解析,并按配置好的规则进行数据校验,校验成功后可以将数据在组装列表里配置以传到模块中使用。
2.有数据的比较(不比较、=、!=、上升沿、下降沿、更改为)功能。

1.2.3.1 字节匹配-协议组装:字节位数说明

1.2.3.2 字节匹配-协议组装:新增功能说明

1.2.3.3 字节匹配-协议组装(int)

1.2.3.4 字节匹配-协议组装(float)

1.2.4 组合解析
将多个地址数据进行组装后,使用解析模块一起进行解析。

1.3 发送事件
数据的组装,需要通过发送数据模块的订阅,将配置的数据组装发送。
目前的发送事件有三种事件,分别是文本-直接输出 、文本-组装输出和脚本。


1.3.1 文本-直接输出
将数据按照参数列表的配置好的规则顺序,用分隔符组合成一个数据直接输出。

1.3.2 文本-组装输出
将按照参数列表配置好规则的数据再次重新组装,用分隔符组合成一个新的数据再输出。

1.4 心跳管理
确保通讯的连接状态,按照配置的时间间隔,反复往订阅的地址发送配置的数据。
参数功能:该功能主要作用就是用于确保通讯的连接状态。

1.4.1 心跳参数功能

心跳类型:可以选择单数据和多数据,多数据即为配置的两个数据循环发送。
发送内容:可以自定义发送的内容(PLC和modbus只能发送整型的数据)。
时间间隔:两个发送改的数据之间的间隔,默认为1000ms,最小为100ms。
启用/关闭:开启使能后即可以开始通讯心跳
1.5 响应配置
对应动作的信号提示,可以在软件实现方案的加载、相机的掉线和连接、流程的忙碌和空闲这几个动作时,发送对应的信息到通讯设备,告知设备当前的状态。

1.5.1 响应配置:方案加载
启用该功能后,方案加载成功后,会向指定的通信设备发送特定内容,反馈方案已成功加载。

1.5.2 响应配置:流程控制
1.启用该功能后,当流程状态发生变化时,会向指定的通信设备发送特定内容。
2. 流程状态有空闲和忙碌两种。

1.5.3 响应配置:相机响应配置
1.启用该功能后,当相机状态发生变化时,会向指定的通信设备发送特定内容。
2.相机状态有连接和掉线两种。

2.全局触发
全局触发分为事件触发 和字符串触发 ,可以通过触发事件和触发字符串来执行相应的操作,如切换方案、执行流程、执行模块等。
包含了两个部分的功能:事件触发 和字符串触发。
2.1 事件触发

事件触发:需要订阅配置的接收事件,当配置的接收事件成功上传后,会执行对应的触发命令,可以将订阅的接收事件中的对应数据传到流程中使用。
触发命令类型 :支持的触发功能有切换方案 、执行流程 、执行模块 和执行模块动作。选择对应的触发命令,配置好对应的参数即可。
2.1.1 切换方案
需要配置方案路径和方案密码。
2.1.2 执行流程
需要配置对应的流程,触发字符:可以订阅对应事件中的string数据,方案中 订阅的triggerstring即被该变量赋值。
2.1.3 执行模块
配置对应的模块。
2.1.4 执行模块动作
目前只支持N点标定模块的清空标定点、对数据队列清空。
2.2 字符串触发

字符串触发 :直接接收设备管理上传的数据,根据对应的匹配模式去匹配,如果匹配成功,则会执行对应的触发命令。
前序的触发命令优先级更高,当前序的匹配成功后,不会匹配后续的触发命令。
3.其他
其他中包含全局脚本,脚本,发送数据,接受数据,全局变量等。

3.1 全局变量

通讯可以通过发送固定格式的字符串(前缀:变量名称=数值),实现对全局变量初始值的设置(如左图,变量var0,发送SetGlobalValue:var0=bbb,可以将该变量值设为bbb)
3.2 全局脚本

全局脚本可以实现通信的多种功能,在其用户手册中也有对应的接口,接口如下:
csharp
bool StartGlobalCommunicate()---初始化全局通信
Void RegesiterReceiveCommunicateDataEvent()---注册通信接收事件
Void UnRegesiterReceiveCommunicateDataEvent ()---注销通信接收事件
Void UserGlobalMethods_OnReceiveCommunicateDataEvent(ReceiveDataInfo dataInfo)---通信数据接收事件
SendCommDeviceData(string data,int deviceID)---调用TCP/串口/udp发送数据
SendCommDeviceData(byte[] bytedata,int deviceID)---Tcp/串口/udp发送十六进制数据
SendCommDeviceData(string data,int deviceID,int addressID,DataTypedataType)---发送PLC、modbus设备数据
SendCommDeviceData(byte[] bytedata,int deviceID,int addressID,DataType.ByteType)--发送PLC、modbus设备十六进制数据
3.3 脚本

脚本可以实现发送数据的功能,在用户手册中也有对应的接口,接口如下:
PLC\Modbus发送Int、Float、String类型数据:
csharp
GlobalCommunicateModule.GetDevice(int deviceID).GetAddress(int addressID).SendData(string data,DataType datatype)
PLC\Modbus发送十六进制数据:
csharp
GlobalCommunicateModule.GetDevice(int deviceID).GetAddress(int addressID).SendData(byte[] bytedata,DataType.ByteType)
TCP\UDP\串口发送String类型数据:
csharp
GlobalCommunicateModule.GetDevice(int deviceID).SendData(string data)
TCP\UDP\串口发送十六进制数据:
csharp
GlobalCommunicateModule.GetDevice(int deviceID).SendData(byte[] bytedata)
3.4 设置-方案切换

设置-方案设置:在方案管理处可以设置对应的方案路径和密码,配置好对应的字符串,开启通信切换使能,即可实现发送对应的字符串,切换对应的方案的功能。
4.通讯数据流图

绿色的部分代表的是从外部设备发送数据到VisionMaster中,通过通信管理中的通信设备根据对应的需求将数据上传到对应的功能部分,去实现对应的功能。
橙色的部分代表的是VisionMaster将计算的数据通过对应的功能部分发送到外部的设备。
4.1 通信接收功能图

4.2 通信发送功能图

5.学习资料
3.脚本模块
4.全局模块