Добрый день.
Такой вопрос: можно ли в методе функционального блока обращаться к var_in_out переменным этого блока?
Оно у меня ругается предупреждением, но работает.
Можно так делать?Снимок экрана 2025-09-18 092852.png
Добрый день.
Такой вопрос: можно ли в методе функционального блока обращаться к var_in_out переменным этого блока?
Оно у меня ругается предупреждением, но работает.
Можно так делать?Снимок экрана 2025-09-18 092852.png
Добрый день.
Можно.
Отображение этого предупреждения - просто не очень удачная реализация.
2025-09-18_12-11-28.png
Связь со мной: 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
Добрый день, подскажите пожалуйста.
Если какое то устройство в ветке RS1-485 или RS2-485 отваливается(откинуть связь от него , сменить адрес) , то все устройства начинают гнать, устройства начинают очень плохо работать по модбасу(обмен становится кривой), зависать , очень долго обрабатывать команды или вообще не работать.
Ладно , если сейчас в процессе сборки шкафа и отладки ПО, а если в будущем какое-то устройство выйдет из строй и тогда ничего работать не будет...
Снимок экрана 2025-09-30 131120.png
Это минус модбаса или можно программное решить данную проблему?
Последний раз редактировалось atomo2; 30.09.2025 в 09:34.
Это минус последовательного интерфейса. Нужно уменьшать время таймаута и количество перезапросов.
Добрый день.
Сложно оценить, что вы вкладываете в понятия "гнать", "очень плохо работать", "обмен становится кривой" и "зависать".
То, что будет "очень долго обрабатывать команды" - это действительно так, потому что при попытке опроса отключенного устройства будут срабатывать таймауты.
Вы можете снизить значения таймаутов в соответствии с особенностями вашей задачи.
Технически можно в коде определить факт отключения slave-устройства и опрашивать его реже вплоть до восстановления с ним связи - но это потребует отказа от стандартных компонентов Modbus из дерева проекта и организации обмена через библиотеку.
Связь со мной: 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
Добрый день. А в ST работает Принцип Инверсии Зависимостей?
У меня есть интерфейс sensor и две его реализации, Температурный Датчик и Датчик Давления. И у FB AlertHandler есть метод HandleSensors, где на входе он принимает массив переменной длины ARRAY[*] OF sensor (интерфейс). И оно не компилируется (на скриншоте). Или тут в другом ошибка?
Снимок экрана 2025-10-01 135505.pngСнимок экрана 2025-10-01 135510.pngСнимок экрана 2025-10-01 135517.pngСнимок экрана 2025-10-01 140335.png
UPD: поменял скриншот с ошибками на актуальный
UPD2: Получается, не работает этот принцип, не может метод зависеть от интерфейса, объект ему подавай. Заменил в методе в объявлении архива sensor на TempSensor, и оно компилируется.
Последний раз редактировалось TaPX; 01.10.2025 в 14:21.
И такой еще вопрос. Такая же проблема, как была с визуализацией: на выход ПЛК не привязывается свойство ФБ, выдает похожую ошибку:
Снимок экрана 2025-10-01 143235.pngСнимок экрана 2025-10-01 143255.pngСнимок экрана 2025-10-01 143302.png
Как интересно: если сделать метод, который обрабатывает один датчик, то можно ему указать интерфейс, и всё компилируется. Интересно, почему это с массивами не работает... Снимок экрана 2025-10-01 152432.pngСнимок экрана 2025-10-01 152452.png
Массив переменной длины это ARRAY[1..nam] OF sensor, но никак не со звёздочкой (ARRAY[*] OF sensor )