private void ReadOpcUa() { string value = null; try { if (OpcUa.IsConnected) { var result = OpcUa.PLC_ReadValues(txt_node.Text.Trim()); lbl_result.Text = "结果:" + value; return; } lbl_result.Text = "结果:连接断开"; } catch (Exception ex) { lbl_result.Text = "结果:读取异常!原因:" + ex.Message; } }
private void PC_PLC_SignalExchange_Siemens(CancellationToken token, bool v) { DateTime x = DateTime.Now; while (!token.IsCancellationRequested) { #region 判断plc是否断线 if (!IsConnectPLC) { UpdateShowMessage("正在连接PLC……"); Task task1 = Task.Run(() => { ConnectPLCSiemens(); }); task1.Wait(); Thread.Sleep(3000); continue; } #endregion Thread.Sleep(1); #region 发送握手信号 if (IsHandshake) { if (IsStart) { IsOne = !IsOne; PLCPulse = IsOne ? 1 : 2; IsHandshake = false; bool back = false; try { back = PLCSiemens.PLC_WriteValues(PLCPulse.ToString(), null); } catch (Exception ex) { IsConnectPLC = false; UpdateShowMessage("握手信号异常,与PLC断开连接!"); } if (!back) { IsConnectPLC = false; PLCPulse = 0; } } else { PLCPulse = 0; } } #endregion #region 与PLC 交互 if (v) { try { #region 读取plc数据 var isRead = PLCSiemens.PLC_ReadValues(""); ReadTRG = ("1" == isRead) ? 1 : 0; if (1 != ReadTRG) { OldReadTRG = 0; } else { if (0 < ReadTRG - OldReadTRG) { //读取数据 ReadDataFromPLC(); } OldReadTRG = 1; } #endregion } catch (Exception ex) { UpdateShowMessage(string.Format("与plc交互异常:{0}!", ex.Message)); LogHelper.Fatal(string.Format("与plc交互异常:{0}!", ex.Message)); } } #endregion } }