diff --git a/tw_test/envs/4.json b/tw_test/envs/4.json new file mode 100644 index 0000000..fc5067a --- /dev/null +++ b/tw_test/envs/4.json @@ -0,0 +1,24 @@ +{ + "envId": 4, + "envName": "监控", + "isVirtual": true, + "envConfig": { + "mqtt": { + "brokerUrl": "tcp://127.0.0.1:1883", + "username": "user", + "password": "user", + "websocket": "mqtt://127.0.0.1:7883" + }, + "mysql": { + "jdbc-url": "jdbc:p6spy:mysql://180.100.199.56:8306/rcs2_tw_zhanghui", + "username": "rcs2_tw_zhanghui", + "password": "Rcs2_tw_zhanghui" + }, + "redis": { + "host": "180.100.199.56", + "port": 6379, + "database": 0, + "password": "yxt123456" + } + } +} diff --git a/tw_test/scripts/CLX_DEMO.ts b/tw_test/scripts/CLX_DEMO.ts index e2de323..cd0637a 100644 --- a/tw_test/scripts/CLX_DEMO.ts +++ b/tw_test/scripts/CLX_DEMO.ts @@ -1,7 +1,7 @@ const gstore = '108_108' const agvId = '4' -const demoLocList = ['rack3/0/2/0', 'rack3/1/2/0'] -const demoLocList2 = ['rack3/0/2/0', 'rack3/1/2/0'].reverse() +const demoLocList = ['rack3/0/1/0', 'rack3/1/1/0', 'rack3/0/2/0', 'rack3/1/2/0'] +const demoLocList2 = ['rack3/0/1/0', 'rack3/1/1/0', 'rack3/0/2/0', 'rack3/1/2/0'].reverse() while (true) { await LCC.sleep(3000) diff --git a/tw_zh/envs/10.json b/tw_zh/envs/10.json new file mode 100644 index 0000000..33336c7 --- /dev/null +++ b/tw_zh/envs/10.json @@ -0,0 +1,24 @@ +{ + "envId": 10, + "envName": "台湾展会物理环境", + "isVirtual": false, + "envConfig": { + "mqtt": { + "brokerUrl": "tcp://10.10.101.8:1885", + "username": "admin", + "password": "admin", + "websocket": "mqtt://10.10.101.8:9001" + }, + "mysql": { + "jdbcUrl": "jdbc:p6spy:mysql://180.100.199.56:8306/rcs2_tw_zhanghui", + "username": "rcs2_tw_zhanghui", + "password": "Rcs2_tw_zhanghui" + }, + "redis": { + "host": "180.100.199.56", + "port": 6379, + "database": 0, + "password": "yxt123456" + } + } +} diff --git a/tw_zh/envs/13.json b/tw_zh/envs/13.json new file mode 100644 index 0000000..9e903d4 --- /dev/null +++ b/tw_zh/envs/13.json @@ -0,0 +1,24 @@ +{ + "envId": 13, + "envName": "台湾展会虚拟1", + "isVirtual": true, + "envConfig": { + "mqtt": { + "brokerUrl": "tcp://127.0.0.1:1883", + "username": "user", + "password": "user", + "websocket": "mqtt://127.0.0.1:7883" + }, + "mysql": { + "jdbc-url": "jdbc:p6spy:mysql://180.100.199.56:8306/rcs2_tw_zhanghui", + "username": "rcs2_tw_zhanghui", + "password": "Rcs2_tw_zhanghui" + }, + "redis": { + "host": "180.100.199.56", + "port": 6379, + "database": 0, + "password": "yxt123456" + } + } +} diff --git a/tw_zh/floor/f1.json b/tw_zh/floor/f1.json new file mode 100644 index 0000000..3bd95a5 --- /dev/null +++ b/tw_zh/floor/f1.json @@ -0,0 +1,1390 @@ +[ + { + "id": "m1", + "t": "measure", + "v": true, + "tf": [ + [ + 0, + 0.02, + 0 + ], + [ + 90, + 0, + 0 + ], + [ + 0.25, + 0.25, + 0.1 + ] + ], + "dt": { + "in": [], + "out": [], + "center": [ + "m2", + "m4" + ] + } + }, + { + "id": "m2", + "t": "measure", + "v": true, + "tf": [ + [ + 8.4, + 0.02, + 0 + ], + [ + 90, + 0, + 0 + ], + [ + 0.25, + 0.25, + 0.1 + ] + ], + "dt": { + "in": [], + "out": [], + "center": [ + "m1", + "m3" + ] + } + }, + { + "id": "m3", + "t": "measure", + "v": true, + "tf": [ + [ + 8.4, + 0.02, + 9 + ], + [ + 90, + 0, + 0 + ], + [ + 0.25, + 0.25, + 0.1 + ] + ], + "dt": { + "in": [], + "out": [], + "center": [ + "m2", + "m4" + ] + } + }, + { + "id": "m4", + "t": "measure", + "v": true, + "tf": [ + [ + 0, + 0.02, + 9 + ], + [ + 90, + 0, + 0 + ], + [ + 0.25, + 0.25, + 0.1 + ] + ], + "dt": { + "in": [], + "out": [], + "center": [ + "m3", + "m1" + ] + } + }, + { + "id": "rack1", + "t": "rack", + "v": true, + "tf": [ + [ + 4.196, + 0, + 5.882 + ], + [ + 0, + 90, + 0 + ], + [ + 5.1, + 4.95, + 1 + ] + ], + "dt": { + "rackDepth": 1, + "bottomBarHeight": 0.2, + "bottomLinkHeight": 0.2, + "topLinkDistance": 0.2, + "levelCount": 3, + "bayCount": 4, + "hideFloor": 0, + "extendColumns": 1, + "columnSpacing": 1, + "bays": [ + { + "bayWidth": 1.275, + "levelHeight": [ + 0.25, + 1.65, + 3.05 + ], + "topHeight": 0.5 + }, + { + "bayWidth": 1.275, + "levelHeight": [ + 0.25, + 1.65, + 3.05 + ], + "topHeight": 0.5 + }, + { + "bayWidth": 1.275, + "levelHeight": [ + 0.25, + 1.65, + 3.05 + ], + "topHeight": 0.5 + }, + { + "bayWidth": 1.275, + "levelHeight": [ + 0.25, + 1.65, + 3.05 + ], + "topHeight": 0.5 + } + ], + "center": [], + "in": [], + "out": [], + "rackWidth": 5.1, + "rackHeight": 4.95 + } + }, + + { + "id": "10_10", + "t": "way", + "v": true, + "logicX": 10, + "logicY": 10, + "logicZ": 1, + "tf": [ + [ + 1.5, + 0, + 2.13 + ], + [ + 0, + 0, + 0 + ], + [ + 0.25, + 0.1, + 0.25 + ] + ], + "dt": { + "in": [ + "11_10" + ], + "out": [ + "11_10" + ], + "center": [], + "linkStore": [ + { + "item": "49", + "bay": 0, + "level": 0, + "cell": 0 + } + ] + } + }, + { + "id": "12_10", + "t": "way", + "v": true, + "logicX": 12, + "logicY": 10, + "logicZ": 1, + "tf": [ + [ + 3.9, + 0, + 2.13 + ], + [ + 0, + 0, + 0 + ], + [ + 0.25, + 0.1, + 0.25 + ] + ], + "dt": { + "in": [ + "11_10" + ], + "out": [ + "11_10" + ], + "center": [], + "linkStore": [ + { + "item": "47", + "bay": 0, + "level": 0, + "cell": 0 + } + ] + } + }, + { + "id": "11_10", + "t": "way", + "v": true, + "logicX": 11, + "logicY": 10, + "logicZ": 1, + "tf": [ + [ + 2.7, + 0, + 2.13 + ], + [ + 0, + 0, + 0 + ], + [ + 0.25, + 0.1, + 0.25 + ] + ], + "dt": { + "in": [ + "10_10", + "11_11", + "12_10" + ], + "out": [ + "10_10", + "11_11", + "12_10" + ], + "center": [], + "agvRotation": [ + "cl2", + "clx" + ] + } + }, + { + "id": "11_11", + "t": "way", + "v": true, + "logicX": 11, + "logicY": 11, + "logicZ": 1, + "tf": [ + [ + 2.7, + 0, + 2.832 + ], + [ + 0, + 0, + 0 + ], + [ + 0.25, + 0.1, + 0.25 + ] + ], + "dt": { + "in": [ + "11_10", + "11_13" + ], + "out": [ + "11_10", + "11_13" + ], + "center": [] + } + }, + { + "id": "11_13", + "t": "way", + "v": true, + "logicX": 11, + "logicY": 13, + "logicZ": 1, + "tf": [ + [ + 2.7, + 0, + 3.932 + ], + [ + 0, + 0, + 0 + ], + [ + 0.25, + 0.1, + 0.25 + ] + ], + "dt": { + "in": [ + "11_11", + "11_15" + ], + "out": [ + "11_11", + "11_15" + ], + "center": [], + "linkStore": [ + { + "item": "rack1", + "bay": 3, + "level": 2, + "cell": 0 + } + ] + } + }, + { + "id": "11_15", + "t": "way", + "v": true, + "logicX": 11, + "logicY": 15, + "logicZ": 1, + "tf": [ + [ + 2.7, + 0, + 4.582 + ], + [ + 0, + 0, + 0 + ], + [ + 0.25, + 0.1, + 0.25 + ] + ], + "dt": { + "in": [ + "11_13", + "11_16" + ], + "out": [ + "11_13", + "11_16" + ], + "center": [] + } + }, + { + "id": "11_16", + "t": "way", + "v": true, + "logicX": 11, + "logicY": 16, + "logicZ": 1, + "tf": [ + [ + 2.7, + 0, + 5.232 + ], + [ + 0, + 0, + 0 + ], + [ + 0.25, + 0.1, + 0.25 + ] + ], + "dt": { + "in": [ + "11_15", + "11_17" + ], + "out": [ + "11_15", + "11_17" + ], + "center": [], + "linkStore": [ + { + "item": "rack1", + "bay": 2, + "level": 2, + "cell": 0 + } + ] + } + }, + { + "id": "11_17", + "t": "way", + "v": true, + "logicX": 11, + "logicY": 17, + "logicZ": 1, + "tf": [ + [ + 2.7, + 0, + 5.882 + ], + [ + 0, + 0, + 0 + ], + [ + 0.25, + 0.1, + 0.25 + ] + ], + "dt": { + "in": [ + "11_16", + "11_18" + ], + "out": [ + "11_16", + "11_18" + ], + "center": [] + } + }, + { + "id": "11_18", + "t": "way", + "v": true, + "logicX": 11, + "logicY": 18, + "logicZ": 1, + "tf": [ + [ + 2.7, + 0, + 6.532 + ], + [ + 0, + 0, + 0 + ], + [ + 0.25, + 0.1, + 0.25 + ] + ], + "dt": { + "in": [ + "11_17", + "11_20" + ], + "out": [ + "11_17", + "11_20" + ], + "center": [], + "linkStore": [ + { + "item": "rack1", + "bay": 1, + "level": 1, + "cell": 0 + } + ] + } + }, + { + "id": "11_20", + "t": "way", + "v": true, + "logicX": 11, + "logicY": 20, + "logicZ": 1, + "tf": [ + [ + 2.7, + 0, + 7.75 + ], + [ + 0, + 0, + 0 + ], + [ + 0.25, + 0.1, + 0.25 + ] + ], + "dt": { + "in": [ + "11_18", + "charger1" + ], + "out": [ + "11_18", + "charger1" + ], + "center": [], + "linkStore": [ + { + "item": "rack1", + "bay": 0, + "level": 2, + "cell": 0 + } + ] + } + }, + { + "id": "13_10", + "t": "way", + "v": true, + "logicX": 13, + "logicY": 10, + "logicZ": 1, + "tf": [ + [ + 5.65, + 0, + 2.13 + ], + [ + 0, + 0, + 0 + ], + [ + 0.25, + 0.1, + 0.25 + ] + ], + "dt": { + "in": [ + "13_12" + ], + "out": [ + "13_12" + ], + "center": [] + } + }, + { + "id": "13_12", + "t": "way", + "v": true, + "logicX": 13, + "logicY": 12, + "logicZ": 1, + "tf": [ + [ + 5.65, + 0, + 2.865 + ], + [ + 0, + 0, + 0 + ], + [ + 0.25, + 0.1, + 0.25 + ] + ], + "dt": { + "in": [ + "13_10", + "13_13" + ], + "out": [ + "13_10", + "13_13" + ], + "center": [], + "linkStore": [ + { + "item": "54", + "bay": 0, + "level": 0, + "cell": 0 + } + ] + } + }, + { + "id": "13_13", + "t": "way", + "v": true, + "logicX": 13, + "logicY": 13, + "logicZ": 1, + "tf": [ + [ + 5.65, + 0, + 3.932 + ], + [ + 0, + 0, + 0 + ], + [ + 0.25, + 0.1, + 0.25 + ] + ], + "dt": { + "in": [ + "13_12", + "13_14" + ], + "out": [ + "13_12", + "13_14" + ], + "center": [], + "linkStore": [ + { + "item": "rack1", + "bay": 3, + "level": 1, + "cell": 0 + } + ] + } + }, + { + "id": "13_14", + "t": "way", + "v": true, + "logicX": 13, + "logicY": 14, + "logicZ": 1, + "tf": [ + [ + 5.65, + 0, + 4.348 + ], + [ + 0, + 0, + 0 + ], + [ + 0.25, + 0.1, + 0.25 + ] + ], + "dt": { + "in": [ + "13_13", + "13_16" + ], + "out": [ + "13_13", + "13_16" + ], + "center": [], + "linkStore": [ + { + "item": "56", + "bay": 0, + "level": 0, + "cell": 0 + } + ] + } + }, + { + "id": "13_16", + "t": "way", + "v": true, + "logicX": 13, + "logicY": 16, + "logicZ": 1, + "tf": [ + [ + 5.65, + 0, + 5.232 + ], + [ + 0, + 0, + 0 + ], + [ + 0.25, + 0.1, + 0.25 + ] + ], + "dt": { + "in": [ + "13_14", + "13_17" + ], + "out": [ + "13_14", + "13_17" + ], + "center": [], + "agvRotation": [ + "cl2", + "clx" + ], + "linkStore": [ + { + "item": "rack1", + "bay": 2, + "level": 1, + "cell": 0 + } + ] + } + }, + { + "id": "13_17", + "t": "way", + "v": true, + "logicX": 13, + "logicY": 17, + "logicZ": 1, + "tf": [ + [ + 5.65, + 0, + 5.882 + ], + [ + 0, + 0, + 0 + ], + [ + 0.25, + 0.1, + 0.25 + ] + ], + "dt": { + "in": [ + "13_16", + "13_18" + ], + "out": [ + "13_16", + "13_18" + ], + "center": [] + } + }, + { + "id": "13_18", + "t": "way", + "v": true, + "logicX": 13, + "logicY": 18, + "logicZ": 1, + "tf": [ + [ + 5.65, + 0, + 6.532 + ], + [ + 0, + 0, + 0 + ], + [ + 0.25, + 0.1, + 0.25 + ] + ], + "dt": { + "in": [ + "13_17", + "13_19" + ], + "out": [ + "13_17", + "13_19" + ], + "center": [], + "linkStore": [ + { + "item": "rack1", + "bay": 1, + "level": 1, + "cell": 0 + } + ] + } + }, + { + "id": "13_19", + "t": "way", + "v": true, + "logicX": 13, + "logicY": 19, + "logicZ": 1, + "tf": [ + [ + 5.65, + 0, + 6.744 + ], + [ + 0, + 0, + 0 + ], + [ + 0.25, + 0.1, + 0.25 + ] + ], + "dt": { + "in": [ + "13_18", + "13_20" + ], + "out": [ + "13_18", + "13_20" + ], + "center": [], + "linkStore": [ + { + "item": "58", + "bay": 0, + "level": 0, + "cell": 0 + } + ] + } + }, + { + "id": "13_20", + "t": "way", + "v": true, + "logicX": 13, + "logicY": 20, + "logicZ": 1, + "tf": [ + [ + 5.65, + 0, + 7.75 + ], + [ + 0, + 0, + 0 + ], + [ + 0.25, + 0.1, + 0.25 + ] + ], + "dt": { + "in": [ + "13_19", + "charger2" + ], + "out": [ + "13_19", + "charger2" + ], + "center": [], + "linkStore": [ + { + "item": "rack1", + "bay": 0, + "level": 1, + "cell": 0 + } + ] + } + }, + + { + "id": "47", + "t": "gstore", + "v": true, + "tf": [ + [ + 3.9, + 0, + 0.63 + ], + [ + 0, + 90, + 0 + ], + [ + 1, + 0.01, + 1 + ] + ], + "dt": { + "in": [], + "out": [], + "center": [], + "strokeWidth": 0.1 + } + }, + { + "id": "49", + "t": "gstore", + "v": true, + "tf": [ + [ + 1.5, + 0, + 0.63 + ], + [ + 0, + 90, + 0 + ], + [ + 1, + 0.01, + 1 + ] + ], + "dt": { + "in": [], + "out": [], + "center": [], + "strokeWidth": 0.1 + } + }, + { + "id": "54", + "t": "gstore", + "v": true, + "tf": [ + [ + 7.1, + 0, + 2.865 + ], + [ + 0, + 0, + 0 + ], + [ + 1, + 0.01, + 1 + ] + ], + "dt": { + "in": [], + "out": [], + "center": [], + "strokeWidth": 0.1 + } + }, + { + "id": "56", + "t": "gstore", + "v": true, + "tf": [ + [ + 7.1, + 0, + 4.35 + ], + [ + 0, + 0, + 0 + ], + [ + 1, + 0.01, + 1 + ] + ], + "dt": { + "in": [], + "out": [], + "center": [], + "strokeWidth": 0.1 + } + }, + { + "id": "58", + "t": "gstore", + "v": true, + "tf": [ + [ + 7.1, + 0, + 6.75 + ], + [ + 0, + 90, + 0 + ], + [ + 1, + 0.01, + 1 + ] + ], + "dt": { + "in": [], + "out": [], + "center": [], + "strokeWidth": 0.1 + } + }, + { + "id": "10", + "t": "cl2", + "v": true, + "tf": [ + [ + 5.65, + 0, + 2.13 + ], + [ + 0, + -90, + 0 + ], + [ + 1, + 1, + 1 + ] + ], + "dt": { + "in": [], + "out": [], + "center": [], + "ptrWidth": 1.5, + "ptrDepth": 1.5, + "ptrHeight": 1.98 + } + }, + { + "id": "199", + "t": "clx", + "v": true, + "tf": [ + [ + 1.5, + 0, + 2.13 + ], + [ + 0, + 0, + 0 + ], + [ + 1, + 1, + 1 + ] + ], + "dt": { + "in": [], + "out": [], + "center": [], + "clxWidth": 1.65, + "clxDepth": 1.65, + "clxHeight": 3.393 + } + }, + { + "id": "charger1", + "t": "way", + "v": true, + "tf": [ + [ + 2.696, + 0, + 8.75 + ], + [ + 0, + 0, + 0 + ], + [ + 1, + 1, + 1 + ] + ], + "dt": { + "in": [ + "11_20" + ], + "out": [ + "11_20" + ], + "chargerPortDirection": "up", + "center": [], + "isCharger": true + } + }, + { + "id": "charger2", + "t": "way", + "v": true, + "tf": [ + [ + 5.655, + 0, + 8.75 + ], + [ + 0, + 0, + 0 + ], + [ + 1, + 1, + 1 + ] + ], + "dt": { + "in": [ + "13_20" + ], + "out": [ + "13_20" + ], + "chargerPortDirection": "up", + "center": [], + "isCharger": true + } + }, + { + "id": "carton0", + "t": "carton", + "v": true, + "tf": [ + [ + 4.196, + 0.25, + 7.794499999999999 + ], + [ + 0, + 180, + 0 + ], + [ + 1.2, + 1, + 1 + ] + ], + "dt": { + "in": [], + "out": [], + "center": [], + "storeAt": { + "item": "rack1", + "bay": 0, + "level": 0, + "cell": 0 + } + } + }, + { + "id": "carton1", + "t": "carton", + "v": true, + "tf": [ + [ + 4.196, + 0.25, + 6.5195 + ], + [ + 0, + 180, + 0 + ], + [ + 1.2, + 1, + 1 + ] + ], + "dt": { + "in": [], + "out": [], + "center": [], + "storeAt": { + "item": "rack1", + "bay": 1, + "level": 0, + "cell": 0 + } + } + }, + { + "id": "carton2", + "t": "carton", + "v": true, + "tf": [ + [ + 4.196, + 0.25, + 5.2444999999999995 + ], + [ + 0, + 180, + 0 + ], + [ + 1.2, + 1, + 1 + ] + ], + "dt": { + "in": [], + "out": [], + "center": [], + "storeAt": { + "item": "rack1", + "bay": 2, + "level": 0, + "cell": 0 + } + } + }, + { + "id": "carton3", + "t": "carton", + "v": true, + "tf": [ + [ + 4.196, + 0.25, + 3.9695 + ], + [ + 0, + 180, + 0 + ], + [ + 1.2, + 1, + 1 + ] + ], + "dt": { + "in": [], + "out": [], + "center": [], + "storeAt": { + "item": "rack1", + "bay": 3, + "level": 0, + "cell": 0 + } + } + } +] diff --git a/tw_zh/project.json b/tw_zh/project.json new file mode 100644 index 0000000..885087c --- /dev/null +++ b/tw_zh/project.json @@ -0,0 +1,53 @@ +{ + "projectUuid" : "tw_zh", + "projectLabel" : "台湾物流展会", + "subSystemList" : [ "RCS" ], + "projectFileLocation" : "", + "directoryData" : [ { + "label" : "仓库楼层", + "items" : [ { + "catalogCode" : "f1", + "label" : "一楼 (f1)" + } ] + } ], + "otherData" : { + "Tool" : { + "Group" : [ ], + "GlobalVariables" : [ ], + "UserCommand" : [ ], + "Dashboard" : [ ], + "DataTable" : [ ], + "Trigger" : [ { + "name" : "OnOpen", + "fn" : "" + }, { + "name" : "OnReset", + "fn" : "" + }, { + "name" : "OnStart", + "fn" : "" + }, { + "name" : "OnStop", + "fn" : "" + } ], + "gridHelper" : { + "axesEnabled" : true, + "axesSize" : 5, + "axesColor" : 11184810, + "axesWidth" : 2, + "groundColor" : 16777215, + "gridEnabled" : true, + "gridSize" : 1000, + "gridDivisions" : 1000, + "gridColor" : 14540253, + "gridOpacity" : 1, + "backgroundColor" : 16119285, + "snapEnabled" : true, + "snapDistance" : 0.25 + } + }, + "elevator" : [ ], + "wall" : [ ], + "pillar" : [ ] + } +} \ No newline at end of file diff --git a/tw_zh/scripts/CL2_DEMO.ts b/tw_zh/scripts/CL2_DEMO.ts new file mode 100644 index 0000000..2f35439 --- /dev/null +++ b/tw_zh/scripts/CL2_DEMO.ts @@ -0,0 +1,61 @@ +const gstore = '105_105' +const agvId = '3' +const demoLocList = ['rack1/1/1/0', 'rack2/0/1/0', 'rack2/1/1/0'] +const demoLocList2 = [ 'rack1/1/1/0', 'rack2/0/1/0', 'rack2/1/1/0' ].reverse() + +while (true) { + + const [dd] = (await LCC.queryInv({ rack: gstore })).data + if (dd) { + // 地堆上有托盘, 找一个空货位放过去 + LCC.log('地堆上有托盘') + for (const loc of demoLocList) { + const [rack, bay, level] = loc.split('/') + if (!rack) { + continue; + } + const [emptyLoc] = (await LCC.queryInv({ rack, bay: parseInt(bay), level: parseInt(level) })).data + if (!emptyLoc) { + // 这是一个好位置 + LCC.log(`RCS.agvCarry('${agvId}', '${gstore}', '${loc}')`) + await RCS.agvCarry(agvId, gstore, loc) + await RCS.waitTaskFinish(agvId) + await LCC.sleep(1000) + break; + } + } + + + } else { + // 地上没有托盘位, 找个位置拖过去 + const [carInv] = (await LCC.queryInv({ rack: agvId, bay: 0, level: 0, cell: 0 })).data + if (carInv) { + LCC.log('托盘在车上') + LCC.log(`RCS.agvUnload('${agvId}', '${gstore}')`) + await RCS.agvUnload(agvId, gstore) + await RCS.waitTaskFinish(agvId) + await LCC.sleep(1000) + continue; + } else { + LCC.log('托盘在货架') + } + + let has = false + for (const loc of demoLocList2) { + const [rack, bay, level, cell] = loc.split('/') + const [palletLoc] = (await LCC.queryInv({ rack, bay: parseInt(bay), level: parseInt(level) })).data + if (palletLoc) { + has = true + LCC.log(`RCS.agvCarry('${agvId}', '${loc}', '${gstore}')`) + await RCS.agvCarry(agvId, loc, gstore) + await RCS.waitTaskFinish(agvId) + await LCC.sleep(1000) + break + } + } + + if (!has) { + LCC.log('货架没有空托盘,无法执行') + } + } +} \ No newline at end of file diff --git a/tw_zh/scripts/CLX_DEMO.ts b/tw_zh/scripts/CLX_DEMO.ts new file mode 100644 index 0000000..cd0637a --- /dev/null +++ b/tw_zh/scripts/CLX_DEMO.ts @@ -0,0 +1,61 @@ +const gstore = '108_108' +const agvId = '4' +const demoLocList = ['rack3/0/1/0', 'rack3/1/1/0', 'rack3/0/2/0', 'rack3/1/2/0'] +const demoLocList2 = ['rack3/0/1/0', 'rack3/1/1/0', 'rack3/0/2/0', 'rack3/1/2/0'].reverse() + +while (true) { + await LCC.sleep(3000) + const [dd] = (await LCC.queryInv({ rack: gstore })).data + if (dd) { + // 地堆上有托盘, 找一个空货位放过去 + for (const loc of demoLocList) { + const [rack, bay, level] = loc.split('/') + if (!rack) { + continue; + } + const [emptyLoc] = (await LCC.queryInv({ rack, bay: parseInt(bay), level: parseInt(level) })).data + if (!emptyLoc) { + // 这是一个好位置 + LCC.log('agvCarry', gstore, loc) + await RCS.agvCarry(agvId, gstore, loc) + await RCS.waitTaskFinish(agvId) + await LCC.sleep(1000) + break; + } + } + + + } else { + // 地上没有托盘位, 找个位置拖过去 + const [carInv] = (await LCC.queryInv({ rack: agvId, bay: 0, level: 0, cell: 0 })).data + if (carInv) { + LCC.log('托盘在车上') + LCC.log(`RCS.agvUnload('${agvId}', '${gstore}')`) + await RCS.agvUnload(agvId, gstore) + await RCS.waitTaskFinish(agvId) + await LCC.sleep(1000) + continue; + } else { + LCC.log('托盘在货架') + } + + let has = false + for (const loc of demoLocList2) { + const [rack, bay, level, cell] = loc.split('/') + const [palletLoc] = (await LCC.queryInv({ rack, bay: parseInt(bay), level: parseInt(level) })).data + if (palletLoc) { + has = true + + LCC.log(`RCS.agvCarry('${agvId}', '${loc}', '${gstore}')`) + await RCS.agvCarry(agvId, loc, gstore) + await RCS.waitTaskFinish(agvId) + await LCC.sleep(1000) + break + } + } + + if (!has) { + LCC.log('货架没有空托盘,无法执行') + } + } +} diff --git a/tw_zh/scripts/all_test.ts b/tw_zh/scripts/all_test.ts new file mode 100644 index 0000000..b995987 --- /dev/null +++ b/tw_zh/scripts/all_test.ts @@ -0,0 +1,35 @@ +// 初始 6_2 的右姿态,转到 6_2 的左姿态 +await RCS.cancelTasks('3'); +await RCS.agvMove('3', '4_2', '', { priority: 1, forceStartWayPointId: '6_2', forceStartDirection: 'RIGHT' }) + +/* 立刻载货 */ +await RCS.cancelTasks('3'); +await RCS.agvLoad('3', '105_105', { priority: 1, forceStartWayPointId: '4_2', forceStartDirection: 'LEFT' }) + +/* 立刻卸货 */ +await RCS.cancelTasks('3'); +await RCS.agvUnload('3', '105_105', { priority: 1, forceStartWayPointId: '4_2', forceStartDirection: 'LEFT' }) + +/* 3_2 -> 2_2 -> 1_2 */ +await RCS.cancelTasks('3'); +await RCS.agvMove('3', '1_2', '', { priority: 1, forceStartWayPointId: '4_2', forceStartDirection: 'LEFT' }) + +/* 5_2 -> 4_2 -> 3_2 -> 2_2 -> 1_2 -> load -> 2_2 -> unload */ +await RCS.cancelTasks('3'); +await RCS.agvCarry('3', 'rack1/0/0/0', 'rack1/1/0/0', { priority: 1, forceStartWayPointId: '6_2', forceStartDirection: 'RIGHT' }) + +/* 5_2 -> 4_2 -> 3_2 -> 2_2 -> 1_2 -> load -> 2_2 -> 3_2 -> 4_2 -> 5_2 -> 6_2 -> Rotation180 -> 5_2 -> 4_2 -> unload */ +await RCS.cancelTasks('3'); +await RCS.agvCarry('3', 'rack1/0/0/0', '105_105', { priority: 1, forceStartWayPointId: '6_2', forceStartDirection: 'RIGHT' }) + +/* 5_2 -> 4_2 -> 3_2 -> 2_2 -> 1_2 -> load */ +await RCS.cancelTasks('3'); +await RCS.agvLoad('3', 'rack1/0/0/0', { priority: 1, forceStartWayPointId: '6_2', forceStartDirection: 'RIGHT' }) + +/* 4_2 -> 5_2 -> 6_2 -> Rotation180 -> 5_2 -> 4_2 -> load */ +await RCS.cancelTasks('3'); +await RCS.agvLoad('3', '105_105', { priority: 1, forceStartWayPointId: '3_2', forceStartDirection: 'RIGHT' }) + +/* Rotation180 -> 5_2 -> 4_2 -> unload */ +await RCS.cancelTasks('3'); +await RCS.agvUnload('3', '105_105', { priority: 1, forceStartWayPointId: '6_2', forceStartDirection: 'RIGHT' }) \ No newline at end of file diff --git a/tw_zh/scripts/charger.ts b/tw_zh/scripts/charger.ts new file mode 100644 index 0000000..67e11d9 --- /dev/null +++ b/tw_zh/scripts/charger.ts @@ -0,0 +1,3 @@ +await RCS.cancelTasks('3') +await RCS.agvToCharger('3', 'charger1') +// await RCS.agvInfo('4'); \ No newline at end of file diff --git a/tw_zh/scripts/run1.ts b/tw_zh/scripts/run1.ts new file mode 100644 index 0000000..3f72a1b --- /dev/null +++ b/tw_zh/scripts/run1.ts @@ -0,0 +1,24 @@ +// const v = await RCS.agvCarry('3', 'rack1/1/1/0', 'rack2/1/1/0', { priority: 1 }) +// await RCS.agvCarry('3', 'rack2/0/1/0', 'rack2/1/1/0') +// await RCS.agvCarry('3', 'rack2/1/1/0', 'rack2/0/1/0') +// await RCS.cancelTasks('3') +// await RCS.agvUnload('3', 'rack2/0/1/0') +// const v = await RCS.agvCarry('3', 'rack1/0/1/0', '105_105', { priority: 1 }) +// const v = await RCS.agvCarry('3','rack2/0/0/0', '105_105', { priority: 1 }) +// await RCS.agvCarry('3', 'rack2/0/1/0', '105_105', { priority: 1 }) +// await RCS.agvCarry('3', '105_105', 'rack1/1/1/0', { priority: 1 }) +// await RCS.agvCarry('3','rack1/1/1/0','105_105', { priority: 1 }) +// const v = await RCS.agvMove('3', '6_4', 'LEFT') +// const v = await RCS.agvMove('4', '5_4', 'LEFT') +// await RCS.cancelTasks('3') +// await RCS.agvMove('3', '10_4', 'RIGHT') +// const v = await RCS.agvMove('3', '8_4', 'LEFT') +// await RCS.agvInfo('4') +// await RCS.cancelTasks("4") +// await RCS.agvMove('4', '1_4', 'RIGHT') +// const v = await RCS.agvCarry('4', '108_108/0/0/0', 'rack3/0/1/0', { priority: 1 }) +const v = await RCS.agvUnload('4', '108_108/0/0/0', { priority: 1 }) + +// const v = await RCS.agvCarry('4', 'rack3/0/1/0', 'rack3/1/2/0', { priority: 1 }) + +// await LCC.moveInv('TP001', 'AGV_3')