Browse Source

jx_test

jx-test
修宁 5 months ago
parent
commit
c071be1dca
  1. 24
      jx_test/envs/20.json
  2. 23
      jx_test/envs/23.json
  3. 1344
      jx_test/floor/f1.json
  4. 53
      jx_test/project.json
  5. 61
      jx_test/scripts/CL2_DEMO.ts
  6. 61
      jx_test/scripts/CLX_DEMO.ts
  7. 85
      jx_test/scripts/ZH_CL2.ts
  8. 85
      jx_test/scripts/ZH_CLX.ts
  9. 35
      jx_test/scripts/all_test.ts
  10. 3
      jx_test/scripts/charger.ts
  11. 26
      jx_test/scripts/run1.ts
  12. 4
      tw_zh/envs/13.json

24
jx_test/envs/20.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"
}
}
}

23
jx_test/envs/23.json

@ -0,0 +1,23 @@
{
"envId": 13,
"envName": "嘉兴测试1",
"isVirtual": true,
"envConfig": {
"mqtt": {
"brokerUrl": "tcp://180.100.199.56:7097",
"username": "galaxis",
"password": "Admin1234_",
"websocket": "mqtt://180.100.199.56:9097"
},
"mysql": {
"jdbc-url": "jdbc:p6spy:mysql://180.100.199.56:8306/rcs2_tw_zhanghui",
"username": "rcs2_tw_zhanghui",
"password": "Rcs2_tw_zhanghui"
},
"redis": {
"host": "127.0.0.1",
"port": 6379,
"database": 0
}
}
}

1344
jx_test/floor/f1.json

File diff suppressed because it is too large

53
jx_test/project.json

@ -0,0 +1,53 @@
{
"projectUuid" : "jx_cd",
"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" : [ ]
}
}

61
jx_test/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('货架没有空托盘,无法执行')
}
}
}

61
jx_test/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('货架没有空托盘,无法执行')
}
}
}

85
jx_test/scripts/ZH_CL2.ts

@ -0,0 +1,85 @@
const gstore = '504_501'
const agvId = '1'
const demoLocList = ['rack1/0/1/0', 'rack1/1/1/0', 'rack1/2/1/0', 'rack1/3/1/0']
while (true) {
const [carInv] = (await LCC.queryInv({ rack: agvId, bay: 0, level: 0, cell: 0 })).data
const [dd] = (await LCC.queryInv({ rack: gstore })).data
// demoLocList.reverse()
if (dd) {
// 地堆上有托盘, 找一个空货位放过去
LCC.log('地堆上有托盘')
const freeLoc = await findFreeLoc()
if (carInv) {
// 托盘在车上
LCC.log('托盘在车上')
LCC.log(`RCS.agvUnload('${agvId}', '${freeLoc}')`)
await RCS.agvUnload(agvId, freeLoc)
await RCS.waitTaskFinish(agvId)
await LCC.sleep(1000)
continue
}
LCC.log(`RCS.agvCarry('${agvId}', '${gstore}', '${freeLoc}')`)
await RCS.agvCarry(agvId, gstore, freeLoc)
await RCS.waitTaskFinish(agvId)
} else {
// 地上没有托盘位, 找个位置拖过去
if (carInv) {
// 托盘在车上
LCC.log('托盘在车上')
LCC.log(`RCS.agvUnload('${agvId}', '${gstore}')`)
await RCS.agvUnload(agvId, gstore)
await RCS.waitTaskFinish(agvId)
await LCC.sleep(1000)
continue
}
const invLoc = await findRackInvLoc()
if (!invLoc) {
LCC.log('货架没有托盘,无法执行')
} else {
LCC.log(`RCS.agvCarry('${agvId}', '${invLoc}', '${gstore}')`)
await RCS.agvCarry(agvId, invLoc, gstore)
await RCS.waitTaskFinish(agvId)
}
}
await LCC.sleep(1000)
}
async function findFreeLoc() {
for (const loc of shuffleArray(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) {
// 这是一个好位置
return loc
}
}
}
async function findRackInvLoc() {
for (const loc of shuffleArray(demoLocList)) {
const [rack, bay, level, cell] = loc.split('/')
const [palletLoc] = (await LCC.queryInv({ rack, bay: parseInt(bay), level: parseInt(level) })).data
if (palletLoc) {
return loc
}
}
}
// 打乱数组顺序的函数
function shuffleArray(array) {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1)); // 随机选择一个位置 j
[array[i], array[j]] = [array[j], array[i]] // 交换元素
}
return array
}

85
jx_test/scripts/ZH_CLX.ts

@ -0,0 +1,85 @@
const gstore = '500_500'
const agvId = '2'
const demoLocList = ['rack1/0/2/0', 'rack1/1/2/0', 'rack1/2/2/0', 'rack1/3/2/0']
while (true) {
const [carInv] = (await LCC.queryInv({ rack: agvId, bay: 0, level: 0, cell: 0 })).data
const [dd] = (await LCC.queryInv({ rack: gstore })).data
// demoLocList.reverse()
if (dd) {
// 地堆上有托盘, 找一个空货位放过去
LCC.log('地堆上有托盘')
const freeLoc = await findFreeLoc()
if (carInv) {
// 托盘在车上
LCC.log('托盘在车上')
LCC.log(`RCS.agvUnload('${agvId}', '${freeLoc}')`)
await RCS.agvUnload(agvId, freeLoc)
await RCS.waitTaskFinish(agvId)
await LCC.sleep(1000)
continue
}
LCC.log(`RCS.agvCarry('${agvId}', '${gstore}', '${freeLoc}')`)
await RCS.agvCarry(agvId, gstore, freeLoc)
await RCS.waitTaskFinish(agvId)
} else {
// 地上没有托盘位, 找个位置拖过去
if (carInv) {
// 托盘在车上
LCC.log('托盘在车上')
LCC.log(`RCS.agvUnload('${agvId}', '${gstore}')`)
await RCS.agvUnload(agvId, gstore)
await RCS.waitTaskFinish(agvId)
await LCC.sleep(1000)
continue
}
const invLoc = await findRackInvLoc()
if (!invLoc) {
LCC.log('货架没有托盘,无法执行')
} else {
LCC.log(`RCS.agvCarry('${agvId}', '${invLoc}', '${gstore}')`)
await RCS.agvCarry(agvId, invLoc, gstore)
await RCS.waitTaskFinish(agvId)
}
}
await LCC.sleep(1000)
}
async function findFreeLoc() {
for (const loc of shuffleArray(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) {
// 这是一个好位置
return loc
}
}
}
async function findRackInvLoc() {
for (const loc of shuffleArray(demoLocList)) {
const [rack, bay, level, cell] = loc.split('/')
const [palletLoc] = (await LCC.queryInv({ rack, bay: parseInt(bay), level: parseInt(level) })).data
if (palletLoc) {
return loc
}
}
}
// 打乱数组顺序的函数
function shuffleArray(array) {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1)); // 随机选择一个位置 j
[array[i], array[j]] = [array[j], array[i]] // 交换元素
}
return array
}

35
jx_test/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' })

3
jx_test/scripts/charger.ts

@ -0,0 +1,3 @@
await RCS.cancelTasks('3')
await RCS.agvToCharger('3', 'charger1')
// await RCS.agvInfo('4');

26
jx_test/scripts/run1.ts

@ -0,0 +1,26 @@
// 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')

4
tw_zh/envs/13.json

@ -4,10 +4,10 @@
"isVirtual": true,
"envConfig": {
"mqtt": {
"brokerUrl": "tcp://127.0.0.1:1883",
"brokerUrl": "tcp://10.10.101.8:1883",
"username": "user",
"password": "user",
"websocket": "mqtt://127.0.0.1:7883"
"websocket": "mqtt://10.10.101.8:7883"
},
"mysql": {
"jdbc-url": "jdbc:p6spy:mysql://180.100.199.56:8306/rcs2_tw_zhanghui",

Loading…
Cancel
Save