Затрудняет то, как сделать кнопку с выбором диапазона времени в который будет отображаться этот процент снижения
Вид для печати
В CODESYS есть элемент выбора даты-времени, проценты можно рассчитать в коде.
Вложение 53056
День добрый. Подскажите пожалуйста толковую литературу (можно и на английском) с описанием архитектуры Common Behaviour Model для CoDeSys 3.5.
Да, есть справка и online-help, но там всё как-то разрозненно, не складывается в голове полной картины.
В частности, не ясны связи функблоков Behaviour Model (ActionController, TimingController, BehaviourModel) с функблоками Edge Triggered и Level Controlled. Каковым должно быть наполнение самодельного функблока для корректного взаимодействия с логикой CBM? Требуется ли ещё какие элементы внешней обвязки для соответствия логике и архитектуре CBM?
Добрый день.
На базовом уровне:
Толковая литература на английском + перевод
По конкретной обвязке (библиотека Common Behaviour Model) - только в справке, насколько я знаю:
https://help.codesys.com/webapp/yZZo...rsion=3.5.15.0
Спасибо.
Т.е. при разработке, например, OwenCommunication (заявлена как CBM-совместимая) вы опирались на вышеуказанную литературу? Или есть ещё, что можно (нужно) читать?
Да, мы опирались на вышеуказанную литературу. Другой литературы порекомендовать не могу.
Разве что Styleguide от Siemens (п. 9) - но там примерно все то же самое, что и у PLCopen, только более сжато:
https://support.industry.siemens.com...-1500?lc=en-ww
Спасибо, буду разбираться.
Здравствуйте ещё раз) Я попробовал организовать это так, как на скриншоте, и при загрузке проекта в ПЛК, а если точнее, после активации бита HandOn на панели оператора, я не вижу изменений бита в онлайне ПЛК, и через некоторое время он перезагружается. Что-то не так сделал?Вложение 53080
Вы организовали бесконечный цикл. Контроллер перезагружается по сторожевому таймеру.
Правильно из одной метки переходить в другую, а не в ту же самую или выходить из нее через RETURN.
Спасибо за ответ. А как правильно это написать, если мне нужно чтобы при активации бита (кнопкой на панели) выполнялся код именно прописанный в метке, а все что вне метки - нет? Просто ставить в начале переход на метку, а в конце выход с неё? Или после выхода с метки дальнейший код начнет выполняться?
Да, именно так. (если под выходом подразумевается оператор RETURN)Цитата:
Просто ставить в начале переход на метку, а в конце выход с неё?
Добрый день. Подскажите пожалуйста, OwenCommunication поддерживает (официально) создание нескольких Slave-устройств (с разными адресами) на одном физическом интерфейсе?
> про MB_SerialSlave?
Да, про него.
> Какую именно задачу вы пытаетесь решить?
Сэмулировать несколько частотных преобразователей одним ПЛК. У них ещё есть разрывы в адресах регистров, но это, как я понял, можно обработать, анализируя структуру MB_REQ_INFO.
Да вот, на все адреса мне-бы и не надо, чтоб отвечал -- на том интерфейсе ещё могут жить устройства.
Я предполагал, что можно создать несколько экземпляров MB_SerialSlave с нужными usiSlaveId, и отдать им один дескриптор порта. А там уже для каждого выполнять свой анализ переданной Master-ом информации.
Цитата:
Сэмулировать несколько частотных преобразователей
Если у вас сейчас отладка (судя по первому сообщению) - то остальные слэйвы, вероятно, можно временно отключить.Цитата:
на том интерфейсе ещё могут жить устройства
Вызывать одновременно несколько экземляров ФБ с одним дескриптором нельзя - в каждый момент времени должен быть активен только один из них.
Ясно, спасибо. Буду дальше думать, как решить задачу.
Причём, что самое обидное, CoDeSys что второй, что третий, штатными средствами поддерживают работу нескольких Modbus-slave на одном интерфейсе. Но у штатных средств не хватает гибкости в настройках, какая есть у ваших библиотек.
Если бы губы Никанора Ивановича да приставить к носу Ивана Кузьмича, да взять сколько-нибудь развязности, какая у Балтазара Балтазарыча...
К сожалению, вы ошибаетесь - попробуйте добавить в Modbus COM два Modbus_Serial_Device и посмотрите, что произойдет.Цитата:
что второй, что третий, штатными средствами поддерживают работу нескольких Modbus-slave на одном интерфейсе
А, да, про третий я ляпнул безосновательно, его так подробно не тестировал пока.
Тогда вдвойне обидно -- старый CoDeSys может больше, чем новый! :-D
> в старом CoDeSys в принципе не было встроенного драйвера Modbus и он написан нашим разработчиком
Во как! Сурово. Хотя мне сложно представить, зачем вообще нужен CoDeSys, если в нём нет поддержки Modbus. Почти всё промоборудование на Modbus-е.
Так и в новом КДС этот драйвер написан через.... вобщем, криво.
Не может больше одного Slave-а на физический порт! :-D
Вот, по результатам сформировался списочек хотелок к OwenCommunication:
1. При указании usiSlaveId в 255 по аналогии с массивом паттернов запрещённых запросов организовать массив разрешённых адресов;
2. При указании usiSlaveId в 255 возможность определять, для какого адреса пришёл запрос;
3. И... И всё. Остальное я сам сделаю. :-D
Вы можете добавить больше информации насчет того, зачем вам это нужно?
Прямо с конкретными примерами использования.
Более точная эмуляция нескольких Slave-устройств на шине, при наличии на ней ещё и нескольких физических Slave-ов.
Если подробнее -- то сейчас я разрабатываю устройство, в котором будет несколько частотников, и модулей ввода и вывода. Для макета проще (и дешевле) собрать эмуляцию этих частотников, чем прикручивать сами частотники + двигатели (немаленькие по габаритам). При реализации тех моих хотелок для OwenCommunication я-бы в один ПЛК под CoDeSys 3 загнал эмулятор всех частотников, что сократило бы массогабаритные показатели макета до чуть ли не карманных. Ну и возможность этим эмулятором выставлять на шину любую комбинацию ошибок, например, тех частотников -- тоже большой плюс.
Можно, конечно, закупить мешок ПЛК, по одному на каждый эмулируемый частотник, но уже не так красиво, и финансово.
А если делать строго наоборот: читать из Q, писать в I?
> проще имитировать это на ПК с помощью MasterOPC Universal Modbus Server от Инсат
Можно и так, но хотелось весь макет на одной картонке собрать.
А, хотелось, как во втором CoDeSys, чтобы один регистр можно было и читать, и писать?
А по другому часто бессмысленно.
Евгений, добрый день. Не знаю где задать вопрос. Подскажите, при управлении водяным отоплением с ПЛК210 через термоголовки, лучше использовать APID_PWM? Или достаточно ON_OFF_HIST_REG? Я так понимаю система сильно инерционная, при простом шиме будет очень большой разброс. Где бы посмотреть пример? В системах KNX часто применяют ШИМ регулирование с периодом 10-15 минут. APID_PWM так может?