160 lines
4.2 KiB
Lua
160 lines
4.2 KiB
Lua
--[[---------------------------------------------------
|
|
Procedura calcolo statistiche parametri:
|
|
|
|
Variabili IN:
|
|
- lastMode
|
|
- valList(<double>): elenco VALORI double da processare
|
|
- numRec(int): conteggio numero recorda da processare
|
|
|
|
Variabili OUT:
|
|
- calcVal(double): valore calcolato finale
|
|
-----------------------------------------------------]]
|
|
|
|
|
|
-- Per eventuale debug
|
|
local ZBS = "c:/ZeroBraneStudio"
|
|
if not package.path:find(ZBS,1,true) then
|
|
package.path = ZBS .. "/lualibs/?/?.lua;" .. ZBS .. "/lualibs/?.lua;" .. package.path
|
|
package.cpath = ZBS .. "/bin/?.dll;" .. ZBS .. "/bin/clibs53/?.dll;" .. package.cpath
|
|
end
|
|
|
|
-- se non è da NLua inizializzo variabili accessorie
|
|
local function checkInit()
|
|
if (callMode ~= 'NLua') then
|
|
-- imposto valori test
|
|
dataList = {}
|
|
dataList["MACHINE STATUS"] = 1
|
|
dataList["PROCESS STATUS"] = 2
|
|
dataList["PROCESS MODE"] = 2
|
|
end
|
|
numRec = tablelength(dataList)
|
|
end
|
|
|
|
function tablelength(T)
|
|
local count = 0
|
|
for _ in pairs(T) do count = count + 1 end
|
|
return count
|
|
end
|
|
|
|
-- Main function: effettua calcolo stato secondo i parametri ricevuti
|
|
local function doCalc()
|
|
|
|
-- se ho dati processo
|
|
if(numRec > 0) then
|
|
|
|
-- /************************************************************************
|
|
-- *
|
|
-- * <BROADCAST_EVENT DESCRIPTION = "MACHINE STATUS" IDENTIFIER = "1" >
|
|
-- * <!--
|
|
-- * DESCRIPTION:
|
|
-- * 0: MACHINE OFF
|
|
-- * 1: MACHINE ON
|
|
-- * -->
|
|
-- *
|
|
-- * <BROADCAST_EVENT DESCRIPTION = "PROC 1 STATUS" IDENTIFIER = "500" >
|
|
-- * <!--
|
|
-- * DESCRIPTION:
|
|
-- * 1: IDLE
|
|
-- * 2: CYCLE (RUN)
|
|
-- * 3: HOLD (HOLD, RUNH, HRUN)
|
|
-- * 6: ERROR
|
|
-- * 8: RESET
|
|
-- * 11: PAUSE (WAIT, INPUT)
|
|
-- * -->
|
|
-- *
|
|
-- * <BROADCAST_EVENT DESCRIPTION = "PROC 1 MODE" IDENTIFIER = "501" >
|
|
-- * <!--
|
|
-- * DESCRIPTION:
|
|
-- * 1: MDI
|
|
-- * 2: AUTO
|
|
-- * 3: STEP (BLK-BLK)
|
|
-- * 4: MANU (MANJOG)
|
|
-- * 5: MANJ (INCJOG)
|
|
-- * 6: RETPROF (PROFILE)
|
|
-- * 7: HOME
|
|
-- * 8: HPG (HANDWHEEL)
|
|
-- * -->
|
|
-- *
|
|
-- *
|
|
-- *************************************************************************/
|
|
|
|
-- calcolo dello statusId
|
|
if(dataList["MACHINE STATUS"] == 0) then
|
|
statusId = 7
|
|
else
|
|
if(dataList["PROCESS MODE"] == 1) then
|
|
statusId = 8
|
|
elseif(dataList["PROCESS MODE"] == 2) then
|
|
statusId = 2
|
|
elseif(dataList["PROCESS MODE"] == 3) then
|
|
statusId = 9
|
|
elseif(dataList["PROCESS MODE"] == 4) then
|
|
statusId = 5
|
|
elseif(dataList["PROCESS MODE"] == 5) then
|
|
statusId = 10
|
|
elseif(dataList["PROCESS MODE"] == 6) then
|
|
statusId = 11
|
|
elseif(dataList["PROCESS MODE"] == 7) then
|
|
statusId = 12
|
|
elseif(dataList["PROCESS MODE"] == 8) then
|
|
statusId = 13
|
|
end
|
|
end
|
|
-- calcolo del processId
|
|
if(dataList["PROCESS STATUS"] == 1) then
|
|
modeId = 2
|
|
elseif(dataList["PROCESS STATUS"] == 2) then
|
|
modeId = 1
|
|
elseif(dataList["PROCESS STATUS"] == 3) then
|
|
modeId = 3
|
|
elseif(dataList["PROCESS STATUS"] == 6) then
|
|
modeId = 8
|
|
elseif(dataList["PROCESS STATUS"] == 8) then
|
|
modeId = 9
|
|
elseif(dataList["PROCESS STATUS"] == 11) then
|
|
modeId = 10
|
|
end
|
|
|
|
calcOk = true
|
|
|
|
-- altrimenti errore
|
|
else
|
|
numRec = 1
|
|
calcOk = false
|
|
end
|
|
end
|
|
|
|
local function displayTestInfo()
|
|
if (callMode ~= 'NLua') then
|
|
print('------------------------------')
|
|
print('calcOk: ' .. tostring(calcOk))
|
|
for i,val in pairs(dataList) do
|
|
print(""..i.." | "..val)
|
|
end
|
|
print('statusId: ' .. statusId)
|
|
print('modeId: ' .. modeId)
|
|
print('------------------------------')
|
|
end
|
|
end
|
|
|
|
|
|
-- MAIN
|
|
function doProcess()
|
|
-- variabile semaforo callMode (locali o remote da NLua)
|
|
callMode = callMode or ''
|
|
numRec = 0
|
|
statusId = 0
|
|
modeId = 0
|
|
dataList = dataList or {}
|
|
calcOk = false
|
|
|
|
--vero task da eseguire
|
|
checkInit()
|
|
doCalc()
|
|
displayTestInfo()
|
|
end
|
|
|
|
if (callMode ~= 'NLua') then
|
|
doProcess()
|
|
end
|