Skip to content

附录 F. 内建扩展与模拟器专有库 ​

本页收录还没有独立库页的 Lua 库:utf8/debug/package/bit32 是解释器内建扩展, com2*/thread/pahomqtt/xml/miniz 只在软 PLC 模拟器 / 上位机上有, dog/fdb 一类则已在部分机型上提供。某个机型到底有没有这个库,一律以 Lua 库总表 的「可用机型」列为准。 各库先给方法速查表,再逐函数一小节说明调用形态、参数与可用机型。

一、xml 与 miniz:先确认你手上有没有 ​

这两个库只在软 PLC 模拟器 / 上位机的内置软设备上注册,四款设备固件(ESP32 机型、4G 机型、103、750) 里都没有这两个名字。同一份脚本在模拟器里跑通、烧进设备就报 attempt to call a nil value (global 'xml') —— 这不是固件的 bug,是这两个库没有设备端实现。

先跑这一句自查你手上这套环境有没有(写进程序开头最省事):

lua
if type(xml) ~= "table" or type(miniz) ~= "table" then
  print("当前环境没有 xml / miniz,这段只能在模拟器里跑")
  return
end

软 PLC 模拟器是从 2026-10-10 起构建的版本才开始提供这两个库;更早拿到的版本里它们仍是 nil, 用上面那句一测就知道。要解析 XML 或压缩数据、又必须跑在设备上,请改用设备端有的库 (HTTP/MQTT 上报 + data 库自己拼格式),或联系我们评估。

二、xml 的四条边界(2026-10-10 在软 PLC 模拟器上逐条实测) ​

解析结果是一棵树:标签名在 [0],子节点从 [1] 往后排,属性直接当键,文本内容在该节点的 [1]。

lua
local t = xml.eval('<root atr="x"><i>1</i><i>2</i><sub k="1"><d>9</d></sub></root>')
print(t[0])          -- root
print(t.atr)         -- x          (属性 atr='y' 这种单引号写法同样能取)
print(#t)            -- 3          子节点个数
print(t[1][0], t[1][1])  -- i   1  第一个子节点的标签名与文本
print(t[3][1][1])        -- 9      孙子节点的文本
你以为的行为实测行为怎么办
xml.eval 会把 &amp; 还原成 &不会。没注册码表时,文本里的 &amp;b 原样保留需要还原就自己 s:gsub("&amp;","&")
xml.encode(s) 会自动做 XML 转义不会。没注册码表时它原样返回你传进去的串先 xml.registerCode("&","&amp;") 再 xml.encode(s),此时 a&b → a&amp;b
registerCode 随时能调码表是整个程序共用的一份,注册第二个同名编码会直接报错 LuaXML ERROR: code already exists.;而且注册之后 xml.eval 会跟着做反向替换,把已经解析好的文本又转义一遍(实测 &amp;b → &amp;amp;b)只在程序最开始注册一次、且注册完不要再回头用 eval 解析同一批数据;解析与转义二选一
xml.load(文件名) 找不到文件会返回 nil直接报错终止脚本:LuaXML ERROR: "xxx.xml" file error or file not found!要么先确保文件存在,要么用 pcall(xml.load, 文件名) 兜住
相对路径按脚本所在目录算按模拟器的工作目录算。实测在模拟器里 "Simulator/probe.xml" 能读到,"probe.xml" 报 file not found写相对路径时带上 Simulator/ 这一段,或改用 xml.eval(字符串) 绕开文件

另外两点容易误判:xml.encode 只接受一个字符串参数——传两个参数它返回 0 个值(不报错,静默), 传表会直接报 string expected, got table;解析出来的节点 tostring() 打印的是 table: 0xxxxx, 不是 XML 文本,别拿它当序列化结果。

三、miniz 的四条边界(同批实测) ​

lua
local data, len = miniz.compress("hello hello hello hello")   -- 返回两个值:压缩结果、字节数
local back, blen = miniz.uncompress(data)                      -- 返回两个值:原文、字节数
print(blen, back == "hello hello hello hello")                 -- 21  true
事项实测结果
解压上限 4096 字节解压缓冲写死 4096。原文 4000、4096 字节都能原样解回;原文 5000 字节时压缩成功、解压返回 nil, 0(不报错)
数据坏了 / 传输丢包喂进不是它压出来的串、或把压缩结果截掉几个字节,都返回 nil, 0,不会崩
压缩结果是二进制里面含 0x00 等不可见字节,不能当文本塞进 JSON、串口 ASCII 帧或 MQTT 文本属性;要走这些通道请先 base64
空字符串miniz.compress("") 得到 8 字节,uncompress 回来是空串、长度 0(不报错)

超过 4 KB 的数据不要用它整包压缩:要么分段,要么改用平台侧压缩。 这一条限制在模拟器与上位机上是一样的。

函数速查表 ​

下表列出本库全部函数与方法(含尚未单独成节的),点「说明」可跳转到对应小节。签名按通用记法:括号内按顺序列全参数,方括号里的可以省略(不传走默认值),... 表示还可继续传同类参数;h: 开头的是对象方法,先用库级函数拿回句柄再冒号调用。

库 bit32 ​

方法与签名作用说明
bit32.arshift(integer)—跳转
bit32.band(…)—跳转
bit32.bnot(…)—跳转
bit32.bor(...)—跳转
bit32.btest(…)—跳转
bit32.bxor(...)—跳转
bit32.extract(…)—跳转
bit32.lrotate(integer)—跳转
bit32.lshift(integer)—跳转
bit32.replace(…)—跳转
bit32.rrotate(integer)—跳转
bit32.rshift(integer)—跳转

库 com2 ​

方法与签名作用说明
com2.get(string)—跳转
com2.mock(string)—跳转
com2.set(string, number)—跳转
com2.start(integer, ...)—跳转
com2.stats(…)—跳转
com2.stop(…)—跳转
com2.tag(string)—跳转
com2.tick(integer)—跳转

库 com2_dlt645 ​

方法与签名作用说明
com2_dlt645.create(…)—跳转

库 com2_fx ​

方法与签名作用说明
com2_fx.create(…)—跳转

库 com2_modbus ​

方法与签名作用说明
com2_modbus.master(…)—跳转
com2_modbus.slave(…)—跳转

库 debug ​

方法与签名作用说明
debug.debug(…)进入交互式调试命令行跳转
debug.gethook(…)查询当前调试钩子跳转
debug.getinfo(…)'lua_getinfo'.跳转
debug.getlocal(…)读函数的局部变量跳转
debug.getmetatable(...)取元表(调试版,绕过 __metatable)跳转
debug.getregistry(…)取内部注册表(高级用法)跳转
debug.getupvalue(…)读函数的外部局部变量(upvalue)跳转
debug.getuservalue(…)读 userdata 上挂的关联值跳转
debug.setcstacklimit(integer)设置 C 调用栈深度上限跳转
debug.sethook(…)设置调试钩子(按行/调用触发)跳转
debug.setlocal(…)修改函数的局部变量跳转
debug.setmetatable(…)设置元表(调试版)跳转
debug.setupvalue(...)修改函数的外部局部变量跳转
debug.setuservalue(...)给 userdata 挂一个关联值跳转
debug.traceback(…)生成当前调用栈的文本(出错定位常用)跳转
debug.upvalueid(…)取 upvalue 的唯一标识跳转
debug.upvaluejoin(…)让两个函数共享同一个 upvalue跳转

库 dog ​

方法与签名作用说明
dog.new()创建新的看门狗对象跳转
h:feed()喂狗操作跳转
h:get_name()获取看门狗名称跳转
h:get_remaining_time()获取剩余时间跳转
h:get_timeout()获取超时时间跳转
h:init(name, timeout_ms, [auto_start])初始化看门狗跳转
h:is_active()检查是否激活跳转
h:set_timeout(timeout_ms)设置超时时间跳转
h:start()启动看门狗跳转
h:stop()停止看门狗跳转

库 miniz ​

方法与签名作用说明
miniz.compress(…)—跳转
miniz.uncompress(…)—跳转

库 package ​

方法与签名作用说明
package.cpathC 库的搜索路径(字符串变量)跳转
package.loaded已加载模块的登记表跳转
package.loadlib(string, string)载入一个 C 库(设备上一般不可用)跳转
package.pathLua 模块的搜索路径(字符串变量)跳转
package.preload模块预加载函数表跳转
package.require(string)加载并返回一个模块(同全局 require)跳转
package.searchers模块查找器列表跳转
package.searchpath(string, string)按搜索路径查找模块文件的实际位置跳转

库 pahomqtt ​

方法与签名作用说明
pahomqtt.client(string, string, integer)创建MQTT客户端跳转
h:connect(…)连接到MQTT代理跳转
h:disconnect(…)断开连接跳转
h:is_connected(…)检查连接状态跳转
h:publish(string)发布消息跳转
h:subscribe(string, integer)订阅主题跳转

库 thread ​

方法与签名作用说明
thread.createmutex([recursive])创建互斥锁跳转
thread.resume(thread_id)恢复线程跳转
thread.self()获取当前线程ID跳转
thread.start(func, [stack_size, priority, name])创建并启动新线程跳转
thread.stop(thread_id)停止线程跳转
thread.suspend(thread_id)挂起线程跳转
h:lock()互斥锁加锁跳转
h:unlock()互斥锁解锁跳转

库 utf8 ​

方法与签名作用说明
utf8.char(...)按 Unicode 码点拼出 UTF-8 字符跳转
utf8.charpattern匹配单个 UTF-8 字符的模式串跳转
utf8.codepoint(…)characters that start in the range [i,j]跳转
utf8.codes(string)逐个迭代字符串中的码点跳转
utf8.len(…)well formed in that interval跳转
utf8.offset(integer)取第 n 个字符的字节位置跳转

库 xml ​

方法与签名作用说明
xml.encode(...)—跳转
xml.eval(...)xml.eval(xml字符串) 将xml字符串转table跳转
xml.load(string)xml.load(文件名) 将xml文件转table跳转
xml.registerCode(string, string)—跳转

bit32.arshift ​

  • 调用形态:bit32.arshift(integer)(库级函数)
  • 参数:1 个参数:第 2 个为整数(必填)
  • 返回:1 个值
  • 可用机型:ESP32 机型

bit32.band ​

  • 调用形态:bit32.band(…)(库级函数)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:ESP32 机型

bit32.bnot ​

  • 调用形态:bit32.bnot(…)(库级函数)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:ESP32 机型

bit32.bor ​

  • 调用形态:bit32.bor(...)(库级函数)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:ESP32 机型

bit32.btest ​

  • 调用形态:bit32.btest(…)(库级函数)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:ESP32 机型

bit32.bxor ​

  • 调用形态:bit32.bxor(...)(库级函数)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:ESP32 机型

bit32.extract ​

  • 调用形态:bit32.extract(…)(库级函数)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:ESP32 机型

bit32.lrotate ​

  • 调用形态:bit32.lrotate(integer)(库级函数)
  • 参数:1 个参数:第 2 个为整数(必填)
  • 可用机型:ESP32 机型

bit32.lshift ​

  • 调用形态:bit32.lshift(integer)(库级函数)
  • 参数:1 个参数:第 2 个为整数(必填)
  • 可用机型:ESP32 机型

bit32.replace ​

  • 调用形态:bit32.replace(…)(库级函数)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:ESP32 机型

bit32.rrotate ​

  • 调用形态:bit32.rrotate(integer)(库级函数)
  • 参数:1 个参数:第 2 个为整数(必填)
  • 可用机型:ESP32 机型

bit32.rshift ​

  • 调用形态:bit32.rshift(integer)(库级函数)
  • 参数:1 个参数:第 2 个为整数(必填)
  • 可用机型:ESP32 机型

com2.get ​

  • 调用形态:com2.get(string)(库级函数)
  • 参数:1 个参数:第 1 个为字符串(必填)
  • 返回:1 个值
  • 可用机型:软 PLC 模拟器 / 上位机

com2.mock ​

  • 调用形态:com2.mock(string)(库级函数)
  • 参数:1 个参数:第 1 个为字符串(必填)
  • 返回:1 个值
  • 可用机型:软 PLC 模拟器 / 上位机

com2.set ​

  • 调用形态:com2.set(string, number)(库级函数)
  • 参数:2 个参数:第 1 个为字符串(必填)、第 2 个为数值(必填)
  • 返回:无
  • 可用机型:软 PLC 模拟器 / 上位机

com2.start ​

  • 调用形态:com2.start(integer, ...)(库级函数)
  • 参数:1 个参数:第 1 个为整数(必填),其后还有可变参数
  • 返回:1 个值
  • 可用机型:软 PLC 模拟器 / 上位机

com2.stats ​

  • 调用形态:com2.stats(…)(库级函数)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:软 PLC 模拟器 / 上位机

com2.stop ​

  • 调用形态:com2.stop(…)(库级函数)
  • 参数:无参数
  • 返回:无
  • 可用机型:软 PLC 模拟器 / 上位机

com2.tag ​

  • 调用形态:com2.tag(string)(库级函数)
  • 参数:1 个参数:第 1 个为字符串(必填)
  • 返回:无
  • 可用机型:软 PLC 模拟器 / 上位机

com2.tick ​

  • 调用形态:com2.tick(integer)(库级函数)
  • 参数:1 个参数:第 1 个为整数(必填)
  • 返回:无
  • 可用机型:软 PLC 模拟器 / 上位机

com2_dlt645.create ​

  • 调用形态:com2_dlt645.create(…)(库级函数)
  • 参数:无参数
  • 可用机型:软 PLC 模拟器 / 上位机

com2_fx.create ​

  • 调用形态:com2_fx.create(…)(库级函数)
  • 参数:无参数
  • 可用机型:软 PLC 模拟器 / 上位机

com2_modbus.master ​

  • 调用形态:com2_modbus.master(…)(库级函数)
  • 参数:无参数
  • 可用机型:软 PLC 模拟器 / 上位机

com2_modbus.slave ​

  • 调用形态:com2_modbus.slave(…)(库级函数)
  • 参数:无参数
  • 可用机型:软 PLC 模拟器 / 上位机

debug.debug ​

  • 作用:进入交互式调试命令行
  • 调用形态:debug.debug(…)(库级函数)
  • 参数:无参数
  • 返回:无
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

debug.gethook ​

  • 作用:查询当前调试钩子
  • 调用形态:debug.gethook(…)(库级函数)
  • 参数:无参数
  • 返回:3 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

debug.getinfo ​

  • 作用:'lua_getinfo'.
  • 调用形态:debug.getinfo(…)(库级函数)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

debug.getlocal ​

  • 作用:读函数的局部变量
  • 调用形态:debug.getlocal(…)(库级函数)
  • 参数:无参数
  • 返回:2 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

debug.getmetatable ​

  • 作用:取元表(调试版,绕过 __metatable)
  • 调用形态:debug.getmetatable(...)(库级函数)
  • 参数:1 个参数:第 1 个为任意(必填)
  • 返回:1 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

debug.getregistry ​

  • 作用:取内部注册表(高级用法)
  • 调用形态:debug.getregistry(…)(库级函数)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

debug.getupvalue ​

  • 作用:读函数的外部局部变量(upvalue)
  • 调用形态:debug.getupvalue(…)(库级函数)
  • 参数:无参数
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

debug.getuservalue ​

  • 作用:读 userdata 上挂的关联值
  • 调用形态:debug.getuservalue(…)(库级函数)
  • 参数:无参数
  • 返回:2 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

debug.setcstacklimit ​

  • 作用:设置 C 调用栈深度上限
  • 调用形态:debug.setcstacklimit(integer)(库级函数)
  • 参数:1 个参数:第 1 个为整数(必填)
  • 返回:1 个值
  • 可用机型:ESP32 机型

debug.sethook ​

  • 作用:设置调试钩子(按行/调用触发)
  • 调用形态:debug.sethook(…)(库级函数)
  • 参数:无参数
  • 返回:无
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

debug.setlocal ​

  • 作用:修改函数的局部变量
  • 调用形态:debug.setlocal(…)(库级函数)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

debug.setmetatable ​

  • 作用:设置元表(调试版)
  • 调用形态:debug.setmetatable(…)(库级函数)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

debug.setupvalue ​

  • 作用:修改函数的外部局部变量
  • 调用形态:debug.setupvalue(...)(库级函数)
  • 参数:1 个参数:第 3 个为任意(必填)
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

debug.setuservalue ​

  • 作用:给 userdata 挂一个关联值
  • 调用形态:debug.setuservalue(...)(库级函数)
  • 参数:1 个参数:第 2 个为任意(必填)
  • 返回:1 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

debug.traceback ​

  • 作用:生成当前调用栈的文本(出错定位常用)
  • 调用形态:debug.traceback(…)(库级函数)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

debug.upvalueid ​

  • 作用:取 upvalue 的唯一标识
  • 调用形态:debug.upvalueid(…)(库级函数)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

debug.upvaluejoin ​

  • 作用:让两个函数共享同一个 upvalue
  • 调用形态:debug.upvaluejoin(…)(库级函数)
  • 参数:无参数
  • 返回:无
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

dog.new ​

  • 作用:创建新的看门狗对象
  • 调用形态:dog.new()(库级函数)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

dog.feed ​

  • 作用:喂狗操作
  • 调用形态:h:feed()(对象方法,h 为本库函数返回的句柄,冒号调用不传自身)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

dog.get_name ​

  • 作用:获取看门狗名称
  • 调用形态:h:get_name()(对象方法,h 为本库函数返回的句柄,冒号调用不传自身)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

dog.get_remaining_time ​

  • 作用:获取剩余时间
  • 调用形态:h:get_remaining_time()(对象方法,h 为本库函数返回的句柄,冒号调用不传自身)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

dog.get_timeout ​

  • 作用:获取超时时间
  • 调用形态:h:get_timeout()(对象方法,h 为本库函数返回的句柄,冒号调用不传自身)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

dog.init ​

  • 作用:初始化看门狗
  • 调用形态:h:init(name, timeout_ms, [auto_start])(对象方法,h 为本库函数返回的句柄,冒号调用不传自身)
  • 参数:name(string):看门狗名称
  • 返回:1 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

dog.is_active ​

  • 作用:检查是否激活
  • 调用形态:h:is_active()(对象方法,h 为本库函数返回的句柄,冒号调用不传自身)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

dog.set_timeout ​

  • 作用:设置超时时间
  • 调用形态:h:set_timeout(timeout_ms)(对象方法,h 为本库函数返回的句柄,冒号调用不传自身)
  • 参数:timeout_ms(number):新的超时时间(毫秒)
  • 返回:1 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

dog.start ​

  • 作用:启动看门狗
  • 调用形态:h:start()(对象方法,h 为本库函数返回的句柄,冒号调用不传自身)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

dog.stop ​

  • 作用:停止看门狗
  • 调用形态:h:stop()(对象方法,h 为本库函数返回的句柄,冒号调用不传自身)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

miniz.compress ​

  • 调用形态:miniz.compress(…)(库级函数)
  • 参数:无参数
  • 返回:2 个值
  • 可用机型:软 PLC 模拟器 / 上位机

miniz.uncompress ​

  • 调用形态:miniz.uncompress(…)(库级函数)
  • 参数:无参数
  • 返回:2 个值
  • 可用机型:软 PLC 模拟器 / 上位机

package.cpath ​

  • 作用:C 库的搜索路径(字符串变量)
  • 形态:package.cpath 不是可调用函数(不要加括号),按变量使用
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

package.loaded ​

  • 作用:已加载模块的登记表
  • 形态:package.loaded 不是可调用函数(不要加括号),按变量使用
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

package.loadlib ​

  • 作用:载入一个 C 库(设备上一般不可用)
  • 调用形态:package.loadlib(string, string)(库级函数)
  • 参数:2 个参数:第 1 个为字符串(必填)、第 2 个为字符串(必填)
  • 返回:3 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

package.path ​

  • 作用:Lua 模块的搜索路径(字符串变量)
  • 形态:package.path 不是可调用函数(不要加括号),按变量使用
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

package.preload ​

  • 作用:模块预加载函数表
  • 形态:package.preload 不是可调用函数(不要加括号),按变量使用
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

package.require ​

  • 作用:加载并返回一个模块(同全局 require)
  • 调用形态:package.require(string)(库级函数)
  • 参数:1 个参数:第 1 个为字符串(必填)
  • 返回:2 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

package.searchers ​

  • 作用:模块查找器列表
  • 形态:package.searchers 不是可调用函数(不要加括号),按变量使用
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

package.searchpath ​

  • 作用:按搜索路径查找模块文件的实际位置
  • 调用形态:package.searchpath(string, string)(库级函数)
  • 参数:2 个参数:第 1 个为字符串(必填)、第 2 个为字符串(必填)
  • 返回:2 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

pahomqtt.client ​

  • 作用:创建MQTT客户端
  • 调用形态:pahomqtt.client(string, string, integer)(库级函数)
  • 参数:3 个参数:第 1 个为字符串(必填)、第 2 个为字符串(必填)、第 3 个为整数(必填)
  • 返回:1 个值
  • 可用机型:软 PLC 模拟器 / 上位机

pahomqtt.connect ​

  • 作用:连接到MQTT代理
  • 调用形态:h:connect(…)(对象方法,h 为本库函数返回的句柄,冒号调用不传自身)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:软 PLC 模拟器 / 上位机

pahomqtt.disconnect ​

  • 作用:断开连接
  • 调用形态:h:disconnect(…)(对象方法,h 为本库函数返回的句柄,冒号调用不传自身)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:软 PLC 模拟器 / 上位机

pahomqtt.is_connected ​

  • 作用:检查连接状态
  • 调用形态:h:is_connected(…)(对象方法,h 为本库函数返回的句柄,冒号调用不传自身)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:软 PLC 模拟器 / 上位机

pahomqtt.publish ​

  • 作用:发布消息
  • 调用形态:h:publish(string)(对象方法,h 为本库函数返回的句柄,冒号调用不传自身)
  • 参数:1 个参数:第 2 个为字符串(必填)
  • 返回:1 个值
  • 可用机型:软 PLC 模拟器 / 上位机

pahomqtt.subscribe ​

  • 作用:订阅主题
  • 调用形态:h:subscribe(string, integer)(对象方法,h 为本库函数返回的句柄,冒号调用不传自身)
  • 参数:2 个参数:第 2 个为字符串(必填)、第 3 个为整数(必填)
  • 返回:1 个值
  • 可用机型:软 PLC 模拟器 / 上位机

task / event ​

task(3 个)与 event(6 个)是配套的统一并发库,签名与参数见 后台任务 与 事件订阅与发布。

  • 可用机型:ESP32 机型 · 4G 机型 · 软 PLC 模拟器 / 上位机
  • 旧接口已被取代:早期模拟器上的 task.post_event / task.run_task / task.wait_event 已不在库里,等价写法是 event.emit(name, key, a, b) / task.start(fn) / system.sleep(ms)。

thread.createmutex ​

  • 作用:创建互斥锁
  • 调用形态:thread.createmutex([recursive])(库级函数)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:软 PLC 模拟器 / 上位机

thread.resume ​

  • 作用:恢复线程
  • 调用形态:thread.resume(thread_id)(库级函数)
  • 参数:无参数
  • 返回:无
  • 可用机型:软 PLC 模拟器 / 上位机

thread.self ​

  • 作用:获取当前线程ID
  • 调用形态:thread.self()(库级函数)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:软 PLC 模拟器 / 上位机

thread.start ​

  • 作用:创建并启动新线程
  • 调用形态:thread.start(func, [stack_size, priority, name])(库级函数)
  • 参数:stack_size(number, 可选):线程栈大小,单位字节,默认8192
  • 可用机型:软 PLC 模拟器 / 上位机

thread.stop ​

  • 作用:停止线程
  • 调用形态:thread.stop(thread_id)(库级函数)
  • 参数:无参数
  • 返回:无
  • 可用机型:软 PLC 模拟器 / 上位机

thread.suspend ​

  • 作用:挂起线程
  • 调用形态:thread.suspend(thread_id)(库级函数)
  • 参数:无参数
  • 返回:无
  • 可用机型:软 PLC 模拟器 / 上位机

thread.lock ​

  • 作用:互斥锁加锁
  • 调用形态:h:lock()(对象方法,h 为本库函数返回的句柄,冒号调用不传自身)
  • 参数:无参数
  • 返回:无
  • 可用机型:软 PLC 模拟器 / 上位机

thread.unlock ​

  • 作用:互斥锁解锁
  • 调用形态:h:unlock()(对象方法,h 为本库函数返回的句柄,冒号调用不传自身)
  • 参数:无参数
  • 返回:无
  • 可用机型:软 PLC 模拟器 / 上位机

utf8.char ​

  • 作用:按 Unicode 码点拼出 UTF-8 字符
  • 调用形态:utf8.char(...)(库级函数)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

utf8.charpattern ​

  • 作用:匹配单个 UTF-8 字符的模式串
  • 形态:utf8.charpattern 不是可调用函数(不要加括号),按变量使用
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

utf8.codepoint ​

  • 作用:characters that start in the range [i,j]
  • 调用形态:utf8.codepoint(…)(库级函数)
  • 参数:无参数
  • 返回:无
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

utf8.codes ​

  • 作用:逐个迭代字符串中的码点
  • 调用形态:utf8.codes(string)(库级函数)
  • 参数:1 个参数:第 1 个为字符串(必填)
  • 返回:3 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

utf8.len ​

  • 作用:well formed in that interval
  • 调用形态:utf8.len(…)(库级函数)
  • 参数:无参数
  • 返回:2 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

utf8.offset ​

  • 作用:取第 n 个字符的字节位置
  • 调用形态:utf8.offset(integer)(库级函数)
  • 参数:1 个参数:第 2 个为整数(必填)
  • 返回:2 个值
  • 可用机型:ESP32 机型 · 软 PLC 模拟器 / 上位机

xml.encode ​

  • 调用形态:xml.encode(...)(库级函数)
  • 参数:无参数
  • 返回:1 个值
  • 可用机型:软 PLC 模拟器 / 上位机

xml.eval ​

  • 作用:xml.eval(xml字符串) 将xml字符串转table
  • 调用形态:xml.eval(...)(库级函数)
  • 参数:无参数
  • 可用机型:软 PLC 模拟器 / 上位机

xml.load ​

  • 作用:xml.load(文件名) 将xml文件转table
  • 调用形态:xml.load(string)(库级函数)
  • 参数:1 个参数:第 1 个为字符串(必填)
  • 可用机型:软 PLC 模拟器 / 上位机

xml.registerCode ​

  • 调用形态:xml.registerCode(string, string)(库级函数)
  • 参数:2 个参数:第 1 个为字符串(必填)、第 2 个为字符串(必填)
  • 返回:无
  • 可用机型:软 PLC 模拟器 / 上位机

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