6.4 设备计算
6.4.1 规则
单个变量脚本函数名必须为calc
- 内置this变量,指代本设备,类型为Device
function calc()
--[[
return: 计算完返回的变量,可以为数字,array,table,字符串等
如果脚本错误,上报的数据为错误内容
]]
return {}
end
6.4.2 示例
6.4.2.1 联合两个变量计算出新的变量
代码
function calc()
local result=this.current
if(result.cnc_runstatus==1 and #result.cnc_alarm>0)
then
.custom=2
resultend
return result
end
6.4.2.2 删除某个变量
代码
function calc()
local result=this.current
.cnc_runstatus=nil
resultreturn result
end
6.4.2.3 将Alarm的Array[Object]展开成普通变量
将以下格式
{
"cnc_alarm": [
{
"alarm_no": 1,
"alarm_type": "T01",
"alarm_msg": "待机中"
},
{
"alarm_no": 204,
"alarm_type": "XXX",
"alarm_msg": "急停"
}
]
}
转换成
{
"cnc_alarm_1_msg": "待机中",
"cnc_alarm_1_no": 1,
"cnc_alarm_1_type": "T01",
"cnc_alarm_2_msg": "急停",
"cnc_alarm_2_no": 204,
"cnc_alarm_2_type": "XXX"
}
代码
function calc()
local result=this.current
for i, v in ipairs(result.cnc_alarm) do
['cnc_alarm_' .. i .. '_msg'] = v.alarm_msg
result['cnc_alarm_' .. i .. '_no'] = v.alarm_no
result['cnc_alarm_' .. i .. '_type'] = v.alarm_type
resultend
.cnc_alarm = nil
resultreturn result
end
6.4.2.4 将坐标的Array[Object]展开成普通变量
将以下格式
{
"cnc_mecpos": [
{
"axis": "X",
"value": -84.4
},
{
"axis": "Y",
"value": 2.986
},
{
"axis": "Z",
"value": -108.181
}
]
}
转换成
{
"cnc_mecpos_X": -84.4,
"cnc_mecpos_Y": 2.986,
"cnc_mecpos_Z": -108.181
}
代码
function calc()
local result=this.current
for i, v in ipairs(result.cnc_mecpos) do
['cnc_mecpos_'..v.axis]=v.value
resultend
.cnc_mecpos=nil
resultreturn result
end