主题
2.0 功能块速查总表
一页列全上位机「逻辑编程」编辑器的全部自带功能块:类型名、块面参数与连线端子、下发后生成的 ddc.json 操作、有无状态、详解页链接。
把编辑器功能块库里全部自带功能块列成一张总表,一页看全「有什么、叫什么、长什么样、下发成什么」。 用法和原理不在这里展开 —— 每个块的「详解」列都链向它自己那一页;这张表负责的是不漏项。
怎么读这张表
- 分节 = 工具箱分类(程序 / 数据 / 逻辑 / 计算 / HVAC / HMI),与上位机「逻辑编程」窗口左侧功能块库一一对应。当前共注册 35 个自带块:主工具箱可拖 32 个、块制作器形参 2 个、内部保留 1 个。
- 块面图(每行第一列)就是这颗块刚从左侧功能块库拖到画布上的样子:真编辑器渲染出来的,框里的数字是默认值,凹进去的孔(←)是要接值的地方,右边凸起是能被别人接的输出口。图缩小了看不清单字,点「详解」进那一页看大图和逐项说明。
- 类型名 是块在程序文件(ddc.json)里的身份,AI 帮客户生成或改逻辑时按它对齐,别猜中文名。
- 块面参数 = 块上可以直接填/选的东西(下拉选项用「/」隔开);连线端子 = 要从别的块接进来的孔,「内放」= 放入命令块的区域。
- 块面参数里写成「年=year」的,等号后面那串是画布上不显示、但程序文件里必须照写的值(
"part": "year");只有中文或符号、没有等号的(如D、>、BIT3),表示界面上看到的和文件里填的是同一串。 - 生成 ddc.json = 这颗块下发到设备后变成的那一条操作(op)或结构,设备端引擎按它执行;容器块那一格写的是它汇总进程序里的哪个数组,不是块名字面量。
- 有状态 = 块会跨扫描周期记住东西(上一轮的电平、计时到几秒、PI 积分到多少),所以每个块都是独立实例,复制一块互不影响;累计时间的断电续计另见其详解页。
- 同一个块可能出现在两个分类里(比如「寄存器引用」在 HMI 分类也放了一份),表里只列在主分类,行末会注明。
自定义功能块不在这张表里
您在「块制作器」里做的块(类型名形如 lp_xxx)由块库动态注册,不在编辑器自带的块清单里,所以不列入本页 —— 它们的用法见 第四章 · 自定义功能块。
全表
程序
搭程序骨架的块:什么时候执行、按什么顺序、结果写给谁。
| 块(编辑器里) | 干什么用 | 形态 | 块面参数 | 连线端子 | 生成 ddc.json | 状态 | 详解 |
|---|---|---|---|---|---|---|---|
应用逻辑主循环 ddc_main_loop | 程序从上到下循环运行,每轮扫描后等待设定的毫秒数 | 容器块 | SCAN_MS:数 200(10~60000) | 内放 BODY | {version, scan_ms, lines} 顶层对象 | 无状态 | 详解 |
定时循环 ddc_timed_loop | 主循环之外按固定秒数周期执行,内部命令每轮执行一遍 | 容器块 | SCAN_MS:数 5(1~86400) | 内放 BODY | timed_loops[] 的一项(scan_ms 单位毫秒=秒×1000) | 无状态 | 详解 |
条件判断(如果…则…否则) ddc_if | 对齐西门子"条件判断":条件非零执行"则";否则按序检查每个"否则如果",第一个成立的执行其命令行;都不成立执行"否则" | 分支容器(齿轮增删端子) | ELSIF_COUNT:数 0(0~3) | 端子 COND 内放 THEN、ELSE | if | 无状态 | 详解 |
赋值 ddc_assign | 将表达式计算结果写入变量 | 命令块 | DEV:D(16位寄存器) / DD(32位双字) / DF(32位浮点,占两格D) / M(内部继电器) / X(输入继电器,八进制) / Y(输出继电器,八进制) / T(定时器当前值) / C(计数器当前值) / 可编程灯(0灭/1亮/2慢闪/3快闪)=L ADDR:数 0(框里可填 0~32767,实际按 DEV 那一档的上限夹取) | 端子 EXPR | assign ref | 无状态 | 详解 |
数据
往块里喂数值的来源:寄存器、常量、时钟、通信采集值。
| 块(编辑器里) | 干什么用 | 形态 | 块面参数 | 连线端子 | 生成 ddc.json | 状态 | 详解 |
|---|---|---|---|---|---|---|---|
寄存器引用(取 / 设) ddc_ref | 引用一个寄存器 | 值块 | MODE:取(只读)=get / 设(屏上可改)=set DEV:D(16位寄存器) / DD(32位双字) / DF(32位浮点,占两格D) / M(内部继电器) / X(输入继电器,八进制) / Y(输出继电器,八进制) / T(定时器当前值) / C(计数器当前值) / 可编程灯(0灭/1亮/2慢闪/3快闪)=L ADDR:数 0(框里可填 0~32767,实际按 DEV 那一档的上限夹取) | 输出 Number | ref | 无状态 | 详解 |
数字型常量 ddc_const | 数字常量,可输入小数 | 值块 | VALUE:数 0 | 输出 Number | const | 无状态 | 详解 |
开关量常量(真 / 假) ddc_digital_const | 数字型常量:真(1) 或 假(0) | 值块 | VALUE:真 (1) / 假 (0) | 输出 Number | const | 无状态 | 详解 |
系统时钟 ddc_clock | 取设备系统时间 | 值块 | PART:年=year / 月=month / 日=day / 时=hour / 分=min / 秒=sec / 周(周日=1)=week | 输出 Number | clock | 无状态 | 详解 |
取通信变量 ddc_comm_ref | 读从站通信变量值(对齐西门子"取通信变量"):本平台由 DTU 功能把从站数据采集到 D 寄存器,这里填采集写入的目… | 值块 | ADDR:数 0(0~7999) | 输出 Number | ref | 无状态 | 详解 |
从站通信状态 ddc_comm_state | 读从站通信状态(对齐西门子"通信从设备状态值",用于判断从站掉线) | 值块 | ADDR:数 0(0~7999) | 输出 Number | ref | 无状态 | 详解 |
注:寄存器引用(取 / 设)(
ddc_ref)在「HMI」分类下也各放了一份,方便就近取用。
逻辑
判断与运算:与或非、比较,以及会「记住上一轮」的沿、定时器、启停。
| 块(编辑器里) | 干什么用 | 形态 | 块面参数 | 连线端子 | 生成 ddc.json | 状态 | 详解 |
|---|---|---|---|---|---|---|---|
逻辑与 / 或 ddc_logic | 逻辑与/或:非零即真,结果为 1 或 0 | 值块 | OP:与 (AND)=and / 或 (OR)=or | 输出 Number 端子 A、B | and / or(随字段) | 无状态 | 详解 |
逻辑非 ddc_not | 逻辑非:非零输入输出 0,零输入输出 1 | 值块 | — | 输出 Number 端子 A | not | 无状态 | 详解 |
比较运算 ddc_cmp | 比较运算:成立输出 1,不成立输出 0 | 值块 | CMP:> / ≥=>= / < / ≤=<= / == / ≠=!= | 输出 Number 端子 A、B | cmp | 无状态 | 详解 |
脉冲触发(上升沿 / 下降沿) ddc_edge | 输入出现上升/下降沿时,输出 1 持续一个扫描周期,其余时间输出 0 | 值块 | EDGE:上升沿=rise / 下降沿=fall | 输出 Number 端子 IN | edge | 有状态 | 详解 |
定时器(接通/断开延时/脉冲) ddc_timer | 接通延时:输入为1持续Ti秒后输出1 | 值块 | MODE:接通延时=on / 断开延时=off / 脉冲输出=pulse TI:数 5(0.1~86400) | 输出 Number 端子 IN、TI_IN | timer | 有状态 | 详解 |
启停控制(RS 触发器) ddc_rs | 启动信号置1,停止信号置0;都为0时保持;同时为1时停止优先(复位优先) | 值块 | — | 输出 Number 端子 SET、RESET | rs | 有状态 | 详解 |
计算
数值加工:四则、限值、线性变换、多路选择、位操作、累计时间。
| 块(编辑器里) | 干什么用 | 形态 | 块面参数 | 连线端子 | 生成 ddc.json | 状态 | 详解 |
|---|---|---|---|---|---|---|---|
算术运算 ddc_arith | 算术运算:加、减、乘、除、指数 | 值块 | A_OP:+ / - / ×=* / ÷=/ / ^ | 输出 Number 端子 A、B | arith | 无状态 | 详解 |
最大 / 最小值 ddc_minmax | 取两个输入之间的最大值或最小值 | 值块 | MODE:最大=max / 最小=min | 输出 Number 端子 A、B | minmax | 无状态 | 详解 |
限值运算 ddc_limit | 小于下限取下限,大于上限取上限,之间取输入值 | 值块 | — | 输出 Number 端子 IN、LO、HI | limit | 无状态 | 详解 |
线性变换 ddc_linear | Out=(Y2-Y1)×(In-X1)/(X2-X1)+Y1,结果限制在 Y1~Y2 之间 | 值块 | — | 输出 Number 端子 IN、X1、X2、Y1、Y2 | linear | 无状态 | 详解 |
多路选择 ddc_mux | 按选择因子(0~7,对应输入1~输入8;负数取输入1,越界取输入8)输出对应输入的值 | 值块 | — | 输出 Number 端子 SEL、IN1、IN2、IN3、IN4、IN5、IN6、IN7、IN8 | mux | 无状态 | 详解 |
取位运算 ddc_bitget | 取输入整数部分的某一位(0/1),选"整数"则取整(舍弃小数) | 值块 | BIT:BIT0 / BIT1 / BIT2 / BIT3 / BIT4 / BIT5 / BIT6 / BIT7 / BIT8 / BIT9 / BIT10 / BIT11 / BIT12 / BIT13 / BIT14 / BIT15 / 整数部分=int | 输出 Number 端子 IN | bitget | 无状态 | 详解 |
合并位运算 ddc_bitmerge | 把 16 个数字量按位合并成一个整数(非零=1),BIT0 在最低位 | 值块 | — | 输出 Number 端子 B0、B1、B2、B3、B4、B5、B6、B7、B8、B9、B10、B11、B12、B13、B14、B15 | bitmerge | 无状态 | 详解 |
累计时间 ddc_runtime | 输入为1时累计时间,为0暂停;复位为1时清零重新累计 | 值块 | UNIT:小时(0.1h精度)=hour / 分钟=min / 秒=sec HOLD_D:数 0(0~7999) | 输出 Number 端子 IN、RST | runtime | 有状态 | 详解 |
HVAC
暖通专业块:PI 调节与湿空气参数计算。
| 块(编辑器里) | 干什么用 | 形态 | 块面参数 | 连线端子 | 生成 ddc.json | 状态 | 详解 |
|---|---|---|---|---|---|---|---|
PI 控制 ddc_pi | PI回路控制,输出0~100 | 值块 | KP:数 10(0.01~+∞) TI:数 128(0~+∞) | 输出 Number 端子 EN、DIRECT、XCTR、SP、NZ | pi const | 有状态 | 详解 |
空调参数计算 ddc_hvac | 由干球温度(°C)和相对湿度(%)计算湿空气参数 | 值块 | MODE:焓值(kJ/kg)=enthalpy / 露点温度(°C)=dewpoint / 绝对湿度(g/m³)=abs_humidity / 湿球温度(°C)=wetbulb | 输出 Number 端子 T、RH | hvac | 无状态 | 详解 |
HMI
做屏幕页面(屏读寄存器渲染,设备只存程序)。
| 块(编辑器里) | 干什么用 | 形态 | 块面参数 | 连线端子 | 生成 ddc.json | 状态 | 详解 |
|---|---|---|---|---|---|---|---|
HMI显示主循环 ddc_display_loop | 对齐西门子"HMI显示主循环":块面上没有任何参数(官方页的输入/输出都写"无") | 容器块 | — | 内放 PAGES | 顶层 display_loop = | 无状态 | 详解 |
HMI一般页 ddc_page | 对齐西门子"HMI一般页" | 命令块 | NAME:文本 PWD_LEVEL:0 / 1 / 2 / 3 | 端子 ROW1、ROW2、ROW3、ROW4 | display_loop.pages[] 的一项 | 无状态 | 详解 |
HMI子页 ddc_subpage | 对齐西门子"HMI子页":官方块图与"一般页"同形——子页自己带着行1~行4,同时有一个输出端子接上一级页面… | 值块 | NAME:文本 PWD_LEVEL:0 / 1 / 2 / 3 | 输出 String 端子 ROW1、ROW2、ROW3、ROW4 | subpage | 无状态 | 详解 |
HMI菜单行显示 ddc_menu_row | 对齐西门子"HMI菜单行显示":就是三个槽位 —— 文本/值/其他 三个连线端子并排在同一行上(官方块面如此… | 值块 | — | 输出 String 端子 TEXT、VALUE、OTHER | menu_row | 无状态 | 详解 |
HMI普通文本显示 ddc_text | 对齐西门子"HMI普通文本显示":官方块面上写的就是「字符串」,无输入引脚、一个字符串输出 | 值块 | VALUE:文本 | 输出 String | text | 无状态 | 详解 |
HMI枚举文本列表显示 ddc_enum_text | 对齐西门子"枚举文本列表":官方 pin 表里它有一条「输入」—— 给它接一个寄存器,块输出该寄存器值对应的那一项文本 | 值块(齿轮增删端子) | ITEM_COUNT:数 2(1~8) | 输出 String 端子 VALUE | enum_text | 无状态 | 详解 |
形参(制作器)
只在「块制作器」的图形逻辑里出现,普通画布工具箱里没有。
| 块(编辑器里) | 干什么用 | 形态 | 块面参数 | 连线端子 | 生成 ddc.json | 状态 | 详解 |
|---|---|---|---|---|---|---|---|
输入引脚引用(制作器内) ddc_pin | 引用自定义块的输入引脚:使用者拖放本块时在该输入上接的实参值 | 值块 | KEY:文本 | 输出 Number | pin | 无状态 | 详解 |
参数引用(制作器内) ddc_param | 引用自定义块的参数:使用者在调用块上设置的常量 | 值块 | KEY:文本 | 输出 Number | pin | 无状态 | 详解 |
内部保留
不进任何工具箱的内部保留块,正常编程用不到,列出来是为了「全集」不缺项。
| 块(编辑器里) | 干什么用 | 形态 | 块面参数 | 连线端子 | 生成 ddc.json | 状态 | 详解 |
|---|---|---|---|---|---|---|---|
自定义块内部逻辑 ddc_subroutine | 【内部保留】自定义功能块内部逻辑容器,图形化制作入口本期已下线,正常编程不会用到 | 容器块 | — | 内放 BODY | 不进主程序(画布上还留着它时「生成 JSON」直接报错) | 无状态 | 详解 图形化制作入口本期已下线,这颗块只在旧程序里出现,正常编程用不到 |
本页随上位机功能块库版本同步更新;若发现与实际编辑器块库不符,请以最新版本软件为准并反馈客服。