У меня есть промышленный HMI, написанный третьей стороной на C ++, который связывается с 36 ПЛК GE через TCP / IP. HMI работает на двух разных машинах в одной комнате, подключенных к одному и тому же коммутатору. Один HMI работает на Windows Server 2003 32 бит. Другой работает на Windows 7 64 бит. Существует несколько ПЛК, к которым интерфейс Windows 7 не может подключиться. Все ПЛК нормально взаимодействуют в HMI Windows Server 2003. Я запустил Wireshark, чтобы посмотреть, что происходит.
После сброса сетевой карты ПЛК интерфейс ЧМИ Win7 и одна из неисправных баз отправят последовательность SYN / ACK. Как только HMI отправляет данные (PSH), PLC отвечает пакетом RST. С этого момента любой пакет SYN от Win7 HMI получает ответ RST. Я только что установил этот новый HMI вчера, и так было с тех пор. Этот HMI работает без проблем на других компьютерах Win7. Насколько я знаю, все ПЛК находятся на одном уровне аппаратного / микропрограммного обеспечения. Я точно знаю, что программное обеспечение на каждом из 36 ПЛК идентично.
Я в полной растерянности относительно того, что делать, чтобы устранить эту проблему дальше. Число подключений к ПЛК не увеличилось, так как этот новый компьютер, который я установил вчера, заменяет тот, который умер в начале недели. Кроме того, большинство других ПЛК взаимодействуют просто отлично, поэтому, похоже, это не проблема загрузки оборудования ПЛК. Код C ++ общается со всеми базами одинаково. Код просто хранит массив из 36 объектов ПЛК и просматривает их при обновлении информации. Кто-нибудь есть какие-либо идеи о том, что я могу сделать, чтобы устранить эту проблему дальше?