Просмотр полной версии : CODESYS V3.5. Вопросы и ответы
Евгений Кислов
23.04.2025, 11:46
Ну есть экран визуализации. Есть на нем кнопки. Все кнопки после нажатия что-то выполняют. Но одна кнопка или должна пароль запрашивать для выполнения действия по ней, или, я не знаю, что-то типа таблички "вы уверены?" должно выскакивать, чтобы исключить случайное нажатие. Чтобы исключить какие-то случайные нажатия
Тогда можно просто настроить на нее открытие диалога с соответствующим содержимым.
Евгений Кислов
23.04.2025, 11:50
Привет.
Подскажите о такому вопросу.
Я создал структуру с предустановленными данными.
...
Все вроде норм. С переменными это работает.
Но почему это правило не работает со вложенной подструктурой?
Не вижу проблемы.
83365
ВладОвен
23.04.2025, 11:53
Не вижу проблемы83363
Вложение не существует или не указан идентификатор (номер). Если вы уверены, что использовали правильную ссылку, свяжитесь с администрацией
Евгений Кислов
23.04.2025, 12:40
Вложение не существует или не указан идентификатор (номер). Если вы уверены, что использовали правильную ссылку, свяжитесь с администрацией
Перезалил скриншот в посте выше.
Тогда можно просто настроить на нее открытие диалога с соответствующим содержимым.
а с вводом пароля никак не сделать?
Евгений Кислов
23.04.2025, 13:37
а с вводом пароля никак не сделать?
Можно. Вам будет проще реализовать это в рамках своего диалога, чем пытаться прикрутить штатное управление пользователями CODESYS.
Можно. Вам будет проще реализовать это в рамках своего диалога, чем пытаться прикрутить штатное управление пользователями CODESYS.
Хорошо, благодарю за информацию
Dead Kid
25.04.2025, 20:44
Здравствуйте. Где можно найти библиотеки OwenTypes и IoDrvMx210? Есть плк210, перешёл с ним на другой комп, скачал таргет файлы, но в менеджере библиотек они были подчеркнуты красной волнистой линией и в ошибках писалось, что их не хватает. Пробовал кнопку «загрузить недостающие библиотеки» - не помогло, по этим же ссылкам store.codesys.com нет таких страниц. На сайте овен кодесис сказано, что они в пакете таргет файлов должны быть. Удалил в менеджере библиотек упоминания о них и из репозитория, думал переустановить. Но пакет таргетов при открытии говорит, что не нашёл куда устанавливать. Есть ли где эти библиотеки в отдельном виде?
Есть ли где эти библиотеки в отдельном виде?
https://owen.ru/product/codesys_v3/libraries здесь посмотрите
Dead Kid
26.04.2025, 09:28
https://owen.ru/product/codesys_v3/libraries здесь посмотрите
Смотрел, отдельно нет, только в составе пакета таргетов.
доброе утро! создаю учебный (для себя проект) с тремя "конечными" автоматами. три 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.
Удалите прагму из кавычек (вместе с кавычками, всю строку) в начале списка глобальных переменных
8345983461
я не понял Вашего совета. можно ли как-то иначе?
МихаилГл
26.04.2025, 11:01
8345983461
я не понял Вашего совета. можно ли как-то иначе?
Сообщение выше от кондора. Эта строка называется "прагма".
PS
https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_pragma_attribute_qualified_only.html
ничего себе. Сработало. спасибо большое. Видимо 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. Выложите результаты сюда, указав, какой из них снят с "проблемного" ПК, а какой - с "хорошего".
Добрый день! В программе на 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 - это приведет к такому же результату.
Добрый день.
Это, конечно, может выглядеть странным, но в рамках CODESYS - нормально.
Связано с тем, что при загрузке нового проекта файлы визуализации предыдущего не удаляются.
Вы можете выполнить команду Онлайн - Сброс заводской и загрузить проект заново - тогда доступ будет только по новому имени страницы.
Или подключиться к ПЛК, перейти на вкладку Device - Файлы и в папке /visu удалить файл webvisu.htm - это приведет к такому же результату.
Имеется в виду, подключиться из codesys?
Евгений Кислов
30.04.2025, 20:04
Имеется в виду, подключиться из codesys?
Да, нужно подключиться из CODESYS к ПЛК.
Мне кажется я где-то не там ищу. У меня нет такого
83593
Евгений Кислов
30.04.2025, 21:11
Мне кажется я где-то не там ищу. У меня нет такого
83593
Все правильно. Остался буквально последний шаг.
83594
Прямо удалять? Ничего не перезагрузится? У меня там процесс идет еще пару часов. Стремно как-то. Подожду лучше. Спасибо) Отпишусь потом
Отлично! Евгений, спасибо огромное!!!
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
Напишите мне в телеграм, пожалуйста (см. в подписи).
В 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
Тупо ошибся в другом месте поэтому получал неверные исходные данные и искал решение не там где надо. Всем спасибо за участие
Здравствуйте! СПК перезагружается уже не первый раз с такими сообщениями в журнале. Подскажите пожалуйста, где искать проблему?
83920
Евгений Кислов
22.05.2025, 13:24
Здравствуйте! СПК перезагружается уже не первый раз с такими сообщениями в журнале. Подскажите пожалуйста, где искать проблему?
83920
Добрый день.
На первом скриншоте - информационные сообщения, никак не связанные с исключением на втором скриншоте.
Чтобы разобраться в причинах исключения - пожалуйста, напишите на support@owen.ru
Добрый день.
На первом скриншоте - информационные сообщения, никак не связанные с исключением на втором скриншоте.
Чтобы разобраться в причинах исключения - пожалуйста, напишите на support@owen.ru
Да, это разные ситуации, но исключения были в обоих случаях. Но если к нерешаемой проблеме с Com - портами я уже привык (support у себя не дождался появления проблемы), то перезагрузка СПК с записью в журнале "touchhandling disabled" - это необычная ситуация и появилась несколько раз "только вчера". Можно ли что-то посоветовать, предположить, что происходит?
Евгений Кислов
23.05.2025, 06:59
Да, это разные ситуации, но исключения были в обоих случаях. Но если к нерешаемой проблеме с Com - портами я уже привык (support у себя не дождался появления проблемы), то перезагрузка СПК с записью в журнале "touchhandling disabled" - это необычная ситуация и появилась несколько раз "только вчера". Можно ли что-то посоветовать, предположить, что происходит?
"touchhandling disabled" - это просто признак того, что в менеджере визуализации установлена опция Multitouch handling, которую СПК не поддерживает.
Чтобы разобраться в причинах перезагрузки (исключения здесь пока не видно) - напишите, пожалуйста, на support. В письме приложите ссылку на ваш проект и описание, как повторить проблему.
Понял, спасибо! Убрал галочку. Внятной повторяемости "беспричинной" перезагрузки нет, возможно просто проблема "грязных рук" - после некоторых изменений в проекте забыл сделать команду "Очистить все". (Сейчас очистил, наблюдаю дальше)
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-конфигуратор в данном случае не поддерживается.
"Отсутствует 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 года сразу не заработали, один грелся как утюг, второй при заливке проекта работал несколько минут, а потом вываливался в исключение и стирал проект... Не было врнмени разбираться со вторым, первый сказали в ремонт направить...
3.5.17
1) как можно обьявлять struct/enum локальные и глобальные внутри FBшки(ИИшка от гугла говорит что без проблем, а у меня ругается на TYPE(типа допустимо только VAR*))?
2) в методе FBшки как можно определить кто(и откуда) конкретно вызвал нас(для арбитража общего ресурса(Mutex)): на данный момент приходится передавать при каждом вызове method(ADR(THIS^), __POSITION(), ......)?
т.е. например по callstack адрес возврата и PARENT.THIS.
3.5.17
1) как можно обьявлять struct/enum локальные и глобальные внутри FBшки(ИИшка от гугла говорит что без проблем, а у меня ругается на TYPE(типа допустимо только VAR*))?
2) в методе FBшки как можно определить кто(и откуда) конкретно вызвал нас(для арбитража общего ресурса(Mutex)): на данный момент приходится передавать при каждом вызове method(ADR(THIS^), __POSITION(), ......)?
т.е. например по callstack адрес возврата и PARENT.THIS.
1) локальные можно объявлять, глобальные то зачем они же уже получается объявлены? По моему Вы путаетесь в терминологии, если пытаетесь в окне объявлений создать TYPE
2) Вы в курсе что процессор в плк только один и о многозадачности, в контексте mutex, речи быть не может, всё вполне может работать и в одной главной задаче, тогда не придется решать кто же запустил метод
1) локальные можно объявлять, глобальные то зачем они же уже получается объявлены? По моему Вы путаетесь в терминологии, если пытаетесь в окне объявлений создать TYPE
Именно пытаюсь в окне объявлений создать/декларировать новый TYPE.
Нужны локальные(чтобы наружу не торчали, для внутренней "кухни") и глобальные, чтобы параметры удобно передавать.
2) Вы в курсе что процессор в плк только один и о многозадачности, в контексте mutex, речи быть не может, всё вполне может работать и в одной главной задаче, тогда не придется решать кто же запустил метод
В курсе(забыл кавычки для "mutex" поставить).
Именно для этого и делаю неблокирующий саморазделяющийся ресурс(MODBUS_BUS например), т.е. внутри он "монопольный", а снаружи "паралельный"(сразу все, кому надо, пишут/читаю его(что бы не заниматься фигней в основном коде))
(что бы не заниматься фигней в основном коде))
ну успехов
Доброго времени суток, форумчане.
Вопрос по контроллеру 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 А в сети нет другого устройства с таким адресом?
На фото ниже версии таргетов. 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:
А это точно порты для сети? Меня смущает modbusdrv... Может сетевой порт доугой?
PS А в сети нет другого устройства с таким адресом?
Гениально! Сделал пинг с включённым контроллером, потом отключил, пинги дальше шли при выключенном. Поменяв адрес на 192,168,1,199 ситуация не изменилась(
Sergey361
23.06.2025, 18:09
А просто IP прописать где ПЛК без сканирования не получается?
Sergey361
23.06.2025, 18:11
А прошивка какая в ПЛК? На сайте три варианта таргетов под разные прошивки.
Гениально! Сделал пинг с включённым контроллером, потом отключил, пинги дальше шли при выключенном. Поменяв адрес на 192,168,1,199 ситуация не изменилась(
так как на картинке сделал выше или где-то в другом месте?
А прошивка какая в ПЛК? На сайте три варианта таргетов под разные прошивки.
а шут её знает, где посмотреть?
3.07?
скачал с сайта посленднее, но у меня контроллер GN-9482, а те не подходят
МихаилГл
23.06.2025, 18:56
А ему точно 64 разряный кодесис нужен?
И там sp 17 внизу написано... А вы sp 11 юзаете. Пока только много вопросов...
А ему точно 64 разряный кодесис нужен?
Ну винда 64 разрядная у меня стоит
МихаилГл
23.06.2025, 19:00
Ну винда 64 разрядная у меня стоит
Это не причина использовать 64 разрядную оболочку. Надо смотреть, что контроллер поддерживает. Вот овен 64 разряд не поддерживает, хотя и 10ка виндовс.
Sergey361
23.06.2025, 19:02
Ну да, скорее всего 3.07. Тогда нужен 3.5.17, на сайте написано. У них на сайте вроде и 32 и 64 есть
Ну да, скорее всего 3.07. Тогда нужен 3.5.17, на сайте написано. У них на сайте вроде и 32 и 64 есть
премного благодарен.
Неужели нельзя в той же странице где контроллер оставить кодесис 17 пака...а то зашёл человек 1 раз посмотреть и столько всяких кривостей слёту...это так филосовия..
Вот овеновцы красавцы, всё по уму делают и упорядоченно и обновляют актуальную информацию.
Буду удалять и новый качать ставить...
МихаилГл
23.06.2025, 19:13
Удалять не обязательно, главное нужный ярлык запустить
Sergey361
23.06.2025, 19:21
Ага, и таргеты для 3.002 и выше
Благодарю, коллеги!:o
Заработало, увидел.
Теперь нет какого-то плагина, загружать не может, мигать контроллер не может, искать дополнительные модули не может.
СПК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 скорее всего криво встал
CS скорее всего криво встал
я б сказал что может встать криво, но тут бывают дамы...а так да, вы правы на все 100%
решается вопрос очень просто - пишется в техпомощь, они кидают вот такой ссыль https://disk.yandex.ru/d/_0QeJfOfyoxt6g, с него качаем и устанавливаем. Всё работает.
Проект пустышка внизу - модули нашлись, всё влилось и никаких ошибок.
Допустимо ли переиспользование экземпляра OCL.MB_SerialRequest с другими параметрами(чего там внутри понакручено)?
т.е. он "отстрелялся"(xDone или xError) и снова в бой с другими параметрами?
Евгений Кислов
24.06.2025, 18:02
Допустимо ли переиспользование экземпляра OCL.MB_SerialRequest с другими параметрами(чего там внутри понакручено)?
т.е. он "отстрелялся"(xDone или xError) и снова в бой с другими параметрами?
Допустимо.
Совсем недавно демонстрировали это на вебинаре:
https://owen.ru/media/video/webinar_170625
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 и т. д.);
возможность полностью настраивать и контролировать обмен в своем коде.
Библиотека не является средством "ускорения" обмена; ее ФБ являются асинхронными, и выполнение каждого из них происходит в течение нескольких циклов задачи контроллера.
Предложенный вами подход технически возможен, но может нарушить ожидаемую работу блоков, поэтому он не относится к рекомендуемым.
Добрый день. Какая настройка отвечает за понимание компилятором, что переменная .var является глобальной из списка глобальных переменных и позволяет не писать каждый раз GVL.var?
Спасибо.
МихаилГл
29.06.2025, 19:37
Добрый день. Какая настройка отвечает за понимание компилятором, что переменная .var является глобальной из списка глобальных переменных и позволяет не писать каждый раз GVL.var?
Спасибо.
Прагма в фигурных скобках, удалите ее, и сможете обращаться к переменным напрямую...
Прагма в фигурных скобках, удалите ее, и сможете обращаться к переменным напрямую...
Спасибо, Михаил!
Карбофос
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?
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.
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.
А нет нормальной документации по 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, чтобы получить более высокий уровень абстракции для своего прикладного ПО, а не спускаться на уровень системных вызовов.
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
udiTimeOut = 0 - это ждать столько, сколько придется
Если вы ставите udiTimeOut = 100, а блок не сможет за 100 мкс вычитать весь буфер COM-порта (по тем или иным причинам) - то тогда случится .xError и .eError = TIME_OUT
Тогда можно еще раз для дурачков: как же пользоваться этим "более высоким уровнем абстракций" за который уплочено?
Задача стандартная(запрос):
0) почистил приемный буфер от всякого мусора(очень желательно)
1) отправил буфер с данными
2) в течении какого то времени принимаешь/получаешь данные кусками и пытаешся собрать из этого пакет(и если получилось, то не ждешь до упора).
PS Нет ли нормального примера, а не детсадовского из 3х коробочек на FBD?
так понимаю, нет возможности остановить 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) с радостью вам поможет, как только вы пришлете минимальный проект, в котором ее можно повторить, и пошаговую инструкцию, как это сделать.
Прошу помочь, пока ждём контроллер, начал делать проект, и проверять его на эмуляторе, но столкнулся вот с этим паролем
Где-то я нашел что надо найти файл и снять комментарий с строки,но это не помогло, нет папки с названием эмулируемого контроллера
84841
Евгений Кислов
15.07.2025, 13:21
Прошу помочь, пока ждём контроллер, начал делать проект, и проверять его на эмуляторе, но столкнулся вот с этим паролем
Где-то я нашел что надо найти файл и снять комментарий с строки,но это не помогло, нет папки с названием эмулируемого контроллера
84841
Добрый день.
https://owen.ru/forum/showthread.php?t=28167&p=401060&viewfull=1#post401060
Не помогает,файлы удалил,один из них постоянно появляется опять после перезагрузки контроллера
и пробую подключится, опять просил логин и пароль (вроде я даже при установке не создавал пользователя вообще)84848 84849 84850
Евгений Кислов
15.07.2025, 15:14
Не помогает,файлы удалил,один из них постоянно появляется опять после перезагрузки контроллера
и пробую подключится, опять просил логин и пароль (вроде я даже при установке не создавал пользователя вообще)84848 84849 84850
Напишите завтра утром мне в телеграм (см. в подписи), пожалуйста.
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) должно быть понятно, что в реальной жизни у вас не будет поводов для "торможения".
По переднему фронту 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. Проблема заключается в том, что у меня очень многие данные собраны в структуры, которые им не поддерживаются.
Сейчас я нахожусь в раздумьях, как это дело побороть, возможно приделать какой-нибудь костыль. От структур отказываться никак нельзя, потому что они кочуют из проекта в проект и на них завязаны многие мои типовые ФБ.
Пока единственным вариантом выглядит создание отдельного списка переменных для ОвенКлауд, с зеркалированием в них данных из структур. Есть ли какой-то простой способ подобного?
Ну формально можно и структуру туда запихнуть, но обычно там слишком много избыточных данных. Я создаю отдельную область памяти куда копирую через библиотеки работы с памятью или обычным копированием данные в нужном объеме и в нужной последовательности.
Карбофос
24.07.2025, 16:03
Ну формально можно и структуру туда запихнуть, но обычно там слишком много избыточных данных.
В ОвенКлауд? Я отметил в символьной конфигурации нужные поля, но в облаке их нет.
Я создаю отдельную область памяти куда копирую через библиотеки работы с памятью
Как? Предположим у меня есть переменная-поле структуры rVarStr и обычная переменная rVarMir. Как заставить при изменении первой измениться вторую и наоборот?
В ОвенКлауд? Я отметил в символьной конфигурации нужные поля, но в облаке их нет. За 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
Один раз при старте
Понял, спасибо!
В свете недавнего открытия*, детский вопрос: в каких случаях будет создан локальный экземпляр 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;
1 это тоже pointer как 7 и 8. Только неявный
1 это тоже pointer как 7 и 8. Только неявный
см. Открытие(я тоже раньше без задней мысли такое предполагал, но оказалось не все так просто)
А уж про то что ссылки это не синтаксически "подслащенные" указатели(как минимум у Visu), а фиг пойми что, я вообще в шоке.
И чего там смотреть?
Внутри 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
Большое спасибо за оперативный ответ!
Коллеги здравствуйте, прошу помощи в таком вопросе.
Сделал 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 А, последний скрин... Не заметил. Надо внимательнее смотреть, с телефона на удобно.
Коллеги здравствуйте, прошу помощи в таком вопросе.
Сделал 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. Знаний не хватает победить данный вопрос.
.
Переменная где-то перезаписывается в другом месте. Скорее всего, она используется в обоих ФБ, как выше писали, используйте входные/выходные переменные.
Чтобы точно определить место, используйте перекрёстные ссылки по переменным и точки останова для отладки программы.
А где взять этот кросреференц?
У меня вообще вот такое случилось:
Загружаю False. На выход контроллера подаётся False, а на самом контроллере TRUE.
Как сие вылечить?
Причём удалив его с Записи, т.е. нигде в него ничего не записывается, всё осталось без изменений.
А теперь ещё интереснее удалил выходную переменную со входа - выход перешёл в 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
Потому что где то дальше перезаписывается. У вас на холсте отображаются итоговые значения переменных, а не то, что по логике должно быть.
Что нибудь о порядке выполнения программы слышали?
У вас сначала выход присваивается, а потом считать начинает, после 23 шага идёт 2,
а после 18 и 24 шага 7
По ПКМ на холсте установить порядок, По потоку данных.
Типа так?
Всё равно такой же результат.
Опять же с точки зрения логики ну допустим в первый цикл у меня произошло чтение переменных. И в самом начале у меня было TRUE, но после выполнения ФБ программы он у меня станет FALSE. А по умолчанию ВСЕ переменные после загрузки в ПЛК в положении False. Что собственно сам контроллер и видит и присваивает на выходе FALSE. Почему физически он становиться TRUE?
Потому что где то дальше перезаписывается. У вас на холсте отображаются итоговые значения переменных, а не то, что по логике должно быть.
Это как понять? Есть перекрёсные ссылки - там все переменные подписаны где они вызываются в самой программе. Причём даже написано где идёт чтение, где вызов, а где запись. Так вот по скрину видно, что запись идёт в 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, например. Вы приводите скрины без пояснений, где какие переменные вас не устраивают...
Значит у вас ниже в программе, та же переменная, перезаписывается ещё раз. И последнее изменение, записывается на выход.
Но по потоку данных, должно быть на всех листах CFC.
Есть же режим кросреференц в нём показано, что она записывается только 1 раз.
Что за строка IOcofigError POU?
Не совсем понял про родильский контроль. Переменная GVL.OUT_zatvor_822_open. Такая же переменная стоит выше Application.GVL.OUT_zatvor_821_open, но на контроллере "горит" false;
kondor3000
03.08.2025, 13:19
Есть же режим кросреференц в нём показано, что она записывается только 1 раз.
Что за строка IOcofigError POU?
Можете спорить сколько угодно, ниже по программе, может быть и в другом ФБ, вызванном после этого блока.
Так как у вас написана программа, надо всё переделывать, вызывать блоки по порядку и смотреть работу.
Также надо делать Очистить всё, Компилировать всё.
Можете спорить сколько угодно, ниже по программе, может быть и в другом ФБ, вызванном после этого блока.
Так как у вас написана программа, надо всё переделывать, вызывать блоки по порядку и смотреть работу.
Также надо делать Очистить всё, Компилировать всё.
И не собирался спорить, я вижу по программе ровно то же что и вы - референц лист показывает где конкретно вызвана данная переменная, причём - показывает где пишется, где читается. Пробовал через обычный поисковик - он находит ровно столько же раз упоминания данной переменной во всей программе.
Самое интересное, если я эту переменную удаляю внизу перед TON, то выход в контроллере становится False.
В теории может это какое-то слово, куоторое идёт на выход модуля и где по значениям 15 битик получается TRUE, хотя вроде кодесис не битами, а байтами балуется... сейчас проверим, поменяв переменную на другую.
Да нет, он именно на эту переменную обижается... перенёс её в 14 выход стал 14 гореть, а 15 потух.
МихаилГл
03.08.2025, 13:40
У вас переменная еще и к at % объявлена.
Выложите код целиком, раз сами не можете найти проблему... Хотя тут не овен, хрен откроется...
У вас переменная еще и к at % объявлена.
Выложите код целиком, раз сами не можете найти проблему... Хотя тут не овен, хрен откроется...
Эт можно..Тем более я его вообще сломал))))
Так объявление переменной не есть же его присваивание в TRUE
...да замучило!
1. Нужно включить на Опциях проекта проверку на множественную запись выходов (после этого будет множество "приятных" удивлений).
Зато она покажет, где идёт запись выходов из разных мест (так нельзя)
2. Нужно на Modbus-устройства поменять установку "Всегда Обновлять переменные" на "Всегда (в задаче цикла шины)"
...да замучило!
1. Нужно включить на Опциях проекта проверку на множественную запись выходов (после этого будет множество "приятных" удивлений).
Зато она покажет, где идёт запись выходов из разных мест (так нельзя)
2. Нужно на Modbus-устройства поменять установку "Всегда Обновлять переменные" на "Всегда (в задаче цикла шины)"
По первому пункту оно?
ПО второму пункту пока не понял где, но у меня сейчас ни одно устройство не опрашивает контроллер..(кроме самого ПК и кодесис)
kondor3000
03.08.2025, 14:47
По первому пункту оно?
ПО второму пункту пока не понял где, но у меня сейчас ни одно устройство не опрашивает контроллер..(кроме самого ПК и кодесис)
2 пункт, для всех модулей слейв установить 85155
Чтобы открыть ваш проект, нужны таргеты на ваш ПЛК и модули, это не Овен
Пиндец, опять все блоки CFC не по порядку, тяжёлый случай.
Небось и очистку с компиляцией так и не сделал.
Да, оно. Можно ещё включить перекрывающиеся области памяти.
Но учти, что это обычно сразу вызовет тьму ошибок компиляции
Второе - про это. Чтобы так везде было
85156
Ещё в довесок, взял обозвал переменную по другому(адрес не менял, пока) и вызвал её 1 раз в главной программе. Потом закомментил её там же и в выходных устройствах она пропала, что свидетельствует о её единожды вызове.
Да, оно. Можно ещё включить перекрывающиеся области памяти.
Но учти, что это обычно сразу вызовет тьму ошибок компиляции
Второе - про это. Чтобы так везде было
85156
Понял, ошибко не вывалилось, а вот что реально накопал, так "Для входов (VAR_INPUT) эта проверка не применяется — только для выходов (VAR_OUTPUT) и глобальных переменных."
Про проверке выдало только одну и ту же ошибку про неиспользуемые переменные (ну это я и так знаю, на стадии разработки)
Сейчас вылезла интересная штука, если меняю опросы по MODBUS, как было сказано выше, то в одном случае горит лампа на контроллере, в другом не горит.
Причём менял эту переменную в другие выходы - она и на других выходах горела. А в 15 выход ставил другие выходные переменные с другими адресами - не горело... странное слово на ум приходит - чудеса...
Поменял адрес с 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 Корея не причем, где то чтото все таки не заметили. Не обязательно в плк, может в обмене по модбас, в работе с регистрами...
Начнете привязывать мастерскаду, опять много чего всплывет...
PS Корея не причем, где то чтото все таки не заметили. Не обязательно в плк, может в обмене по модбас, в работе с регистрами...
Для этого есть эксель, который автоматом всё заполняет. В том числе адреса переменных. Теперь понятно почему я всегда работаю с глобальными переменными из таблицы? ;-)
Кстати, надо будет не забудь данную штуку проверить на объекте с 15-тью модулями...может мне такой подопытный контроллер попался..
МихаилГл
03.08.2025, 16:26
При чем тут эксель... Я про особенность мастер скады с ее разделением переменной на 2 части, вход и выход, в результате чего при посылке бита на выход на плк (в моем случае плк210) он придет, но повторно вы его отправить сможете только применив костыль в этой скаде. Ну и в контроллере полукостыль.
PS Хотя я с ней только месяц работаю, может чего и не знаю...
kondor3000
03.08.2025, 16:47
При чем тут эксель... Я про особенность мастер скады с ее разделением переменной на 2 части, вход и выход, в результате чего при посылке бита на выход на плк (в моем случае плк210) он придет, но повторно вы его отправить сможете только применив костыль в этой скаде. Ну и в контроллере полукостыль.
PS Хотя я с ней только месяц работаю, может чего и не знаю...
Разрабам Скады 4D, надо руки оборвать, лучше использовать любую другую Скаду, меньше гемора в разы будет.
А народ у нас продолжает жрать кактус.
При чем тут эксель... Я про особенность мастер скады с ее разделением переменной на 2 части, вход и выход, в результате чего при посылке бита на выход на плк (в моем случае плк210) он придет, но повторно вы его отправить сможете только применив костыль в этой скаде. Ну и в контроллере полукостыль.
PS Хотя я с ней только месяц работаю, может чего и не знаю...
я привязываю сразу вход ивыход. Правой кнопкой перетаскиваешь переменную и выскакивает диалог - вход выход или обе, берёшь обе и оно вроде работает.
Разрабам Скады 4D, надо руки оборвать, лучше использовать любую другую Скаду, меньше гемора в разы будет.
А народ у нас продолжает жрать кактус.
Тут скорее всего дело не в народе (те, кто покупает скаду), а в заказчиках...если в ТЗ прописано что налдо её, тогда кактус в сыром виде.
...и ну НЕ надо использовать прямые адреса!
Так НЕПРАВИЛЬНО!
...и ну НЕ надо использовать прямые адреса!
Так НЕПРАВИЛЬНО!
Почему? Папки , т.е. Отцы в метапрограмировании используют, так что я делко не первооткрыватель. У меня был только один объект с программированием при помощи эксель таблиц и python. Там вообще НИ ОДНОЙ локальной переменной нет. Все таблицы создавались автоматически и самое приятное, что программисту делать практически ничего не нужно. При особой сноровке за вечер можно накидать готовую программу, с которой я парюсь уже вторую неделю)))
Кстати, библиотеки есть OSCAT на 3,17 или они из ранних версий подойдут?
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
СПК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
Фаиль Нагимуллин
Если речь об аналоговых входах модулей Овен, то там есть на каждый канал еще и временные метки, и коды ошибок. А упаковка всего этого в массив ничего не дает в плане качества\быстродействия снятия показаний.
Подскажите, пожалуйста, возможно ли остановить / запустить пользовательское приложение Codesys из консоли ПЛК 210?
Евгений Кислов
31.08.2025, 09:09
Подскажите, пожалуйста, возможно ли остановить / запустить пользовательское приложение Codesys из консоли ПЛК 210?
Добрый день.
Из консоли можно остановить работу системы исполнения CODESYS (соответственно, приложение при этом тоже прекратит выполняться):
service codesys stop
service codesys start
Всё отлично работает, Премного благодарен.
Солнечный заяц
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/
Доброго времени суток, подскажите, не получается разобраться с передачей данных между плк 210 и upack-718edx по Modbus TCP. при попытке подключения через OPC сервер принимать данные получается, а в Codesys выдает ошибку подключения,после чего она сбрасывается и опять появляется. Порт и адрес указан верно.
85660 85661
Евгений Кислов
09.09.2025, 09:53
Доброго времени суток, подскажите, не получается разобраться с передачей данных между плк 210 и upack-718edx по Modbus TCP. при попытке подключения через OPC сервер принимать данные получается, а в Codesys выдает ошибку подключения,после чего она сбрасывается и опять появляется. Порт и адрес указан верно.
85660 85661
Добрый день.
Проверьте наличие пинга между ПЛК и вашим устройством.
Это можно сделать в веб-конфигураторе ПЛК: Сеть - Диагностика - Пинг
Евгений Кислов
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*) будет перезаписана
После этого всё корректно заработало и там, и там
Теперь открываю проект с сервера что с ПК, что с ноутбука - и перезапись проекта уже не требуется
Может, кому-то поможет
Всем спасибо
Добрый день!!! Подскажите пожалуйста, чего-то виртуальный контроллер в Кодесисе 3,5 не выходит на отладку, связь есть, в чем может быть причина? Пишет: "Не подключен к приложению. операция не поддерживается"
8568485683
kondor3000
10.09.2025, 07:54
Добрый день!!! Подскажите пожалуйста, чего-то виртуальный контроллер в Кодесисе 3,5 не выходит на отладку, связь есть, в чем может быть причина? Пишет: "Не подключен к приложению. операция не поддерживается"
Возможно вы не тот виртуальный ПЛК используете, нужен Codesys Control WIN V3, без всяких (64), для версии с сайта Овен.
Версия ПЛК должна соответствовать версии Codesys
Нет, именно 85685Codesys Control WIN V3
Версии совпадают 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
Был раньше установлен. Перестал работать виртуальный контроллер и geteway , то есть стартовать .Сейчас переустановил стартанулись, но.... . Все 5 языков. CODESYS_3.5_SP17_Patch3
Здравствуйте.
Кто ни будь знает удобный способ инициализации строки константами побайтно? Например шестнадцатиричными константами.
ИИ предложил вариант
str1 : STRING := 16#48656C6C6F; // "Hello"
Но это не работает
Можно так
hexBytes : ARRAY[0..4] OF BYTE := [16#48, 16#65, 16#6C, 16#6C, 16#6F]; // "Hello"
а потом преобразовывать в строку но это не удобно
Может быть есть более удобный способ?
Здравствуйте.
Кто ни будь знает удобный способ инициализации строки константами побайтно? Например шестнадцатиричными константами.
ИИ предложил вариант
str1 : STRING := 16#48656C6C6F; // "Hello"
Но это не работает
Можно так
hexBytes : ARRAY[0..4] OF BYTE := [16#48, 16#65, 16#6C, 16#6C, 16#6F]; // "Hello"
а потом преобразовывать в строку но это не удобно
Может быть есть более удобный способ?
смотря ведь как спрашивали. В КДС есть функция ADR которая помогает представлять любой набор байт в любой тип данных
смотря ведь как спрашивали. В КДС есть функция ADR которая помогает представлять любой набор байт в любой тип данных
Я могу написать массив байт а потом по адресу присвоить его строке. И написал об этом в вопросе
Вопрос был не в этом.
Вопрос как записать шестнадтиричную константу без скобок и запятых и присвоить ее сразу строке
Я могу написать массив байт а потом по адресу присвоить его строке. И написал об этом в вопросе
Вопрос был не в этом.
Вопрос как записать шестнадтиричную константу без скобок и запятых и присвоить ее сразу строке
ни как это не сделать, сложно заморочиться найти числовые значения байтов какждой буквы и куда то вставить, проще и удобнее сразу написать нужное слово
Евгений Кислов
12.09.2025, 10:04
Я могу написать массив байт а потом по адресу присвоить его строке. И написал об этом в вопросе
Вопрос был не в этом.
Вопрос как записать шестнадтиричную константу без скобок и запятых и присвоить ее сразу строке
sVar: STRING := '$48$55$FF'; // и т.д.
sVar: STRING := '$48$55$FF'; // и т.д.
Спасибо!!!
Добрый день.
Такой вопрос: можно ли в методе функционального блока обращаться к var_in_out переменным этого блока?
Оно у меня ругается предупреждением, но работает.
Можно так делать?85805
Евгений Кислов
18.09.2025, 12:12
Добрый день.
Такой вопрос: можно ли в методе функционального блока обращаться к var_in_out переменным этого блока?
Оно у меня ругается предупреждением, но работает.
Можно так делать?85805
Добрый день.
Можно.
Отображение этого предупреждения - просто не очень удачная реализация.
85806
Добрый день.
Можно.
Отображение этого предупреждения - просто не очень удачная реализация.
85806
Понял, благодарю за информацию
Добрый день, подскажите пожалуйста.
Если какое то устройство в ветке RS1-485 или RS2-485 отваливается(откинуть связь от него , сменить адрес) , то все устройства начинают гнать, устройства начинают очень плохо работать по модбасу(обмен становится кривой), зависать , очень долго обрабатывать команды или вообще не работать.
Ладно , если сейчас в процессе сборки шкафа и отладки ПО, а если в будущем какое-то устройство выйдет из строй и тогда ничего работать не будет...
85925
Это минус модбаса или можно программное решить данную проблему?
Sergey361
30.09.2025, 09:36
Это минус последовательного интерфейса. Нужно уменьшать время таймаута и количество перезапросов.
Евгений Кислов
30.09.2025, 09:36
Добрый день.
Сложно оценить, что вы вкладываете в понятия "гнать", "очень плохо работать", "обмен становится кривой" и "зависать".
То, что будет "очень долго обрабатывать команды" - это действительно так, потому что при попытке опроса отключенного устройства будут срабатывать таймауты.
Вы можете снизить значения таймаутов в соответствии с особенностями вашей задачи.
Технически можно в коде определить факт отключения slave-устройства и опрашивать его реже вплоть до восстановления с ним связи - но это потребует отказа от стандартных компонентов Modbus из дерева проекта и организации обмена через библиотеку.
Добрый день. А в ST работает Принцип Инверсии Зависимостей?
У меня есть интерфейс sensor и две его реализации, Температурный Датчик и Датчик Давления. И у FB AlertHandler есть метод HandleSensors, где на входе он принимает массив переменной длины ARRAY OF sensor (интерфейс). И оно не компилируется (на скриншоте). Или тут в другом ошибка?
85959859608596185963
UPD: поменял скриншот с ошибками на актуальный
UPD2: Получается, не работает этот принцип, не может метод зависеть от интерфейса, объект ему подавай. Заменил в методе в объявлении архива sensor на TempSensor, и оно компилируется.
И такой еще вопрос. Такая же проблема, как была с визуализацией: на выход ПЛК не привязывается свойство ФБ, выдает похожую ошибку:
859658596685967
Добрый день. А в 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
Привязка свойств к каналам не поддерживается.
Массив переменной длины это 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
Привязка свойств к каналам не поддерживается.
понял, благодарю за информацию
Вячеслав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
Спасибо, всё получилось.
Господа, добрый день
Установили 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
переустановили появилось ):
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot