Вход

Просмотр полной версии : CODESYS V3.5. Вопросы и ответы



Страницы : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 [34] 35

Евгений Кислов
23.04.2025, 11:46
Ну есть экран визуализации. Есть на нем кнопки. Все кнопки после нажатия что-то выполняют. Но одна кнопка или должна пароль запрашивать для выполнения действия по ней, или, я не знаю, что-то типа таблички "вы уверены?" должно выскакивать, чтобы исключить случайное нажатие. Чтобы исключить какие-то случайные нажатия

Тогда можно просто настроить на нее открытие диалога с соответствующим содержимым.

Евгений Кислов
23.04.2025, 11:50
Привет.
Подскажите о такому вопросу.

Я создал структуру с предустановленными данными.

...

Все вроде норм. С переменными это работает.
Но почему это правило не работает со вложенной подструктурой?



Не вижу проблемы.

83365

ВладОвен
23.04.2025, 11:53
Не вижу проблемы83363
Вложение не существует или не указан идентификатор (номер). Если вы уверены, что использовали правильную ссылку, свяжитесь с администрацией

Евгений Кислов
23.04.2025, 12:40
Вложение не существует или не указан идентификатор (номер). Если вы уверены, что использовали правильную ссылку, свяжитесь с администрацией

Перезалил скриншот в посте выше.

TaPX
23.04.2025, 13:27
Тогда можно просто настроить на нее открытие диалога с соответствующим содержимым.

а с вводом пароля никак не сделать?

Евгений Кислов
23.04.2025, 13:37
а с вводом пароля никак не сделать?

Можно. Вам будет проще реализовать это в рамках своего диалога, чем пытаться прикрутить штатное управление пользователями CODESYS.

TaPX
23.04.2025, 13:50
Можно. Вам будет проще реализовать это в рамках своего диалога, чем пытаться прикрутить штатное управление пользователями CODESYS.

Хорошо, благодарю за информацию

Dead Kid
25.04.2025, 20:44
Здравствуйте. Где можно найти библиотеки OwenTypes и IoDrvMx210? Есть плк210, перешёл с ним на другой комп, скачал таргет файлы, но в менеджере библиотек они были подчеркнуты красной волнистой линией и в ошибках писалось, что их не хватает. Пробовал кнопку «загрузить недостающие библиотеки» - не помогло, по этим же ссылкам store.codesys.com нет таких страниц. На сайте овен кодесис сказано, что они в пакете таргет файлов должны быть. Удалил в менеджере библиотек упоминания о них и из репозитория, думал переустановить. Но пакет таргетов при открытии говорит, что не нашёл куда устанавливать. Есть ли где эти библиотеки в отдельном виде?

capzap
25.04.2025, 20:51
Есть ли где эти библиотеки в отдельном виде?

https://owen.ru/product/codesys_v3/libraries здесь посмотрите

Dead Kid
26.04.2025, 09:28
https://owen.ru/product/codesys_v3/libraries здесь посмотрите

Смотрел, отдельно нет, только в составе пакета таргетов.

CFC-ST
26.04.2025, 09:43
доброе утро! создаю учебный (для себя проект) с тремя "конечными" автоматами. три Task. Объявляю список глобальных переменных. создаю три (скорее 4) программы. не получается использовать "нормально" глобальные переменные. Получается только через явное указание имени списка глобальных переменных (GLV) с использованием точечной нотации. как то можно/нужно добавить в "ресурсы" каждой программы или еще как-то? Как можно использовать имена объявленные в GVL CompressorActive: BOOL := TRUE; просто CompressorActive в настоящее время приходится GVL.CompressorActive

МихаилГл
26.04.2025, 09:47
Удалите прагму из кавычек (вместе с кавычками, всю строку) в начале списка глобальных переменных

kondor3000
26.04.2025, 10:01
доброе утро! создаю учебный (для себя проект) с тремя "конечными" автоматами. три Task. Объявляю список глобальных переменных. создаю три (скорее 4) программы. не получается использовать "нормально" глобальные переменные. Получается только через явное указание имени списка глобальных переменных (GLV) с использованием точечной нотации. как то можно/нужно добавить в "ресурсы" каждой программы или еще как-то? Как можно использовать имена объявленные в GVL CompressorActive: BOOL := TRUE; просто CompressorActive в настоящее время приходится GVL.CompressorActive

Вот использую глобальные в 2 программах, вызванных по Таск, без дописок GVL. 83460
атрибут закомментирован в начале списка GVL.

CFC-ST
26.04.2025, 10:02
Удалите прагму из кавычек (вместе с кавычками, всю строку) в начале списка глобальных переменных

8345983461

я не понял Вашего совета. можно ли как-то иначе?

МихаилГл
26.04.2025, 11:01
8345983461

я не понял Вашего совета. можно ли как-то иначе?

Сообщение выше от кондора. Эта строка называется "прагма".

PS
https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_pragma_attribute_qualified_only.html

CFC-ST
26.04.2025, 11:27
ничего себе. Сработало. спасибо большое. Видимо Codesys сам добавляет эту прагму, а я не придал этом значение.

DmitriiAnyushin
29.04.2025, 15:03
Добрый день!
Проект СПК107 был создан в среде Codesys 3.5 SP17 Patch 3. Собрал архив, отправил на объект где также установлен Codesys 3.5 SP17 Patch 3, но при разархивировании проекта вылетает ошибка - файл создан в Codesys 3.5 SP17 Patch 3 и содержит данные которые не могут быть загружены в Codesys 3.5 SP17 Patch 3. После разархивирования слетают все экраны. Архив проекта собирал как обычно - включал всю информацию в архив, так как на ноутбуке не было никаких библиотек. Потом уже начал пробовать выбирать отдельные компоненты, но результат такой же.
83560
Много раз разворачивал архивы на других ноутбуках. Подскажите, в чем может быть проблема?
Спасибо!

Евгений Кислов
29.04.2025, 15:23
Добрый день.
Вероятнее всего - на этих ПК установлены разные версии плагинов (обычно это касается плагинов визуализации).

DmitriiAnyushin
29.04.2025, 15:34
Ну да - не открывает он именно картинки и ошибки на счет них выдает. Codesys взят с сайта ОВЕН. Архив на своем ноутбуке я собрал полный. Как можно решить данную проблему?

Евгений Кислов
29.04.2025, 15:36
Ну да - не открывает он именно картинки и ошибки на счет них выдает. Codesys взят с сайта ОВЕН. Архив на своем ноутбуке я собрал полный. Как можно решить данную проблему?

На обоих ПК в CODESYS Installer выполните команду Export config. Выложите результаты сюда, указав, какой из них снят с "проблемного" ПК, а какой - с "хорошего".

Lexx225
30.04.2025, 14:35
Добрый день! В программе на codesys 3.5. используется web-визуализация. По умолчанию имя страницы было webvisu.htm. Поменял из программы на другое. С компьютера и веб-панелей после перезагрузки доступ к странице с новым именем работает нормально. Но и к старой странице webvisu.htm доступ тоже остался. Это нормально? Наверное я не первый, кто спрашивает, но сходу ничего не нашлось, сорри.

Евгений Кислов
30.04.2025, 18:23
Добрый день! В программе на codesys 3.5. используется web-визуализация. По умолчанию имя страницы было webvisu.htm. Поменял из программы на другое. С компьютера и веб-панелей после перезагрузки доступ к странице с новым именем работает нормально. Но и к старой странице webvisu.htm доступ тоже остался. Это нормально? Наверное я не первый, кто спрашивает, но сходу ничего не нашлось, сорри.

Добрый день.
Это, конечно, может выглядеть странным, но в рамках CODESYS - нормально.
Связано с тем, что при загрузке нового проекта файлы визуализации предыдущего не удаляются.
Вы можете выполнить команду Онлайн - Сброс заводской и загрузить проект заново - тогда доступ будет только по новому имени страницы.
Или подключиться к ПЛК, перейти на вкладку Device - Файлы и в папке /visu удалить файл webvisu.htm - это приведет к такому же результату.

Lexx225
30.04.2025, 19:22
Добрый день.
Это, конечно, может выглядеть странным, но в рамках CODESYS - нормально.
Связано с тем, что при загрузке нового проекта файлы визуализации предыдущего не удаляются.
Вы можете выполнить команду Онлайн - Сброс заводской и загрузить проект заново - тогда доступ будет только по новому имени страницы.
Или подключиться к ПЛК, перейти на вкладку Device - Файлы и в папке /visu удалить файл webvisu.htm - это приведет к такому же результату.

Имеется в виду, подключиться из codesys?

Евгений Кислов
30.04.2025, 20:04
Имеется в виду, подключиться из codesys?

Да, нужно подключиться из CODESYS к ПЛК.

Lexx225
30.04.2025, 21:08
Мне кажется я где-то не там ищу. У меня нет такого

83593

Евгений Кислов
30.04.2025, 21:11
Мне кажется я где-то не там ищу. У меня нет такого

83593

Все правильно. Остался буквально последний шаг.

83594

Lexx225
30.04.2025, 21:24
Прямо удалять? Ничего не перезагрузится? У меня там процесс идет еще пару часов. Стремно как-то. Подожду лучше. Спасибо) Отпишусь потом

Lexx225
01.05.2025, 13:49
Отлично! Евгений, спасибо огромное!!!

DmitriiAnyushin
05.05.2025, 11:25
Добрый день!
В проекте использую СПК110. За основу брал проект, которым прошивал СПК107. При загрузке проекта на экране отображается размер экрана 7 дюймов (как для СПК107), весь остальной экран белый.
Подскажите, где-то еще в свойствах нужно диагональ указывать? Спасибо!

Евгений Кислов
05.05.2025, 11:33
Добрый день!
В проекте использую СПК110. За основу брал проект, которым прошивал СПК107. При загрузке проекта на экране отображается размер экрана 7 дюймов (как для СПК107), весь остальной экран белый.
Подскажите, где-то еще в свойствах нужно диагональ указывать? Спасибо!

Добрый день.
Проще всего поменять разрешение в двух местах - в узле Таргет-визуализация и свойствах экрана визуализации (правой кнопкой на экран в дереве проекта - Свойства - Визуализация - Использовать заданный размер)
Разрешение обновленных СПК110 - 1024x600.

DmitriiAnyushin
05.05.2025, 12:06
Добрый день.
Проще всего поменять разрешение в двух местах - в узле Таргет-визуализация и свойствах экрана визуализации (правой кнопкой на экран в дереве проекта - Свойства - Визуализация - Использовать заданный размер)
Разрешение обновленных СПК110 - 1024x600.
Никогда сюда не залазил - с прошлыми версиями СПК вроде такого не было.
Подскажите, вроде в обоих местах выставил (у всех картинках в проекте), но разрешение на СПК не поменялось - так 640 на 480 и показывает

83630

Евгений Кислов
05.05.2025, 12:08
Никогда сюда не залазил - с прошлыми версиями СПК вроде такого не было.
Подскажите, вроде в обоих местах выставил (у всех картинках в проекте), но разрешение на СПК не поменялось - так 640 на 480 и показывает

83630

Напишите мне в телеграм, пожалуйста (см. в подписи).

novinky
05.05.2025, 12:24
В TIA Portal легко вкл и откл разделение окон.
Как это сделать в CoDeSys 3.5?
Неуж только через сбросить параметры окна? Так все вкладки закрылись и затем заново перенастраивать

МихаилГл
05.05.2025, 12:30
Схватили мышкой и оттащили куда надо. Либо закрыли ненужное окно, а откроется оно на основной группе вкладок.

Сбрасывать не стоит, сбросится все...

PS Сбрасывают тогда, когда так настроили, что не можетк найти нужную вкладку поиска и пр.)

DmitriiAnyushin
05.05.2025, 15:03
Напишите мне в телеграм, пожалуйста (см. в подписи).
Большое спасибо за помощь!

Назаров Александр
07.05.2025, 10:51
Добрый день!
При компиляции проекта возникла ошибка:

------ Компиляция : Приложение: HPP_01.Application -------
[ERROR] Internal error:System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта. в _3S.CoDeSys.ApplicationObject.NetVarPDOList.AddVar iable(String stVarName, IType type, IPrecompileScope2 scope, ApplicationObject appl, IVariable var, String& stError, HashSet`1 hsRecursionCheck) в _3S.CoDeSys.ApplicationObject.NetVarPDOList.AddVar iable(String stVarName, IType type, IPrecompileScope2 scope, ApplicationObject appl, IVariable var, String& stError, HashSet`1 hsRecursionCheck) в _3S.CoDeSys.ApplicationObject.NetVarManager.AddObj ect(NetVarObject nwObject, String& stError) в _3S.CoDeSys.ApplicationObject.NetVarProtocol.AddOb ject(NetVarObject nwObject, String& stError) в _3S.CoDeSys.ApplicationObject.NetVarLanguageModel. AddObject(NetVarObject nwObject) в _3S.CoDeSys.ApplicationObject.ApplicationObject.Ad dNetVarLanguageModel(XmlWriter xmlwriter) в _3S.CoDeSys.ApplicationObject.ApplicationObject.Ge tLanguageModel() в _3S.CoDeSys.ApplicationObject.ApplicationObject.Ge tStructuredLanguageModel(ILanguageModelBuilder lmbuilder) в _3S.CoDeSys.LanguageModelManager.LanguageModelMana gerConsolidated.PutLanguageModel(ILanguageModelPro vider lanmodprov, Boolean bShowSyntaxErrors, Boolean forceCompleteLanguageModel) в _3S.CoDeSys.LanguageModelManager.Services.Language ModelProviderService.PutLanguageModel(ILanguageMod elProvider lanmodprov, Boolean bShowSyntaxErrors) в _3S.CoDeSys.LanguageModelManagerLegacy.LanguageMod elManagerLegacy.PutLanguageModel(ILanguageModelPro vider lanmodprov, Boolean bShowSyntaxErrors) в _3S.CoDeSys.ApplicationObject.ApplicationObject.On BeforeCompile(Object sender, CompileEventArgs e) в _3S.CoDeSys.Core.LanguageModel.CompileEventHandler .Invoke(Object sender, CompileEventArgs e) в _3S.CoDeSys.LanguageModelManagerLegacy.LanguageMod elManagerLegacy.LanguageModelMgrConsolidated_Befor eCompile(Object sender, CompileEventArgs e) в _3S.CoDeSys.LanguageModelManager.Services.CompileS ervice.(Object , CompileEventArgs ) в _3S.CoDeSys.LanguageModelManager.LanguageModelMana gerConsolidated.OnBeforeCompile(CompileEventArgs e) в _3S.CoDeSys.LanguageModelManager.LanguageModelMana gerConsolidated.RaiseAndCheckBeforeCompile(Guid guidApplication, IMessageCategory cmc) в ..(Boolean , Boolean , Boolean ) в ..(Boolean ) в ..()
Компиляция завершена -- 1 ошибок, 0 предупреждений : загрузка невозможна

Как по тексту ошибки возможно определить место ее происхождения? В полном тупике. Что можно предпринять?

Евгений Кислов
07.05.2025, 10:54
Добрый день.


Что можно предпринять?

Связаться со мной через telegram (см. в подписи).

Назаров Александр
07.05.2025, 12:13
Добрый день.



Связаться со мной через telegram (см. в подписи).

Спасибо Евгению за быстрое решение проблемы. Просто Кудесник!

ВладиславВладимирович
20.05.2025, 20:08
Коллеги добрый день!
Возникла необходимость считать абсолютное положение вала сервы. Хранится в двух вордах, само число dint. Попробовал сделать через библиотеку owen:
varDWord := ocl.WORD2_TO_DWORD(wInput1 := varWord1, wInput2 := varWord2, xSwapBytes := TRUE);
varDint := DWORD_TO_DINT(varDWord);
проблема в том, что пока число не выходит за рамки dword оно конвертируется в динт напрямую без пересчета (картинка)
Теоретически вроде нужно добавить самый левый бит, а потом отнять, после преобразования но как это делается в кодесис пока не знаю. Возможно кто подскажет как реализовать это решение или каким-то другим образом решить вопрос.

МихаилГл
20.05.2025, 20:21
Непонятно, может вам udint нужен, а не dint?

ВладиславВладимирович
20.05.2025, 20:25
нет именно dint DINT целое число от -2147483648 до 2147483647 32 бит

МихаилГл
20.05.2025, 20:32
Тогда у вас при превышении и должны отрицательные значения появляться. Короче, я вопроса не понял...

kondor3000
20.05.2025, 21:37
А вопроса и не было, чего хотел ТС, знает только он. 83876
Полученное число даже не надо конвертировать, достаточно объявить его как DINT, при условии что оно не переполнится.
Регистры WORD надо поменять местами, а перестановка байт скорее всего не нужна, надо проверить.

ВладиславВладимирович
22.05.2025, 11:04
Тупо ошибся в другом месте поэтому получал неверные исходные данные и искал решение не там где надо. Всем спасибо за участие

Юра54
22.05.2025, 13:11
Здравствуйте! СПК перезагружается уже не первый раз с такими сообщениями в журнале. Подскажите пожалуйста, где искать проблему?
83920

Евгений Кислов
22.05.2025, 13:24
Здравствуйте! СПК перезагружается уже не первый раз с такими сообщениями в журнале. Подскажите пожалуйста, где искать проблему?
83920

Добрый день.
На первом скриншоте - информационные сообщения, никак не связанные с исключением на втором скриншоте.
Чтобы разобраться в причинах исключения - пожалуйста, напишите на support@owen.ru

Юра54
23.05.2025, 04:59
Добрый день.
На первом скриншоте - информационные сообщения, никак не связанные с исключением на втором скриншоте.
Чтобы разобраться в причинах исключения - пожалуйста, напишите на support@owen.ru

Да, это разные ситуации, но исключения были в обоих случаях. Но если к нерешаемой проблеме с Com - портами я уже привык (support у себя не дождался появления проблемы), то перезагрузка СПК с записью в журнале "touchhandling disabled" - это необычная ситуация и появилась несколько раз "только вчера". Можно ли что-то посоветовать, предположить, что происходит?

Евгений Кислов
23.05.2025, 06:59
Да, это разные ситуации, но исключения были в обоих случаях. Но если к нерешаемой проблеме с Com - портами я уже привык (support у себя не дождался появления проблемы), то перезагрузка СПК с записью в журнале "touchhandling disabled" - это необычная ситуация и появилась несколько раз "только вчера". Можно ли что-то посоветовать, предположить, что происходит?

"touchhandling disabled" - это просто признак того, что в менеджере визуализации установлена опция Multitouch handling, которую СПК не поддерживает.
Чтобы разобраться в причинах перезагрузки (исключения здесь пока не видно) - напишите, пожалуйста, на support. В письме приложите ссылку на ваш проект и описание, как повторить проблему.

Юра54
23.05.2025, 07:22
Понял, спасибо! Убрал галочку. Внятной повторяемости "беспричинной" перезагрузки нет, возможно просто проблема "грязных рук" - после некоторых изменений в проекте забыл сделать команду "Очистить все". (Сейчас очистил, наблюдаю дальше)

DmitriiAnyushin
28.05.2025, 16:00
Добрый день! Подскажите пожалуйста
На объекте установлено 12 штук ПЛК210-02-CS. Ранее все прошивались без проблем.
При последней попытке загрузить проект (одинаковый) 11 прошились без проблемм, а 12 сообщил, что отсутствует Aplication, и при загрузке проекта остановился в самом начале загрузки и далее процесс не шел
Попытался сбросить к заводским (через web браузер), но результат тот же.
Сейчас планирую скачать прошивку (3.5.17.31, 2.4.0601.0905 + хотфиксы) - на объекте просто это не быстрый процесс.
Подскажите, в чем может быть проблема и как ее решить?
Спасибо!

DmitriiAnyushin
28.05.2025, 16:54
Попытался обновить прошивку через web интерфейс 2.4.0601.0905 (tanowrt-image-owen-codesys-swu-plc210.swu) (контроллер 2023 года), но при обновлении выдалась следующая ошибка
84045
Подскажите, в чем может быть проблема? Или не та прошивка?
Прошивку брал из
https://owen.ru/product/codesys_v3/software
ПЛК210-0x 3.5.17.31, содержание 2.4.0601.0905 + хотфиксы

МихаилГл
28.05.2025, 17:25
Попытался обновить прошивку через web интерфейс 2.4.0601.0905 (tanowrt-image-owen-codesys-swu-plc210.swu) (контроллер 2023 года), но при обновлении выдалась следующая ошибка
84045
Подскажите, в чем может быть проблема? Или не та прошивка?
Прошивку брал из
https://owen.ru/product/codesys_v3/software
ПЛК210-0x 3.5.17.31, содержание 2.4.0601.0905 + хотфиксы

Там в прошивках ссылки есть:
https://owen.ru/forum/showthread.php?t=33976
Там посмотрите. Некоторые через веб не шьются, только с карты или флэш.

PS Перепрошивка с версии 1.2.xxxx.xxxx / 1.3.xxxx.xxxx на версию 2.4.xxxx.xxxx обязательно должна производиться с USB/SD-накопителя c использованием файла plc210f.bin и со сбросом настроек (с файлом reset_plc из архива с прошивкой на накопителе). Процедура прошивки выполняется однократно. Перепрошивка через web-конфигуратор в данном случае не поддерживается.

RV9WFJ
28.05.2025, 20:38
"Отсутствует Aplication" он сообщает что до этого в ПЛК пиограммы не было

DmitriiAnyushin
28.05.2025, 21:57
Ну у меня таргет 3.5.17, соответственно версия контроллера 2.4
Я полагаю новые контроллеры должны через Web прошиваться. Завтра если возможность будет, попробую флешкой.
Проект на ПЛК был, только выяснилось что он слетел, так как визуализация не отображалсь (ну и логика тоже не выполнялась). Ну и то что в начале загрузки пишет, что Application отсутствует (при загрузке проекта через Codesys он встаёт на 0 процентов и по 1 байту в минуту что то пытается загрузить).
Вопрос: те ошибки которые выдал Web, о чем нибудь говорят и каким образом правильно прошить ПЛК? Или он уже пришёл в негодность?
Спасибо!

МихаилГл
28.05.2025, 22:06
Да много чего может быть... Брак, память неправильно разбита и т.д. и т.п.

2 года назад у нас новые плк210 2023 года сразу не заработали, один грелся как утюг, второй при заливке проекта работал несколько минут, а потом вываливался в исключение и стирал проект... Не было врнмени разбираться со вторым, первый сказали в ремонт направить...

pt200
09.06.2025, 10:40
3.5.17
1) как можно обьявлять struct/enum локальные и глобальные внутри FBшки(ИИшка от гугла говорит что без проблем, а у меня ругается на TYPE(типа допустимо только VAR*))?
2) в методе FBшки как можно определить кто(и откуда) конкретно вызвал нас(для арбитража общего ресурса(Mutex)): на данный момент приходится передавать при каждом вызове method(ADR(THIS^), __POSITION(), ......)?
т.е. например по callstack адрес возврата и PARENT.THIS.

capzap
09.06.2025, 11:24
3.5.17
1) как можно обьявлять struct/enum локальные и глобальные внутри FBшки(ИИшка от гугла говорит что без проблем, а у меня ругается на TYPE(типа допустимо только VAR*))?
2) в методе FBшки как можно определить кто(и откуда) конкретно вызвал нас(для арбитража общего ресурса(Mutex)): на данный момент приходится передавать при каждом вызове method(ADR(THIS^), __POSITION(), ......)?
т.е. например по callstack адрес возврата и PARENT.THIS.

1) локальные можно объявлять, глобальные то зачем они же уже получается объявлены? По моему Вы путаетесь в терминологии, если пытаетесь в окне объявлений создать TYPE

2) Вы в курсе что процессор в плк только один и о многозадачности, в контексте mutex, речи быть не может, всё вполне может работать и в одной главной задаче, тогда не придется решать кто же запустил метод

pt200
09.06.2025, 11:46
1) локальные можно объявлять, глобальные то зачем они же уже получается объявлены? По моему Вы путаетесь в терминологии, если пытаетесь в окне объявлений создать TYPE
Именно пытаюсь в окне объявлений создать/декларировать новый TYPE.
Нужны локальные(чтобы наружу не торчали, для внутренней "кухни") и глобальные, чтобы параметры удобно передавать.


2) Вы в курсе что процессор в плк только один и о многозадачности, в контексте mutex, речи быть не может, всё вполне может работать и в одной главной задаче, тогда не придется решать кто же запустил метод
В курсе(забыл кавычки для "mutex" поставить).
Именно для этого и делаю неблокирующий саморазделяющийся ресурс(MODBUS_BUS например), т.е. внутри он "монопольный", а снаружи "паралельный"(сразу все, кому надо, пишут/читаю его(что бы не заниматься фигней в основном коде))

capzap
09.06.2025, 12:06
(что бы не заниматься фигней в основном коде))
ну успехов

Yakut
23.06.2025, 12:15
Доброго времени суток, форумчане.
Вопрос по контроллеру Crevis вдруг кто работал:
Есть вот такой учебный набор (см.фото)
Связь с ним физически есть, ping проходит (см.фото)
В их IOGuidePro связь тоже есть (см.фото)
А в CoDeSys при сканировании сети контроллер не вижу.
В чём может быть проблема?
С их сайта скачал таргет файлы по устройствам.
Ещё обращаю внимание, что лампочка в среднем RJ45 разъёме горит.

Sergey361
23.06.2025, 14:43
Таргеты желательно проверить ещё раз. У них на сайте есть для CS 3.5.11 и 3.5.17 (ну или выше 16). Какая у вас CS и какая версия таргетов?

МихаилГл
23.06.2025, 15:08
А это точно порты для сети? Меня смущает modbusdrv... Может сетевой порт доугой?

PS А в сети нет другого устройства с таким адресом?

Yakut
23.06.2025, 15:18
На фото ниже версии таргетов. CS 3.5.11
Вчера скачивал и таргеты с их сайта и сам CoDeSys.
Прямо отсюда, где мой контроллер и нарисован https://www.crevis.ru/catalog/remote_io/PLC/GN-9482/#buy
Правда схема подключения у них странно нарисована, на морде цифер 1,2,3...9 нет, зато есть S-S+F+F- и т.д.:mad:

Yakut
23.06.2025, 15:32
А это точно порты для сети? Меня смущает modbusdrv... Может сетевой порт доугой?

PS А в сети нет другого устройства с таким адресом?

Гениально! Сделал пинг с включённым контроллером, потом отключил, пинги дальше шли при выключенном. Поменяв адрес на 192,168,1,199 ситуация не изменилась(

Sergey361
23.06.2025, 18:09
А просто IP прописать где ПЛК без сканирования не получается?

Sergey361
23.06.2025, 18:11
А прошивка какая в ПЛК? На сайте три варианта таргетов под разные прошивки.

Yakut
23.06.2025, 18:49
Гениально! Сделал пинг с включённым контроллером, потом отключил, пинги дальше шли при выключенном. Поменяв адрес на 192,168,1,199 ситуация не изменилась(

так как на картинке сделал выше или где-то в другом месте?

Yakut
23.06.2025, 18:53
А прошивка какая в ПЛК? На сайте три варианта таргетов под разные прошивки.

а шут её знает, где посмотреть?
3.07?
скачал с сайта посленднее, но у меня контроллер GN-9482, а те не подходят

МихаилГл
23.06.2025, 18:56
А ему точно 64 разряный кодесис нужен?

И там sp 17 внизу написано... А вы sp 11 юзаете. Пока только много вопросов...

Yakut
23.06.2025, 18:57
А ему точно 64 разряный кодесис нужен?

Ну винда 64 разрядная у меня стоит

МихаилГл
23.06.2025, 19:00
Ну винда 64 разрядная у меня стоит

Это не причина использовать 64 разрядную оболочку. Надо смотреть, что контроллер поддерживает. Вот овен 64 разряд не поддерживает, хотя и 10ка виндовс.

Sergey361
23.06.2025, 19:02
Ну да, скорее всего 3.07. Тогда нужен 3.5.17, на сайте написано. У них на сайте вроде и 32 и 64 есть

Yakut
23.06.2025, 19:08
Ну да, скорее всего 3.07. Тогда нужен 3.5.17, на сайте написано. У них на сайте вроде и 32 и 64 есть

премного благодарен.
Неужели нельзя в той же странице где контроллер оставить кодесис 17 пака...а то зашёл человек 1 раз посмотреть и столько всяких кривостей слёту...это так филосовия..
Вот овеновцы красавцы, всё по уму делают и упорядоченно и обновляют актуальную информацию.
Буду удалять и новый качать ставить...

МихаилГл
23.06.2025, 19:13
Удалять не обязательно, главное нужный ярлык запустить

Sergey361
23.06.2025, 19:21
Ага, и таргеты для 3.002 и выше

Yakut
23.06.2025, 19:31
Благодарю, коллеги!:o
Заработало, увидел.
Теперь нет какого-то плагина, загружать не может, мигать контроллер не может, искать дополнительные модули не может.

pt200
23.06.2025, 20:08
СПК210: иногда мигает экран, в логе только это:

IECVisualization Visu_PRG: Creating Client successful for Extern-ID: 27400 Returned IEC-ID: 1
IECVisualization Visu_PRG: Creating Client for Extern-ID: 27400

Что бы это значило(как починить)?
Получается ГУЙ перезапускается, а причина то где????
================================================== ======================
Эти сообщения - это по ходу дела я подключался, сразу после промаргивания.

Тогда про промаргивание вообще никакой информации!
Куда копать?

Евгений Кислов
23.06.2025, 20:25
СПК210: иногда мигает экран, в логе только это:

IECVisualization Visu_PRG: Creating Client successful for Extern-ID: 27400 Returned IEC-ID: 1
IECVisualization Visu_PRG: Creating Client for Extern-ID: 27400

Что бы это значило(как починить)?
Получается ГУЙ перезапускается, а причина то где????
================================================== ======================
Эти сообщения - это по ходу дела я подключался, сразу после промаргивания.

Тогда про промаргивание вообще никакой информации!
Куда копать?

См. п. 2 в новых функциях:
https://owen.ru/forum/showthread.php?t=33954&p=459353&viewfull=1#post459353

Sergey361
24.06.2025, 06:57
Благодарю, коллеги!:o
Заработало, увидел.
Теперь нет какого-то плагина, загружать не может, мигать контроллер не может, искать дополнительные модули не может.

CS скорее всего криво встал

Yakut
24.06.2025, 16:15
CS скорее всего криво встал

я б сказал что может встать криво, но тут бывают дамы...а так да, вы правы на все 100%
решается вопрос очень просто - пишется в техпомощь, они кидают вот такой ссыль https://disk.yandex.ru/d/_0QeJfOfyoxt6g, с него качаем и устанавливаем. Всё работает.
Проект пустышка внизу - модули нашлись, всё влилось и никаких ошибок.

pt200
24.06.2025, 17:40
Допустимо ли переиспользование экземпляра OCL.MB_SerialRequest с другими параметрами(чего там внутри понакручено)?
т.е. он "отстрелялся"(xDone или xError) и снова в бой с другими параметрами?

Евгений Кислов
24.06.2025, 18:02
Допустимо ли переиспользование экземпляра OCL.MB_SerialRequest с другими параметрами(чего там внутри понакручено)?
т.е. он "отстрелялся"(xDone или xError) и снова в бой с другими параметрами?

Допустимо.
Совсем недавно демонстрировали это на вебинаре:
https://owen.ru/media/video/webinar_170625

pt200
24.06.2025, 21:40
OCL.MB_SerialRequest: Допустимо ли стартовать новый запрос одновременно с окончанием предыдущего, а то чтото дрябленько запросы сыпятся на 115200(~9мс между ответом и новым запросом(смотрю на шине)(main_task: Freewhiling(на глаз порядка 1000Гц))?
т.е. он "отстрелялся"(xDone или xError) = TRUE и тоже уже xExecute := TRUE(с новыми параметрами) в этом же цикле?

PS Кстати а шаблон пустого проекта под СПК210 откуда берется(из таргета?), а то в коммуникационном контроллере дефолтная задача на 50Гц* из коробки как то не очень, из за этого достаточно долго не мог поднять связь(таймауты сыпались).
*если не память не подводит

Евгений Кислов
25.06.2025, 06:15
PS Кстати а шаблон пустого проекта под СПК210 откуда берется(из таргета?), а то в коммуникационном контроллере дефолтная задача на 50Гц* из коробки как то не очень, из за этого достаточно долго не мог поднять связь(таймауты сыпались).
*если не память не подводит

Шаблоны проектов для наших контроллеров устанавливаются одновременно с пакетом наших таргет-файлов.


OCL.MB_SerialRequest: Допустимо ли стартовать новый запрос одновременно с окончанием предыдущего, а то чтото дрябленько запросы сыпятся на 115200(~9мс между ответом и новым запросом(смотрю на шине)(main_task: Freewhiling(на глаз порядка 1000Гц))?
т.е. он "отстрелялся"(xDone или xError) = TRUE и тоже уже xExecute := TRUE(с новыми параметрами) в этом же цикле?


Цель библиотеки OCL - предоставить пользователю:

расширенный функционал, которого нет в стандартных компонентах CODESYS (например, поддержку функции 20 Read File Record, режима Modbus RTU over TCP и т. д.);
возможность полностью настраивать и контролировать обмен в своем коде.


Библиотека не является средством "ускорения" обмена; ее ФБ являются асинхронными, и выполнение каждого из них происходит в течение нескольких циклов задачи контроллера.

Предложенный вами подход технически возможен, но может нарушить ожидаемую работу блоков, поэтому он не относится к рекомендуемым.

mf_
29.06.2025, 19:30
Добрый день. Какая настройка отвечает за понимание компилятором, что переменная .var является глобальной из списка глобальных переменных и позволяет не писать каждый раз GVL.var?
Спасибо.

МихаилГл
29.06.2025, 19:37
Добрый день. Какая настройка отвечает за понимание компилятором, что переменная .var является глобальной из списка глобальных переменных и позволяет не писать каждый раз GVL.var?
Спасибо.

Прагма в фигурных скобках, удалите ее, и сможете обращаться к переменным напрямую...

mf_
29.06.2025, 19:43
Прагма в фигурных скобках, удалите ее, и сможете обращаться к переменным напрямую...
Спасибо, Михаил!

Карбофос
04.07.2025, 08:49
Здравствуйте. Некоторое время назад понадобилось мне установить Кодесис 3.5 СП18 для контроллера другого производителя. Теперь при каждом запуске проектов для СПК на Кодесис 3.5 СП17 у меня выскакивает окно с предложением обновить библиотеки. Версию СП18 я давно удалил с компьютера, но окошко при каждом запуске проектов все равно появляется.
Можно как-то удалить из системы библиотеки последней версии из списка?
84664

kondor3000
04.07.2025, 08:55
Здравствуйте. Некоторое время назад понадобилось мне установить Кодесис 3.5 СП18 для контроллера другого производителя. Теперь при каждом запуске проектов для СПК на Кодесис 3.5 СП17 у меня выскакивает окно с предложением обновить библиотеки. Версию СП18 я давно удалил с компьютера, но окошко при каждом запуске проектов все равно появляется.
Можно как-то удалить из системы библиотеки последней версии из списка?


Все версии 4.2 и 4.3 прекрасно работают и в SP17.3, удалять не обязательно, можете просто не обновлять.
Мало того 4.2 и 4.3 в некоторых случаях работают корректнее 4.1

Карбофос
04.07.2025, 10:10
удалять не обязательно, можете просто не обновлять.
Ну это как раз понятно, просто надоело это окошко. А вот обновлять опасаюсь - не хотелось бы получить неведомые глюки...

МихаилГл
04.07.2025, 10:32
Ну это как раз понятно, просто надоело это окошко. А вот обновлять опасаюсь - не хотелось бы получить неведомые глюки...

Убираете галочку "проверять обновления" в этом окне, и жмете "ок". Перед "ок" проверить, что все стоит в "не обновлять". И больше на этом ПК данное окошко для данного проекта не выскочит, если не удалять вспомогательные файлы...

Vladimir Zhuravlev
04.07.2025, 16:59
Для проекта автоматизации вентиляции здания нужен каскадный регулятор температуры, вычисляющий уставки для PID нагрева и PID охлаждения по датчикам в притоке и в помещении
на Codesys 3.5 с таким проектом опыта не было
в основном автоматизацией вентиляции занимался на Siemens Desigo Xworks
там для данной задачи есть функциональный блок CAS_CTR

есть ли подобный функциональный блок в Codesys 3.5?

pt200
10.07.2025, 20:47
OCL.UNM_SerialRequest:
1) можно опубликовать список проверок по которым вылетает WRONG_PARAMETER?
2) Допустимо ли переиспользование экземпляра с другими параметрами(чего там внутри понакручено)?

P.S. А какие есть еще варианты работы с СОМ портом?

Евгений Кислов
11.07.2025, 06:30
OCL.UNM_SerialRequest:
1) можно опубликовать список проверок по которым вылетает WRONG_PARAMETER?
2) Допустимо ли переиспользование экземпляра с другими параметрами(чего там внутри понакручено)?

P.S. А какие есть еще варианты работы с СОМ портом?

1) WRONG_PARAMETER прокидывается из внутренних ФБ COM.Read и COM.Write из библиотеки CAA SerialCom, используемых внутри OCL.UNM_SerialRequest.
В документации CODESYS не приведён список ситуаций, в которых возвращается эта ошибка, но типовой случай - передача некорректного хэндла на вход hCom.

2) Допустимо.

Другие варианты - библиотека CAA SerialCom или SysCom.

pt200
11.07.2025, 18:59
1) WRONG_PARAMETER прокидывается из внутренних ФБ COM.Read и COM.Write из библиотеки CAA SerialCom, используемых внутри OCL.UNM_SerialRequest.
В документации CODESYS не приведён список ситуаций, в которых возвращается эта ошибка, но типовой случай - передача некорректного хэндла на вход hCom.
А точно больше ни откуда WRONG_PARAMETER вылезти не может(так как я в приемном буфере вижу корректный ответ(т.е. отправлено и принято), но вместо Done выставляется Error)?

Евгений Кислов
11.07.2025, 19:51
А точно больше ни откуда WRONG_PARAMETER вылезти не может(так как я в приемном буфере вижу корректный ответ(т.е. отправлено и принято), но вместо Done выставляется Error)?

Я описал, как устроена библиотека.
Вылезти может что и откуда угодно.
Например, при неосторожной работе с массивами/указателями можно залезть в ту область памяти, в которой хранится eError и совершенно случайно записать туда 12.

pt200
14.07.2025, 10:04
А нет нормальной документации по COM.Read (не описание интерфейса(даже на оф сайте :mad:), а углубленного)?
1) Я правильно понимаю что eError 5001: time out это для нее "нормальный" режим работы/использования(т.к. редко известен обьем ожидаемых данных)?
2) Что будет при таймаут = 0, а при = 1(как выгребать синхронно все данные из FIFO порта)?

А есть более низкий уровень работы с портами(file.read?)?

Евгений Кислов
14.07.2025, 10:17
А нет нормальной документации по COM.Read (не описание интерфейса(даже на оф сайте :mad:), а углубленного)?
1) Я правильно понимаю что eError 5001: time out это для нее "нормальный" режим работы/использования(т.к. редко известен обьем ожидаемых данных)?
2) Что будет при таймаут = 0, а при = 1(как выгребать синхронно все данные из FIFO порта)?

А есть более низкий уровень работы с портами(file.read?)?


Насколько я помню - udiTimeOut касается не обмена как такового, а выполнения блока в принципе.
Я обычно оставляю для него значение 0, чтобы "выгребать все данные".
Я бы сказал, что для блока нормально возвращать xDone при szSize = 0 (хотели считать что-нибудь из буфера COM-порта, а там ничего нет).


А есть более низкий уровень работы с портами(file.read?)?

В рамках операционной системы - безусловно. Но ни здесь, ни на support консультации по этому вопросу ждать не стоит.
Подразумевается, что клиент приобретает ПЛК с CODESYS, чтобы получить более высокий уровень абстракции для своего прикладного ПО, а не спускаться на уровень системных вызовов.

pt200
14.07.2025, 10:26
udiTimeOut .... Я обычно оставляю для него значение 0, чтобы "выгребать все данные"....
А вот про этот момент можно поподробнее(т.е. udiTimeOut = 0 - это не ждать / сразу вернуть что есть в буфере(xDone + szSize))?

P.S. еще бы xExecute не "моргать" и вообще нормально было бы

Евгений Кислов
14.07.2025, 11:17
А вот про этот момент можно поподробнее(т.е. udiTimeOut = 0 - это не ждать / сразу вернуть что есть в буфере(xDone + szSize))?



udiTimeOut = 0 - это ждать столько, сколько придется

Если вы ставите udiTimeOut = 100, а блок не сможет за 100 мкс вычитать весь буфер COM-порта (по тем или иным причинам) - то тогда случится .xError и .eError = TIME_OUT

pt200
14.07.2025, 12:52
udiTimeOut = 0 - это ждать столько, сколько придется
Если вы ставите udiTimeOut = 100, а блок не сможет за 100 мкс вычитать весь буфер COM-порта (по тем или иным причинам) - то тогда случится .xError и .eError = TIME_OUT

Тогда можно еще раз для дурачков: как же пользоваться этим "более высоким уровнем абстракций" за который уплочено?

Задача стандартная(запрос):
0) почистил приемный буфер от всякого мусора(очень желательно)
1) отправил буфер с данными
2) в течении какого то времени принимаешь/получаешь данные кусками и пытаешся собрать из этого пакет(и если получилось, то не ждешь до упора).

PS Нет ли нормального примера, а не детсадовского из 3х коробочек на FBD?

melky
14.07.2025, 13:00
так понимаю, нет возможности остановить timeout если пакет весь пришел и не дожидаться его окончания? впрочем это мало где есть, мне так кажется.

Евгений Кислов
14.07.2025, 13:05
Задача стандартная(запрос):
0) почистил приемный буфер от всякого мусора(очень желательно)
1) отправил буфер с данными
2) в течении какого то времени принимаешь/получаешь данные кусками и пытаешся собрать из этого пакет(и если получилось, то не ждешь до упора).

PS Нет ли нормального примера, а не детсадовского из 3х коробочек на FBD?

0) Это сделают за вас (если речь о буфере UART).
1, 2) https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_UserProtocols_v.3.0.pdf (6.5.4)


Тогда можно еще раз для дурачков: как же пользоваться этим "более высоким уровнем абстракций" за который уплочено?

Например - использовать уже упомянутый UNM_SerialRequest.
Касательно вашей проблемы с WRONG_PARAMETER - техподдержка (support@owen.ru) с радостью вам поможет, как только вы пришлете минимальный проект, в котором ее можно повторить, и пошаговую инструкцию, как это сделать.

Fusa
15.07.2025, 13:16
Прошу помочь, пока ждём контроллер, начал делать проект, и проверять его на эмуляторе, но столкнулся вот с этим паролем
Где-то я нашел что надо найти файл и снять комментарий с строки,но это не помогло, нет папки с названием эмулируемого контроллера
84841

Евгений Кислов
15.07.2025, 13:21
Прошу помочь, пока ждём контроллер, начал делать проект, и проверять его на эмуляторе, но столкнулся вот с этим паролем
Где-то я нашел что надо найти файл и снять комментарий с строки,но это не помогло, нет папки с названием эмулируемого контроллера
84841

Добрый день.
https://owen.ru/forum/showthread.php?t=28167&p=401060&viewfull=1#post401060

Fusa
15.07.2025, 14:10
Не помогает,файлы удалил,один из них постоянно появляется опять после перезагрузки контроллера
и пробую подключится, опять просил логин и пароль (вроде я даже при установке не создавал пользователя вообще)84848 84849 84850

Евгений Кислов
15.07.2025, 15:14
Не помогает,файлы удалил,один из них постоянно появляется опять после перезагрузки контроллера
и пробую подключится, опять просил логин и пароль (вроде я даже при установке не создавал пользователя вообще)84848 84849 84850

Напишите завтра утром мне в телеграм (см. в подписи), пожалуйста.

pt200
15.07.2025, 19:33
0) ...Например - использовать уже упомянутый UNM_SerialRequest.
Касательно вашей проблемы с WRONG_PARAMETER - техподдержка (support@owen.ru) с радостью вам поможет, как только вы пришлете минимальный проект, в котором ее можно повторить, и пошаговую инструкцию, как это сделать.

Пока таким "костылем" пользуюсь:

IF(REQ.xDone OR (REQ.xError AND (REQ.uiResponseSize > 0))) THEN

Все таки хотелось бы с COM.Read разобраться, как она работает:
1) xExecute := TRUE и udiTimeOut = 0 и она начинает складывать принятые данные в буфер(добавляя каждый раз в конец) и инкрементируя размер szSize?
2) а когда мне надо будет тормознуть "нажимаем" xAbort(кстати он мгновенного действия или надо будет дожидаться подтверждения)?

Евгений Кислов
15.07.2025, 20:01
1) xExecute := TRUE и udiTimeOut = 0 и она начинает складывать принятые данные в буфер(добавляя каждый раз в конец) и инкрементируя размер szSize?

По переднему фронту xExecute происходит однократная вычитка всего того, что накопилось в буфере COM-порта. После этого буфер автоматически очищается.
"Добавлять каждый раз в конец и инкрементировать szSize" - это задача того, кто вызывает COM.Read.
В документе из прошлого поста всё это показано.


2) а когда мне надо будет тормознуть "нажимаем" xAbort(кстати он мгновенного действия или надо будет дожидаться подтверждения)?

После ответа на 1) должно быть понятно, что в реальной жизни у вас не будет поводов для "торможения".

pt200
15.07.2025, 21:12
По переднему фронту xExecute происходит однократная вычитка всего того, что накопилось в буфере COM-порта. После этого буфер автоматически очищается.
"Добавлять каждый раз в конец и инкрементировать szSize" - это задача того, кто вызывает COM.Read.
Теперь понятно: т.е. это "не блокирующая" фукция("ReadAllFromBuffer"), гарантированно завершающаяся максимально быстро и не ждущая больше ни чего, а таймаут прикрутили больше "для мебели"(ну и мне по мозгам "поездить" :))

Belletein
19.07.2025, 11:02
Добрый день. Подскажите, можно ли в Codesys v3.5 SP17 использовать для опроса модулей МВ210 стандартный компонент codesys Modbus TCP master, а для связи с панелью библиотеку owen communication в режиме modbus tcp slave одновременно?

Евгений Кислов
19.07.2025, 11:03
Добрый день. Подскажите, можно ли в Codesys v3.5 SP17 использовать для опроса модулей МВ210 стандартный компонент codesys Modbus TCP master, а для связи с панелью библиотеку owen communication в режиме modbus tcp slave одновременно?

Добрый день.
Да, можно.

IvanFilatov
21.07.2025, 10:49
Здравствуйте, помогите пожалуйста найти ПИД регулятор для управления аналоговой Задвижкой (0-10В или 4-20 мА). Изучал документацию на APID_POS_VALV, но насколько понял этот ФБ управляет трехпозиционным клапаном (Команда открыть/Закрыть). Я по мануалам в интернете написал свой ПИД регулятор для аналогового управления задвижкой и его наладил на объекте, но у меня задвижка находится в неустойчивом равновесии поддерживая давление от 4.9 атм до 5.1 атм. Насколько я понимаю это не очень хорошо для исполнительного механизма. Старшие и более опытные товарищи говорят, что задвижка должна выйти на какое то стабильное положение для определенного расхода воздуха и в нем находиться. Предполагаю, что для этого нужен алгоритм с автонастройкой коэффициентов.

МихаилГл
21.07.2025, 11:33
Стабильного состояния вы можете добиться и на своем алгоритме, главное подрбрать коэффициенты...

Карбофос
21.07.2025, 12:06
Добрый день.

Такой вопрос: библиотека CmpOwenPidRegs, ФБ APID_POS_VALV. Вход "SM" - он как-то должен влиять на выходы "LESS" и "MORE", или он чисто косметический? Я подключил имитатор сигнала 0..10В к модулю ввода для имитации обратной связи КЗР, а ФБ как будто вообще его не замечает, выходы управляются совершенно одинаково что при 100% обратной связи, что 0%.

IvanFilatov
22.07.2025, 11:02
Я бы хотел в итоге попробовать какой то стандартный ПИД регулятор, чтобы добиться такого режима управления. В принципе, готов приобрести ТРМ 10 или ТРМ 12 для этой цели. Может быть поможете с выбором? Мне нужно управлять клапаном с аналоговым управлением (скрин во вложении) 84949.

Предполагаю, что мне нужно приобрести ТРМ-12-Щ1-У2-УР-RS. К 1 выходу я должен подключить сам привод, а к 1 входу датчик давления 4..20 мА

Карбофос
24.07.2025, 15:29
Добрый день.

Может быть кто подскажет, в каком направлении копать:
Есть проект на СПК, заказчик хочет подключить его к OwenCloud. Проблема заключается в том, что у меня очень многие данные собраны в структуры, которые им не поддерживаются.
Сейчас я нахожусь в раздумьях, как это дело побороть, возможно приделать какой-нибудь костыль. От структур отказываться никак нельзя, потому что они кочуют из проекта в проект и на них завязаны многие мои типовые ФБ.

Пока единственным вариантом выглядит создание отдельного списка переменных для ОвенКлауд, с зеркалированием в них данных из структур. Есть ли какой-то простой способ подобного?

RV9WFJ
24.07.2025, 15:59
Ну формально можно и структуру туда запихнуть, но обычно там слишком много избыточных данных. Я создаю отдельную область памяти куда копирую через библиотеки работы с памятью или обычным копированием данные в нужном объеме и в нужной последовательности.

Карбофос
24.07.2025, 16:03
Ну формально можно и структуру туда запихнуть, но обычно там слишком много избыточных данных.
В ОвенКлауд? Я отметил в символьной конфигурации нужные поля, но в облаке их нет.

Я создаю отдельную область памяти куда копирую через библиотеки работы с памятью
Как? Предположим у меня есть переменная-поле структуры rVarStr и обычная переменная rVarMir. Как заставить при изменении первой измениться вторую и наоборот?

RV9WFJ
24.07.2025, 17:16
В ОвенКлауд? Я отметил в символьной конфигурации нужные поля, но в облаке их нет. За OwenCloud точно не скажу, до OPCUA клиента доходят, но там уровень вложенности ограничен (возможно проблема моего клиента, а не CoDeSys). Возможно Cloud и не умеет.


Как? Предположим у меня есть переменная-поле структуры rVarStr и обычная переменная rVarMir. Как заставить при изменении первой измениться вторую и наоборот?
Я же выше писал...
Простой вариант:

rVarMir:= sStruct.rVarStr;
Иногда удобнее:

MEM.MemMove( pSource:= ADR(sStruct.rVarStr),
pDestination:= ADR(rVarMir),
uiNumberOfBytes:= SIZEOF(rVarMir));
А вот если переменные надо редактировать и там и там то тогда уже сильно сложнее.
Например простой способ - можно хранить в структурах лишь указатель на rVarMir.

EricIsmag
24.07.2025, 17:46
Добрый день!

Только начинаю программировать на ПЛК ОВЕН 210-14-CS для проекта. Помимо самого ПЛК используются модуль аналогового ввода ОВЕН МВ210-101, модуль дискретного вывода ОВЕН МУ210-412.
Как настроить среду программирования codesys 3.5 чтобы начать отлаживать алгоритм программы подключив к витруальному контроллеру с перечисленными модулями?

Карбофос
24.07.2025, 18:02
За OwenCloud точно не скажу, до OPCUA клиента доходят, но там уровень вложенности ограничен (возможно проблема моего клиента, а не CoDeSys). Возможно Cloud и не умеет..

Я тоже по OPC-UA отдавал данные, проблем со структурами не было. До сегодняшнего дня даже не задумывался, что Клауд не умеет этого, считал, что это само собой разумеющееся - а оказалось, что нет. Просто удар в спину...


Я же выше писал...
Простой вариант:
Ну, с переменными только для чтения вопрос и не стоит, конечно же их можно просто через ":=", хоть и муторно.
Насчет указателей подумаю, но наверное придется строить ФБ для контроля изменений в обеих переменных и ручной из синхронизации...

Карбофос
25.07.2025, 08:24
В общем решил, что проще всего будет создать список переменных-ссылок (REFERENCE TO) и сопоставить их с полями структур. Как оказалось, ОвенКлауд нормально воспринимает ссылки вместо обычных переменных. Костыль, но что поделать, раз такое дело(

Карбофос
25.07.2025, 09:02
Теперь возник вопрос, наверное в первую очередь к Евгению: операцию "rVarMir REF= sStruct.rVarStr;" нужно сделать один раз при запуске СПК, или постоянно повторять в цикле программы?

Емельянов Кирилл
26.07.2025, 01:45
Один раз при старте

Карбофос
27.07.2025, 16:25
Один раз при старте

Понял, спасибо!

pt200
27.07.2025, 18:51
В свете недавнего открытия*, детский вопрос: в каких случаях будет создан локальный экземпляр myFB(всех кроме 7,8?)?
*Открытие: https://owen.ru/forum/showthread.php?t=22038&page=284&p=468802&viewfull=1#post468802



VAR_IN_OUT x: myFB;
VAR_INPUT x: myFB;
VAR_INPUT x: myFB := (var1 := 1, var2 := 2);
VAR_INPUT CONSTANT x: myFB;
VAR_INPUT x: REFERENCE TO myFB;
VAR_INPUT CONSTANT x: REFERENCE TO myFB;
VAR_INPUT x: POINTER TO myFB;
VAR_INPUT CONSTANT x: POINTER TO myFB;

Валенок
27.07.2025, 19:02
1 это тоже pointer как 7 и 8. Только неявный

pt200
27.07.2025, 19:29
1 это тоже pointer как 7 и 8. Только неявный
см. Открытие(я тоже раньше без задней мысли такое предполагал, но оказалось не все так просто)

А уж про то что ссылки это не синтаксически "подслащенные" указатели(как минимум у Visu), а фиг пойми что, я вообще в шоке.

Валенок
28.07.2025, 00:11
И чего там смотреть?
Внутри 2х экземпляров фб получите adr всех этих "открытий" и сюда их выложите вместе с адресом внешней переменной которую пихните всем фб во все эти "открытия". Толку больше будет чем от шоков как от кисейной барышни

Party3AH
28.07.2025, 10:03
Здравствуйте,
есть ли способ вывести значение IP-адреса ПЛК и использовать его в программе?
Например, добавить в визуализацию отображение текущего IP-адреса?

Евгений Кислов
28.07.2025, 10:31
Здравствуйте,
есть ли способ вывести значение IP-адреса ПЛК и использовать его в программе?
Например, добавить в визуализацию отображение текущего IP-адреса?

Добрый день.
Если речь о ПЛК2xx - то см. пример:
https://owen.ru/forum/showthread.php?t=28167&p=336649&viewfull=1#post336649

Party3AH
28.07.2025, 10:57
Добрый день.
Если речь о ПЛК2xx - то см. пример:
https://owen.ru/forum/showthread.php?t=28167&p=336649&viewfull=1#post336649

Да, ПЛК210.
Спасибо! Буду изучать пример.

VladimirVRN
28.07.2025, 15:20
Доброго времени суток!
Есть СПК110 версия таргета 3.5.17.30 Codesys версия v3.5 SP17 Patch 3
В проекте на одном из окон визуализации расположены элементы:
Тренд
Элемент выбора временного диапазона
Элемент выбора интервала дат
Таблица тревог

Как сделать так, чтобы в элементе "Таблица тревог" отображались события произошедшие между датами и временем выбранными в элементе выбора интервала дат ?

Евгений Кислов
28.07.2025, 16:17
Доброго времени суток!
Есть СПК110 версия таргета 3.5.17.30 Codesys версия v3.5 SP17 Patch 3
В проекте на одном из окон визуализации расположены элементы:
Тренд
Элемент выбора временного диапазона
Элемент выбора интервала дат
Таблица тревог

Как сделать так, чтобы в элементе "Таблица тревог" отображались события произошедшие между датами и временем выбранными в элементе выбора интервала дат ?

Добрый день.
У таблицы тревог см. группу параметров Filter by time range:
https://content.helpme-codesys.com/en/CODESYS%20Visualization/_visu_elem_alarm_table-1966301.html

Но использовать "Элемент выбора интервала дат" вряд ли получится.
Используйте "Элемент выбора даты и времени" или просто текстовое поле с привязанной переменной типа DT.

VladimirVRN
28.07.2025, 16:44
Большое спасибо за оперативный ответ!

Yakut
30.07.2025, 20:33
Коллеги здравствуйте, прошу помощи в таком вопросе.

Сделал FB для работы с задвижкой(Valve_711), который работает без вопросов.
Но как только я создаю ещё один FB с вентилятором (Vent_611) и беру в первой/второй строчке глобальную переменную из таблицы GVL(выход на задвижку, которая была обработана в предыдущем FB (задвижки Valve_711), то переменная перестаёт реагировать на сигнал с Master SCADA (MS.MS_karta_start). Причём если я эту переменную пытаюсь в самом кодесие активировать в TRUE, то она всё равно возвращается в FALSE. Знаний не хватает победить данный вопрос.
Вызываю экземпляры ФБ вначале задвижки, потом вентилятора.

Может кто подскажет в чём моя ошибка?

Привязал эти переменные к физическим входам/выходам модулей контроллера..правда под вопросом почему оно работало в первом ФБ...

МихаилГл
31.07.2025, 01:51
Вы этот fb запускаете? Пераый наверное из осноаной программы запустили, а этот забыли.

PS А, последний скрин... Не заметил. Надо внимательнее смотреть, с телефона на удобно.

1exan
31.07.2025, 05:14
Коллеги здравствуйте, прошу помощи в таком вопросе.

Сделал FB для работы с задвижкой(Valve_711), который работает без вопросов.
Но как только я создаю ещё один FB с вентилятором (Vent_611) и беру в первой/второй строчке глобальную переменную из таблицы GVL(выход на задвижку, которая была обработана в предыдущем FB (задвижки Valve_711), то переменная перестаёт реагировать на сигнал с Master SCADA (MS.MS_karta_start). Причём если я эту переменную пытаюсь в самом кодесие активировать в TRUE, то она всё равно возвращается в FALSE. Знаний не хватает победить данный вопрос.
Вызываю экземпляры ФБ вначале задвижки, потом вентилятора.

Может кто подскажет в чём моя ошибка?

Привязал эти переменные к физическим входам/выходам модулей контроллера..правда под вопросом почему оно работало в первом ФБ...

Очень странный подход. Зачем вы используете глобальные переменные ВНУТРИ функционального блока?
Добавьте необходимые входи и выходы в ФБ и подключайте глобальные переменные к этим входам/выходам СНАРУЖИ функционального блока.

Party3AH
01.08.2025, 09:27
Причём если я эту переменную пытаюсь в самом кодесие активировать в TRUE, то она всё равно возвращается в FALSE. Знаний не хватает победить данный вопрос.
.

Переменная где-то перезаписывается в другом месте. Скорее всего, она используется в обоих ФБ, как выше писали, используйте входные/выходные переменные.
Чтобы точно определить место, используйте перекрёстные ссылки по переменным и точки останова для отладки программы.

Yakut
03.08.2025, 12:21
А где взять этот кросреференц?
У меня вообще вот такое случилось:
Загружаю False. На выход контроллера подаётся False, а на самом контроллере TRUE.
Как сие вылечить?

Yakut
03.08.2025, 12:28
Причём удалив его с Записи, т.е. нигде в него ничего не записывается, всё осталось без изменений.

Yakut
03.08.2025, 12:31
А теперь ещё интереснее удалил выходную переменную со входа - выход перешёл в False...кто-нибудь сможет пояснить почему при подаче на вход False он почему-то ставится TRUE в самом контроллере, но не в программе?
Такая же история происходит в ST. Горит физически False, а контроллер даёт на выходе TRUE ?!?!?!?!

kondor3000
03.08.2025, 12:35
А теперь ещё интереснее удалил выходную переменную со входа - выход перешёл в False...кто-нибудь сможет пояснить почему при подаче на вход False он почему-то ставится TRUE в самом контроллере, но не в программе?

Что нибудь о порядке выполнения программы слышали?
У вас сначала выход присваивается, а потом считать начинает, после 23 шага идёт 2,
а после 18 и 24 шага 7
По ПКМ на холсте установить порядок, По потоку данных.

МихаилГл
03.08.2025, 12:36
Потому что где то дальше перезаписывается. У вас на холсте отображаются итоговые значения переменных, а не то, что по логике должно быть.

Yakut
03.08.2025, 13:01
Что нибудь о порядке выполнения программы слышали?
У вас сначала выход присваивается, а потом считать начинает, после 23 шага идёт 2,
а после 18 и 24 шага 7
По ПКМ на холсте установить порядок, По потоку данных.

Типа так?
Всё равно такой же результат.
Опять же с точки зрения логики ну допустим в первый цикл у меня произошло чтение переменных. И в самом начале у меня было TRUE, но после выполнения ФБ программы он у меня станет FALSE. А по умолчанию ВСЕ переменные после загрузки в ПЛК в положении False. Что собственно сам контроллер и видит и присваивает на выходе FALSE. Почему физически он становиться TRUE?

Yakut
03.08.2025, 13:04
Потому что где то дальше перезаписывается. У вас на холсте отображаются итоговые значения переменных, а не то, что по логике должно быть.

Это как понять? Есть перекрёсные ссылки - там все переменные подписаны где они вызываются в самой программе. Причём даже написано где идёт чтение, где вызов, а где запись. Так вот по скрину видно, что запись идёт в 1 месте, в остальных местах происходит чтение и не более того. Почему оно стало вдруг записываться, если оно в чтении? Я говорю про конкретный программы в где происходит активация таймера TON. Ибо если я его убираю с этого места (чтения), то физически контроллер перезходит в FALSE. Такая же история происходит в ST. Как только я выходную переменную убираю со входа, то у меня она становится FALSE.
Причём есть точно такая же задвтжка с такой же логикой 821 и у неё нет активации TRUE на выходе PLC

kondor3000
03.08.2025, 13:05
Типа так?
Всё равно такой же результат.
Опять же с точки зрения логики ну допустим в первый цикл у меня произошло чтение переменных. И в самом начале у меня было TRUE, но после выполнения ФБ программы он у меня станет FALSE. А по умолчанию ВСЕ переменные после загрузки в ПЛК в положении False. Что собственно сам контроллер и видит и присваивает на выходе FALSE. Почему физически он становиться TRUE?

Значит у вас ниже в программе, та же переменная, перезаписывается ещё раз. И последнее изменение, записывается на выход.
Но по потоку данных, должно быть на всех листах CFC.

МихаилГл
03.08.2025, 13:07
А печему установка обновления переменных в родительском контроле? В это контроллере так положено? В овене режим 2, например. Вы приводите скрины без пояснений, где какие переменные вас не устраивают...

Yakut
03.08.2025, 13:11
Значит у вас ниже в программе, та же переменная, перезаписывается ещё раз. И последнее изменение, записывается на выход.
Но по потоку данных, должно быть на всех листах CFC.

Есть же режим кросреференц в нём показано, что она записывается только 1 раз.

Что за строка IOcofigError POU?

Yakut
03.08.2025, 13:14
Не совсем понял про родильский контроль. Переменная GVL.OUT_zatvor_822_open. Такая же переменная стоит выше Application.GVL.OUT_zatvor_821_open, но на контроллере "горит" false;

kondor3000
03.08.2025, 13:19
Есть же режим кросреференц в нём показано, что она записывается только 1 раз.

Что за строка IOcofigError POU?

Можете спорить сколько угодно, ниже по программе, может быть и в другом ФБ, вызванном после этого блока.
Так как у вас написана программа, надо всё переделывать, вызывать блоки по порядку и смотреть работу.
Также надо делать Очистить всё, Компилировать всё.

Yakut
03.08.2025, 13:24
Можете спорить сколько угодно, ниже по программе, может быть и в другом ФБ, вызванном после этого блока.
Так как у вас написана программа, надо всё переделывать, вызывать блоки по порядку и смотреть работу.
Также надо делать Очистить всё, Компилировать всё.

И не собирался спорить, я вижу по программе ровно то же что и вы - референц лист показывает где конкретно вызвана данная переменная, причём - показывает где пишется, где читается. Пробовал через обычный поисковик - он находит ровно столько же раз упоминания данной переменной во всей программе.
Самое интересное, если я эту переменную удаляю внизу перед TON, то выход в контроллере становится False.
В теории может это какое-то слово, куоторое идёт на выход модуля и где по значениям 15 битик получается TRUE, хотя вроде кодесис не битами, а байтами балуется... сейчас проверим, поменяв переменную на другую.
Да нет, он именно на эту переменную обижается... перенёс её в 14 выход стал 14 гореть, а 15 потух.

МихаилГл
03.08.2025, 13:40
У вас переменная еще и к at % объявлена.

Выложите код целиком, раз сами не можете найти проблему... Хотя тут не овен, хрен откроется...

Yakut
03.08.2025, 14:07
У вас переменная еще и к at % объявлена.

Выложите код целиком, раз сами не можете найти проблему... Хотя тут не овен, хрен откроется...
Эт можно..Тем более я его вообще сломал))))

Так объявление переменной не есть же его присваивание в TRUE

Cs-Cs
03.08.2025, 14:13
...да замучило!
1. Нужно включить на Опциях проекта проверку на множественную запись выходов (после этого будет множество "приятных" удивлений).
Зато она покажет, где идёт запись выходов из разных мест (так нельзя)
2. Нужно на Modbus-устройства поменять установку "Всегда Обновлять переменные" на "Всегда (в задаче цикла шины)"

Yakut
03.08.2025, 14:30
...да замучило!
1. Нужно включить на Опциях проекта проверку на множественную запись выходов (после этого будет множество "приятных" удивлений).
Зато она покажет, где идёт запись выходов из разных мест (так нельзя)
2. Нужно на Modbus-устройства поменять установку "Всегда Обновлять переменные" на "Всегда (в задаче цикла шины)"

По первому пункту оно?
ПО второму пункту пока не понял где, но у меня сейчас ни одно устройство не опрашивает контроллер..(кроме самого ПК и кодесис)

kondor3000
03.08.2025, 14:47
По первому пункту оно?
ПО второму пункту пока не понял где, но у меня сейчас ни одно устройство не опрашивает контроллер..(кроме самого ПК и кодесис)

2 пункт, для всех модулей слейв установить 85155
Чтобы открыть ваш проект, нужны таргеты на ваш ПЛК и модули, это не Овен

Пиндец, опять все блоки CFC не по порядку, тяжёлый случай.
Небось и очистку с компиляцией так и не сделал.

Cs-Cs
03.08.2025, 14:49
Да, оно. Можно ещё включить перекрывающиеся области памяти.
Но учти, что это обычно сразу вызовет тьму ошибок компиляции

Второе - про это. Чтобы так везде было
85156

Yakut
03.08.2025, 15:01
Ещё в довесок, взял обозвал переменную по другому(адрес не менял, пока) и вызвал её 1 раз в главной программе. Потом закомментил её там же и в выходных устройствах она пропала, что свидетельствует о её единожды вызове.

Yakut
03.08.2025, 15:07
Да, оно. Можно ещё включить перекрывающиеся области памяти.
Но учти, что это обычно сразу вызовет тьму ошибок компиляции

Второе - про это. Чтобы так везде было
85156

Понял, ошибко не вывалилось, а вот что реально накопал, так "Для входов (VAR_INPUT) эта проверка не применяется — только для выходов (VAR_OUTPUT) и глобальных переменных."
Про проверке выдало только одну и ту же ошибку про неиспользуемые переменные (ну это я и так знаю, на стадии разработки)

Сейчас вылезла интересная штука, если меняю опросы по MODBUS, как было сказано выше, то в одном случае горит лампа на контроллере, в другом не горит.
Причём менял эту переменную в другие выходы - она и на других выходах горела. А в 15 выход ставил другие выходные переменные с другими адресами - не горело... странное слово на ум приходит - чудеса...

Yakut
03.08.2025, 15:49
Поменял адрес с AT%MX228.1 на AT%MX228.15 и глюк ушёл....:eek:
Вернул эту переменную во все места программы и всё работает, правда адрес теперь AT%MX228.15....
Хорошо что сюда выложил косячный код, а то потом кому рассказать - не поверят вот такой вот привет из Южной Кореи...

МихаилГл
03.08.2025, 15:53
Поменял адрес с AT%MX228.1 на AT%MX228.15 и глюк ушёл....:eek:
Вернул эту переменную во все места программы и всё работает, правда адрес теперь AT%MX228.15....
Хорошо что сюда выложил косячный код, а то потом кому рассказать - не поверят вот такой вот привет из Южной Кореи...

Начнете привязывать мастерскаду, опять много чего всплывет...

PS Корея не причем, где то чтото все таки не заметили. Не обязательно в плк, может в обмене по модбас, в работе с регистрами...

Yakut
03.08.2025, 16:16
Начнете привязывать мастерскаду, опять много чего всплывет...

PS Корея не причем, где то чтото все таки не заметили. Не обязательно в плк, может в обмене по модбас, в работе с регистрами...

Для этого есть эксель, который автоматом всё заполняет. В том числе адреса переменных. Теперь понятно почему я всегда работаю с глобальными переменными из таблицы? ;-)
Кстати, надо будет не забудь данную штуку проверить на объекте с 15-тью модулями...может мне такой подопытный контроллер попался..

МихаилГл
03.08.2025, 16:26
При чем тут эксель... Я про особенность мастер скады с ее разделением переменной на 2 части, вход и выход, в результате чего при посылке бита на выход на плк (в моем случае плк210) он придет, но повторно вы его отправить сможете только применив костыль в этой скаде. Ну и в контроллере полукостыль.

PS Хотя я с ней только месяц работаю, может чего и не знаю...

kondor3000
03.08.2025, 16:47
При чем тут эксель... Я про особенность мастер скады с ее разделением переменной на 2 части, вход и выход, в результате чего при посылке бита на выход на плк (в моем случае плк210) он придет, но повторно вы его отправить сможете только применив костыль в этой скаде. Ну и в контроллере полукостыль.

PS Хотя я с ней только месяц работаю, может чего и не знаю...

Разрабам Скады 4D, надо руки оборвать, лучше использовать любую другую Скаду, меньше гемора в разы будет.
А народ у нас продолжает жрать кактус.

Yakut
03.08.2025, 17:09
При чем тут эксель... Я про особенность мастер скады с ее разделением переменной на 2 части, вход и выход, в результате чего при посылке бита на выход на плк (в моем случае плк210) он придет, но повторно вы его отправить сможете только применив костыль в этой скаде. Ну и в контроллере полукостыль.

PS Хотя я с ней только месяц работаю, может чего и не знаю...

я привязываю сразу вход ивыход. Правой кнопкой перетаскиваешь переменную и выскакивает диалог - вход выход или обе, берёшь обе и оно вроде работает.

Yakut
03.08.2025, 17:10
Разрабам Скады 4D, надо руки оборвать, лучше использовать любую другую Скаду, меньше гемора в разы будет.
А народ у нас продолжает жрать кактус.

Тут скорее всего дело не в народе (те, кто покупает скаду), а в заказчиках...если в ТЗ прописано что налдо её, тогда кактус в сыром виде.

Cs-Cs
03.08.2025, 18:45
...и ну НЕ надо использовать прямые адреса!
Так НЕПРАВИЛЬНО!

Yakut
03.08.2025, 19:39
...и ну НЕ надо использовать прямые адреса!
Так НЕПРАВИЛЬНО!

Почему? Папки , т.е. Отцы в метапрограмировании используют, так что я делко не первооткрыватель. У меня был только один объект с программированием при помощи эксель таблиц и python. Там вообще НИ ОДНОЙ локальной переменной нет. Все таблицы создавались автоматически и самое приятное, что программисту делать практически ничего не нужно. При особой сноровке за вечер можно накидать готовую программу, с которой я парюсь уже вторую неделю)))

Кстати, библиотеки есть OSCAT на 3,17 или они из ранних версий подойдут?

Yakut
03.08.2025, 19:58
2 пункт, для всех модулей слейв установить 85155
Чтобы открыть ваш проект, нужны таргеты на ваш ПЛК и модули, это не Овен

Пиндец, опять все блоки CFC не по порядку, тяжёлый случай.
Небось и очистку с компиляцией так и не сделал.


Это устанавливал у себя.

МихаилГл
04.08.2025, 00:41
Я вам про прямую адресацию намекал еще раньше, но вы так и не уловили... Когда прописываете модули, кодесис сам проставляет адреса в порядке появления модуля. И если вы будете тиражировать свое решение, то можете влететь.

Может я и не такой спец в программировании, но вы почемуто игнорируете многие полезные советы, а с некоторыми вообще не стараетесь разобраться и ждете прямых ответов... А как же жажда самообразования?

viktor1974
05.08.2025, 12:10
Добрый день!
Подскажите, наверное, есть функция которя отслеживает изменение значения переменной, понятно, что написать код не проблема, но интересно посмотреть библиотеку в которой это реализовано, может там еще чего интересного есть, сам не нашёл

Евгений Кислов
05.08.2025, 12:12
Добрый день!
Подскажите, наверное, есть функция которя отслеживает изменение значения переменной, понятно, что написать код не проблема, но интересно посмотреть библиотеку в которой это реализовано, может там еще чего интересного есть, сам не нашёл

Добрый день.
https://oscat.ru/wp-content/Video/CodesysOneLove/MainPlaylist/028_ValueChangeDetection_ANY.mp4

Belerafon
05.08.2025, 14:51
Здравствуйте, повторный вопрос про ПИД-регулятор. Он уже задавался

07.04.2021, 16:02
С чем связано изменение ФБ STD_PID библиотеки CmpOwenPidRegs_v3.5.14.33? Убрали ограничение интегральной составляющей и т.д., по моему стал менее удобен.
Был получен ответ, что "В них нет смысла, PMAX и PMIN являются более строгими ограничениями.". Но это не полный ответ. Интегральная часть фактически ограничена PMAX и PMIN, или же не ограничена, а ограничен только выход? Это явно не написано в документации, а это крайне важно. Если на входе регулятора присутствует ошибка, которую он выходом не может скомпенсировать, выход упирается в ограничение PMAX, а интегральная часть внутри, если она не ограничена, может продолжить бесконтрольно расти до бесконечности или до переполнения. Обязательно нужен какой-то anti-wind-up, или списывание интегральной составляющей или клампинг. Иначе, если регулятор насытился и остался в насыщении, интегратор улетел в бесконечность, то потом никакими заданиями его не вывести из этого состояния. Сейчас у нас на объекте проявилась проблема с регулятором ФБ STD_PID, когда он выдаёт свой PMAX после долгого времени простоя и не хочет выходить из ограничения. Прошу подтвердить, что внутри реализации регулятора интегратор ограничен - именно интегратор, а не только лишь выход. И добавить это в документацию. Что да, отдельной переменной для ограничения интегратора пусть и нет, но интегратор ограничен тем же параметром PMAX и PMIN. Это критически важно. Без этого функционала регулятор становится прямо скажем опасен.

Евгений Кислов
05.08.2025, 15:51
Добрый день.


Прошу подтвердить, что внутри реализации регулятора интегратор ограничен - именно интегратор, а не только лишь выход

Скриншот из исходников библиотеки:

85198


И добавить это в документацию

Уточните, пожалуйста - в каких именно фрагментах документа, на ваш взгляд, следует разместить это примечание?

viktor1974
05.08.2025, 16:10
Я надеялся, что есть функция, которая отслеживает изменение определенной области памяти, чтобы не создавать экземляр ФБ для каждой переменной, но всё равно Спасибо

Belerafon
05.08.2025, 16:32
Спасибо! Варианты правки документации (попросил o3)
1. В описании PMIN и PMAX: Минимальное значение выходного сигнала регулятора и интегральной составляющей (в
диапазоне -1.0...1.0)

2. Вставка в пояснительный текст после рисунка 2.6 (процесс регулирования)
Дополнительная защита от wind-up
Если ошибка остаётся значительной и выход достигает PMIN или PMAX, дальнейшее интегрирование не приводит к росту интегральной части: интегратор фиксируется в тех же пределах PMIN или PMAX. После устранения ошибки регулятор возвращается из насыщения.

Также стоит доработать рисунок, заменив редуцированные переменные _IMAX _IMIN на PMAX и PMIN

Этого достаточно, чтобы инженер, читающий документ, чётко понял: внутри ФБ интегратор «зажат» такими же границами, как и сам выход, и дополнительной настройки для anti-wind-up не требуется.

Евгений Кислов
05.08.2025, 16:43
Спасибо! Варианты правки документации (попросил o3)
1. В описании PMIN и PMAX: Минимальное значение выходного сигнала регулятора и интегральной составляющей (в
диапазоне -1.0...1.0)

2. Вставка в пояснительный текст после рисунка 2.6 (процесс регулирования)
Дополнительная защита от wind-up
Если ошибка остаётся значительной и выход достигает PMIN или PMAX, дальнейшее интегрирование не приводит к росту интегральной части: интегратор фиксируется в тех же пределах PMIN или PMAX. После устранения ошибки регулятор возвращается из насыщения.

Также стоит доработать рисунок, заменив редуцированные переменные _IMAX _IMIN на PMAX и PMIN

Этого достаточно, чтобы инженер, читающий документ, чётко понял: внутри ФБ интегратор «зажат» такими же границами, как и сам выход, и дополнительной настройки для anti-wind-up не требуется.

Спасибо за предложения, правки будут внесены в ближайшее время.

Назаров Александр
15.08.2025, 15:44
Добрый день! В документе "CODESYS V3.5 Вопросы и ответы (FAQ) Руководство пользователя 21.09.2022 версия 3.1" п.9.4 путь монтирования SD накопителя /mnt/ufs/media/mmcblk0p1. В http://X.X.X.X/cgi-bin/luci/admin/system/mounts - Файловая система(/dev/mmcblk1p1), Точка монтирования(/mnt/ufs/media/mmcblk1p1). Описка в документе?

Евгений Кислов
15.08.2025, 16:05
Добрый день! В документе "CODESYS V3.5 Вопросы и ответы (FAQ) Руководство пользователя 21.09.2022 версия 3.1" п.9.4 путь монтирования SD накопителя /mnt/ufs/media/mmcblk0p1. В http://X.X.X.X/cgi-bin/luci/admin/system/mounts - Файловая система(/dev/mmcblk1p1), Точка монтирования(/mnt/ufs/media/mmcblk1p1). Описка в документе?

Добрый день.
"В http://X.X.X.X/cgi-bin/luci/admin/system/mounts ..." - это о каком именно контроллере речь? Укажите полную модификацию.

Назаров Александр
15.08.2025, 16:16
ПЛК210-12.

Евгений Кислов
15.08.2025, 17:00
ПЛК210-12.

21.09.2022 он еще не вышел, так что никакой опечатки нет.
Посмотрите, как выглядит п. 9.4 в актуальной версии документа:
https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Faq_v.3.5.pdf

Емельянов Кирилл
16.08.2025, 01:29
А ведь просил же приложение с актуальной документацией, привязанной к серийному номеру, на все изделия Овен. Отсканировал код на приборе/упаковке и увидел всё, что касается конкретного прибора с конкретной прошивкой. Как буд-то бы не очень сложно сделать. Некоторые вещи бывает не очень просто отыскать.

Евгений Кислов
16.08.2025, 06:31
с актуальной документацией

Актуальная документация всегда доступна по ссылке:
https://owen.ru/product/codesys_v3/documentation

Применительно к вопросу выше - пути к накопителям вообще можно увидеть в проекте CODESYS, на вкладке Device - Информация для используемого контроллера.

Емельянов Кирилл
16.08.2025, 09:18
Актуальная документация всегда доступна по ссылке:
https://owen.ru/product/codesys_v3/documentation

Применительно к вопросу выше - пути к накопителям вообще можно увидеть в проекте CODESYS, на вкладке Device - Информация для используемого контроллера.

Для новых приборов, да, актуальная, но вот для выпущенных сколько-то лет назад - далеко не всегда

Емельянов Кирилл
16.08.2025, 13:00
Есть способ грохнуть owencloud? Он мне точно не нужен, не хочу чтобы он торчал в контроллере и занимался непонятными делами :-)
85340

Евгений Кислов
16.08.2025, 13:03
Есть способ грохнуть owencloud? Он мне точно не нужен, не хочу чтобы он торчал в контроллере и занимался непонятными делами :-)
85340

В узле OwenCloud есть канал Enable OwenCloud.
Достаточно привязать к нему переменную и присвоить ей FALSE.

mityaykaa
17.08.2025, 19:17
Добрый вечер. Пытаюсь подключится к виртуальному контроллеру, но просит выполнить вход пользователя
Ввожу admin admin, но ничего не находит. Год не заходил в приложение, не могли бы напомнить, в чем проблема

Евгений Кислов
17.08.2025, 19:22
Добрый вечер. Пытаюсь подключится к виртуальному контроллеру, но просит выполнить вход пользователя
Ввожу admin admin, но ничего не находит. Год не заходил в приложение, не могли бы напомнить, в чем проблема

Добрый день.
https://owen.ru/forum/showthread.php?t=28167&p=401060&viewfull=1#post401060

Killreal212
19.08.2025, 09:34
Здравствуйте, подскажите пожалуйста возможные причины и исправления этих ошибок. Программа работает несколько часов нормально, при компиляции ошибок нет. Но спустя несколько часов появляется ошибка визуализации 85352

Евгений Кислов
19.08.2025, 10:43
Здравствуйте, подскажите пожалуйста возможные причины и исправления этих ошибок. Программа работает несколько часов нормально, при компиляции ошибок нет. Но спустя несколько часов появляется ошибка визуализации 85352

Добрый день.
Напишите, пожалуйста, на support@owen.ru

Фаиль Нагимуллин
19.08.2025, 13:39
Можно ли как-то вызвать visualization типа диалог с st кода? НЕ с кофигуратора ввода, а именно из кода

Евгений Кислов
19.08.2025, 15:33
Можно ли как-то вызвать visualization типа диалог с st кода? НЕ с кофигуратора ввода, а именно из кода

Добрый день.
См. ФБ FbOpenDialog в библиотеке Visu Utils.
https://owen.ru/media/video/owen_plk210_web

pt200
19.08.2025, 18:03
СПК210-10 3.7.0228.1046
на СОМ1 модули МХ110(с откинутыми модулями проблема сохраняется)
обмен через библиотеку OCL.MB_SerialRequest (при обмене через мастер еще хуже: идет непрерывный циклический отвал модулей по кольцу)


предварительно: периодически(~3-10 запросов) у ПЛК не отключается передатчик после отправки запроса(D+ D- остаютcя "подтянуты" к питаниям) до следующего запроса(ответ естественно не доходит) !

Тот же код на других портах работает ровно(да и не важен мой код, т.к. RX/TX переключает не он).
Сталкивался кто с подобным, куда копать(что там за драйвера 485го, кто DE/RE управляет или автомат)?

PS перепрошивка со сбросом не помогли.

================================================== =============================================
Используются все 3 порта через OCL, параметры:


mb_bus_com1(udiComPort := 1,
udiBaudrate := 115200,
udiByteSize := 8,
eParity := OCL.COM_PARITY.NONE,
eStopBit := OCL.COM_STOPBIT.ONE);
mb_bus_com2(udiComPort := 2,
udiBaudrate := 9600,
udiByteSize := 8,
eParity := OCL.COM_PARITY.NONE,
eStopBit := OCL.COM_STOPBIT.ONE);
mb_bus_com3(udiComPort := 3,
udiBaudrate := 115200,
udiByteSize := 8,
eParity := OCL.COM_PARITY.NONE,
eStopBit := OCL.COM_STOPBIT.ONE);

Если на всех 3х портах использовать только READ_HOLDING_REGISTERS / WRITE_MULTIPLE_REGISTERS - ВСЕ ХОРОШО
но если на СОМ2 использовать READ_INPUT_REGISTERS(и соответственно получать ответы) - начинается эта фигня! - не влияет

Код закрыт, но это и не важно: я драйвером 485го не управляю от слова никак!!!

P.S. Овен ковыряйте свой код: возможно пока на 9600 идет прием/отправка пакета(неспешно): "забываете" переключить на другом порту

================================================== ================================================== ==========================

Собственно угадал(99.9%): оба порта(СОМ1 и СОМ2) "подклинивают" друг другу DE/RE на передаче(кстати СОМ3 вроде как сам по себе!)
Если поменять шины СОМ1 и СОМ2 местами(скорость и слэйвы) - проблема сохраняется.


Приложил обмен(смотреть PulseView)

P.S. Для воспроизведения проблемы, предполагаю(проверить уже неначем), достаточно через мастер настроить обмен через СОМ1 - 115200 и СОМ2 - 1200. И СОМ1 сразу ляжет.

================================================== ================================================== ==========================

Костыли:


разогнал медленный порт до максимума(38400) - теперь залипания у быстрого до 2мс
на быстром порту у слэйвов поставил задежку ответов 5мс


************************************************** ************************************************** ************************************************** **************************************

P.S. Но вообще полное дно у вас товарищи получилось: 9мс на 115200 от получения ответа до нового запроса у коммуникационного контроллера! :mad:

Фаиль Нагимуллин
25.08.2025, 12:14
Добрый день. Допустим у меня есть 6 аналоговоых входов, как будет правильнее, записывать каждый вход как отдельную переменную в PLC_PRG допустим с типом real или создать массив и уже везде работать с этим массивом? То есть массив такой я имею ввиду rAI: ARRAY [0..6] OF AI_Type; и в AI_Type уже есть а сырое значение и значение после scale

Sulfur
25.08.2025, 12:36
Фаиль Нагимуллин
Если речь об аналоговых входах модулей Овен, то там есть на каждый канал еще и временные метки, и коды ошибок. А упаковка всего этого в массив ничего не дает в плане качества\быстродействия снятия показаний.

Dmirtiy
31.08.2025, 00:37
Подскажите, пожалуйста, возможно ли остановить / запустить пользовательское приложение Codesys из консоли ПЛК 210?

Евгений Кислов
31.08.2025, 09:09
Подскажите, пожалуйста, возможно ли остановить / запустить пользовательское приложение Codesys из консоли ПЛК 210?

Добрый день.
Из консоли можно остановить работу системы исполнения CODESYS (соответственно, приложение при этом тоже прекратит выполняться):

service codesys stop
service codesys start

Dmirtiy
31.08.2025, 17:38
Всё отлично работает, Премного благодарен.

Солнечный заяц
05.09.2025, 15:23
Всем привет!
СПК работает как slave по modbus rtu. Нужно редактировать настройки системы как с верхнего уровня по интерфейсу, так и с экрана по HMI. При этом параметры должны быть энергонезависимыми. Можно ли это реализовать средствами CDS или придется делать ФБ и сравнивать retain переменные с регистрами modbus?

Александр Пинэко-Скворцов
05.09.2025, 15:55
Всем привет!
СПК работает как slave по modbus rtu. Нужно редактировать настройки системы как с верхнего уровня по интерфейсу, так и с экрана по HMI. При этом параметры должны быть энергонезависимыми. Можно ли это реализовать средствами CDS или придется делать ФБ и сравнивать retain переменные с регистрами modbus?

Можно использовать блоки Modbus Slave из библиотеки OwenCommunication. Структуру данных объявлять, соответственно, в VAR RETAIN.
См. документ https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Modbus_v3.2.pdf

Евгений Кислов
05.09.2025, 16:40
Всем привет!
...
Можно ли это реализовать средствами CDS

Добрый день.
На мой взгляд, проще и удобнее сделать это через библиотеку, как выше указал Александр, но, строго говоря, можно решить задачу и "средствами СDS":
https://owen.ru/forum/showthread.php?t=28167&p=434909&viewfull=1#post434909

aaaSashaMGGU
08.09.2025, 16:30
Добрый
Правлю проект на ПК, гружу в ПЛК. Открываю на ноутбуке этот же проект, подключаюсь к ПЛК - и получаю сообщение, что приложение в ПЛК необходимо заменить...
Сравнение выдаёт вот такое:
85644
85645
85647
85646

Как это исправить?
Спасибо

Солнечный заяц
08.09.2025, 16:48
можно решить задачу и "средствами СDS"
Ваш вариант для меня выглядит проще.
1. создаю структуру настроек stSettings,
2. объявляю ее RETAIN переменной,
3. присваиваю структуру stSettings массиву регистров временного хранения (массив > stSettings),
85650
4. обновляю плагин CODESYS Modbus до версии 4.1.0.0, галочка "запись"

Евгений Кислов
08.09.2025, 16:50
Добрый
Правлю проект на ПК, гружу в ПЛК. Открываю на ноутбуке этот же проект, подключаюсь к ПЛК - и получаю сообщение, что приложение в ПЛК необходимо заменить...
Сравнение выдаёт вот такое:
85644
85645
85647
85646

Как это исправить?
Спасибо

Добрый день.


Открываю на ноутбуке этот же проект,

Опишите, пожалуйста, в подробностях, как это происходит.
В частности - какое расширение было у файла, который вы переносили с ПК на ноутбук.
Версии CODESYS, установленные на ПК и ноутбуке - идентичны?

aaaSashaMGGU
09.09.2025, 08:01
Добрый день.



Опишите, пожалуйста, в подробностях, как это происходит.
В частности - какое расширение было у файла, который вы переносили с ПК на ноутбук.
Версии CODESYS, установленные на ПК и ноутбуке - идентичны?

Файл - "Вентиляция.project", проект лежит на сетевом диске. Для ПК и ноутбука это буквально одинаковый проект

Версии, см вложения
85659

Евгений Кислов
09.09.2025, 08:51
Файл - "Вентиляция.project", проект лежит на сетевом диске. Для ПК и ноутбука это буквально одинаковый проект

Версии, см вложения
85659

Открытие файла проекта происходит непосредственно с сетевого диска, или сначала он копируется в отдельную директорию в памяти ноутбука?

aaaSashaMGGU
09.09.2025, 09:05
Открытие файла проекта происходит непосредственно с сетевого диска, или сначала он копируется в отдельную директорию в памяти ноутбука?

Да, прямо с сетевого диска
Открыл проект с сетевого диска через ПК. Изменил, загрузил в ПЛК. Закрыл проект
Открыл этот же проект с этого же сетевого диска с этого же пути через ноутбук. При попытке подключения к контроллеру: "Приложение в ПЛК необходимо заменить"

Евгений Кислов
09.09.2025, 09:27
Да, прямо с сетевого диска
Открыл проект с сетевого диска через ПК. Изменил, загрузил в ПЛК. Закрыл проект
Открыл этот же проект с этого же сетевого диска с этого же пути через ноутбук. При попытке подключения к контроллеру: "Приложение в ПЛК необходимо заменить"

Разработчики CODESYS предлагают для вашей ситуации передавать между ПК архив проекта (.projectarhive) или на одном ПК загружать в ПЛК исходники проекта, а на другом - выгружать:
https://forge.codesys.com/forge/talk/Engineering/thread/2569dfe075/

Fusa
09.09.2025, 09:38
Доброго времени суток, подскажите, не получается разобраться с передачей данных между плк 210 и upack-718edx по Modbus TCP. при попытке подключения через OPC сервер принимать данные получается, а в Codesys выдает ошибку подключения,после чего она сбрасывается и опять появляется. Порт и адрес указан верно.
85660 85661

Евгений Кислов
09.09.2025, 09:53
Доброго времени суток, подскажите, не получается разобраться с передачей данных между плк 210 и upack-718edx по Modbus TCP. при попытке подключения через OPC сервер принимать данные получается, а в Codesys выдает ошибку подключения,после чего она сбрасывается и опять появляется. Порт и адрес указан верно.
85660 85661

Добрый день.
Проверьте наличие пинга между ПЛК и вашим устройством.
Это можно сделать в веб-конфигураторе ПЛК: Сеть - Диагностика - Пинг

Fusa
09.09.2025, 10:11
Сделал, пинг есть

85663

Евгений Кислов
09.09.2025, 10:16
Сделал, пинг есть

85663

Напишите, пожалуйста, мне в телеграм (см. в подписи) и подготовьте доступ по AnyDesk.

Евгений Кислов
09.09.2025, 10:39
Обновляю вопрос.
Я думал, что проблема между ПК и ноутом. Оказывается, проблема, что:
1) Внёс изменения на ПК, сохранил, загрузил в ПЛК, закрыл проект
2) Открыл снова на ПК. При попытке подключения к контроллеру: "Приложение в ПЛК необходимо заменить"

В общем, убираем ноутбук из изначального вопроса...
"Очистить всё" делал

Собственно, команда "Очистить всё" делает невозможной подключение к ПЛК без загрузки проекта, потому что удаляет файлы с информацией о последней компиляции.

aaaSashaMGGU
09.09.2025, 10:44
Собственно, команда "Очистить всё" делает невозможной подключение к ПЛК без загрузки проекта, потому что удаляет файлы с информацией о последней компиляции.

Я хотел поправить предыдущее сообщение, но не успел...

Обновляю вопрос.
1) Внёс изменения на ПК, сохранил, загрузил в ПЛК, закрыл проект
2) Открыл на ноутбуке, нажал "Сканировать сеть", выбрал свой контроллер
3) На контроллер не пишу! Просто закрываю проект
4) Открываю снова на ПК. При попытке подключения к контроллеру: "Приложение в ПЛК необходимо заменить"

"Очистить всё" я делал один раз как средство лечения подобных проблем. Не помогло. При такой последовательности действий всегда "Приложение в ПЛК необходимо заменить"
Такой проблемы не было, я всегда открываю с сервера проекты что на ПК, что на ноуте. И ещё раз напоминаю, что там явно какие-то отсылки к Овеновским библиотекам:
85668

Евгений Кислов
09.09.2025, 11:50
Я хотел поправить предыдущее сообщение, но не успел...

Обновляю вопрос.
1) Внёс изменения на ПК, сохранил, загрузил в ПЛК, закрыл проект
2) Открыл на ноутбуке, нажал "Сканировать сеть", выбрал свой контроллер
3) На контроллер не пишу! Просто закрываю проект
4) Открываю снова на ПК. При попытке подключения к контроллеру: "Приложение в ПЛК необходимо заменить"

"Очистить всё" я делал один раз как средство лечения подобных проблем. Не помогло. При такой последовательности действий всегда "Приложение в ПЛК необходимо заменить"
Такой проблемы не было, я всегда открываю с сервера проекты что на ПК, что на ноуте. И ещё раз напоминаю, что там явно какие-то отсылки к Овеновским библиотекам:
85668

Напишите, пожалуйста, на support@owen.ru, чтобы более предметно обсудить вашу ситуацию.

aaaSashaMGGU
09.09.2025, 16:35
Напишите, пожалуйста, на support@owen.ru, чтобы более предметно обсудить вашу ситуацию.

Техподдержка подсказала, что сделать:
На первом ПК, на котором создавался проект: Компиляция - Очистить все - Компиляция - Генерировать код - Файл - Архив проекта - Установить все галочки - Сохранить.

Создал архив проекта на ПК, открыл его же на ноутбуке
В процессе Codesys выдал сообщение, что библиотека (не помню уже какая, но вроде бы какая-то *visu*) будет перезаписана
После этого всё корректно заработало и там, и там
Теперь открываю проект с сервера что с ПК, что с ноутбука - и перезапись проекта уже не требуется
Может, кому-то поможет
Всем спасибо

Pahulio
10.09.2025, 07:35
Добрый день!!! Подскажите пожалуйста, чего-то виртуальный контроллер в Кодесисе 3,5 не выходит на отладку, связь есть, в чем может быть причина? Пишет: "Не подключен к приложению. операция не поддерживается"
8568485683

kondor3000
10.09.2025, 07:54
Добрый день!!! Подскажите пожалуйста, чего-то виртуальный контроллер в Кодесисе 3,5 не выходит на отладку, связь есть, в чем может быть причина? Пишет: "Не подключен к приложению. операция не поддерживается"


Возможно вы не тот виртуальный ПЛК используете, нужен Codesys Control WIN V3, без всяких (64), для версии с сайта Овен.
Версия ПЛК должна соответствовать версии Codesys

Pahulio
10.09.2025, 08:00
Нет, именно 85685Codesys Control WIN V3

Pahulio
10.09.2025, 08:04
Версии совпадают 3.5.17.30

kondor3000
10.09.2025, 08:05
Нет, именно Codesys Control WIN V3

Codesys только поставили? Языки у вас все 5 шт есть на выбор? Если нет, то не правильно установлен Codesys 17.3
Тут как ставить
https://www.youtube.com/watch?v=3KcJWZEVXCg&t=12s

Pahulio
10.09.2025, 08:13
Был раньше установлен. Перестал работать виртуальный контроллер и geteway , то есть стартовать .Сейчас переустановил стартанулись, но.... . Все 5 языков. CODESYS_3.5_SP17_Patch3

razv
12.09.2025, 09:48
Здравствуйте.
Кто ни будь знает удобный способ инициализации строки константами побайтно? Например шестнадцатиричными константами.
ИИ предложил вариант
str1 : STRING := 16#48656C6C6F; // "Hello"
Но это не работает
Можно так
hexBytes : ARRAY[0..4] OF BYTE := [16#48, 16#65, 16#6C, 16#6C, 16#6F]; // "Hello"
а потом преобразовывать в строку но это не удобно

Может быть есть более удобный способ?

capzap
12.09.2025, 09:52
Здравствуйте.
Кто ни будь знает удобный способ инициализации строки константами побайтно? Например шестнадцатиричными константами.
ИИ предложил вариант
str1 : STRING := 16#48656C6C6F; // "Hello"
Но это не работает
Можно так
hexBytes : ARRAY[0..4] OF BYTE := [16#48, 16#65, 16#6C, 16#6C, 16#6F]; // "Hello"
а потом преобразовывать в строку но это не удобно

Может быть есть более удобный способ?
смотря ведь как спрашивали. В КДС есть функция ADR которая помогает представлять любой набор байт в любой тип данных

razv
12.09.2025, 09:57
смотря ведь как спрашивали. В КДС есть функция ADR которая помогает представлять любой набор байт в любой тип данных

Я могу написать массив байт а потом по адресу присвоить его строке. И написал об этом в вопросе
Вопрос был не в этом.
Вопрос как записать шестнадтиричную константу без скобок и запятых и присвоить ее сразу строке

capzap
12.09.2025, 10:01
Я могу написать массив байт а потом по адресу присвоить его строке. И написал об этом в вопросе
Вопрос был не в этом.
Вопрос как записать шестнадтиричную константу без скобок и запятых и присвоить ее сразу строке

ни как это не сделать, сложно заморочиться найти числовые значения байтов какждой буквы и куда то вставить, проще и удобнее сразу написать нужное слово

Евгений Кислов
12.09.2025, 10:04
Я могу написать массив байт а потом по адресу присвоить его строке. И написал об этом в вопросе
Вопрос был не в этом.
Вопрос как записать шестнадтиричную константу без скобок и запятых и присвоить ее сразу строке


sVar: STRING := '$48$55$FF'; // и т.д.

razv
12.09.2025, 10:06
sVar: STRING := '$48$55$FF'; // и т.д.

Спасибо!!!

TaPX
18.09.2025, 11:51
Добрый день.
Такой вопрос: можно ли в методе функционального блока обращаться к var_in_out переменным этого блока?
Оно у меня ругается предупреждением, но работает.
Можно так делать?85805

Евгений Кислов
18.09.2025, 12:12
Добрый день.
Такой вопрос: можно ли в методе функционального блока обращаться к var_in_out переменным этого блока?
Оно у меня ругается предупреждением, но работает.
Можно так делать?85805

Добрый день.
Можно.
Отображение этого предупреждения - просто не очень удачная реализация.

85806

TaPX
18.09.2025, 13:21
Добрый день.
Можно.
Отображение этого предупреждения - просто не очень удачная реализация.

85806

Понял, благодарю за информацию

atomo2
30.09.2025, 09:17
Добрый день, подскажите пожалуйста.
Если какое то устройство в ветке RS1-485 или RS2-485 отваливается(откинуть связь от него , сменить адрес) , то все устройства начинают гнать, устройства начинают очень плохо работать по модбасу(обмен становится кривой), зависать , очень долго обрабатывать команды или вообще не работать.

Ладно , если сейчас в процессе сборки шкафа и отладки ПО, а если в будущем какое-то устройство выйдет из строй и тогда ничего работать не будет...
85925
Это минус модбаса или можно программное решить данную проблему?

Sergey361
30.09.2025, 09:36
Это минус последовательного интерфейса. Нужно уменьшать время таймаута и количество перезапросов.

Евгений Кислов
30.09.2025, 09:36
Добрый день.
Сложно оценить, что вы вкладываете в понятия "гнать", "очень плохо работать", "обмен становится кривой" и "зависать".
То, что будет "очень долго обрабатывать команды" - это действительно так, потому что при попытке опроса отключенного устройства будут срабатывать таймауты.
Вы можете снизить значения таймаутов в соответствии с особенностями вашей задачи.
Технически можно в коде определить факт отключения slave-устройства и опрашивать его реже вплоть до восстановления с ним связи - но это потребует отказа от стандартных компонентов Modbus из дерева проекта и организации обмена через библиотеку.

TaPX
01.10.2025, 13:56
Добрый день. А в ST работает Принцип Инверсии Зависимостей?
У меня есть интерфейс sensor и две его реализации, Температурный Датчик и Датчик Давления. И у FB AlertHandler есть метод HandleSensors, где на входе он принимает массив переменной длины ARRAY OF sensor (интерфейс). И оно не компилируется (на скриншоте). Или тут в другом ошибка?
85959859608596185963

UPD: поменял скриншот с ошибками на актуальный
UPD2: Получается, не работает этот принцип, не может метод зависеть от интерфейса, объект ему подавай. Заменил в методе в объявлении архива sensor на TempSensor, и оно компилируется.

TaPX
01.10.2025, 14:33
И такой еще вопрос. Такая же проблема, как была с визуализацией: на выход ПЛК не привязывается свойство ФБ, выдает похожую ошибку:
859658596685967

TaPX
01.10.2025, 15:26
Добрый день. А в ST работает Принцип Инверсии Зависимостей?
У меня есть интерфейс sensor и две его реализации, Температурный Датчик и Датчик Давления. И у FB AlertHandler есть метод HandleSensors, где на входе он принимает массив переменной длины ARRAY OF sensor (интерфейс). И оно не компилируется (на скриншоте). Или тут в другом ошибка?
85959859608596185963

UPD: поменял скриншот с ошибками на актуальный
UPD2: Получается, не работает этот принцип, не может метод зависеть от интерфейса, объект ему подавай. Заменил в методе в объявлении архива sensor на TempSensor, и оно компилируется.

Как интересно: если сделать метод, который обрабатывает один датчик, то можно ему указать интерфейс, и всё компилируется. Интересно, почему это с массивами не работает... 8596885969

kondor3000
01.10.2025, 15:35
Массив переменной длины это ARRAY[1..nam] OF sensor, но никак не со звёздочкой (ARRAY OF sensor )

Евгений Кислов
01.10.2025, 15:37
И такой еще вопрос. Такая же проблема, как была с визуализацией: на выход ПЛК не привязывается свойство ФБ, выдает похожую ошибку:
859658596685967

Привязка свойств к каналам не поддерживается.

TaPX
01.10.2025, 15:42
Массив переменной длины это ARRAY[1..nam] OF sensor, но никак не со звёздочкой (ARRAY OF sensor )

https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_datatype_array.html#UUID-ce9d7e29-a882-1174-ca9c-9117bd3cb42b_id_afe6bda193f4f1e8c0a8640e018f0592_i d_05960a2f604f5f86c0a8646342ab6f03

TaPX
01.10.2025, 15:44
Привязка свойств к каналам не поддерживается.

понял, благодарю за информацию

Вячеслав1605
02.10.2025, 14:17
Добрый день. Подскажите, пожалуйста, позволяет ли OWEN Archiver проводить архивацию следующим образом?
На панели оператора есть кнопка "Запись лога". При её нажатии ("с фиксацией") начинается архивация, запись идёт в файл с названием, допустим, 01.csv. После отжатия кнопки запись заканчивается.
При следующем нажатии архивация начинается в файл с названием 02.csv и так далее. Сброс нумерации - при перезапуске ПЛК.
Я попробовал реализовать это так: поставил галочку "Имя архива - переменная". По фронту кнопки "Запись лога" значение этой переменной увеличивается на 1, она конвертируется в BYTE и передается в соответствующий вход OwenArchiver. В моём понимании изменение заданного имени архива заставит начать писать новый файл. Но ожидаемым образом это не работает: каждая последующая попытка записи лога просто перезаписывает предыдущий, название лога при этом не меняется (в качестве названия остается текущая дата, хотя на соответствующем входе OwenArchiver переменная меняется). Пока тестировал на виртуальном контроллере.
Также интересует следующий вопрос: в создаваемый файл нужно записывать информацию о работе 16 устройств (устройство работает - в соответствующий столбик лога пишем 1, иначе - 0).
Как я понял, архивация переменных типа BOOL через Owen Archiver невозможна, поэтому собираю 16 переменных BOOL в одну переменную WORD, которую и записываю. Есть ли возможность записывать эту переменную в лог в двоичном виде?
То есть в логе хотелось бы видеть строчку из 16 нулей и единиц, а не десятичное число.

Евгений Кислов
02.10.2025, 15:21
Добрый день.


Подскажите, пожалуйста, позволяет ли OWEN Archiver проводить архивацию следующим образом?

Если я правильно понял требования - то можно.


По фронту кнопки "Запись лога" значение этой переменной увеличивается на 1, она конвертируется в BYTE и передается в соответствующий вход OwenArchiver. В моём понимании изменение заданного имени архива заставит начать писать новый файл

Не очень понятно, о какой переменной типа BYTE идет речь.
Канал "Имя архива" имеет тип STRING(80).
Для применения нового имени - нужно остановить архиватор хотя бы на один цикл задачи и затем запустить его.


в качестве названия остается текущая дата

Уточните - у вас в узле CSVFormat какой тип архива выбран? В вашем случае должен быть "Непрерывный архив".


поэтому собираю 16 переменных BOOL в одну переменную WORD, которую и записываю. Есть ли возможность записывать эту переменную в лог в двоичном виде?

Можно добавить 16 каналов типа BYTE и привязать к каждому из них переменную, полученную в результате конверсии BOOL_TO_BYTE.

Вячеслав1605
02.10.2025, 16:32
Спасибо, всё получилось.

AvtCom
05.10.2025, 14:05
Господа, добрый день

Установили Codesys 3.5 sp17 patch 3 32 bit

В меню инструменты отсутствует вкладка Codesys installer.

Как с этим бороться? У кого какой опыт есть?

kondor3000
05.10.2025, 14:08
Господа, добрый день
Установили Codesys 3.5 sp17 patch 3 32 bit
Как с этим бороться? У кого какой опыт есть?

Вероятно установили не правильно, переустановите как на видео https://www.youtube.com/watch?v=3KcJWZEVXCg
или тут:
https://oscat.ru/wp-content/Video/CodesysOneLove/MainPlaylist/082_SP17_HowToInstall.mp4

AvtCom
05.10.2025, 15:17
переустановили появилось ):

AvtCom
05.10.2025, 15:20
спасибо большое