下划线可以是Lua标识符(变量和函数名称)的一部分。它们只是变量名称的一部分(就像字母一样),并不像Lua那样特殊 [ 和 ] 是。
[
]
在表达中 ME.MV12_PV[17] 我们有 ME 作为一堆田地的对象, ME.MV12_PV 是一个存储在数组中的数组 "MV12_PV" 该对象的领域和 ME.MV12_PV[17] 是该阵列中的第17个插槽。
ME.MV12_PV[17]
ME
ME.MV12_PV
"MV12_PV"
如果要动态访问字段,要知道的是在Lua中使用点表示法访问字段等效于使用括号表示法并将字段名称作为字符串传递:
-- The following are all equivalent: x.foo x["foo"] local fieldname = "foo" x[fieldname]
所以在你的情况下你可能想尝试做这样的事情:
local n = 12 ME["MV"..n.."_PV"][17] = 23
BACnet“可命令”对象(例如二进制输出,模拟输出,以及二进制值,模拟值和少数其他对象)实际上具有16个优先级(1-16)。您所指的“第17个”可能是“放弃默认值”,如果所有16个优先级都设置为NULL或“放弃”,则使用该值。
也许您的系统允许您写入名为“放弃默认值”的BACnet属性。