|
@@ -1,11 +1,19 @@
|
|
|
package com.ruoyi.hard.xuankang;
|
|
|
|
|
|
import com.jwk.spring.boot.autoconfigure.ModbusTcpMasterTemplate;
|
|
|
+import com.jwk.spring.boot.constant.DATA_TYPE_WRAPPER;
|
|
|
+import com.jwk.spring.boot.modbus4j.ModbusMasterUtil;
|
|
|
+import com.serotonin.modbus4j.msg.ReadResponse;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import com.jwk.spring.boot.constant.DATA_TYPE_WRAPPER;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Qualifier;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import static com.ruoyi.hard.xuankang.UnpackingMachineClient.REGISTER_CODE.*;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 拆包机通讯客户端
|
|
|
*
|
|
@@ -17,7 +25,264 @@ import org.springframework.stereotype.Service;
|
|
|
@Service
|
|
|
public class UnpackingMachineClient {
|
|
|
|
|
|
+ /**
|
|
|
+ * 拆包机
|
|
|
+ */
|
|
|
@Autowired(required = false)
|
|
|
@Qualifier("modbusTcpMasterTemplateSecond")
|
|
|
private ModbusTcpMasterTemplate modbusTcpMasterTemplateSecond;
|
|
|
+ /**
|
|
|
+ * 拆包机命令
|
|
|
+ */
|
|
|
+ public enum REGISTER_CODE {
|
|
|
+ //寄存器VB128
|
|
|
+ REGISTER_CODE_128(1,127,1,0),
|
|
|
+ //寄存器VB129
|
|
|
+ REGISTER_CODE_129(1,128,1,0),
|
|
|
+ //寄存器VB130
|
|
|
+ REGISTER_CODE_130(1,129,1,0),
|
|
|
+ //寄存器VB131
|
|
|
+ REGISTER_CODE_131(1,130,1,0),
|
|
|
+ //寄存器VB132
|
|
|
+ REGISTER_CODE_132(1,131,1,0),
|
|
|
+ //寄存器VB133 皮带运行状态
|
|
|
+ REGISTER_CODE_133(1,132,1,0),
|
|
|
+ //寄存器VB134
|
|
|
+ REGISTER_CODE_134(1,133,1,0),
|
|
|
+ //寄存器VB135
|
|
|
+ REGISTER_CODE_135(1,134,1,0),
|
|
|
+ //寄存器VB136
|
|
|
+ REGISTER_CODE_136(1,135,1,0),
|
|
|
+ //寄存器VB137
|
|
|
+ REGISTER_CODE_137(1,136,1,0),
|
|
|
+ //寄存器VB138
|
|
|
+ REGISTER_CODE_138(1,137,1,0),
|
|
|
+ //寄存器VB139
|
|
|
+ REGISTER_CODE_139(1,138,1,0),
|
|
|
+ //寄存器VB140
|
|
|
+ REGISTER_CODE_140(1,139,1,0),
|
|
|
+ //寄存器VB141
|
|
|
+ REGISTER_CODE_141(1,140,1,0);
|
|
|
+ /**
|
|
|
+ * 从节点id
|
|
|
+ */
|
|
|
+ private int slaveId;
|
|
|
+ /**
|
|
|
+ * 地址
|
|
|
+ */
|
|
|
+ private int offset;
|
|
|
+ /**
|
|
|
+ * 读的长度
|
|
|
+ */
|
|
|
+ private int value0;
|
|
|
+ /**
|
|
|
+ * 写的值
|
|
|
+ */
|
|
|
+ private int value1;
|
|
|
+
|
|
|
+
|
|
|
+ REGISTER_CODE(int slaveId, int offset, int value0, int value1) {
|
|
|
+ this.slaveId = slaveId;
|
|
|
+ this.offset = offset;
|
|
|
+ this.value0 = value0;
|
|
|
+ this.value1 = value1;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getSlaveId() {return slaveId;}
|
|
|
+
|
|
|
+ public int getOffset() {
|
|
|
+ return offset;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getValue0() {return value0;}
|
|
|
+
|
|
|
+ public int getValue1() {
|
|
|
+ return value1;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 读拆包机1#各部件状态
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean[] readUnpacking01() {
|
|
|
+ Number number = read(REGISTER_CODE_128.getSlaveId(), REGISTER_CODE_128.getOffset());
|
|
|
+ boolean[] booleans = ConvertUtil.convertToBooleans(number);
|
|
|
+ return booleans;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 读拆包机2#各部件状态
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean[] readUnpacking02() {
|
|
|
+ Number number = read(REGISTER_CODE_129.getSlaveId(), REGISTER_CODE_129.getOffset());
|
|
|
+ boolean[] booleans = ConvertUtil.convertToBooleans(number);
|
|
|
+ return booleans;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 读拆包机3#各部件状态
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean[] readUnpacking03() {
|
|
|
+ Number number = read(REGISTER_CODE_130.getSlaveId(), REGISTER_CODE_130.getOffset());
|
|
|
+ boolean[] booleans = ConvertUtil.convertToBooleans(number);
|
|
|
+ return booleans;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 读拆包机4#各部件状态
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean[] readUnpacking04() {
|
|
|
+ Number number = read(REGISTER_CODE_131.getSlaveId(), REGISTER_CODE_131.getOffset());
|
|
|
+ boolean[] booleans = ConvertUtil.convertToBooleans(number);
|
|
|
+ return booleans;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 读拆包机5#各部件状态
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean[] readUnpacking05() {
|
|
|
+ Number number = read(REGISTER_CODE_132.getSlaveId(), REGISTER_CODE_132.getOffset());
|
|
|
+ boolean[] booleans = ConvertUtil.convertToBooleans(number);
|
|
|
+ return booleans;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 读皮带运行状态
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean[] readBelt() {
|
|
|
+ Number number = read(REGISTER_CODE_133.getSlaveId(), REGISTER_CODE_133.getOffset());
|
|
|
+ boolean[] booleans = ConvertUtil.convertToBooleans(number);
|
|
|
+ return booleans;
|
|
|
+ }
|
|
|
+
|
|
|
+// /**
|
|
|
+// * 拆包机1#启动
|
|
|
+// * @return
|
|
|
+// */
|
|
|
+// public Boolean writeUnpacking01() {
|
|
|
+//
|
|
|
+// return write(REGISTER_CODE_134.getSlaveId(), REGISTER_CODE_134.getOffset(), REGISTER_CODE_134.getValue1());
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 写拆包机2#各部件状态
|
|
|
+// * @return
|
|
|
+// */
|
|
|
+// public Boolean writeUnpacking02() {
|
|
|
+// return write(REGISTER_CODE_135.getSlaveId(), REGISTER_CODE_135.getOffset(), REGISTER_CODE_135.getValue1());
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 写拆包机3#各部件状态
|
|
|
+// * @return
|
|
|
+// */
|
|
|
+// public Boolean writeUnpacking03() {
|
|
|
+// return write(REGISTER_CODE_136.getSlaveId(), REGISTER_CODE_136.getOffset(), REGISTER_CODE_136.getValue1());
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 写拆包机4#各部件状态
|
|
|
+// * @return
|
|
|
+// */
|
|
|
+// public Boolean writeUnpacking04() {
|
|
|
+// return write(REGISTER_CODE_137.getSlaveId(), REGISTER_CODE_137.getOffset(), REGISTER_CODE_137.getValue1());
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 写拆包机5#各部件状态
|
|
|
+// * @return
|
|
|
+// */
|
|
|
+// public Boolean writeUnpacking05() {
|
|
|
+// return write(REGISTER_CODE_138.getSlaveId(), REGISTER_CODE_138.getOffset(), REGISTER_CODE_138.getValue1());
|
|
|
+// }
|
|
|
+//
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 写皮带状态
|
|
|
+// * @return
|
|
|
+// */
|
|
|
+// public Boolean writeBlet() {
|
|
|
+// return write(REGISTER_CODE_139.getSlaveId(), REGISTER_CODE_139.getOffset(), REGISTER_CODE_139.getValue1());
|
|
|
+// }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 读拆包机就地/远程 1# 2# 3#拆包机启动
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean[] readUnpackingRemoteInPlace01() {
|
|
|
+ Number number = read(REGISTER_CODE_140.getSlaveId(), REGISTER_CODE_140.getOffset());
|
|
|
+ boolean[] booleans = ConvertUtil.convertToBooleans(number);
|
|
|
+ return booleans;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 写拆包机就地/远程 1# 2# 3#拆包机启动
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Boolean writeUnpackingRemoteInPlace01(int value) {
|
|
|
+ return write(REGISTER_CODE_140.getSlaveId(), REGISTER_CODE_140.getOffset(), value);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 读4# 5#拆包机启动 1# 2# 3# 4# 5#拆包机停止
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean[] readUnpackingRemoteInPlace02() {
|
|
|
+ Number number = read(REGISTER_CODE_141.getSlaveId(), REGISTER_CODE_141.getOffset());
|
|
|
+ boolean[] booleans = ConvertUtil.convertToBooleans(number);
|
|
|
+ return booleans;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 写 4# 5#拆包机启动 1# 2# 3# 4# 5#拆包机停止
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Boolean writeUnpackingRemoteInPlace02(int value) {
|
|
|
+ return write(REGISTER_CODE_141.getSlaveId(), REGISTER_CODE_141.getOffset(), value);
|
|
|
+ }
|
|
|
+// public boolean[] read1(){
|
|
|
+// return read(1, 128, 1);
|
|
|
+// }
|
|
|
+// public boolean write1(){
|
|
|
+// return write(1, 128, 7);
|
|
|
+// }
|
|
|
+ /**
|
|
|
+ * 读的方法
|
|
|
+ * @param slaveId
|
|
|
+ * @param offset
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private Number read (int slaveId,int offset) {
|
|
|
+ ModbusMasterUtil modbusMasterUtil = modbusTcpMasterTemplateSecond.getModbusMasterUtil();
|
|
|
+ Number number = modbusMasterUtil.readHoldingRegister(slaveId,offset,DATA_TYPE_WRAPPER.TWO_BYTE_INT_UNSIGNED);
|
|
|
+// boolean[] booleanData = readResponse.getBooleanData();
|
|
|
+// return booleanData;
|
|
|
+ return number;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 写的方法
|
|
|
+ * @param slaveId
|
|
|
+ * @param offset
|
|
|
+ * @param value
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private Boolean write(int slaveId,int offset,int value) {
|
|
|
+ ModbusMasterUtil modbusMasterUtil = modbusTcpMasterTemplateSecond.getModbusMasterUtil();
|
|
|
+ return modbusMasterUtil.writeHoldingRegisters(slaveId,offset,value);
|
|
|
+ }
|
|
|
}
|