主题
线性变换
线性变换(类型名
ddc_linear):Out=(Y2-Y1)×(In-X1)/(X2-X1)+Y1,结果限制在 Y1~Y2 之间。如 4~20mA 转 -40~70°C。
这块是什么
- 编辑器里的名字:线性变换
- 类型名:
ddc_linear(写在程序文件 ddc.json 里的身份,AI 生成或改逻辑时按它对名,别猜中文名) - 分类:计算(数值加工)
- 形态:值块
- 状态:无状态
Out=(Y2-Y1)×(In-X1)/(X2-X1)+Y1,结果限制在 Y1~Y2 之间。如 4~20mA 转 -40~70°C。
块面长什么样
图上这一颗就是刚把它从工具箱拖到画布时的样子:下拉框和输入框里是默认值,凹口(←形的那个孔)是要接值的地方,右边凸起是能被别人接的输出口。
块面参数(在块上直接填/选)
- 无 —— 这个块没有可填参数,行为只由连线决定
连线端子(从别的块接进来)
- 输出 Number
- 端子 IN、X1、X2、Y1、Y2
下发到设备变成什么
- 生成 ddc.json 的操作(op):linear
手册里其它相关位置
- 所属分类章节:2.4 本章导览
- 同类块一览:2.0 功能块速查总表
量程换算:把一个区间的数按比例搬到另一个区间
最常用的场景是模拟量量程换算:
输入 4~20(mA 对应的原始值)→ 输出 -40~70(℃)- 填 4 个数:输入下限 X1、输入上限 X2、输出下限 Y1、输出上限 Y2
- 例:4~20mA 的温度变送器接进 D100,用线性变换把 D100 换算成实际温度,再参与比较和显示
- 公式
Out = (Y2-Y1)×(In-X1)/(X2-X1) + Y1,结果限制在 Y1~Y2 之间(超出端点就按端点输出)
屏上数字差 10 倍,多半是该在这里换算
文本屏不会自动除以 10。想显示 26.5,就在这里把整数采集值换算成带小数的结果, 再把这个结果接到显示行的「值」上(见 2.6 显示模块的验证步骤)。
串起来用的例子(整条采集链)
应用逻辑主循环(每 200ms)
└─ 赋值 D110 ← 限值( 线性变换(D100, 4~20 → 0~100) , 0~100 )
↑ 原始采集值换算成百分比,再限幅保护
└─ 赋值 D120 ← 取位(D110, 取整数部分)
↑ 取整后就是可直接显示/比较的百分数