PL C ошибка связи с использованием библиотеки S7NetPlus в C# - PullRequest
0 голосов
/ 14 июля 2020

Я разрабатываю приложение windows Forms, которое будет взаимодействовать с Siemens S7-1200 PL C для реального доступа к данным в реальном времени из PL C и отправки данных в PL C. Связь и связь в реальном времени работают нормально. Но я сталкиваюсь с проблемами, когда

  1. Закрытие соединения с PL C.
  2. Ethe rnet кабель отключен
  3. PL C выключено

1. Я использовал метод Pl c .close () в событии form.closed. Но соединение не закрывается, вместо этого выдается ошибка отключения PL C.

2 & 3. Я ожидал того же поведения, но выдает другие ошибки. Когда кабель ethe rnet был отключен либо на стороне приложения, либо на стороне PL C, генерируется исключение сокета ethe rnet. Когда питание PL C было отключено, программа все еще пыталась записать данные в PL C в течение некоторого времени, а затем показала, что произошла ошибка сокета ethe rnet.

Может ли кто-нибудь помочь мне с как обрабатывать эти ошибки?

1 Ответ

0 голосов
/ 14 июля 2020

Как вы можете видеть в репозитории s7netplus на Github, класс PL C реализуется IDisposeable. В вашем вопросе нет кода, но если вы вызываете класс PL C со статусом использования:

using(Plc plc = new PLC(...) {
  // Do some actions
}

, метод Close () вызывается после окончания блока using (Dispose). Поэтому, если вы снова пытаетесь вызвать метод Close (), возникает исключение.

Если это возможно, укажите пример кода.

...