using JSMachine.WMS.Infrastructure.Helper; using JSMachine.WMS.PLC.ModbusImpl.Elevator.Enums; using JSMachine.WMS.PLC.ModbusImpl.Elevator.Model; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; namespace JSMachine.WMS.PLC.ModbusImpl.Elevator.ModbusIO.Read { public static class ElevatorStatusRead { /// /// 读取所有提升机状态 /// /// public static async Task> ReadAllElevatorStatus() { ElevatorPlcStatus elevatorStatusOne = await ReadElevatorStatus(1); ElevatorPlcStatus elevatorStatusTwo = await ReadElevatorStatus(2); elevatorStatusOne ??= new() { ElevatorNo = 1 }; elevatorStatusTwo ??= new() { ElevatorNo = 2 }; return [elevatorStatusOne, elevatorStatusTwo]; } /// /// 读取指定提升机状态 /// /// /// public static async Task ReadElevatorStatus(int elevatorNo) { IModbusEngine modbusEngine = PLCManager.GetPLC(elevatorNo); if (modbusEngine == null) return null; ushort[] data = await modbusEngine.ReadUshortsAsync(1, 0, 20); if (data == null) { return null; } ElevatorPlcStatus elevatorStatus = new() { ElevatorNo = elevatorNo, StockInPutdownChanelOne = data[2] == 1, StockInPutdownChanelTwo = data[0] == 1, StockInPickupChannelOne = data[7] == 1, StockInPickupChannelTwo = data[5] == 1, StockOutPutdownChanelOne = data[6] == 1, StockOutPutdownChanelTwo = data[4] == 1, StockOutPickupChanelOne = data[3] == 1, StockOutPickupChanelTwo = data[1] == 1, }; return elevatorStatus; } } }