逻辑管理
逻辑是软件后台运行的程序。
逻辑定义
所有通过事件驱动的数据处理流可定义为一个逻辑,而逻辑编辑器支持以流程图的方式自定义数据双向传递的逻辑处理。
逻辑内的节点主要分为以下几大类:触发节点,驱动节点,计算节点,转发节点,存储节点
逻辑触发
触发节点作为整个流程的起始节点,包括以下节点:
- 定时触发:周期性的定时触发整个流程
- opcUa监听:监听opcUa服务端中的node,当node值发生变化时触发整个流程
- mqtt订阅:订阅mqtt服务端中某个主题的消息,当收到该主题的消息后触发整个流程
- tcp客户端:当tcp客户端设置为监听数据时,当接收到服务端发来的报文后触发整个流程
- webSocket客户端:当webSocket客户端设置为监听数据时,当接收到服务端发来的报文后触发整个流程
- 串口客户端:当串口客户端设置为监听数据时,当接收到服务端发来的报文后触发整个流程
数据类型
逻辑内流转的数据支持三种类型:值类型,对象类型,数组类型
当节点输出的数据为对象时,在其他节点中使用该节点数据时可选择对象中具体某个属性值。
如下图所示,通过json解析节点输出了对象,在函数节点中选择该json解析节点时可设置只输入该对象的某个属性值 当节点输出的数据为数组时,应选择该节点输出到下一节点的方式是整个数组输出还是遍历输出。
- 如下图所示,mc节点的输出为数组,该数据进入下一节点需计算该数组的长度,所以应将mc节点中输出方式设为数组输出
- 如下图所示,mc节点的输出为数组,该数据进入下一节点需写入到数据库中,所以应将mc节点中输出方式设为遍历输出,这样数组中的每一项数据都遍历执行数据库新增语句
- 当下一个节点输出方式为【向后追加为一行输出】当前节点输出方式应选择【遍历输出】
如下图所示,数据模板节点选择输出方式【向后追加为一行输出】,上一节点csv解析应选择【遍历输出】,这样数组中的每一项数据都遍历执行数据模版内容并向后添加一行数据输出
否则报错:输出方式错误,只支持遍历输出,如下图所示
驱动节点
目前的plc驱动包括三菱MC,西门子S7,欧姆龙Fins,松下Mewtocol,opcua,modubus-Tcp
驱动节点分为读节点和写节点,支持批量读写plc点位
如下图所示是一个mc读节点,选择设备后,点击新增可批量选择要读取的设备参数,也可在此处直接新增一个新的plc或参数 如下图所示是一个mc写节点,选择设备后,点击新增可批量选择要写入的参数,也可直接选择之前设置的配方模板批量带出要写入的参数,绑定参数后为每个参数设置输入节点
功能节点
功能节点包括数据筛选,条件判断,常用函数,数据模板,json解析,csv解析等节点,当系统内置的节点不能满足需求时,也可通过自定义函数节点进行功能扩展
网络节点
网络节点目前支持,mqtt,http,tcp,websocket,rabbitMq,websocket等节点,可自定义数据转发的消息模板,在定义消息模板时可选择某个输入节点插入进模板中,系统会自动筛选出该节点的所有前置输入节点
- MQTT: 是一种轻量级的消息传输协议,设计用于低带宽、高延迟或不稳定的网络环境,基于发布/订阅模式,采用客户端与服务器(称为代理或Broker)之间的通信方式,客户端发布消息,其他客户端通过订阅来接收消息。
MQTT推送:如下图
- 节点唯一标识:拖拽的mqtt推送节点的唯一标识,自动生成且禁止编辑;
- 节点名称:拖拽的mqtt推送节点的名称,可编辑修改名称;
- mqtt服务端:可选择'接口管理--Mqtt服务端'中已添加的服务端,如果服务端中没有可用的,可点击'新增'按钮添加;添加流程与'Mqtt服务端'相同;
- 连接地址:mqtt服务端的连接地址,默认显示Mqtt服务端中设置的地址且在此处不可修改。
- 客户端ID:mqtt客户端的ID,默认显示Mqtt服务端中设置的ID且在此处不可修改;
- 主题:客户端自身的主题名称,可向该主题推送消息,订阅该主题的客户端会收到相应的消息,可自定义修改;
- Qos:消息质量,默认选择最多交付一次(0),可自定义修改;
- 最多交付一次(0):
- 消息发送一次,不确认是否成功接收,不重发,消息最多到达一次,可能会丢失。
- 适用于那些对消息丢失不敏感的场景,比如实时数据流。
- 发送者将消息发送到接收者后,不等待确认回复,接收者也不会发回任何确认消息。
- 至少交付一次(1):
- 确保消息至少送达一次,但可能会重复发送,消息的接收可能会重复,接受者需要去重。
- 适用于重要数据传输,但不介意数据重复的情况(如某些命令或事件触发)。
- 发送者会持续重发消息,直到收到接收者的确认(PUBACK)。接收者确认后,发送者停止重发。
- 只交付一次(2):
- 确保消息仅到达一次,不会丢失且不会重复。
- 适用于对数据的精确性要求非常高的应用,比如支付交易。
- 采用四次握手机制,确保消息只被发送一次,并且接收者确认后不再重发。包括以下步骤:
- 客户端发送消息(PUBLISH)。
- 服务器返回消息确认(PUBREC)。
- 客户端返回消息完成确认(PUBREL)。
- 服务器最终返回确认(PUBCOMP)。 总结:
- QoS 0:最轻量,速度最快,但可能丢失消息。
- QoS 1:保证至少一次传递,但可能会重复。
- QoS 2:确保消息精确传递一次,保证没有丢失也没有重复,但相对更慢。
- 最多交付一次(0):
- 保留:消息是否保留,默认选择'否',可自定义修改。
- 是的情况下: 当有新的客户端订阅该主题时,会立即收到该主题中保留的消息;
- 否的情况下:该主题不会保留任何消息,当有新客户端订阅该主题时不会收到消息。
- 发送消息内容:可发送多种形式的消息文本内容。
- 插入节点:点击'插入节点'按钮,选择要插入的节点,系统会自动筛选出该节点在编辑页面所有已存在的节点,可插入多个,选择后点击'确定'按钮,将节点插入到消息模板中,发送消息时会将该节点所对应的文本消息推送到该主题;
MQTT订阅:如下图
- 节点唯一标识:拖拽的该节点的唯一标识,自动生成且禁止编辑;
- 节点名称:拖拽的节点的名称,可编辑修改名称;
- mqtt服务端:可选择'接口管理--Mqtt服务端'中已添加的服务端,如果服务端中没有可用的,可点击'新增'按钮添加;添加流程与'Mqtt服务端'相同;
- 连接地址:mqtt服务端的连接地址,默认显示Mqtt服务端中设置的地址且在此处不可修改
- 客户端ID:mqtt客户端的ID,默认显示Mqtt服务端中设置的ID且在此处不可修改;
- 主题:客户端自身的主题名称,可向该主题推送消息,订阅该主题的客户端会收到相应的消息,可自定义修改;
- Qos:消息质量,默认选择最多交付一次(0),可自定义修改主题名称;
- 最多交付一次(0):
- 消息发送一次,不确认是否成功接收,不重发,消息最多到达一次,可能会丢失。
- 适用于那些对消息丢失不敏感的场景,比如实时数据流。
- 发送者将消息发送到接收者后,不等待确认回复,接收者也不会发回任何确认消息。
- 至少交付一次(1):
- 确保消息至少送达一次,但可能会重复发送,消息的接收可能会重复,接受者需要去重。
- 适用于重要数据传输,但不介意数据重复的情况(如某些命令或事件触发)。
- 发送者会持续重发消息,直到收到接收者的确认(PUBACK)。接收者确认后,发送者停止重发。
- 只交付一次(2):
- 确保消息仅到达一次,不会丢失且不会重复。
- 适用于对数据的精确性要求非常高的应用,比如支付交易。
- 采用四次握手机制,确保消息只被发送一次,并且接收者确认后不再重发。包括以下步骤:
- 客户端发送消息(PUBLISH)。
- 服务器返回消息确认(PUBREC)。
- 客户端返回消息完成确认(PUBREL)。
- 服务器最终返回确认(PUBCOMP)。 总结:
- QoS 0:最轻量,速度最快,但可能丢失消息。
- QoS 1:保证至少一次传递,但可能会重复。
- QoS 2:确保消息精确传递一次,保证没有丢失也没有重复,但相对更慢。
- 最多交付一次(0):
此节点所拿到的内容为所订阅主题的文本,可以与其他节点连接使用。
存储节点
存储节点目前支持:键值对缓存节点,队列缓存节点,读写文件节点,database节点,redis节点
- 缓存节点中缓存的数据在运行程序中的所有逻辑内都可访问,所以是线程不安全的,当多个逻辑同时写某个缓存时可能会导致数据冲突
- 读写文件的路径必须为绝对路径
- database节点中支持自定义sql语句,系统提供自动生成sql语句的工具
- Redis节点支持自定义redis命令,注意:目前一个redis节点只支持一条命令,不支持多条命令,若需要批量处理数据请使用批量处理命令
节点说明
关于每个节点的作用和使用方法,请参考逻辑编辑器中的节点说明
逻辑编辑器
整体介绍
逻辑编辑器是一个设计数据处理逻辑的工具,支持以流程图的形式自定义数据双向传递的逻辑。
包括共通、PLC、功能、网络、存储和UI这6类节点。
画布
可以将节点拖到画布中,节点的左侧为输入端,右侧为输出端,可以从一个节点的输出端连接到另一个节点的输入端,这样数据就可以流转了。
节点信息
节点信息面板中列出了画布中的所有节点
调试窗口
调试窗口用来启动逻辑调试和现实debug信息。
要查看哪个节点的数据,只需连接到debug节点即可。开启调试后,显示的信息如下图:
节点介绍
各个节点的说明请参考节点信息面板,这里只介绍某些节点的特性。