//protected Thread public VulcanizeDevice(IPort port, ISerialize serialize) : base(port, serialize) { try { lock (_port) { _port.Write(_serialize.Serialize(new ReadRandomCommand(eElementCode.M, 5 * 16))) .Read(out byte[] result); var res = _serialize.Deserialize <ReadRandomResult>(result); if (res.Code == ePlcResultCode.OK) { _option = (eVulcanizeOption)res.WordData; } } } catch (Exception ex) { Logger.ErrorInfo("VulcanizeDevice 读取状态", ex); } _isOnline = true; Reset(true); Thread.Sleep(1000); Reset(false); Update(); }
public override void Reset(bool force = false) { byte[] result; lock (_port) { _option = force ? Bit.Set(_option, eVulcanizeOption.Reset) : Bit.Clr(_option, eVulcanizeOption.Reset); _port.Write(_serialize.Serialize(new WriteRandomCommand(eElementCode.M, 5 * 16, (ushort)_option))); _port.Read(out result); } #if DEBUG var res = _serialize.Deserialize <WriteRandomResult>(result); Logger.LogInfo($"Vulcanize:Reset, code:{res.Code.ToString()}"); #endif }
/// <summary> /// 报警解除( /// </summary> /// <returns></returns> public IDevice AlarmRelease(bool enable = true) { byte[] result; lock (_port) { _option = enable ? Bit.Set(_option, eVulcanizeOption.AlarmRelease) : Bit.Clr(_option, eVulcanizeOption.AlarmRelease); _port.Write(_serialize.Serialize(new WriteRandomCommand(eElementCode.M, 5 * 16, (ushort)_option))); _port.Read(out result); } #if DEBUG var res = _serialize.Deserialize <WriteRandomResult>(result); Logger.LogInfo($"Vulcanize:AlarmRelease, code:{res.Code.ToString()}"); #endif return(this); }
public void ViceSync(object sender, byte[] args, eVulcanizeViceState state) { var cmd = _serialize.Serialize(new WriteCommand(eElementCode.D, 50, 24)) .Concat(args).ToArray(); lock (_port) { _port.Write(cmd) .Read(out byte[] result); var data = _serialize.Deserialize <PlcResultBase>(result); } lock (_port) { //硫化门已升 _option = (Bit.Tst(state, eVulcanizeViceState.VulcanizationDoorUpReady) ? Bit.Set(_option, eVulcanizeOption.VulcanizationDoorUpReady) : Bit.Clr(_option, eVulcanizeOption.VulcanizationDoorUpReady)); //出盘已准备 _option = (Bit.Tst(state, eVulcanizeViceState.OutDiscReady) ? Bit.Set(_option, eVulcanizeOption.OutDiscReady) : Bit.Clr(_option, eVulcanizeOption.OutDiscReady)); //硫化门已降 _option = (Bit.Tst(state, eVulcanizeViceState.VulcanizationDoorDownReady) ? Bit.Set(_option, eVulcanizeOption.VulcanizationDoorDownReady) : Bit.Clr(_option, eVulcanizeOption.VulcanizationDoorDownReady)); //出口到小车 _option = (Bit.Tst(state, eVulcanizeViceState.ExitToAGV) ? Bit.Set(_option, eVulcanizeOption.ExitToAGV) : Bit.Clr(_option, eVulcanizeOption.ExitToAGV)); //硫化到冷却已完成 _option = (Bit.Tst(state, eVulcanizeViceState.CoolerReady) ? Bit.Set(_option, eVulcanizeOption.CoolerReady) : Bit.Clr(_option, eVulcanizeOption.CoolerReady)); _port.Write(_serialize.Serialize(new WriteRandomCommand(eElementCode.M, 5 * 16, (ushort)_option))); _port.Read(out byte [] result); #if DEBUG var res = _serialize.Deserialize <WriteRandomResult>(result); Logger.LogInfo($"Vulcanize:ViceSync, code:{state.ToString()}"); Logger.LogInfo($"Vulcanize:ViceSync, code:{res.Code.ToString()}"); #endif } }