Skip to content

4.2 手把手:做第一个自定义块 ​

这一节跟着做一遍,从零做出一个能用的块,大约 10 分钟。例子目标:做一个「比例器」——把接进来的测量值乘以一个比例系数,结果送到指定寄存器。它有 1 个输入、1 个参数、1 个输出,是最简单也最典型的结构。

开始前请先打开逻辑编程编辑器(入口见 1.1 打开逻辑编程编辑器)。

4.2.1 第一步:打开制作器、填基本信息 ​

点编辑器顶部工具栏的 「制作块」 按钮,弹出「制作自定义块」窗口。

制作自定义块窗口各区域说明

窗口最上方是基本信息,本例这样填:

字段本例填什么说明
块名称比例器必填,会显示在块上和工具箱里
作者您的公司 / 名字可空
版本1.0.0默认即可,以后改动可递增
分类自定义默认即可,不用改
用途说明把输入乘以比例系数后输出鼠标悬停块上时显示,建议写清楚

4.2.2 第二步:加输入、输出和参数 ​

窗口中部「引脚定义」有三列,每列用 + 增加一行、用行尾 ✕ 删除一行。每一行都要填 key 和 显示名,参数还多一个「默认值」:

  • key:程序内部用的英文名字,Lua 靠它找到这个脚,建议用有意义的英文,如 in1、kp;
  • 显示名:画在块上给人看的中文,如「测量值」「比例系数」;
  • 默认值(仅参数有):块刚拖出来时参数框里的初值。

本例按下面加(三列各加 1 行):

列key显示名默认值
输入引脚in1测量值—(输入没有默认值)
输出引脚out1比例结果—
参数kp比例系数1

输入、输出、参数怎么选

  • 会从别的块 / 寄存器接进来、每次扫描都可能变的 → 用输入引脚;
  • 算完要送到某个寄存器的结果 → 用输出引脚(具体送到哪,拖用时在块上选);
  • 基本固定、想让每个块单独填的配置(系数、上限、设定)→ 用参数。

4.2.3 第三步:写 Lua ​

窗口下方「Lua 源码」框打开时已经预填了一段例子。把它改成下面这样(只需修改计算所在的那一行):

lua
return function(I)
  -- 取第 1 个输入引脚的值,乘以参数 kp(没填时按 1 算)
  local v = I.inputs[1] * (I.params.kp or 1)
  return v   -- 返回给唯一的输出引脚
end

它是怎么和上面的引脚对应上的,看这张图:

自定义块引脚与 Lua 接口、返回值的对应关系

记住三个对应关系(完整说明见 4.3):

  • I.inputs[1] 就是第 1 个输入引脚(按输入列从上到下从 1 数)接进来的值;
  • I.params.kp 就是 key 为 kp 的那个参数当前填的值;
  • return 出去的值,按输出引脚从上到下的顺序依次送给输出,本例只有 1 个输出,所以 return v。

4.2.4 第四步:保存到块库 ​

点窗口底部蓝色的 「💾 保存到块库」。看到日志提示「自定义块「比例器」已保存到块库,工具箱"自定义"分类可拖拽」、窗口自动关闭,就成功了。

如果弹出「块名称不能为空」或「Lua 块必须填写源码」,按提示把名称或 Lua 补全再保存。

4.2.5 第五步:把块拖进主循环并接线 ​

  1. 回到主画布,在左侧功能块面板最下方找到 「自定义」 分类,展开能看到刚做的「比例器」。
  2. 把它拖进「应用逻辑主循环」里。
  3. 接输入:块左侧的「测量值」接线孔,接一个数据来源——可以是「取变量」读来的寄存器值、一个常量、或其它块的输出。
  4. 填参数:块身上「比例系数」框里填您要的倍数(默认是 1)。
  5. 选输出:块下方「比例结果 →」那一行,用下拉选寄存器类型(如 D)、地址框填编号(如 200),结果就会写进 D200。

4.2.6 第六步:生成、下发、看结果 ​

和普通程序完全一样:点 「生成 JSON」,右侧问题面板没有报错后点 「下发设备」。程序跑起来后,每个扫描周期都会执行一次您的块:读输入 → 乘系数 → 写 D200。用寄存器监视或显示模块看 D200,就能验证结果对不对(下发细节见 3.1 下发与设备端运行)。

4.2.7 想回头改这个块 ​

点工具栏 「块管理」,找到「比例器」,点 「🔓 打开内部」,改引脚或 Lua 后再点「保存到块库」覆盖。注意:改完要回主画布重新点「生成 JSON」并重新下发,新逻辑才会生效。 块管理的完整操作(加密、导出、删除)见 4.4。

下一步

到这里您已经掌握了完整闭环。想做更有用的块(带累计记忆、多个输出、限幅滤波),继续看 4.3 Lua 接口与编写详解 和 4.5 实战案例集,那里有可直接复用的代码。

LPPLC 工业物联网云平台 · 软硬件与云平台全栈自研