| | |
| | | package com.ld.igds.protocol.modbus.command; |
| | | |
| | | import com.ld.igds.common.CoreDeviceService; |
| | | import com.ld.igds.constant.Constant; |
| | | import com.ld.igds.constant.DeviceStatus; |
| | | import com.ld.igds.io.RemoteControlService; |
| | | import com.ld.igds.io.constant.OrderRespEnum; |
| | | import com.ld.igds.io.constant.ProtocolEnum; |
| | | import com.ld.igds.io.request.DeviceAutoControlRequest; |
| | | import com.ld.igds.io.request.DeviceControlRequest; |
| | | import com.ld.igds.io.request.ExeDevice; |
| | | import com.ld.igds.io.request.TempControlRequest; |
| | | import com.ld.igds.io.response.DeviceControlResponse; |
| | | import com.ld.igds.models.Device; |
| | | import com.ld.igds.protocol.modbus.ModbusUtil; |
| | | import com.ld.igds.protocol.modbus.data.ModbusTcp; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 当前协议针对标准Modbus-TCP协议 |
| | |
| | | |
| | | public static final String BEAN_ID = "modbus.remoteControlService"; |
| | | |
| | | @Resource |
| | | private CoreDeviceService deviceService; |
| | | @Resource |
| | | private ModbusUtil modbusUtil; |
| | | |
| | | @Override |
| | | public String getProtocol() { |
| | | return null; |
| | | return ProtocolEnum.MODBUS_TCP.getCode(); |
| | | } |
| | | |
| | | @Override |
| | | public DeviceControlResponse deviceControl(DeviceControlRequest request) { |
| | | return null; |
| | | List<ExeDevice> deviceList = request.getDeviceList(); |
| | | |
| | | if (null == deviceList || deviceList.isEmpty()) { |
| | | return new DeviceControlResponse(OrderRespEnum.ORDER_ERROR.getCode(), "没有需要执行的设备"); |
| | | } |
| | | |
| | | |
| | | try { |
| | | |
| | | |
| | | Device device; |
| | | ModbusTcp modbusTcp; |
| | | String[] addr; |
| | | String temp; |
| | | int addrExe = 65535; |
| | | for (ExeDevice exeDevice : deviceList) { |
| | | device = deviceService.getCacheDeviceById(exeDevice.getCompanyId(), exeDevice.getId()); |
| | | |
| | | if (null == device) continue; |
| | | |
| | | if (null == device.getModbus()) continue; |
| | | |
| | | modbusTcp = new ModbusTcp(); |
| | | modbusTcp.setIp(request.getIp()); |
| | | modbusTcp.setPort(request.getPort()); |
| | | modbusTcp.setDeviceId(device.getId()); |
| | | modbusTcp.setSerId(request.getSerId()); |
| | | |
| | | //modbus规则:开地址-关地址-停地址-开到位-关到位-开故障-关故障,无地址用N代替 |
| | | addr = device.getModbus().split("-"); |
| | | temp = addr[0]; |
| | | if (!Constant.YN_N.equals(temp)) modbusTcp.setAddrOpen(temp); |
| | | temp = addr[1]; |
| | | if (!Constant.YN_N.equals(temp)) modbusTcp.setAddrClose(temp); |
| | | temp = addr[2]; |
| | | if (!Constant.YN_N.equals(temp)) modbusTcp.setAddrStop(temp); |
| | | temp = addr[3]; |
| | | if (!Constant.YN_N.equals(temp)) modbusTcp.setAddrOpenEnd(temp); |
| | | temp = addr[4]; |
| | | if (!Constant.YN_N.equals(temp)) modbusTcp.setAddrCloseEnd(temp); |
| | | temp = addr[5]; |
| | | if (!Constant.YN_N.equals(temp)) modbusTcp.setAddrOpenError(temp); |
| | | temp = addr[6]; |
| | | if (!Constant.YN_N.equals(temp)) modbusTcp.setAddrCloseError(temp); |
| | | |
| | | |
| | | //根据设备目标目标状态,选择需要执行的通道 |
| | | if (DeviceStatus.CLOSE.getCode().equals(device.getTargetStatus())) { |
| | | addrExe = Integer.valueOf(modbusTcp.getAddrClose()); |
| | | } |
| | | |
| | | if(DeviceStatus.OPEN.getCode().equals(device.getTargetStatus())){ |
| | | addrExe = Integer.valueOf(modbusTcp.getAddrOpen()); |
| | | } |
| | | |
| | | |
| | | //TODO 其他状态待定 |
| | | |
| | | //根据设备目标状态,调用MODBUS执行 |
| | | modbusUtil.writeCoil(modbusTcp.getIp(), modbusTcp.getPort(),addrExe, true); |
| | | |
| | | } |
| | | } catch (Exception e) { |
| | | |
| | | } |
| | | |
| | | return new DeviceControlResponse(OrderRespEnum.ORDER_SUCCESS); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public DeviceControlResponse closeAll(DeviceControlRequest request) { |
| | |
| | | |
| | | @Override |
| | | public DeviceControlResponse airAutoControl(DeviceAutoControlRequest request) { |
| | | |
| | | |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public DeviceControlResponse n2AutoControl(DeviceAutoControlRequest request) { |
| | | |
| | | return null; |
| | | } |
| | | } |