Browse Source

update

tags/v0
zhaohe 1 year ago
parent
commit
047a2feda8
  1. 3
      README.md
  2. 2
      src/main/java/a8k/a8k_can_protocol/A8kPacket.java
  3. 2
      src/main/java/a8k/a8k_can_protocol/IOId.java
  4. 34
      src/main/java/a8k/base_hardware/A8kCanBusService.java
  5. 32
      src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java

3
README.md

@ -32,7 +32,8 @@
3. 试管架通道中没有试管架
4. 出料口没有试管架
5. 进出料位置没有试管
逻辑漏洞
```

2
src/main/java/a8k/a8k_can_protocol/A8kPacket.java

@ -39,7 +39,7 @@ public class A8kPacket {
public static final int PACKET_TYPE_ERROR_ACK = 2;
public static final int PACKET_TYPE_EVENT = 3;
public static final int CMD_OVERTIME = 100;
public static final int CMD_OVERTIME = 2000;
public A8kPacket(byte[] cmd) {
raw = new byte[cmd.length];

2
src/main/java/a8k/a8k_can_protocol/IOId.java

@ -5,7 +5,7 @@ public enum IOId {
THChOuterPPS(ModuleType.kboard, MId.FeedingModBoard, 1),//试管架转移通道有无检测
THChInterPPS(ModuleType.kboard, MId.FeedingModBoard, 2),//试管架转移通道有无检测
OutfeedPPS(ModuleType.kboard, MId.FeedingModBoard, 3),//试管出料位置 试管架有无检测
TubeExitPPS(ModuleType.kboard, MId.FeedingModBoard, 4),//试管有无光电
TubeExistPPS(ModuleType.kboard, MId.FeedingModBoard, 4),//试管有无光电
InfeedPPS(ModuleType.kboard, MId.FeedingModBoard, 5),//试管架入料位置 试管架有无检测
RecycleBinOverflowPPS(ModuleType.kboard, MId.PlatesBoxTCMBoard, 2),//废料桶满溢检测

34
src/main/java/a8k/base_hardware/A8kCanBusService.java

@ -489,36 +489,6 @@ public class A8kCanBusService {
return this.callcmd(moduleId, cmdId, new Integer[]{p0, p1, p2, p3});
}
public void callblockcmd(Integer moduleId, Integer cmdId, Integer p0, Integer p1, Integer p2, Integer p3, Integer acitionOvertime) throws HardwareException, InterruptedException {
this.callblockcmd(moduleId, cmdId, new Integer[]{p0, p1, p2, p3}, acitionOvertime);
}
public void callblockcmd(Integer moduleId, Integer cmdId, Integer p0, Integer p1, Integer p2, Integer acitionOvertime) throws HardwareException, InterruptedException {
this.callblockcmd(moduleId, cmdId, new Integer[]{p0, p1, p2}, acitionOvertime);
}
public void callblockcmd(Integer moduleId, Integer cmdId, Integer p0, Integer p1, Integer acitionOvertime) throws HardwareException, InterruptedException {
this.callblockcmd(moduleId, cmdId, new Integer[]{p0, p1}, acitionOvertime);
}
public void callblockcmd(Integer moduleId, Integer cmdId, Integer p0, Integer acitionOvertime) throws HardwareException, InterruptedException {
this.callblockcmd(moduleId, cmdId, new Integer[]{p0}, acitionOvertime);
}
public void callblockcmd(Integer moduleId, Integer cmdId, Integer acitionOvertime) throws HardwareException, InterruptedException {
this.callblockcmd(moduleId, cmdId, new Integer[]{}, acitionOvertime);
}
// TODO
public Integer module_read_reg(Integer moduleId, RegIndex regindex) {
return 0;
}
// TODO
public void module_write_reg(Integer moduleId, RegIndex regindex, Integer reg) {
}
public A8kPacket callcmd(Integer moduleId, Integer cmdId, Integer[] params) throws HardwareException {
var packet = packParamsToPacket(moduleId, cmdId, params);
@ -538,11 +508,9 @@ public class A8kCanBusService {
}
}
try {
Thread.sleep(300);
Thread.sleep(100);
} catch (InterruptedException ignore) {
}
}
throw new HardwareException(MId.valueOf(pack.getModuleId()), A8kEcode.Overtime);
}

32
src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java

@ -52,42 +52,46 @@ public class MotorTubeRackMoveCtrlService implements HardwareCtrlModule {
@HardwareServiceParam(name = "出料X位置", group = "试管架位置信息")
public Integer getTRExitXPos() {
return 0;
return 4001;
}
@HardwareServiceParam(name = "试管架扫码X位置", group = "试管架位置信息")
public Integer getTRScanXPos() {
return 0;
return 2202;
}
@HardwareServiceParam(name = "试管扫码位置", group = "试管位置信息")
public Integer getTScanXPos() {
return 0;
//运动方向: ->
return 505;
}
@HardwareServiceParam(name = "试管高度判断位置", group = "试管位置信息")
public Integer getTAltitJudgXPos() {
return 0;
//运动方向: ->
return 505;
}
@HardwareServiceParam(name = "试管是否存在判断位置", group = "试管位置信息")
public Integer getTExistJudgXPos() {
return 0;
//运动方向: <-
return 300;
}
@HardwareServiceParam(name = "试管预处理位置", group = "试管位置信息")
public Integer getTPreProcessXPos() {
return 0;
//运动方向: <-
return 1244;
}
@HardwareServiceParam(name = "试管架孔间距", group = "其他")
public Integer getTubeSpacing() {
return 0;
return 200;
}
@HardwareServiceParam(name = "扫码舵机转速(0..900)", group = "其他")
public Integer getTubeScanServoTorque() {
return 300;
return 500;
}
@HardwareServiceParam(name = "试管扫码超时时间", group = "其他")
@ -191,7 +195,7 @@ public class MotorTubeRackMoveCtrlService implements HardwareCtrlModule {
@HardwareServiceAction(name = "入料", group = "模块基础动作")
public void tryEnterTubeRack(Integer time) throws HardwareException, InterruptedException {
try {
canBus.stepMotorEasyRotate(MId.FeedingModInfeedM, 1);
canBus.stepMotorEasyRotate(MId.FeedingModInfeedM, -1);
Thread.sleep(time);
} finally {
canBus.moduleStop(MId.FeedingModInfeedM);
@ -307,7 +311,7 @@ public class MotorTubeRackMoveCtrlService implements HardwareCtrlModule {
* 移动试管到试管高低判断位置
* @param tubeIndex 试管索引
*/
@HardwareServiceAction(name = "判断<试管N>位置", group = "片段")
@HardwareServiceAction(name = "判断<试管N>高低", group = "片段")
public AppRet<Boolean> moveTubeToAltitJudgXPos(Integer tubeIndex) throws HardwareException, InterruptedException {
moveTubeRackTo(getTAltitJudgXPos() + tubeIndex * getTubeSpacing());
return AppRet.success(isHighTube());
@ -329,13 +333,17 @@ public class MotorTubeRackMoveCtrlService implements HardwareCtrlModule {
@HardwareServiceAction(name = "判断<试管N>是否存在", group = "片段")
public AppRet<Boolean> judgeTubeExist(Integer tubeIndex) throws HardwareException, InterruptedException {
moveTubeRackTo(getTExistJudgXPos() + tubeIndex * getTubeSpacing());
return AppRet.success(isTubeRackInEnterPos());
return AppRet.success(isTubeExist());
}
//
// 状态
//
@HardwareServiceStatus(name = "试管架存在")
public Boolean isTubeExist() throws HardwareException {
return canBus.getIOState(IOId.TubeExistPPS);
}
@HardwareServiceStatus(name = "入口光电")
public Boolean isTubeRackInEnterPos() throws HardwareException {
return canBus.getIOState(IOId.InfeedPPS);

Loading…
Cancel
Save