Работает только TwinCAT 3 ADS (без XAR)
У меня есть работающий проект C, который взаимодействует с локальными или удаленными системами TwinCAT 3 с помощью ADS C API ( онлайн-примеры тоже хорошо работают).
Однако сейчас мы пытаемся развернуть программу на другом компьютере, на котором установлена только TwinCAT ADS (как описано здесь в разделе "Установка только TwinCAT 3 ADS"). Мы добавили маршруты на обеих машинах. Чтобы упростить тестирование, мы даже полностью отключили брандмауэр как на компьютере ADS, так и на компьютере времени выполнения. Но я все еще не могу вернуть данные в приложение.
Ошибка, которую я получаю от ADS, составляет 10051, что в основном является ошибкой Winsock:
Сеть недоступна. Была предпринята попытка операции с сокетом в недоступной сети. Обычно это означает, что локальное программное обеспечение не знает маршрута для достижения удаленного хоста.
Тем не менее, я уверен, что маршруты действительны. Они были добавлены с помощью широковещательного поиска, и я вижу в Wireshark, что обе системы постоянно обмениваются запросами ADS на чтение / запись (если я удаляю маршрут на любом из ПК, обмен останавливается).
Одна деталь состоит в том, что система только для ADS не находится в режиме запуска, то есть я не могу перевести ее в "Пуск", хотя это, возможно, нормально, поскольку там нет времени выполнения?
Мои вопросы:
Нужно ли переключать систему только в ADS в режим запуска, используя иконку в трее ("Пуск / Перезагрузка")? Т.е. эта операция тоже влияет на маршрутизаторы сообщений? Потому что, если я пытаюсь сделать это в системе ADS, я получаю сообщение об ошибке, поэтому я не уверен, что это происходит из-за того, что на этом компьютере нет среды выполнения или если есть ошибка. Средство просмотра событий показывает ошибку: "Ошибка запуска сервера TCRTSOBJECTS. Системе не удается найти указанный путь" без дополнительных подсказок.
Существуют ли какие-либо дополнительные настройки в системе только для ADS, которые необходимо выполнить, кроме настройки маршрутов?
1 ответ
Я могу ответить на этот вопрос должным образом - никакая система только ADS не должна быть (и не может быть) в RUN.
Вы уверены, что соединение было установлено с обоих концов? иногда одному серверу будет зарегистрировано соединение, другому - нет.
Другая вещь, которую нужно проверить, - есть ли у вас другие записи в списке маршрутов ADS с теми же IP-адресами или адресами ADS (я полагаю, ваш ПЛК разработчика может иметь несколько записей). Я видел, как это запуталось раньше, и мне пришлось удалить конфликтующие записи, прежде чем он будет работать.