//вызывается при появления флага ошибки в слове состояния private void ErrorHandler() { PLC.ReadDword(110, out uint ErrorWord); if (GetBitState(ErrorWord, 0)) { addAlarm("Нажата кнопка аварийной остановки"); } if (GetBitState(ErrorWord, 1)) { addAlarm("Одновременное включение контакторов"); } if (GetBitState(ErrorWord, 2)) { addAlarm("Попытка загрузки на занятый кран"); } if (GetBitState(ErrorWord, 3)) { addAlarm("Ячейка для установки ящика занята"); } if (GetBitState(ErrorWord, 4)) { addAlarm("Обнаружена помеха вертикальному перемещению крана"); } if (GetBitState(ErrorWord, 5)) { addAlarm("Ошибка преобразователя частоты №1"); } if (GetBitState(ErrorWord, 6)) { addAlarm("Ошибка преобразователя частоты №2"); } if (GetBitState(ErrorWord, 7)) { addAlarm("Попытка установить большой ящик не на первый этаж"); } if (GetBitState(ErrorWord, 8)) { addAlarm("Попытка установить средний ящик выше седьмого этажа"); } if (GetBitState(ErrorWord, 9)) { addAlarm("Ошибка перемещения платформы"); } if (GetBitState(ErrorWord, 10)) { addAlarm("Ошибка позиционирования крана"); } if (GetBitState(ErrorWord, 11)) { addAlarm("Помеха движению по горизонтали"); } if (GetBitState(ErrorWord, 12)) { addAlarm("Превышен максимальный вес груза"); } ErrorAppeared.Invoke(this, null); void addAlarm(string alarmText) { string str = DateTime.Now.ToString() + " : " + alarmText; App.Current.Dispatcher.Invoke(() => ErrorList.Add(str)); try { //записываем в лог File.AppendAllText("Errors.log", str + '\r' + '\n', System.Text.Encoding.Default); } catch (Exception ex) { MessageBox.Show(ex.Message, caption: "ErrorHandler"); } } }
protected virtual void OnErrorAppeared(CommonEventArgs args) { ErrorAppeared?.Invoke(this, args); }