Browse Source

fixed: 增加电流读取

master
HSZ_HeSongZhen 3 months ago
parent
commit
6693281b8e
  1. 16
      src/main/java/com/iflytop/gd/hardware/drivers/HeaterRodDriver.java
  2. 29
      src/main/java/com/iflytop/gd/hardware/type/driver/HeaterRodSlavedId.java

16
src/main/java/com/iflytop/gd/hardware/drivers/HeaterRodDriver.java

@ -1,7 +1,11 @@
package com.iflytop.gd.hardware.drivers;
import cn.hutool.core.util.StrUtil;
import com.iflytop.gd.hardware.comm.can.A8kCanBusService;
import com.iflytop.gd.hardware.comm.modbus.ModbusMasterService;
import com.iflytop.gd.hardware.exception.HardwareException;
import com.iflytop.gd.hardware.type.A8kPacket;
import com.iflytop.gd.hardware.type.CmdId;
import com.iflytop.gd.hardware.type.driver.HeaterRodSlavedId;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -14,6 +18,7 @@ import java.util.concurrent.ConcurrentHashMap;
@Component
@RequiredArgsConstructor
public class HeaterRodDriver {
private final A8kCanBusService canBus;
private final ModbusMasterService modbusMaster;
private static final int SV_ADDRESS = 0x2000;
@ -94,6 +99,17 @@ public class HeaterRodDriver {
return temperature;
}
/**
* 获取电流
* @return
*/
public Integer getCurrent(HeaterRodSlavedId heaterRodId) throws HardwareException
{
A8kPacket packet = canBus.callcmd(heaterRodId.getMid(), CmdId.adc_read_adc, heaterRodId.getAdcCurrentIndex());
Integer current = packet.getContentI32(0);
return current;
}
// ==== ==== ==== ==== ==== ==== application ==== ==== ==== ==== ==== ====
public void open(HeaterRodSlavedId heaterRodId, double temperature) throws Exception {
this.openPower(heaterRodId);

29
src/main/java/com/iflytop/gd/hardware/type/driver/HeaterRodSlavedId.java

@ -1,22 +1,27 @@
package com.iflytop.gd.hardware.type.driver;
import com.iflytop.gd.common.enums.cmd.CmdDevice;
import com.iflytop.gd.hardware.type.MId;
public enum HeaterRodSlavedId {
HEATER_ROD1_ID(CmdDevice.heat_rod_1, 1),
HEATER_ROD2_ID(CmdDevice.heat_rod_2, 2),
HEATER_ROD3_ID(CmdDevice.heat_rod_3, 3),
HEATER_ROD4_ID(CmdDevice.heat_rod_4, 4),
HEATER_ROD5_ID(CmdDevice.heat_rod_5, 5),
HEATER_ROD6_ID(CmdDevice.heat_rod_6, 6),
HEATER_ROD1_ID(CmdDevice.heat_rod_1, 1, MId.IO1_ADC,0),
HEATER_ROD2_ID(CmdDevice.heat_rod_2, 2, MId.IO1_ADC,1),
HEATER_ROD3_ID(CmdDevice.heat_rod_3, 3, MId.IO1_ADC,2),
HEATER_ROD4_ID(CmdDevice.heat_rod_4, 4, MId.IO1_ADC,3),
HEATER_ROD5_ID(CmdDevice.heat_rod_5, 5, MId.IO1_ADC,4),
HEATER_ROD6_ID(CmdDevice.heat_rod_6, 6, MId.IO1_ADC,5),
;
private final CmdDevice cmdDevice;
private final Integer slaveId;
private final MId mid;
private final Integer adcCurrentIndex; // ADC电流索引
HeaterRodSlavedId(CmdDevice cmdDevice, Integer slaveId) {
HeaterRodSlavedId(CmdDevice cmdDevice, Integer slaveId, MId mid, Integer adcCurrentIndex) {
this.cmdDevice = cmdDevice;
this.slaveId = slaveId;
this.mid = mid;
this.adcCurrentIndex = adcCurrentIndex;
}
public CmdDevice getCmdDevice() {
@ -27,6 +32,16 @@ public enum HeaterRodSlavedId {
return slaveId;
}
public MId getMid()
{
return mid;
}
public Integer getAdcCurrentIndex()
{
return adcCurrentIndex;
}
static public HeaterRodSlavedId getByCmdDevice(CmdDevice cmdDevice) {
for (HeaterRodSlavedId value : HeaterRodSlavedId.values()) {
if (value.cmdDevice == cmdDevice) {

Loading…
Cancel
Save