Browse Source

重构代码 将cmdid修改成枚举

tags/v0
zhaohe 1 year ago
parent
commit
4ca019d605
  1. 32
      src/main/java/a8k/a8k_can_protocol/IOId.java
  2. 17
      src/main/java/a8k/appbean/HardwareException.java
  3. 4
      src/main/java/a8k/appbean/ecode/AppEcode.java
  4. 34
      src/main/java/a8k/base_hardware/A8kCanBusService.java
  5. 2
      src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java
  6. BIN
      zhaohe_app.db

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

@ -1,35 +1,35 @@
package a8k.a8k_can_protocol;
public enum IOId {
TubeHeightPPS(ModuleType.kboard, 60, 0), //高低试管检测IO
THChOuterPPS(ModuleType.kboard, 60, 1),//试管架转移通道有无检测
THChInterPPS(ModuleType.kboard, 60, 2),//试管架转移通道有无检测
OutfeedPPS(ModuleType.kboard, 60, 3),//试管出料位置 试管架有无检测
TubeExitPPS(ModuleType.kboard, 60, 4),//试管有无光电
InfeedPPS(ModuleType.kboard, 60, 5),//试管架入料位置 试管架有无检测
TubeHeightPPS(ModuleType.kboard, MId.FeedingModBoard, 0), //高低试管检测IO
THChOuterPPS(ModuleType.kboard, MId.FeedingModBoard, 1),//试管架转移通道有无检测
THChInterPPS(ModuleType.kboard, MId.FeedingModBoard, 2),//试管架转移通道有无检测
OutfeedPPS(ModuleType.kboard, MId.FeedingModBoard, 3),//试管出料位置 试管架有无检测
TubeExitPPS(ModuleType.kboard, MId.FeedingModBoard, 4),//试管有无光电
InfeedPPS(ModuleType.kboard, MId.FeedingModBoard, 5),//试管架入料位置 试管架有无检测
RecycleBinOverflowPPS(ModuleType.kboard, 40, 2),//废料桶满溢检测
RecycleBinOverflowPPSPowerCtrl(ModuleType.kboard, 40, 0),//废料桶光栅电源
RecycleBinOverflowPPS(ModuleType.kboard, MId.PlatesBoxTCMBoard, 2),//废料桶满溢检测
RecycleBinOverflowPPSPowerCtrl(ModuleType.kboard, MId.PlatesBoxTCMBoard, 0),//废料桶光栅电源
PlateBoxCoverClosurePPS(ModuleType.kboard, 20, 0),//板夹仓舱盖闭合检测
PlateBoxPlateStuckPPS(ModuleType.kboard, 20, 1),//板夹仓卡板检测
PlateBoxCoverClosurePPS(ModuleType.kboard, MId.PlatesBoxBoard, 0),//板夹仓舱盖闭合检测
PlateBoxPlateStuckPPS(ModuleType.kboard, MId.PlatesBoxBoard, 1),//板夹仓卡板检测
//转盘逻辑相关光电
//钩板电机零点光电终点光电
PullerMZeroPPS(ModuleType.ktmc_step_motor, ModId.OptModPullM,0),
PullerMEndPPS(ModuleType.ktmc_step_motor, ModId.OptModPullM,1),
PullerMZeroPPS(ModuleType.ktmc_step_motor, MId.OptModPullM, 0),//
PullerMEndPPS(ModuleType.ktmc_step_motor, MId.OptModPullM, 1),//
//推板电机零点光电终点光电
PusherMZeroPPS(ModuleType.ktmc_step_motor, ModId.PlatesBoxPusherM,0),
PusherMEndPPS(ModuleType.ktmc_step_motor, ModId.PlatesBoxPusherM,1),
PusherMZeroPPS(ModuleType.ktmc_step_motor, MId.PlatesBoxPusherM, 0),//
PusherMEndPPS(ModuleType.ktmc_step_motor, MId.PlatesBoxPusherM, 1),//
;
final public ModuleType mtype;
final public int mid;
final public MId mid;
final public int ioIndex;
IOId(ModuleType mtype, int mid, int ioIndex) {
IOId(ModuleType mtype, MId mid, int ioIndex) {
this.mtype = mtype;
this.mid = mid;
this.ioIndex = ioIndex;

17
src/main/java/a8k/appbean/HardwareException.java

@ -1,29 +1,30 @@
package a8k.appbean;
import a8k.a8k_can_protocol.A8kEcode;
import a8k.a8k_can_protocol.MId;
import a8k.a8k_can_protocol.ModId;
public class HardwareException extends Exception {
// 构造函数
int errorCode;
int moduleId;
A8kEcode errorCode;
MId moduleId;
public HardwareException() {
super();
}
public HardwareException(int moduleId, int HardwareErrorCode) {
super(String.format("Module ID %s has error code %s", ModId.ModuleId2Name(moduleId), A8kEcode.toString(HardwareErrorCode)));
this.errorCode = HardwareErrorCode;
this.moduleId = moduleId;
public HardwareException(MId mid, A8kEcode ecode) {
super(String.format("Module ID %s has error code %s", mid, ecode));
this.errorCode = ecode;
this.moduleId = mid;
}
public int getModuleId() {
public MId getModuleId() {
return moduleId;
}
public int getErrorCode() {
public A8kEcode getErrorCode() {
return errorCode;
}

4
src/main/java/a8k/appbean/ecode/AppEcode.java

@ -23,8 +23,8 @@ public class AppEcode {
}
public AppEcode(HardwareException e) {
this.errorCode = A8kEcode.valueOf(e.getErrorCode());
this.mid = MId.valueOf(e.getModuleId());
this.errorCode = e.getErrorCode();
this.mid = e.getModuleId();
}

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

@ -166,9 +166,9 @@ public class A8kCanBusService {
return packet.getContentI32(0);
}
public int moduleGetError(MId id) throws HardwareException {
public A8kEcode moduleGetError(MId id) throws HardwareException {
var packet = callcmd(id.toInt(), CmdId.module_get_error.toInt());
return packet.getContentI32(0);
return A8kEcode.valueOf(packet.getContentI32(0));
}
public void moduleClearError(MId id) throws HardwareException {
@ -330,21 +330,21 @@ public class A8kCanBusService {
public boolean getIOState(IOId ioid) throws HardwareException {
if (ioid.mtype == ModuleType.kboard) {
return callcmd(ioid.mid, CmdId.extboard_read_inio.toInt(), ioid.ioIndex).getContentI32(0) != 0;
return callcmd(ioid.mid.toInt(), CmdId.extboard_read_inio.toInt(), ioid.ioIndex).getContentI32(0) != 0;
} else if (ioid.mtype == ModuleType.ktmc_step_motor) {
return callcmd(ioid.mid, CmdId.step_motor_read_io_state.toInt(), ioid.ioIndex).getContentI32(0) != 0;
return callcmd(ioid.mid.toInt(), CmdId.step_motor_read_io_state.toInt(), ioid.ioIndex).getContentI32(0) != 0;
} else if (ioid.mtype == ModuleType.kmini_servo_motor_module) {
return callcmd(ioid.mid, CmdId.mini_servo_read_io_state.toInt(), ioid.ioIndex).getContentI32(0) != 0;
return callcmd(ioid.mid.toInt(), CmdId.mini_servo_read_io_state.toInt(), ioid.ioIndex).getContentI32(0) != 0;
} else {
throw new HardwareException(ioid.mid, A8kEcode.IllegalOperation.toInt());
throw new HardwareException(ioid.mid, A8kEcode.IllegalOperation);
}
}
public void setIOState(IOId ioid, boolean val) throws HardwareException {
if (ioid.mtype == ModuleType.kboard) {
callcmd(ioid.mid, CmdId.extboard_write_outio.toInt(), ioid.ioIndex, val ? 1 : 0);
callcmd(ioid.mid.toInt(), CmdId.extboard_write_outio.toInt(), ioid.ioIndex, val ? 1 : 0);
} else {
throw new HardwareException(ioid.mid, A8kEcode.IllegalOperation.toInt());
throw new HardwareException(ioid.mid, A8kEcode.IllegalOperation);
}
}
@ -356,13 +356,13 @@ public class A8kCanBusService {
if (status == ModuleStatus.IDLE) {
break;
} else if (status == ModuleStatus.ERROR) {
throw new HardwareException(mid.toInt(), moduleGetError(mid));
throw new HardwareException(mid, moduleGetError(mid));
}
} catch (HardwareException ignored) {
}
long now = System.currentTimeMillis();
if (now - startedAt > acitionOvertime) {
throw new HardwareException(mid.toInt(), A8kEcode.Overtime.toInt());
throw new HardwareException(mid, A8kEcode.Overtime);
}
Thread.sleep(100);
@ -378,13 +378,13 @@ public class A8kCanBusService {
if (status == ModuleStatus.IDLE) {
break;
} else if (status == ModuleStatus.ERROR) {
throw new HardwareException(mid.toInt(), moduleGetError(mid));
throw new HardwareException(mid, moduleGetError(mid));
}
} catch (HardwareException ignored) {
}
long now = System.currentTimeMillis();
if (now - startedAt > acitionOvertime) {
throw new HardwareException(mid.toInt(), A8kEcode.Overtime.toInt());
throw new HardwareException(mid, A8kEcode.Overtime);
}
Thread.sleep(100);
@ -455,7 +455,7 @@ public class A8kCanBusService {
try {
return this.sendCmd(pack, A8kPacket.CMD_OVERTIME);
} catch (HardwareException e) {
if (e.getErrorCode() != A8kEcode.Overtime.toInt())
if (e.getErrorCode() != A8kEcode.Overtime)
;
{
throw e;
@ -483,7 +483,7 @@ public class A8kCanBusService {
long now = System.currentTimeMillis();
if (now - startedAt > acitionOvertime) {
throw new HardwareException(pack.getModuleId(), A8kEcode.Overtime.toInt());
throw new HardwareException(MId.valueOf(pack.getModuleId()), A8kEcode.Overtime);
}
Thread.sleep(100);
@ -510,15 +510,15 @@ public class A8kCanBusService {
receipt = receiptQueue.poll(overtime, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
isWaitingReceipt = false;
throw new HardwareException(pack.getModuleId(), A8kEcode.Overtime.toInt());
throw new HardwareException(MId.valueOf(pack.getModuleId()), A8kEcode.Overtime);
}
isWaitingReceipt = false;
if (receipt == null) {
throw new HardwareException(pack.getModuleId(), A8kEcode.Overtime.toInt());
throw new HardwareException(MId.valueOf(pack.getModuleId()), A8kEcode.Overtime);
}
if (receipt.getPacketType() == A8kPacket.PACKET_TYPE_ERROR_ACK) {
throw new HardwareException(pack.getModuleId(), receipt.getContentI32(0));
throw new HardwareException(MId.valueOf(pack.getModuleId()), A8kEcode.valueOf(receipt.getContentI32(0)));
}
try {
Thread.sleep(10);

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

@ -109,7 +109,7 @@ public class MotorTubeRackMoveCtrlService {
var dval = a8kCanBusService.module_read_reg(ModId.FeedingModXM, RegIndex.kreg_step_motor_dpos);
if (Math.abs(dval - distance) > params.getHorizontalMotorLostStepThresholdVal() ) {
throw new HardwareException(ModId.FeedingModXM, A8kEcode.MotorLostStep.toInt());
throw new HardwareException(MId.FeedingModXM, A8kEcode.MotorLostStep);
}
//先通过move_to 指令移动到零点

BIN
zhaohe_app.db

Loading…
Cancel
Save