|
@@ -0,0 +1,186 @@
|
|
|
+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 lombok.extern.slf4j.Slf4j;
|
|
|
+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.beltLine.CONVEYOR_LINE_COMMAND.*;
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author Jwk
|
|
|
+ * @version 1.0
|
|
|
+ * @date 2023/5/6 9:41
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+public class beltLine {
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 输送线
|
|
|
+ */
|
|
|
+ @Autowired(required = false)
|
|
|
+ @Qualifier("modbusTcpMasterTemplateThird")
|
|
|
+ private ModbusTcpMasterTemplate modbusTcpMasterTemplateThird;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 输送线命令
|
|
|
+ */
|
|
|
+ public enum CONVEYOR_LINE_COMMAND {
|
|
|
+ //读心跳
|
|
|
+ READ_THE_HEART(1, 0, 1, 0),
|
|
|
+ //读模式
|
|
|
+ READ_THE_MODE(1, 1, 1, 0),
|
|
|
+ //读状态
|
|
|
+ READ_THE_STATE(1, 2, 1, 0),
|
|
|
+ //写心跳
|
|
|
+ WRITE_THE_HEART(1, 9, 1, 0),
|
|
|
+ //写模式
|
|
|
+ WRITE_THE_MODE(1, 10, 1, 0),
|
|
|
+ //写状态
|
|
|
+ WRITE_THE_STATE(1, 11, 1, 0),
|
|
|
+ //写通过方向
|
|
|
+ WRITE_THE_DIRECTION(1, 12, 1, 0);
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 从节点id
|
|
|
+ */
|
|
|
+ private int slaveId;
|
|
|
+ /**
|
|
|
+ * 地址
|
|
|
+ */
|
|
|
+ private int offset;
|
|
|
+ /**
|
|
|
+ * 读的长度
|
|
|
+ */
|
|
|
+ private int value;
|
|
|
+ /**
|
|
|
+ * 写的值
|
|
|
+ */
|
|
|
+ private int value1;
|
|
|
+
|
|
|
+ CONVEYOR_LINE_COMMAND(int slaveId, int offset, int value, int value1) {
|
|
|
+ this.slaveId = slaveId;
|
|
|
+ this.offset = offset;
|
|
|
+ this.value = value;
|
|
|
+ this.value1 = value1;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getSlaveId() {
|
|
|
+ return slaveId;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getOffset() {
|
|
|
+ return offset;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getValue() {
|
|
|
+ return value;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getValue1() {
|
|
|
+ return value1;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 读心跳
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Number ReadHeartbeat() {
|
|
|
+ Number number = read1( READ_THE_HEART.getSlaveId(),READ_THE_HEART.getOffset());
|
|
|
+ return number;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 读模式
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Number readMode() {
|
|
|
+ Number number = read1(READ_THE_MODE.getSlaveId(), READ_THE_MODE.getOffset());
|
|
|
+ return number;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 读状态
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Number readState() {
|
|
|
+ Number number = read1(READ_THE_STATE.getSlaveId(), READ_THE_STATE.getOffset());
|
|
|
+ return number;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 写通讯心跳
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Boolean writeHeartbeat(int i) {
|
|
|
+ return write(WRITE_THE_HEART.getSlaveId(), WRITE_THE_HEART.getOffset(), i);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 写模式
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Boolean writeMode(int i) {
|
|
|
+ return write(WRITE_THE_MODE.getSlaveId(), WRITE_THE_MODE.getOffset(), i);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 写状态
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Boolean writeState(int i) {
|
|
|
+ return write(WRITE_THE_STATE.getSlaveId(), WRITE_THE_STATE.getOffset(), i);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 写通过方向
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Boolean writeDirection(int i) {
|
|
|
+ return write(WRITE_THE_DIRECTION.getSlaveId(), WRITE_THE_DIRECTION.getOffset(), i);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 读的方法
|
|
|
+ *
|
|
|
+ * @param slaveId
|
|
|
+ * @param offset
|
|
|
+ * @param len
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private Number read1(int slaveId, int offset) {
|
|
|
+ ModbusMasterUtil modbusMasterUtil = modbusTcpMasterTemplateThird.getModbusMasterUtil();
|
|
|
+ Number number = modbusMasterUtil.readHoldingRegister(slaveId, offset, DATA_TYPE_WRAPPER.TWO_BYTE_INT_UNSIGNED);
|
|
|
+ return number;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 写的方法
|
|
|
+ *
|
|
|
+ * @param slaveId
|
|
|
+ * @param offset
|
|
|
+ * @param value
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private Boolean write(int slaveId, int offset, int value) {
|
|
|
+ ModbusMasterUtil modbusMasterUtil = modbusTcpMasterTemplateThird.getModbusMasterUtil();
|
|
|
+ return modbusMasterUtil.writeHoldingRegisters(slaveId, offset, value);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|