Skip to content

4.6 自定义块常见问题 ​

把制作、写 Lua、拖用、加密交付各环节最常见的问题集中在这里。普通逻辑编程的排错见 3.2 常见问题。

自定义块排错:按环节往下查

制作与保存 ​

现象 / 疑问原因与处理
保存提示「块名称不能为空」块名称是必填项,先填名字再保存
保存提示「Lua 块必须填写源码」Lua 框不能为空,至少保留 return function(I) return 0 end
key 能不能用中文key 是给 Lua 用的,建议英文 / 数字;显示名可用中文
输入引脚的「默认值」在哪填输入引脚没有默认值,它的值运行时从接线来;只有参数有默认值
改了引脚顺序,结果乱了输入按位置序号 I.inputs[1/2/…] 取,拖动输入顺序会改变对应关系;参数按 key 名取、不受顺序影响
怎么改做好的块「块管理 → 🔓 打开内部」,改完保存覆盖,再回主画布重新「生成 JSON」下发

Lua 与运行 ​

现象 / 疑问原因与处理
输出一直是 0先查 return 的个数 / 顺序和输出引脚是否一一对应;再查输入有没有真的接到值(没接线时是 nil,参与运算会报错,输出保持不变)
日志报「功能块 xxx 执行出错」Lua 运行期报错,常见是 nil 参与运算、除以 0;该块这一轮不更新输出,但不影响其它块。对照 4.3.7 排查
块拖出来找不到输入值Lua 里用 I.inputs[序号],序号按输入列从上到下从 1 开始;参数要用 I.params.键名
累计值 / 记忆为什么重启就没了I.state 在运行内存里,断电重启或重新下发会重新初始化,这是正常的,见 4.3.4
同一块拖了两份,数据会串吗不会,每份有独立的 I.state
能不能用 sleep / 等待不能,块每个扫描周期跑一遍,阻塞会拖慢 / 卡死整个程序
一个自定义块里能调另一个吗当前版本不支持嵌套,需要的逻辑在同一个块内写完
想要多个输出怎么办定义多个输出引脚,Lua 里 return 值1, 值2,顺序与输出列一致

拖用与下发 ​

现象 / 疑问原因与处理
工具箱找不到「自定义」分类块还没保存到块库,或保存失败;先在块管理里确认块存在
输出怎么指定送到哪个寄存器拖到画布后,在块上输出那一行用下拉选寄存器类型、地址框填编号
改了块但设备行为没变改块保存后,必须重新「生成 JSON」并「下发设备」才生效
打开旧程序报缺块 / 块调用失效程序只记录「用了哪个块」,块本体在块库;换电脑要先「导入块」,见 4.4 加密、导出分享与块管理 的块管理一节
哪些设备能跑自定义块和逻辑编程完全一致,见 1.1 打开逻辑编程编辑器 的型号与固件版本表

加密、导入与交付 ​

现象 / 疑问原因与处理
加密后客户使用要密码吗正常拖用、下发不需要密码;只有「打开内部看源码」需要,见 4.4.3
客户导入加密块时要密码导入那一次需要输入您给的密码完成解开注册,之后使用不再需要
加密密码忘了怎么办无法找回,也无法再打开看内部;块仍能使用。请自己另存一份不加密源块
怎么把块发给客户 / 换电脑「块管理 → 📤 导出文件」得到 .lpblk,对方「导入块」,见 4.4.4 / 4.4.5
删除块会怎样从块库删除后,画布上已放置的该块调用会失效、生成时报问题;暂时不用建议保留
怎么给客户升级块改好后递增版本号、重新导出,客户重新「导入块」覆盖再生成下发,见 4.4.7

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