УкраїнськаEnglishmRussian
Вход/Новый
В теме нет новых постов

Открытие последовательного порта


Автор Сообщение
Сообщение создано: 24. 10. 2015 [09:06]
dorn
Максим Алексеев
Создатель темы
Зарегистрирован(а) с: 24.10.2015
Сообщения: 17
Здравствуйте.
При работе с последовательным портом по ModBus через moxa NPort происходит следующее

Порт открывается, выходной транспорт запускается и начинается опрос, исходящий трафик растёт, а входящий стоит на 0. Т.е. ответа нет.

Однако если я при этом пытаюсь запустить putty на этом порту, то в окне putty отображается некий ответ, затем в openscada происходит ошибка подключения.
После завершения сеанса putty транспорт пытается восстановить соединение, и ему это удаётся.
Зато после всех этих событий далее происходит нормальный опрос с ответами.

Не могли бы вы подсказать, почему транспорт не устанавливает полноценную сессию сразу?
Сообщение создано: 24. 10. 2015 [12:05]
fido_max
Maxim Kochetkov
Contributor
Зарегистрирован(а) с: 28.10.2010
Сообщения: 129
Гораздо проще и удобнее перевести NPort в режим TcpServer, настроить скорость/четность на его последовательном порту, а из скады подключаться не через последовательный порт, а через сокет. И никакие драйвера не нужны.
Сообщение создано: 24. 10. 2015 [13:54]
dorn
Максим Алексеев
Создатель темы
Зарегистрирован(а) с: 24.10.2015
Сообщения: 17
Спасибо за быстрый ответ.
Перевёл NPort в режим TCP Server. Транспорт запустился.
Во вкладке "Запрос" посылаю тестовую строку "01 04 00 01 00 01 60 0A". В ответ приходит "01 04 02 00 00 B9 30".
Во вкладке "Транспорт" видно, как изменился трафик на вход и выход.
Параметры последовательного порта выставил 115200,N,8,1,XON/XOFF, т.е. те же, какие получались при работе в Real COM mode.
Данные из контроллера пошли..

[Сообщение редактировалось 2 раз(а), в последний раз 24.10.2015 в 14:25.]
Сообщение создано: 24. 10. 2015 [14:50]
dorn
Максим Алексеев
Создатель темы
Зарегистрирован(а) с: 24.10.2015
Сообщения: 17
Теперь появилась другая проблема.
В контроллере сейчас 2 элемента, в каждом по 1 тегу. Чтение происходит раз в 1 сек.
В логах ModBus "Отчёт" видно, что запрос разбивается на 2 части и каждая часть обрабатывается по 1 сек. Далее ожидание между запросами - 1 сек. Итого на один запрос 3 сек.

Откуда могут взяться такие задержки?

Когда интервал равен 1e-3, то запрос длится 2с - по 1с на каждую часть.
Где-то ещё могут быть настройки?
На всякий случай - в контроллере сейчас стоит Modbus протокол RTU. На TCP/IP выдаёт ошибку подключения.
Сообщение создано: 24. 10. 2015 [20:42]
fido_max
Maxim Kochetkov
Contributor
Зарегистрирован(а) с: 28.10.2010
Сообщения: 129
Таймауты крутить в транспорте (сокет) и в NPort. NPort есть только на работе, попаду туда только в понедельник, поэтому что именно крутить - не скажу. Там есть что-то вроде FIFO буфера - его надо выключить, т.к. он мешает в случае протокола ModBus и еще есть параметр (задержка), который определяет время, в течении которого NPort собирает пакет для отправки, вот его надо в минимум поставить (но не 0).
Сообщение создано: 24. 10. 2015 [21:26]
dorn
Максим Алексеев
Создатель темы
Зарегистрирован(а) с: 24.10.2015
Сообщения: 17
Спасибо огромное.
Поставил в выходном транспорте временные интервалы 5:0.1, и сразу всё ожило.
Я думал, что туда только целые значения можно вписывать (по аналогии с мс).

PS: невероятно удобна оказалась функция NPort в режиме TCP Сервера на несколько подключений.
Ещё раз спасибо.
Сообщение создано: 26. 10. 2015 [09:14]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"dorn" wrote:

Поставил в выходном транспорте временные интервалы 5:0.1, и сразу всё ожило.
Я думал, что туда только целые значения можно вписывать (по аналогии с мс).

Подсказки читать нужно!

Learn, learn and learn better than work, work and work.



6970