예제 #1
0
        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;
            }
        }
예제 #2
0
        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
            }
        }