/// <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 }