Стартовая страница › Форумы › Rapid SCADA на Linux-контроллерах и Raspberry Pi › Драйвер ИВТМ на Raspberry
Помечено: ивтм linux
- В этой теме 49 ответов, 4 участника, последнее обновление 3 года, 10 месяцев назад сделано Mikhail.
-
АвторСообщения
-
11.06.2020 в 10:07 #16407qweqweqweУчастник
Вопрос к разработчикам:
Размер кольцевого буфера принимаемых данных устанавливается файлом драйвера КП или вычисляется динамически?11.06.2020 в 10:09 #16408manjey73УчастникПочему начало ответа обрезается ? в Терминале есть настройка паузы перед получением ответа ? пробовать уменьшать delay в опросе КП до минимума…
В настройках самого датчика есть возможность что либо корректировать ? пауза перед ответом например ?
11.06.2020 в 10:32 #16409manjey73УчастникСудя по логам, у вас в RS идет четкий прием конца строк ответов, проглатывается начало.
Увеличьте период опроса с 5 сек до 20 сек или больше.
уменьшите timeout до разумных пределов, чтобы весь ответ мог поместиться. delay уменьшите до минимума насколько возможно.з.ы. вообще ощущение, что в Linux не успевает порт переключиться на прием как вариант. Что у вас за Raspberrry ? Что на ней крутится вообще ?
- Этот ответ был изменен 3 года, 10 месяцев назад от manjey73.
11.06.2020 в 11:10 #16411qweqweqweУчастникВ настройках самого датчика есть возможность что либо корректировать ? пауза перед ответом например ?
В настройках прибора можно изменить только адрес и скорость обмена. в описании протокола:
Время ожидания ответа не более 300 мс
Увеличьте период опроса с 5 сек до 20 сек или больше.
уменьшите timeout до разумных пределов, чтобы весь ответ мог поместиться. delay уменьшите до минимума насколько возможно.2020-06-11 08:50:07 Stop communication line 3 "USB>RS485" -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- 2020-06-11 08:50:23 Initialize communication line 3 "USB>RS485" 2020-06-11 08:50:24 Start communication line 3 "USB>RS485" 2020-06-11 08:50:24 Open serial port /dev/ttyUSB0 2020-06-11 08:50:24 Communication session with the Device 4 "IVTM-3", type: KpIvtm7M, address: 4 Запрос текущих данных Send: $0004RR000008B4 Receive: 1A2EC1C4225 Error: invalid checksum! 2020-06-11 08:50:30 Communication session with the Device 4 "IVTM-3", type: KpIvtm7M, address: 4 Запрос текущих данных Send: $0004RR000008B4 Receive: 15DCD1C4209 Error: invalid checksum! 2020-06-11 08:50:40 Communication session with the Device 4 "IVTM-3", type: KpIvtm7M, address: 4 Запрос текущих данных Send: $0004RR000008B4 Receive: 19AA61C420C Error: invalid checksum! 2020-06-11 08:50:50 Communication session with the Device 4 "IVTM-3", type: KpIvtm7M, address: 4 Запрос текущих данных Send: $0004RR000008B4 Receive: 41A2631C42FC Error: invalid checksum! 2020-06-11 08:51:00 Communication session with the Device 4 "IVTM-3", type: KpIvtm7M, address: 4 Запрос текущих данных Send: $0004RR000008B4 Receive: 4104581C42EF Error: invalid checksum! 2020-06-11 08:51:10 Communication session with the Device 4 "IVTM-3", type: KpIvtm7M, address: 4 Запрос текущих данных Send: $0004RR000008B4 Receive: FC Error: incorrect response length! 2020-06-11 08:51:20 Communication session with the Device 4 "IVTM-3", type: KpIvtm7M, address: 4 Запрос текущих данных Send: $0004RR000008B4 Receive: FA Error: incorrect response length! 2020-06-11 08:51:30 Communication session with the Device 4 "IVTM-3", type: KpIvtm7M, address: 4 Запрос текущих данных Send: $0004RR000008B4 Receive: 34 Error: incorrect response length! 2020-06-11 08:51:40 Communication session with the Device 4 "IVTM-3", type: KpIvtm7M, address: 4 Запрос текущих данных Send: $0004RR000008B4 Receive: 3D Error: incorrect response length! 2020-06-11 08:51:50 Communication session with the Device 4 "IVTM-3", type: KpIvtm7M, address: 4 Запрос текущих данных Send: $0004RR000008B4 Receive: 21B4203 Error: incorrect response length! 2020-06-11 08:52:00 Communication session with the Device 4 "IVTM-3", type: KpIvtm7M, address: 4 Запрос текущих данных Send: $0004RR000008B4 Receive: 51B420E Error: incorrect response length! 2020-06-11 08:52:10 Communication session with the Device 4 "IVTM-3", type: KpIvtm7M, address: 4 Запрос текущих данных Send: $0004RR000008B4 Receive: B1A4245 Error: incorrect response length! 2020-06-11 08:52:20 Communication session with the Device 4 "IVTM-3", type: KpIvtm7M, address: 4 Запрос текущих данных Send: $0004RR000008B4 Receive: E1A4218 Error: incorrect response length! 2020-06-11 08:52:30 Communication session with the Device 4 "IVTM-3", type: KpIvtm7M, address: 4 Запрос текущих данных Send: $0004RR000008B4 Receive: 41364A1B4205 Error: invalid checksum! 2020-06-11 08:52:40 Communication session with the Device 4 "IVTM-3", type: KpIvtm7M, address: 4 Запрос текущих данных Send: $0004RR000008B4 Receive: 4172F81A421B Error: invalid checksum! 2020-06-11 08:52:50 Communication session with the Device 4 "IVTM-3", type: KpIvtm7M, address: 4 Запрос текущих данных Send: $0004RR000008B4 Receive: 141A25E1A4218 Error: invalid checksum! 2020-06-11 08:52:58 Close serial port /dev/ttyUSB0 2020-06-11 08:52:58 Stop communication line 3 "USB>RS485" --------------------------------------------------------------------------------
$0004RR000008B4 !0004RRB55BB241A2EC1C4225 $0004RR000008B4 !0004RR0841B2415DCD1C4209 $0004RR000008B4 !0004RR293AB2419AA61C420C $0004RR000008B4 !0004RR962CB241A2631C42FC $0004RR000008B4 !0004RR851DB24104581C42EF $0004RR000008B4 !0004RR8310B2413F5F1C42FC $0004RR000008B4 !0004RR7F07B241044B1C42FA $0004RR000008B4 !0004RRDA03B241AEFE1B4234 $0004RR000008B4 !0004RR5FFBB141D7DA1B423D $0004RR000008B4 !0004RR37F6B141E6621B4203 $0004RR000008B4 !0004RR45F5B141CF251B420E $0004RR000008B4 !0004RRADF2B141CDFB1A4245 $0004RR000008B4 !0004RR19F1B141A2FE1A4218 $0004RR000008B4 !0004RR4CF0B141364A1B4205 $0004RR000008B4 !0004RR97EFB14172F81A421B $0004RR000008B4 !0004RR61EFB141A25E1A4218
з.ы. вообще ощущение, что в Linux не успевает порт переключиться на прием как вариант. Что у вас за Raspberrry ? Что на ней крутится вообще ?
Raspberry 4b, чистый образ Raspbian без gui, установлена только Scada.
И такая ситуация проявляется как на аппаратном порту платы через MAX13487E, так и через USB преобразователь.В аппаратном обеспечении проблем не наблюдается, данные приходят:
pi@raspberrypi:~ $ cat /dev/ttyUSB0 !0004RRBEB9AF41F604154223
11.06.2020 в 11:23 #16412manjey73Участникхм, очень интересно…. подозреваю что драйвер портов Raspberry мешает как то.
на Pi3 никогда не наблюдал подобного при работе через COM порты, чтобы не читал начало ответа.
Проверьте, вы на Windows отключили опрос ? вообще попытки опроса к этим же портам есть ? а то я тут через Ethernet — RS485 забыл отключить опрос. Пока был дома, адрес был недоступен, а на работе завелось и у меня шли ошибки опроса по порту с Raspberry.
В общем убедиться, что к этому же устройству нет попыток подключения.
- Этот ответ был изменен 3 года, 10 месяцев назад от manjey73.
11.06.2020 в 18:05 #16419MikhailМодераторРазмер кольцевого буфера принимаемых данных устанавливается файлом драйвера КП или вычисляется динамически?
Для приёма текущих данных используется метод SerialPort.ReadLine, который использует свой встроенный буфер.
Т.к. протокол Modbus использует бинарную кодировку, то этот метод в драйвере Modbus не используется.
Похоже, что метод SerialPort.ReadLine работает некорректно в данном случае. Можем на следующей неделе провести эксперименты. Вы можете вместо ИВТМ подключить Moxa и с компьютера отправлять строки на Raspberry, чтобы более точно определить, что и как обрезается?
Экспериментировать нужно на драйвере KpTest, он принимает любой входящий текст. Сделайте пробный проект и присылайте сюда логи.
11.06.2020 в 18:58 #16420qweqweqweУчастникВы можете вместо ИВТМ подключить Moxa и с компьютера отправлять строки на Raspberry, чтобы более точно определить, что и как обрезается?
Да, конечно могу. В понедельник продолжу.
15.06.2020 в 09:30 #16433qweqweqweУчастникСобрал драйвер, загрузил, работает. Какие дальнейшие действия?
15.06.2020 в 10:11 #16434qweqweqweУчастникНа Raspberry
-------------------------------------------------------------------------------- 2020-06-15 08:09:04 Initialize communication line 3 "USB>RS485" 2020-06-15 08:09:04 Start communication line 3 "USB>RS485" 2020-06-15 08:09:04 Open serial port /dev/ttyUSB0 2020-06-15 08:09:04 Communication session with the Device 6 "TestKP", type: KpTest Send: test 0 Write duration: 0.004 Receive: no data Read duration: 1.003 2020-06-15 08:09:11 Communication session with the Device 6 "TestKP", type: KpTest Send: test 0 Write duration: 0.000 Receive: no data Read duration: 1.009 2020-06-15 08:09:17 Communication session with the Device 6 "TestKP", type: KpTest Send: test 0 Write duration: 0.000 Receive: no data Read duration: 1.001
На Windows
2020-06-15 10:10:07 Сеанс связи с КП 2 "TEST", тип: KpTest Отправка (7): test 0<0D> Write duration: 0.000 Приём: test 0 Read duration: 1.020 2020-06-15 10:10:14 Сеанс связи с КП 2 "TEST", тип: KpTest Отправка (7): test 0<0D> Write duration: 0.000 Приём: test 0 Read duration: 1.017 2020-06-15 10:10:20 Сеанс связи с КП 2 "TEST", тип: KpTest Отправка (7): test 0<0D> Write duration: 0.000 Приём: test 0 Read duration: 1.011 2020-06-15 10:10:26 Сеанс связи с КП 2 "TEST", тип: KpTest Отправка (7): test 0<0D> Write duration: 0.000 Приём: test 0 Read duration: 1.025 2020-06-15 10:10:33 Завершение работы линии связи 2 "MOXA>RS485" --------------------------------------------------------------------------------
15.06.2020 в 10:39 #16435qweqweqweУчастникПопробовали поставить костыль в SerialConnection.cs :
string line; /*try { line = SerialPort.ReadLine().Trim(); } catch (TimeoutException) { line = ""; }*/ char[] char_line = new char[1024]; SerialPort.Read(char_line, 0, 1024); line = char_line.ToString().Trim();
Не помогло, в логах Timeout.
15.06.2020 в 13:31 #16436manjey73Участникя подозреваю, что в Raspberry порт занимается все таки чем-то. какой-то механизм системы именно для указанного Михаилом режима работы порта.
15.06.2020 в 13:39 #16437manjey73Участникpi@raspberrypi:~ $ cat /dev/ttyUSB0
Когда вы даете команду cat и получаете чистый ответ из порта говорит о том, что какие-то механизмы в Linux для чтения порта запущены. Весь вопрос в том, какие ?
У меня была похожая ситуация с чтением датчика 1Wire, я не смог добиться его чтения, пришлось в cron запихивать чтение в файл через cat и уже читать файл. Возможно тут похожая ситуация.
15.06.2020 в 13:45 #16439qweqweqweУчастникКогда вы даете команду cat и получаете чистый ответ из порта говорит о том, что какие-то механизмы в Linux для чтения порта запущены. Весь вопрос в том, какие ?
С портом всё в порядке, это точно. Без вариантов. Обмен с датчиками по протоколу Modbus работает без нареканий. Проблема при обмене через текстовый протокол именно через RapidScada. При отправке команд и получении ответа через терминал ошибок нет.
15.06.2020 в 13:55 #16440manjey73УчастникHave shell and kernel messages on the serial connection been disabled with the raspi-config tool to prevent the kernel from using the serial port? (sudo raspi-config, Advanced-Options, Serial, No)
Похожая проблема у человека была на nodejs
https://github.com/serialport/node-serialport/issues/715через cat работало а в nodejs нет
Вам же Михаил написал, что в другом режиме работы порта проблем нет, и не только Modbus, но и на других протоколах.
выключите поддержку порта как описано вышеу меня Raspberry xbnftn Меркурий, Энергомеру и другое оборудование, но получается не через ReadLine
- Этот ответ был изменен 3 года, 10 месяцев назад от manjey73.
15.06.2020 в 14:48 #16442qweqweqweУчастниквыключите поддержку порта как описано выше
Выключил при первоначальной настройке.
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.