Добрый день.
Посмотрите здесь п. 6.4:
https://ftp.owen.ru/CoDeSys3/11_Docu...dbus_v.1.1.pdf
Там показано, как организовать опрос нескольких устройств через библиотеку.
Добрый день.
Посмотрите здесь п. 6.4:
https://ftp.owen.ru/CoDeSys3/11_Docu...dbus_v.1.1.pdf
Там показано, как организовать опрос нескольких устройств через библиотеку.
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
Спасибо за совет. Разбираюсь с инструкцией. По ходу чтения появились вопросы.
1. Можно ли использовать один буфер для приёма данных для всех модулей чтения? Ведь, на сколько я понял (у меня так и реализовано по сигналу CMPL) опрос следующего начинается по завершению предыдущего, т.е. я могу в этот момент забирать данные, а дальше этот же буфер использует следующий модуль.
2. На странице 126 идёт описание работы программы, приведённой на стр 125. В конце программы используется завершение опрос модуля - это не описано в описании. Я это не использую - смотрел пример описания библиотеки - там нигде нет "завершения опроса", что за буффер используется для этого abyBuffer? И для чего?
3. Нужно ли в каждом модуле формировать свой сигнал CMPL? Или достаточно объявить в глобальных переменных CMPL и применять её для всех модулей по мере завершения опроса?
1. Можно.
2. Блок выполняется по фронту на входе Enable, поэтому после окончания сеанса опроса на вход Enable присваивается FALSE (чтобы при следующем присвоении входу значения TRUE был получен передний фронт). abyBuffer в данном вызове нужен только по той причине, что переменная Buffer является входом-выходом (VAR_IN_OUT) - и ей всегда что-то должно присваиваться при вызове ФБ. Вообще, для вашего случая лучше смотреть на пример со стр. 128.
3. Я не очень понимаю, что вы называете "CMPL".
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
Я делаю Complete=>CMPL, CMPL - глобальная переменная получается доступна в основной программе и проще обрабатывать на таймерах опроса - когда много модулей, использую так: если время опроса пришло, проверяю, не занят ли другой модуль - ждём, пока освободиться.
Добавил завершение опроса - ошибок не стало...Спасибо.
Рано радовался... Функция 03 заманала... Опрашиваю отдельное устройство - всё ОК, как подключаю несколько то читает, то ошибка 253, то 255... Не пойму в чём дело. 255 - ошибка тайм-аута - пробовал увеличить - ноль реакции.
Последний раз редактировалось Sergeba; 06.01.2020 в 12:59.
В инструкции используется оператор CASE, получается период опроса модулей ничем не обусловлен, только готовностью.
У меня каждому модулю соответствует свой таймер - могу задать каждому модулю период опроса. Этот же таймер формирует модулю сигнал Enable, при условии что Complete у всех модулей равен TRUE, т.е. в данный момент никто линию не занимает, модули завершили обмен.
Я использую таймеры - выставляю флаг начала опроса и одновременно проверяю общий Complete.
Последний раз редактировалось Sergeba; 06.01.2020 в 02:05.
Я правильно понимаю, что если Тайм-Аут устройства 30мс, программный цикл 5мс, то я физически не могу опросить 1 устройство из 30 на линии не быстрее, в среднем, через 1050мс... Как в этом случае работает опрос через конфигуратор, если я заведомо задаю малый период для модуля?
Всё оказалось хуже, чем расчёт... Тайм-Аут проходит без ошибок 10мс, но опрос получился почти 4 секунды!!!
Непонятный косяк ещё с COM-портами. COM5 - тайм-аут 10мс - без проблем - ошибок нет (на нём 29 модулей), COM2 - тайм-аут в среднем 40мс - функция 03 постоянно с ошибками, увеличение тайм-аута не помогает... При уменьшении тайм-аута другие функции тоже начинают "сыпаться".
Последний раз редактировалось Sergeba; 06.01.2020 в 15:41.
Читаю через конфигурацию данные из стороннего прибора, modbus-rtu. Иногда (редко, но бывает) гдето чтото подвисает, и данные не обновляются (автоперезапуск стоит, не помогает).
В Codesys2.3 был доступен статус соединения (ошибка или нет) и код последней ошибки. Здесь я чтото ничего подобного не вижу.
Как сейчас правильно узнавать статус обмена по modbus?
Работа не волк, а work.
П. 4.6, переменная byModbusError:
https://ftp.owen.ru/CoDeSys3/11_Docu...odbus_v2.0.pdf
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk