| | |
| | | public void read(StaProtocol staProtocol, SiemensS7Net siemensS7Net) { |
| | | |
| | | } |
| | | |
| | | public void writeSafe(StaProtocol staProtocol) throws InterruptedException { |
| | | if (staProtocol == null) { |
| | | log.warn("写入数据为空,跳过 [id:{}]", JSON.toJSONString(staProtocol)); |
| | |
| | | } |
| | | SafeSignal safeSignal = staProtocol.getSafeSignal(); |
| | | |
| | | int baseOffset = 0; |
| | | int baseOffset = 0; |
| | | short[] array = new short[6]; |
| | | array[0] = (short) 1; |
| | | array[1] = (short) 0; |
| | | array[2] = (short) 0; |
| | | array[5] = (short) 0; |
| | | if (safeSignal.getFlag()){ |
| | | if (safeSignal.getFlag()) { |
| | | array[3] = (short) 0; |
| | | array[4] =safeSignal.getValue(); |
| | | baseOffset = SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getOffset() + safeSignal.getIndex() * SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getByteLength(); |
| | | }else { |
| | | array[4] = safeSignal.getValue(); |
| | | baseOffset = SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getOffset() + safeSignal.getIndex() * SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getByteLength(); |
| | | } else { |
| | | array[3] = safeSignal.getValue(); |
| | | array[4] = (short) 0; |
| | | baseOffset = SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getOffset() +2 + safeSignal.getIndex() * SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getByteLength(); |
| | | baseOffset = SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getOffset() + 2 + safeSignal.getIndex() * SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getByteLength(); |
| | | } |
| | | String flagAddr = TaskField.TASK_NUMBER.getAddressPattern() + PlcConstant.ADDRESS_CONCATENATION |
| | | String flagAddr = SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getAddressPattern() + PlcConstant.ADDRESS_CONCATENATION |
| | | + baseOffset; |
| | | |
| | | // 任务下发重试机制 |
| | |
| | | staProtocol.getPlcId(), staProtocol.getSiteId(), writeCount, |
| | | writeResult.Message); |
| | | |
| | | if (writeCount < WRITE_RETRY_MAX) { |
| | | Thread.sleep(WRITE_RETRY_INTERVAL_MS); |
| | | } |
| | | } |
| | | |
| | | if (!success) { |
| | |
| | | OutputQueue.DEVP.offer(errorMsg); |
| | | News.error("SiemensDevp - 4 - 写入安全信号输送线站点数据失败。输送线plc编号={},站点数据={}", |
| | | staProtocol.getPlcId(), JSON.toJSON(staProtocol)); |
| | | log.error(errorMsg); |
| | | } |
| | | |
| | | } |