Юрий_66 вас не удивляет, что в ответе CRC в правильной последовательности, а в запросе в неправильной ПРИ ОДИНАКОВОМ КОДЕ РАСЧЕТА?
я про документацию, которую составляли люди... Адрес устройства у вас 11, что вы мучаете OPC сервер и все остальное?
Юрий_66 вас не удивляет, что в ответе CRC в правильной последовательности, а в запросе в неправильной ПРИ ОДИНАКОВОМ КОДЕ РАСЧЕТА?
я про документацию, которую составляли люди... Адрес устройства у вас 11, что вы мучаете OPC сервер и все остальное?
Теоретически - понятно. А практически пока не получается реализовать.
С КТР-121 всё получилось нормально стандартными средствами. КТР опрашивается и на СПК выводятся данные.
Всем спасибо за ответы. Буду разбираться.
Пример функции перестановки байт в регистре, точно так же можно например, переставить регистры (байты) в переменной FLOAT (только тип переменных поменять)
Код:FUNCTION Sw_Byte : WORD //выход функции с переставленными Byte
VAR_INPUT
wIn : WORD ; //входная переменная типа Word
END_VAR
VAR
pInput : POINTER TO ARRAY[0..1] OF BYTE; // вспомогательные переменные
pOutput : POINTER TO ARRAY[0..1] OF BYTE;
END_VAR
____________________________________________________________________________
pInput :=ADR(wIn);
pOutput := ADR( Sw_Byte);
pOutput^[ 0 ] := pInput^[ 1 ]; // Перестановка BYTE местами
pOutput^[ 1 ] := pInput^[ 0 ];
Так у него проблема не в том, что данные перевернуты, а в то, что перевернуты данные в самом протоколе в CRC. А это внутренний механизм самого протокола, и ТС просит показать, где в настройках это перевернуть, если это есть. А вы ему предлагаете функцию для переворачивания данных в слове. Как он её воткнет во внутренний протокол кодесиса?
Существует вероятность, что это опечатка или ТС ошибся, но тут 50 на 50.
Перевёрнутые байты в CRC стали Китайцы часто делать! Несколько раз уже это встречал: обычный Modbus, но CRC перевёрнуто!
Да ничего там на перевёрнуто, простая ошибка документации, все должно быть ровно.
Здравствуйте.
Столкнулся с проблемой, которую не понимаю как решать. Суть в следующем: Имеем СПК107 m01 + переферия из разных внешних модулей. Для организации обмена с SCADA добавил ModbusTCP_Slave_Device. Чтобы holding регистры и coils стали доступны для изменения из программы контроллера, устанавливаю галочку "Запись" в настройках компонента Modbus TCP Slave Device. При компиляции возникает ошибка -
"[ERROR] Internal error:System.IndexOutOfRangeException: Индекс находился вне границ массива. в _3S.CoDeSys.DeviceObject.DoubleAddressChecker.Chec kByte(Int64 lStartBit)................
Компиляция завершена -- 1 ошибок, 95 предупреждений : загрузка невозможна"
галочку "Запись" убираю, компиляция проходит без ошибок, но теряю возможность записыватьть в регистры со стороны slave-устройства. Как решить данную проблему? Спасибо заранее.
Простой вопрос к опытным программистам.
Поменять "слова", типа xSwapWord, можно только через "Функция SWAP_DATA" (раздел 5.8.5 "CODESYS V3.5 Настройка обмена по протоколу Modbus", версия 3.2) ?
Или есть другие инструменты?
Благодарю за оперативность!
То есть, с помощью Указателей можно "вырвать" 1 байт (по необходимости) из 4-х и его использовать.
Ну, Указатели для меня ещё пока "тёмный лес". Направление "пинка" понял, будем самообразоввываться.
Слышал про указатели в С,С++, говорят если поймёшь - сдал сопромат.
Добрый вечер. Чего то я немного подзатупил.
Имеется панель СПК110. На ней реализован интерфейс.
А так же есть внешняя панель стороннего производителя. Допустим на экране СПК110 создаю тумблер.
Привязываю к нему переменнную. И эту же переменную привязываю к модбасу (спк110 в роли слэйва).
В итоге управление возможно толькО с внешней панели. А тумблер на HMI СПК110 перестает работать. Причем даже если откинуть провода.
Подскажите как тут быть? Или надо как то разделять переменные?
Добрый день.
Чтобы иметь возможность изменять значения holding-регистров слэйва СПК из его программы - нужно в настройках слэйва установить галочку Запись.
https://youtu.be/Q3hqQlqcESo?t=5502
Галочка стоит. А как быть с дискретными параметрами.
Катушками? Из модбаса управления идет хорошо. Но оно как будто имеет приоритет над HMI СПК110.
Даже если физически провод отключен.
Но как только переменную отвязываю от модбаса-тумблер на HMI СПК начинает работать
Попробовал привязать к отдельному биту регистру временного хранения.
Ситуация та же(
В понедельник будет уже поздно) меня найдут где-то в лесу)
Всем доброго времени суток...
Дано: СПК110 М01, прошивка 2.4.... CODESYS V3.5 SP17 Patch 3 (Win 10)
Создаю новый проект (шаблон SPK1хх)
Добавляю (как в инструкции https://ftp.owen.ru/CoDeSys3/11_Docu...odbus_v3.2.pdf ) компонент Modbus COM
Затем добавляю к нему дочерний компонент Modbus Master, затем дочерний компонент Modbus Slave..
Дальше по инструкции надо создавать каналы, но в моем интерфейсе про каналы ничего нет :(
Подскажите пожалуйста, что я упустил из виду?
Заранее благодарствую...
ЗЫ: скриншот приложил...
Добрый день. У вас, видимо, при установке CODESYS не установились некоторые плагины.
Для начала предлагаю удалить его и установить заново по инструкции:
https://youtu.be/3KcJWZEVXCg?si=htMczkACHTd9JxOX
Евгений. Здравствуйте.
Не удается решить проблему....
контроллер ПЛК210, среда SP17. Выполняю опрос модулей котловой автоматики BCM 2.0 "Wiesberg" по протоколу ModBus RTU (RS485) стандартными средствами CoDeSys 3.5 без использования библиотек ОВЕН. Мастер сети ПЛК210.
Регистры с разрывами адресного пространства ( опрашиваются 27 регистров. (от 0000 до 0FA2)).
RS485-1 (порт - 5), 9600,N,8,1 _согласно настройкам BCM 2.0.
Рекомендуемые версии компонентов ModBus в соответствии с таблицей А.1 (CDSv3.5_Modbus стр. 191).
ModBusCom - 3.5.16.0
ModBus_Master_COM_Port - 3.5.17.0 (RTU, таймаут: 1000 ms, время между фреймами: 220 ms, Автоперезапуск соединения: включен)
Modbus_Slave_COM - 3.5.16.0 (таймаут ответа: 1000ms)
опрашиваются 27 регистров. (от 0000 до 0FA2)
Если выполнить перезагрузку ПЛК210 при работающих котлах, после перезапуска ПЛК, связи с котлами больше не будет. Приходится и котловые контроллер перезапускать... Странно, котловые модули работают в режиме Slave.
Причина перезагрузки контроллера:
- по каналу RS232 посредством компонента Modem (3.5.17.3001) подключен модем RX608-L4U, на скорости 9600.
Иногда модем "отваливается", лечится перезагрузкой ПЛК210. Причина "отвала" пока не установлена.
Просьба помочь советом.
Добрый день.
В понедельник утром свяжитесь со мной через телеграм (в подписи) и обеспечьте удаленный доступ по AnyDesk к ПК, с которого можно будет подключиться к ПЛК.
Евгений. Добрый вечер.
С прямой связью к ПЛК, проблема. ПЛК в столице на объекте, я в Ярославле...
Пока не поедут ребята на пусконаладку, такой возможности, как прямая связь с ПЛК, организовать не получится, к сожалению.
Вопрос: CoDeSys 3.5 Sp17 на ПК подключенного к ПЛК210, Вам не нужен?
Поеду не я. Другой человек. Проекта загруженного в ПЛК, у него нет. ПЛК, в случае правки проекта, шьёт с USB флэшки.
Есть наблюдение, не 100%, однако есть. Что модем начал отваливаться после того как в проекте был задействован интерфейс RS485-1 (5) для связи с котловой автоматикой Wiesberg... Не вижу здесь связи, если честно. Обмен с модемом управляется компонентом MODEM. Связь с котловой автоматикой штатной системой CoDeSys 3.5. Могут ли быть здесь, какие либо накладки?
Евгений. Еще вопрос.
Регистры котловой автоматики опрашиваются в режиме цикла: 100ms, Правильно ли это?
Вложение 73491
с учетом
ModBus_Master_COM_Port - 3.5.17.0 (RTU, таймаут: 1000 ms, время между фреймами: 220 ms, Автоперезапуск соединения: включен)
Modbus_Slave_COM - 3.5.16.0 (таймаут ответа: 1000ms)
Нужен.Цитата:
Вопрос: CoDeSys 3.5 Sp17 на ПК подключенного к ПЛК210, Вам не нужен?
Например - на линию связи начала наводиться помеха от котловой автоматики, которая действует на линию связи с модемом или сам модем.Цитата:
Что модем начал отваливаться после того как в проекте был задействован интерфейс RS485-1 (5) для связи с котловой автоматикой Wiesberg... Не вижу здесь связи, если честно
Вряд ли это на что-то влияет. С учетом ваших настроек запросы отправляются не раз в 100 мс, а существенно реже.Цитата:
Регистры котловой автоматики опрашиваются в режиме цикла: 100ms, Правильно ли это?
На мой взгляд, интереснее это:
А если при неработающих? Или в этом Wiesberg без питания и опросить их невозможно в принципе?Цитата:
Если выполнить перезагрузку ПЛК210 при работающих котлах...
Добрый день.
По вашему совету, жёстко прописал посылку и ...
Не могу добиться ответа от LMV5.. (Причём с другими устройствами, ОВЕН КТР-121. Частотники AD800 и VM1000, всё работает. )
Отправляю запрос точно по инструкции:
CRC младшим байтом вперёд - нет ответа,
CRC старшим байтом вперёд - нет ответа,
все байты младшим битом вперёд - нет ответа,
все байты старшим битом вперёд - нет ответа.
Вопрос - что я делаю не так?
CRC не проверяю, + смотрю в буфере. Там нули.
https://pikinno.com/upload/iblock/e3...709c37561c.pdf
Там и есть только 232 порт. (2 порта)
Режимы: ПК, eBUS, MODBUS.
Вложение 73779
CRC младшим байтом вперёд - нет ответа
CRC старшим байтом вперёд - нет ответа
Вложение 73780
Непонятно, что значит = "сначала передается наименьший значащий бит (LSB)."
Пробовал передавать запрос:
все байты младшим битом вперёд - нет ответа
все байты старшим битом вперёд - нет ответа.
Может надо передавать только данные младшим битом вперёд, а не весь запрос?
Там написано про передачу данных.
Проверил парсером https://rapidscada.net/modbus/ и в примере посылки там ошибка в CRC похоже, так как ответ нормально спарсился.
Какой запрос посылаете?
Вложение 73781
А как вы соединили устройство с ПЛК? У него нет прямого 485, только через преобразователь/конвертер, если я правильно понял. Либо напрямую на 232 порт ПК.
Вложение 73782
Подключаюсь шнурком USB - RS232.Вложение 73884
Пробовал с лицевой стороны СОМ1 и с задней стороны СОМ2 на двух контролерах LMV5..
В режимах: ПК, eBUS, MODBUS.
Ответа нет.
В инструкции написано, что LMV не отвечает на неправильные запросы!
Отсюда делаю вывод, что-то не так с запросом.
Есть ещё LMV2.. и LMV3.. но у них порт 232 ТТЛ.
На днях попробую до этих "достучаться".