全部配置文件下载:配置文件模板
下载:AOE文件配置模板
用途:定义PLCC核心控制逻辑的AOE网络,包含网络触发、变量声明、事件节点、动作边四个部分。
文件结构:单Sheet,按行分为4个区块,区块之间空1行。
| 列序 | 列名 | 类型 | 是否必填 | 说明 |
|---|
| 1 | AOE ID | <u64> | 是 | AOE网络唯一标识,必须从 65536 后开始编号 |
| 2 | AOE是否启用 | <Bool> | 是 | TRUE / FALSE |
| 3 | AOE 名称 | <String> | 是 | 自定义AOE功能名 |
| 4 | 触发类型 | <Enum> | 是 | 可选值见下方「触发类型枚举表」 |
| 5 | 触发参数 | <String/u64> | 条件必填 | 格式见下方「触发参数规则表」 |
| 6 | 变量定义 | <String> | 否 | 格式:变量名:表达式;变量名2:表达式2; |
| 枚举值 | 中文名称 | 说明 |
|---|
| SimpleRepeat | 简单重复驱动 | 按设定时间间隔周期性触发AOE网络 |
| TimeDrive | 时间驱动 | 在 Cron 表达式指定的时间点触发 |
| EventDrive | 事件驱动 | 默认方式,由AOE首节点的事件条件触发 |
| EventTimeMix | 事件和时间混合驱动 | 满足事件条件 或 到达设定时间,均可触发 |
| EventRepeatMix | 事件和周期混合驱动 | 满足事件条件 或 到达周期间隔,均可触发 |
| 触发类型 | 参数类型 | 示例 | 说明 |
|---|
| SimpleRepeat | <u64> 毫秒数 | 1000 | 每1000ms触发一次 |
| TimeDrive | Cron 表达式(6位) | 0 0 12 * * ? | 每天12:00触发 |
| EventDrive | 留空 | (空) | 无需参数 |
| EventTimeMix | Cron 表达式 | 0 30 8 * * ? | 与时间驱动相同 |
| EventRepeatMix | <u64> 毫秒数 | 5000 | 与简单重复相同 |
| 列序 | 列名 | 类型 | 是否必填 | 说明 |
|---|
| 1 | AOE ID | <u64> | 是 | 关联「AOE网络定义」中的AOE ID,多个AOE共享变量用分号分隔,如 65550;65551 |
| 2 | 变量定义 | <String> | 是 | 格式:变量名:表达式;变量名2:表达式2;;仅需初始值的变量直接写在区块1的「变量定义」列即可 |
| 写法 | 含义 |
|---|
&测点号 或 _测点号 | 取当前测点值(如 &100001 或 pv_voltage) |
&测点号_err | 当前测点值 与 上一次云端发布值 之差 |
&测点号_t | 当前测点采集时间(单位 ms) |
&测点号_dt | 当前采集时间 与 上一次云端发布时间 之差(单位 ms) |
&测点号_ddt | 测点值变化率 = (当前值 - 上次发布值) / (当前时间 - 上次发布时间),分母单位为秒 |
| 列序 | 列名 | 类型 | 是否必填 | 说明 |
|---|
| 1 | AOE ID | <u64> | 是 | 关联「AOE网络定义」中的AOE ID |
| 2 | 节点ID | <u64> | 是 | 同一AOE内唯一,从1开始递增 |
| 3 | 节点名称 | <String> | 是 | 节点的语义描述 |
| 4 | 类型 | <Enum> | 是 | 可选值:Condition / Switch / Switch2 |
| 5 | 超时时间(ms)(ms) | <u64> | 是 | 表达式在该时间内持续为真才触发节点;事件触发的AOE中尾节点不能设为0 |
| 6 | 表达式 | <Expr> | 条件必填 | Condition/Switch 节点必填;Switch2 节点无需表达式 |
| 类型 | 名称 | 说明 |
|---|
| Condition | 条件节点 | 超时时间内表达式为真,则节点事件被触发,该节点发出的所有动作边并行执行 |
| Switch | 分支节点 | 有两条分支:表达式为真时执行第1条边,为假或超时时执行第2条边;若作为AOE首节点则直接触发判断 |
| Switch2 | 分支节点2 | 节点自身无需表达式,以指向本节点的动作执行结果为判断依据:全部成功→执行第1条边,否则→执行第2条边 |
| 列序 | 列名 | 类型 | 是否必填 | 说明 |
|---|
| 1 | AOE ID | <u64> | 是 | 关联「AOE网络定义」中的AOE ID |
| 2 | 首尾节点 | <u64>;<u64> | 是 | 格式:<尾节点ID>;<首节点ID>,方向为 尾节点→首节点(AOE 边的方向) |
| 3 | 动作名称 | <String> | 是 | 动作的语义描述 |
| 4 | 失败模式 | <Enum> | 是 | 详见下方「失败模式表」 |
| 5 | 类型 | <Enum> | 是 | 详见下方「动作类型完整表」 |
| 6 | 动作参数1 | <String> | 条件必填 | 根据「类型」不同含义不同 |
| 7 | 动作参数2 | <String> | 条件必填 | 根据「类型」不同含义不同 |
| 枚举值 | 名称 | 行为 |
|---|
| Default | 默认 | 尝试重新执行失败的动作 |
| Ignore | 忽略 | 忽略本次失败,不影响其他动作,后续节点正常进入判断 |
| StopFailed | 停止受影响 | 停止受到影响的动作;动作失败时,后续节点不会进入判断 |
| StopAll | 停止全部 | 停止整个AOE网络的执行;动作失败时,后续节点不会进入判断,且AOE整体退出 |
| 类型枚举 | 名称 | 动作参数1 | 动作参数2 | 说明 |
|---|
| None | 无动作 | (留空) | (留空) | 不执行任何操作,仅做节点间的逻辑连接 |
| SetPoints / SET_POINTS | 置点 | 变量名/测点名:表达式; (数字量/离散量) | 变量名/测点名:表达式; (模拟量/浮点量) | 对测点或变量赋值;参数1用于离散型,参数2用于浮点型 |
| Set_Points2 | 向量置点 | [变量1,变量2,...]:向量计算表达式;(数字量) | 同参数1但为浮点量 | 支持向量运算(+、-、*)的置点 |
| SET_POINTS_WITH_CHECK | 带检查置点 | 同 SetPoints | 同 SetPoints | 置点后等待测点实际值与指令一致才触发下一节点(整型全等,浮点差 < 1e-6) |
| SET_POINTS_WITH_CHECK2 | 向量带检查置点 | 同 Set_Points2 | 同 Set_Points2 | 向量版的带检查置点 |
| Solve | 线性方程组求解 | 方程组(每行一个方程,以;结尾)+ 最后一行写变量声明 x1,x2,x3 | (留空) | 求解 Ax = b 形式的线性方程组 |
| NLSOLVE | 非线性方程组求解 | 方程组 + 变量声明(可带初值 x1:1.0) | max_iter:50; tol:1e-6(可选) | 求解非线性方程组;参数2为求解器配置 |
| MILP | 稀疏混合整数线性规划 | 目标函数 max/min(...) + 约束条件(bool表达式) + 变量声明 x1:1,x2:3 | maxIt:500; primalT:1e-6(可选) | 稀疏矩阵形式的混合整数规划 |
| SimpleMilp | 稠密混合整数线性规划 | 同 MILP | 同 MILP | 稠密矩阵形式的混合整数规划 |
| NLP | 非线性规划 | 目标函数 + 约束条件(带上下限 表达式:[下限/上限]) + 变量声明 x1:[0/10/5] | max_iter:50; tol:1e-6(可选) | 非线性规划求解 |
下载:测点文件配置模板
用途:定义系统中所有测点(采集点 + 计算点)的完整属性,测点文件是通信配置与 AOE 控制策略之间的桥梁。
文件结构:单 Sheet,表头位于第1行,每行定义一个测点。
| 列序 | 列名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|
| 1 | 序号 | <u64> | 是 | 从1递增 | 配置表格内部标记,方便编辑,不影响程序功能 |
| 2 | 测点号 | <u64> | 是 | 从500001起 | 唯一标识ID,必须从 100001 后开始编号;与通信配置文件中的点号一一对应 |
| 3 | 名称 | <String> | 是 | point{N} | 语义描述,可含中文 |
| 4 | 变量名 | <String> | 是 | 同名称 | 英文字母+数字+下划线组成,用于计算公式、AOE表达式、动作中引用 |
| 5 | 是否离散 | <Bool> | 是 | FALSE | TRUE=开关量/整型存储(i64);FALSE=模拟量/浮点存储(f64) |
| 6 | 是否计算点 | <Bool> | 是 | FALSE | TRUE=计算点(值由公式得出);FALSE=采集点(通过通信采集) |
| 7 | 计算公式 | <Expr> | 条件必填 | 空 | 计算点必填;引用变量名或测点号,如 &100001 * 2 - 1 或 pv_voltage * sqrt(3) |
| 8 | 变换公式 | <Expr> | 否 | 空 | 采集点可选;对设备原始数据做变换,如 raw_val * 0.1 |
| 9 | 逆变换公式 | <Expr> | 否 | 空 | 采集点可选;遥控逆变换,如 target / 0.1 |
| 10 | 变化公式 | <Expr> | 否 | 空 | 判断是否上传云端:计算结果>0时本次采集需要上传 |
| 11 | 判零公式 | <Expr> | 否 | 空 | 消除零飘,变量只能是该测点本身,如 abs(&测点) < 0.01 |
| 12 | 单位 | <String> | 否 | 空 | 物理量单位(如 V、A、kW、%、℃) |
| 13 | 上限值 | <Float> | 否 | 99999999 | 坏数据辨识:采集值 > 上限则抛弃 |
| 14 | 下限值 | <Float> | 否 | -99999999 | 坏数据辨识:采集值 < 下限则抛弃 |
| 15 | 告警判据1 | <Expr> | 否 | 空 | 告警级别1触发条件,如 pv_voltage > 420;结果>0触发告警 |
| 16 | 告警判据2 | <Expr> | 否 | 空 | 告警级别2触发条件,格式同上 |
| 17 | 是否实时点 | <Bool> | 是 | FALSE | TRUE=每次采集均发布到云端(变化公式失效) |
| 18 | 是否SOE | <Bool> | 是 | FALSE | TRUE=记录事件顺序(Sequence Of Event) |
| 19 | 默认值 | <Float/Bool> | 否 | 0 | 测点的初始值(AOE启动时使用) |
| 20 | Tags | <String> | 否 | 空 | 自定义标签,逗号分隔 |
| 21 | Description | <String> | 否 | 空 | 备注说明 |
| 属性 | 采集点(是否计算点=FALSE) | 计算点(是否计算点=TRUE) |
|---|
| 计算公式 | 不生效 | 必须填写 |
| 变换公式 | 可选,生效 | 不生效 |
| 逆变换公式 | 可选,生效 | 不生效 |
| 变化公式 | 可选,生效 | 可选,生效 |
| 判零公式 | 可选,生效 | 不生效 |
| 是否SOE | 可选,生效 | 不生效 |
服务端下载:tcp-mbd-transport-example.xlsx
客户端下载:tcp-mbc-transport-example.xlsx
用途:定义 Modbus TCP 通信的通道参数、连接参数、测点寄存器映射。
文件结构:Builder 左右三栏布局(不是按行分区),单 Sheet。第 1 行同时是三栏的”标签对齐行”:
A-B 列:通道级参数(键值对,竖排) D-E 列:连接级参数(键值对,竖排) F-L 列:测点寄存器映射表(标准表格,第1行为表头,第2行起为数据)
| 位置 | tcp-mbd 服务端 | tcp-mbc 客户端 |
|---|
| 文件名前缀 | tcp-mbd | tcp-mbc |
| A-B 列第3行 | 服务端口 | 服务端IP |
| A-B 列第4行 | (空) | 服务端端口 |
| D3-D4 字段 | 客户端IP / 客户端端口 | slave id / 通信协议(提前2行) |
| D10 字段名 | 超时(ms)(单值) | 超时;最小间隔(选填)(ms)(分号分隔如 1000;30) |
| D12 字段 | 无 | 写功能码(coil;holding)(选填)(如 2;16) |
| D-E 列总行数 | 13 行 | 12 行 |
| 行 | A列(字段名) | B列(值) | 类型 | 必填 | 说明 |
|---|
| 1 | 通道名称 | 自定义 | <String> | 是 | 可含中文 |
| 2 | 连接个数 | 正整数 | <u64> | 是 | TCP 服务端建立的通道数量 |
| 3 | 服务端口 | 正整数 | <u64> | 是 | 1–65535,未占用端口 |
| 行 | A列(字段名) | B列(值) | 类型 | 必填 | 说明 |
|---|
| 1 | 通道名称 | 自定义 | <String> | 是 | 可含中文 |
| 2 | 连接个数 | 正整数 | <u64> | 是 | TCP 客户端的连接数量 |
| 3 | 服务端IP | IPv4 地址 | <String> | 是 | 如 192.168.1.100 |
| 4 | 服务端端口 | 正整数 | <u64> | 是 | 1–65535 |
| 行 | D列(字段名) | E列(值) | 类型 | 必填 | 说明 |
|---|
| 1 | 连接名称 | 自定义 | <String> | 是 | 可含中文 |
| 2 | 测点个数 | 正整数 | <u64> | 是 | 必须与 F-L 列的数据行数一致 |
| 3 | 客户端IP | IPv4 地址 | <String> | 是 | 如 127.0.0.1 |
| 4 | 客户端端口 | 正整数 | <u64> | 是 | 1–65535 |
| 5 | slave id | 正整数 | <u64> | 是 | Modbus 从站地址,常用 1–247 |
| 6 | 通信协议 | XA 或 ENCAP | <Enum> | 是 | XA=Modbus TCP/IP;ENCAP=Modbus RTU Over TCP/IP |
| 7 | 一次读寄存器数上限 | 正整数 | <u64> | 是 | 单次读取寄存器的最大数量,常用 125 |
| 8 | 一次读开关数上限 | 正整数 | <u64> | 是 | 单次读取离散量的最大数量,常用 2000 |
| 9 | 一次写寄存器数上限 | 正整数 | <u64> | 是 | 单次写入寄存器的最大数量,常用 120 |
| 10 | 一次写开关数上限 | 正整数 | <u64> | 是 | 单次写入离散量的最大数量,常用 1968 |
| 11 | 轮询周期(ms) | 正整数 | <u64> | 是 | 毫秒 |
| 12 | 超时(ms) | 正整数 | <u64> | 是 | 毫秒 |
| 13 | 通道状态测点号 | 正整数 | <u64> | 否 | 对应测点文件中的测点号;没有专用状态点时可留空 |
| 行 | D列(字段名) | E列(值) | 类型 | 必填 | 说明 |
|---|
| 1 | 连接名称 | 自定义 | <String> | 是 | 可含中文 |
| 2 | 测点个数 | 正整数 | <u64> | 是 | 必须与 F-L 列的数据行数一致 |
| 3 | slave id | 正整数 | <u64> | 是 | Modbus 从站地址,常用 1–247 |
| 4 | 通信协议 | XA 或 ENCAP | <Enum> | 是 | 同服务端 |
| 5 | 一次读寄存器数上限 | 正整数 | <u64> | 是 | 常用 125 |
| 6 | 一次读开关数上限 | 正整数 | <u64> | 是 | 常用 2000 |
| 7 | 一次写寄存器数上限 | 正整数 | <u64> | 是 | 常用 120 |
| 8 | 一次写开关数上限 | 正整数 | <u64> | 是 | 常用 1968 |
| 9 | 轮询周期(ms) | 正整数 | <u64> | 是 | 毫秒 |
| 10 | 超时;最小间隔(选填)(ms) | 正整数 | <u64>;<u64> | 是 | 格式:超时;最小间隔,如 1000;30;最小间隔可留空 |
| 11 | 通道状态测点号 | 正整数 | <u64> | 否 | 同服务端 |
| 12 | 写功能码(coil;holding)(选填) | 如 2;16 | <String> | 否 | 指定 coil 写功能码和 holding 写功能码;只设一个可写 ;16;多个连接未设置时沿用前值 |
表头位置:第 1 行,与 A-B 列、D-E 列的第一行水平对齐
数据起始行:第 2 行(直接跟在表头下,无空行)
| 列 | 表头名 | 类型 | 是否必填 | 说明 |
|---|
| F | 序号 | <u64> | 是 | 从 1 开始连续编号 |
| G | 寄存器类型 | <Enum> | 是 | COILS(线圈)/ DISCRETE(离散输入)/ INPUT(输入寄存器)/ HOLDING(保持寄存器) |
| H | 起始地址 | <u64> | 是 | Modbus 寄存器地址偏移,正整数 |
| I | 数据类型 | <Enum> | 是 | 见下方「Modbus 数据类型对照表」 |
| J | 新请求标志 | <Bool> | 是 | TRUE / FALSE |
| K | 轮询周期 | <u64> | 是 | 毫秒 |
| L | 点号 | <u64> | 是 | 对应测点文件中的测点号,完成对接 |
- 同一个连接内,不同寄存器类型不能使用相同起始地址,否则 LCC 报错
- COILS 必须关联离散测点(测点文件中”是否离散”为 TRUE)
- 起始地址需根据数据类型占用字节数正确递增(见数据类型表)
| 枚举值 | 字节数 | 说明 |
|---|
| Binary | 1 bit | 开关量(COILS / DISCRETE) |
| OneByteIntUnsignedUpper | 1 | 无符号上半字节 |
| OneByteIntUnsignedLower | 1 | 无符号下半字节 |
| TwoByteIntUnsigned | 2 | 无符号16位整型 |
| TwoByteIntSigned | 2 | 有符号16位整型 |
| FourByteIntUnsigned | 4 | 无符号32位整型 |
| FourByteIntSigned | 4 | 有符号32位整型 |
| FourByteFloat | 4 | 单精度浮点 |
| EightByteIntUnsigned | 8 | 无符号64位整型 |
| EightByteIntSigned | 8 | 有符号64位整型 |
| EightByteFloat | 8 | 双精度浮点 |
每个数据类型均支持 Swapped 后缀控制字节序(如 TwoByteIntUnsignedSwapped)。