Автор |
Повідомлення |
Повідомлення створено: 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.
|