--[[
|
版本:Version 2.1
|
名称:
|
作者:HAN
|
日期:2025-3-29
|
|
WMS-Basis-Model-Version: V15.5
|
|
共用程序包
|
名称: wms_wcs
|
应用: 涉及和设备层进行交互,比如库区中堆垛机的状态,延伸到库区哪个个巷道可用
|
|
函数:
|
-- Get_DVC_State 获取设备状态
|
-- Get_Area_Stacker_Dev_State 获取库区里堆垛机状态
|
|
更改记录:
|
|
--]]
|
|
wms_base = require ("wms_base")
|
prj_api = require ("prj_api")
|
|
local wms_wcs = {_version = "0.2.1"}
|
|
--[[
|
获取某个库区内设备的状态(在JX项目中特指库区内的堆垛机状态)
|
输入参数:
|
area_code -- 库区编码
|
|
返回参数:
|
nRet = 0 成功 非零 失败
|
stacker_dev = [{"dev_no"::xxx",aisle:1,aisle_no:"A-01",enable:0/1,cntr_num:0}]
|
-- cntr_num 巷道入库接驳位容器数量
|
-- aisle_no 巷道编码
|
-- dev_no 堆垛机号
|
--]]
|
function wms_wcs.Get_Area_Stacker_Dev_State( strLuaDEID, area_code, scanning_loc )
|
local nRet, strRetInfo
|
if ( station == nil ) then station = '' end
|
|
-- 获取 area_code 库区堆垛机设备工作状态,确定哪些巷道可以使用
|
nRet, strRetInfo = wms_base.Get_sConst2( "Area-"..area_code.."-StackerCrane" )
|
if ( nRet ~= 0 ) then
|
return 1, "系统无法获取常量'Area-"..area_code.."-StackerCrane'"
|
end
|
if ( strRetInfo == '') then
|
return 1, "常量'Area-"..area_code.."-StackerCrane' 不能为空! "
|
end
|
--[{"dev_no"::xxx",aisle:1,enable:false/true}]
|
local stacker_dev = json.decode( strRetInfo )
|
local n, m
|
local dev_codes = ''
|
for n = 1, #stacker_dev do
|
dev_codes = dev_codes..stacker_dev[n].dev_no..","
|
end
|
if ( dev_codes == '') then
|
return 1, "库区'"..area_code.."'没有定义设备!"
|
end
|
dev_codes = lua.trim_laster_char( dev_codes )
|
|
-- 调用WCS接口获取设备状态
|
-- [{"DVC_NO":"TC21","IS_USE":0/1,"CON_NUM":1},...]
|
|
nRet, dev_state = prj_api.Get_DEV_State( strLuaDEID, dev_codes )
|
|
if ( nRet ~= 0 ) then return nRet, dev_state end
|
local find
|
for n = 1, #stacker_dev do
|
find = false
|
for m = 1, #dev_state do
|
if ( stacker_dev[n].dev_no == dev_state[m].DVC_NO ) then
|
find = true
|
stacker_dev[n].enable = lua.Get_NumAttrValue( dev_state[m].IS_USE )
|
stacker_dev[n].cntr_num = lua.Get_NumAttrValue( dev_state[m].CON_NUM )
|
break
|
end
|
end
|
if ( find == false ) then
|
return 1, "WCS返回的设备状态中没有编码='"..stacker_dev[n].dev_no.."'的设备状态!"
|
end
|
end
|
return 0, stacker_dev
|
end
|
|
-- 获取库区库可用的堆垛机巷道号 -- 1, 2, 4
|
function wms_wcs.Get_Area_Available_Aisle( strLuaDEID, area_code )
|
local nRet, stacker_dev
|
|
nRet, stacker_dev = wms_wcs.Get_Area_Stacker_Dev_State( strLuaDEID, area_code )
|
if ( nRet ~= 0 ) then return nRet, stacker_dev end
|
|
local n
|
local aisle = ''
|
for n = 1, #stacker_dev do
|
if ( stacker_dev[n].enable == 1 ) then
|
aisle = aisle..stacker_dev[n].aisle..","
|
end
|
end
|
aisle = lua.trim_laster_char( aisle )
|
return 0, lane
|
end
|
|
return wms_wcs
|