コード例 #1
0
        /// <summary>
        /// Otwiera połączenie ze sterownikiem PLC.
        /// </summary>
        /// <returns>Zwraca prawdę, jeśli udaje się nawiązać połączenie bez problemu.</returns>
        public override bool OpenConnection()
        {
            if (plc == null)
            {
                throw new InvalidOperationException("PLC nie został zainicjalizowany!");
            }
            ErrorCode error = plc.LastErrorCode;
            int       i     = 0;

            establishingConnection = true;
            timer.Stop();
            lock (plc)
            {
                do
                {
                    plc.ClearLastError();                                                           //Czyszczenie bufora z ostatniego błędu połączenia
                    if (plc.IsConnected)                                                            //Jeśli połączenie jest już otwarte, wówczas następuje jego zamknięcie i ponowne otwarcie
                    {
                        plc.Close();
                    }

                    error = plc.Open();
                    if (error != ErrorCode.NoError)
                    {
                        System.Threading.Thread.Sleep(20);
                        GlobalClass.WriteCommentary($"Próba połączenia numer: {i}");
                    }
                    i++;
                } while (error != ErrorCode.NoError && i < 50);
            }

            establishingConnection = false;
            timer.Start();

            return(error == ErrorCode.NoError);                                              //Jeśli kod błędu wynosi o (NoError), wówczas zwracana jest PRAWDA
        }