Просмотр полной версии : CODESYS V3.5. Вопросы и ответы
Добрый день! Столкнулся с проблемой при чтение из архива, почему-то не получается это сделать
архивация проходит успешно, по фронту записываются данные в файл, надо чтоб при перезагрузки контроллера прочитать последнюю запись (строчку)
вроде и на ютубе смотрю видео от Евгения и мануал читаю, не могу разобратся
сам ФБ открытия файла на показывает что он его открыл
86191
Евгений Кислов
15.10.2025, 10:05
Добрый день! Столкнулся с проблемой при чтение из архива, почему-то не получается это сделать
архивация проходит успешно, по фронту записываются данные в файл, надо чтоб при перезагрузки контроллера прочитать последнюю запись (строчку)
вроде и на ютубе смотрю видео от Евгения и мануал читаю, не могу разобратся
сам ФБ открытия файла на показывает что он его открыл
86191
Добрый день.
На скриншоте происходит открытие не файла, а директории (DirOpen).
Вам нужен FILE.Open.
Добрый день.
На скриншоте происходит открытие не файла, а директории (DirOpen).
Вам нужен FILE.Open.
А я просто и так и так пробовал, возможно путь не правильно указываю, хотя пробовал уже разные варианты
86194
Евгений Кислов
15.10.2025, 10:30
А я просто и так и так пробовал, возможно путь не правильно указываю, хотя пробовал уже разные варианты
86194
Судя по скриншоту - так и есть.
Напишите мне в телеграм, пожалуйста (см. в подписи) - так будет проще вам помочь.
Всем здравствуйте. Помогите пожалуйста. уже что только не перепробовал с установкой CODESYS 3.5.17.30... всегда одна и та же ошибка.86451 и папку темп менял, и права все выдавал. Антивирус вырублен, брандмауэр тоже. Делаю всё в точности как на видео... а ошибка всё равно есть. уже удалил и почистил все хвосты. Всё равно ошибка остается
МихаилГл
28.10.2025, 20:19
Всем здравствуйте. Помогите пожалуйста. уже что только не перепробовал с установкой CODESYS 3.5.17.30... всегда одна и та же ошибка.86451 и папку темп менял, и права все выдавал. Антивирус вырублен, брандмауэр тоже. Делаю всё в точности как на видео... а ошибка всё равно есть. уже удалил и почистил все хвосты. Всё равно ошибка остается
Сначала разархивируйте, потом устанавливайте...
Сначала разархивируйте, потом устанавливайте...
Сам установщик? Я скачал архив с сайта. Его распаковал в папку. Запускаю файл CODESYS 3.5.17.30.exe86452
МихаилГл
28.10.2025, 20:36
Так там вроде 2 файла exe. Тут всё по этой инструкции устанавливают. Что за виндовс?...
Так там вроде 2 файла exe. Тут всё по этой инструкции устанавливают. Что за виндовс?...
Windows 10. Вот что в архиве скачанном с сайта. 86453
В ошибке явно написано невозможна установка из указанной папки. У вашего пользователя с правами на этом компе как? Попробуйте админских прав дать на время установки.
В ошибке явно написано невозможна установка из указанной папки. У вашего пользователя с правами на этом компе как? Попробуйте админских прав дать на время установки.
вы думаете я под обычным пользователем сижу?)
вы думаете я под обычным пользователем сижу?)
В общем либо с пакетом что-то на сайте. либо я не знаю, на чистой машине не хочет устанавливаться даже...
kondor3000
29.10.2025, 12:07
В общем либо с пакетом что-то на сайте. либо я не знаю, на чистой машине не хочет устанавливаться даже...
У меня Data1.cab так и остался нераспакованным и всё установилось, уже раз семь, 86467
на разных Виндах от 7 до 10. Установка от админа, хоть админ сам у себя.
Устанавливал по видео https://oscat.ru/wp-content/Video/CodesysOneLove/MainPlaylist/082_SP17_HowToInstall.mp4
или тут https://www.youtube.com/watch?v=3KcJWZEVXCg
МихаилГл
29.10.2025, 14:23
Windows 10. Вот что в архиве скачанном с сайта. 86453
В общем либо с пакетом что-то на сайте. либо я не знаю, на чистой машине не хочет устанавливаться даже...
Выше писали что архив разархивировали, а сами скрин из архива выкладываете. Если вы отсюда ехе запускаете, то такая ошибка и выскакивает. Или это просто скрин для нас, а всё это вы в папочку на ПК разархивировали?
МихаилГл
29.10.2025, 14:25
Сам установщик? Я скачал архив с сайта. Его распаковал в папку. Запускаю файл CODESYS 3.5.17.30.exe86452
А, вот тут папка... Не увидел когда добавили. Тогда хз...
kondor3000
29.10.2025, 15:00
Короче, скачал по новой пакет CODESYS_3.5_SP17_Patch3 в сайта Овен. Распаковал в папку на рабочем столе, 86474 запустил CODESYS 3.5.17.30.exe 86470 Чтобы не удалять уже установленный CODESYS 3.5.17.3, включил вместо установки, восстановление программы. 86471 После примерно 20 мин всё установилось на 10 винду.
Даже все ранее установленные пакеты остались. Все работает нормально, в эмуляции проверил 86473
Карбофос
06.11.2025, 10:29
Добрый день!
Есть ли методика вычисления циклического времени измерения для датчика (производства не Овен), подключаемого к СПК210 по RS-485? Для ПИД-регулятора.
kondor3000
06.11.2025, 10:33
Добрый день!
Есть ли методика вычисления циклического времени измерения для датчика (производства не Овен), подключаемого к СПК210 по RS-485? Для ПИД-регулятора.
Там ничего не вычисляется, а тупо идёт счёт времени как целое число, делённое на 10 (кратное 10 мс).
Счёт идёт от 0 до 65535 и сначала. Можно сделать самому, поставив таймер и счётчик https://owen.ru/forum/showthread.php?t=42080&p=474223&viewfull=1#post474223
или написать на ST
Pv_Time:= TO_WORD(TO_DWORD(TIME())/10);
Карбофос
06.11.2025, 11:20
Там ничего не вычисляется, а тупо идёт счёт времени как целое число, делённое на 10 (кратное 10 мс).
Счёт идёт от 0 до 65535 и сначала. Можно сделать самому, поставив таймер и счётчик https://owen.ru/forum/showthread.php?t=42080&p=474223&viewfull=1#post474223
или написать на ST
Pv_Time:= TO_WORD(TO_DWORD(TIME())/10);
Спасибо, попробую.
DmitriiAnyushin
14.11.2025, 15:01
Добрый день! Подскажите пожалуйста.
На объекте установлен ПЛК210. Был передан проект (не архив). При открытии проекта Codesys ругается на MV210-101, хотя все шаблоны установлены. Подскажите, в чем может быть проблема? Спасибо!
kondor3000
14.11.2025, 15:07
Добрый день! Подскажите пожалуйста.
На объекте установлен ПЛК210. Был передан проект (не архив). При открытии проекта Codesys ругается на MV210-101, хотя все шаблоны установлены. Подскажите, в чем может быть проблема? Спасибо!
Обновите его, вероятно этот модуль из другого пакета, более старого.
Либо найдите старые пакеты, Пакеты 3.5.11.6 и 3.5.11.8
Александр Пинэко-Скворцов
14.11.2025, 15:13
Добрый день! Подскажите пожалуйста.
На объекте установлен ПЛК210. Был передан проект (не архив). При открытии проекта Codesys ругается на MV210-101, хотя все шаблоны установлены. Подскажите, в чем может быть проблема? Спасибо!
Добрый день.
Установите следующий пакет:https://ftp.owen.ru/CoDeSys3/04_Library/05_3.5.11.5/01_Components/Mx210Templates_v3.5.11.8.package
Совет с обновлением может быть воспринят неправильно, т.к. шаблоны не поддерживают команду ПКМ - Обновить устройство.
При необходимости использовать шаблон другой версии потребуется удалить старый шаблон из проекта и добавить/настроить новый шаблон заново.
DmitriiAnyushin
14.11.2025, 15:29
Большое спасибо! Да, установка старого пакета помогла
Добрый день! Подскажите, такая проблема появилась, в веб визуализации вставил картинку через Пул Изображений, в CDS все нормально показывает,а в браузере просто крест вместо изображения.
kondor3000
25.11.2025, 15:34
Добрый день! Подскажите, такая проблема появилась, в веб визуализации вставил картинку через Пул Изображений, в CDS все нормально показывает,а в браузере просто крест вместо изображения.
https://owen.ru/forum/showthread.php?t=22038&p=461686&viewfull=1#post461686
Dead Kid
25.11.2025, 19:58
Здравствуйте. Помогите, пожалуйста, запустить автонастройку ПИД регулятора. Использую в проекте на ПЛК210 блок APID_PWM из библиотеки CmpOwenPidRegs. На входы подаю такие значения: ANR_W2 = True, PV - переменная REAL, PV_Time = 1, SP - переменная REAL, PV_0 = 0, ANR_MODE = 0, START_ANR - переменная BOOL, Y_MANUAL - переменная REAL, Y_MAN_SET - переменная BOOL, XN = 0, PMAX = 1, PMIN = 0.
Запускаю программу, подаю на вход EN сигнал и регулятор уже пишет, что он в процессе автонастройки, хотя автонастройку ещё не начинал (выход ANR_WORK горит и STATE = 3). Ставлю на SP уставку любую и подаю сигнал на START_ANR - никакой реакции со стороны выходов, как бы я не менял значение на вход PV. В документации написано "Необходимо в ручном режиме управления..." я подавал сигнал на Y_MAN_SET и выход ANR_WORK остаётся гореть и STATE = 6. Как бы я не менял Y_MANUAL выход ANR_WORK не гас и в последствие при при снятии сигнала Y_MAN_SET регулятор всё равно вставал а режим автонастройки STATE = 3.
Помогите, пожалуйтса, как правильно произвести автонастройку.
86893
kondor3000
25.11.2025, 20:11
Запускать надо на живом ПЛК.
Вход PV_Time не может быть константой, это циклическое время типа WORD, от 0 до 65535, кратное 10 ms, только целое.
Берётся с любого аналогового входа.
Для эмуляции работы циклического времени, можно применить такой код
PV_Time:=TO_WORD(TO_DWORD(TIME())/10);
Или так, на таймере и счётчике, тут скрин https://owen.ru/forum/showthread.php?t=42080&p=474223&viewfull=1#post474223
Для автонастройки, на входе надо пройти, от меньше уставки до больше уставки 2 раза.
После этого на выходе будет сброс АНР.
Dead Kid
26.11.2025, 14:47
Запускать надо на живом ПЛК.
Вход PV_Time не может быть константой, это циклическое время типа WORD, от 0 до 65535, кратное 10 ms, только целое.
Берётся с любого аналогового входа.
Для эмуляции работы циклического времени, можно применить такой код
PV_Time:=TO_WORD(TO_DWORD(TIME())/10);
Или так, на таймере и счётчике, тут скрин https://owen.ru/forum/showthread.php?t=42080&p=474223&viewfull=1#post474223
Для автонастройки, на входе надо пройти, от меньше уставки до больше уставки 2 раза.
После этого на выходе будет сброс АНР.
Сделал, тикающую переменную поставил на вход PV_TIME. Запускал на живом контроллере. Теперь выход блока постоянно максимальный, даже без включенной автонастройки. Когда включаю включаю, выход всё также остаётся максимальным и не выключается при достижении уставки и даже больше. 86905
kondor3000
26.11.2025, 14:56
Сделал, тикающую переменную поставил на вход PV_TIME. Запускал на живом контроллере. Теперь выход блока постоянно максимальный, даже без включенной автонастройки. Когда включаю включаю, выход всё также остаётся максимальным и не выключается при достижении уставки и даже больше. 86905
На скрине АНР включена, вход больше уставки и на выходе 0 уже.
Про 2 раза пройти выше и ниже уставки, вы не читали?
Объект реальный или вы руками меняете? С другими блоками ПИД с АНР работали?
Dead Kid
26.11.2025, 15:26
На скрине АНР включена, вход больше уставки и на выходе 0 уже.
Про 2 раза пройти выше и ниже уставки, вы не читали?
Объект реальный или вы руками меняете?
ПЛК реальный, но нагревателям не подключен, показания датчика меняю потенциометром. Загрузил новую программу, подал на EN сигнал и ФБ сразу же в режиме автонастройки с максимальным выходом. Подавал сигнал на ANR_START и потенциометром менял значение датчика выше и ниже уставки более двух раз - всё также выход максимальный и режим автонастройки. Потом сбросил ANR_START и датчик в 0 - всё также выход максимум и режим автонастройки. Подождал, думал, что со временем выход сбросится в 0 - не получилось, даже, когда PV_TIME перевалило за 65530 и сбросилось в 0. Потом ещё раз подал сигнал на ANR_START и как только начал повышать значение датчика, то выход сбросился в 0, статус - автонастройка. Поменял три раза показания дачтка выше уставки в 2 раза и ниже уставки до 0 - выход всё ещё в нуле. Сбросил сигнал с ANR_START - выход на нуле и статус автонастройка. Ещё раз попробовал сделать автонастройку по приведённому алгоритму - нет реакции он ФБ.
kondor3000
26.11.2025, 15:46
ПЛК реальный, но нагревателям не подключен, показания датчика меняю потенциометром. Загрузил новую программу, подал на EN сигнал и ФБ сразу же в режиме автонастройки с максимальным выходом. Подавал сигнал на ANR_START и потенциометром менял значение датчика выше и ниже уставки более двух раз - всё также выход максимальный и режим автонастройки. Потом сбросил ANR_START и датчик в 0 - всё также выход максимум и режим автонастройки. Подождал, думал, что со временем выход сбросится в 0 - не получилось, даже, когда PV_TIME перевалило за 65530 и сбросилось в 0. Потом ещё раз подал сигнал на ANR_START и как только начал повышать значение датчика, то выход сбросился в 0, статус - автонастройка. Поменял три раза показания дачтка выше уставки в 2 раза и ниже уставки до 0 - выход всё ещё в нуле. Сбросил сигнал с ANR_START - выход на нуле и статус автонастройка. Ещё раз попробовал сделать автонастройку по приведённому алгоритму - нет реакции он ФБ.
Думаю вам надо разобраться в работе на другом ПИД с АНР , из биб-ки Util например.
Или скачать готовый пример в Дополнительных примерах, ПИД-регулятор с автонастройкой для управления ШИМ (APID_PWM)
https://owen.ru/product/codesys_v3/example_of_work
aaaSashaMGGU
26.11.2025, 16:39
Думаю вам надо разобраться в работе на другом ПИД с АНР , из биб-ки Util например.
Или скачать готовый пример в Дополнительных примерах, ПИД-регулятор с автонастройкой для управления ШИМ (APID_PWM)
https://owen.ru/product/codesys_v3/example_of_work
Не хочу быть занудным, но я бился с этим примером, с этой автонастройкой, с этим ФБ примерно 2 недели. Хотя полжизни настраиваю регуляторы...
Это оказался тот случай, когда проще оказалось написать свой регулятор, чем разобраться, как же запустить ЭТОТ
Не знаю, может, я устарел, может, автор этого ФБ не с этой планеты, но я признаю, мне не удалось
Написал свой ФБ и оно (вот же удивительно) работает
Может, помогло бы, если бы можно было заглянуть под капот этому ФБ, но код закрытый :)
P.S. в аналоговом овеновском регуляторе-ФБ, который хотя бы работает с полпинка, тоже не без приколов: при смене величины зоны нечувствительности он скидывается в ноль. Ну, зачем??? :)
Dead Kid
26.11.2025, 19:50
Не хочу быть занудным, но я бился с этим примером, с этой автонастройкой, с этим ФБ примерно 2 недели. Хотя полжизни настраиваю регуляторы...
Это оказался тот случай, когда проще оказалось написать свой регулятор, чем разобраться, как же запустить ЭТОТ
Не знаю, может, я устарел, может, автор этого ФБ не с этой планеты, но я признаю, мне не удалось
Написал свой ФБ и оно (вот же удивительно) работает
Может, помогло бы, если бы можно было заглянуть под капот этому ФБ, но код закрытый :)
P.S. в аналоговом овеновском регуляторе-ФБ, который хотя бы работает с полпинка, тоже не без приколов: при смене величины зоны нечувствительности он скидывается в ноль. Ну, зачем??? :)
А ваш регулятор с автонастройкой? Если он у вас сохранился скиньте, пожалуйста. Буду очень признателен.
aaaSashaMGGU
26.11.2025, 21:43
А ваш регулятор с автонастройкой? Если он у вас сохранился скиньте, пожалуйста. Буду очень признателен.
Нет, мой без автонастройки. KP и TI придётся подобрать вручную. Нужно такой?
Нет, мой без автонастройки. KP и TI придётся подобрать вручную. Нужно такой?
Покажите, посмотрим! :)
Dragoncorn3
02.12.2025, 14:48
Привет форум!!! Может кто подсказать, куда копать или как реализовать?
Ситуация: Заказчик просит исходный код, для интеграции своего небольшого кода.
Вопрос: Можно как то ограничить доступ для другого пользователя моего проекта? Поставить пароль на конкретный блок кода/структуры? Но при этом оставить ему возможность добавлять свой код.
Пробовал через Свойства->Контроль доступа: Но не понял какие данные он требует(рисунок прилагаю).
Буду благодарен за ответы.
87019
kondor3000
02.12.2025, 15:00
Привет форум!!! Может кто подсказать, куда копать или как реализовать?
Ситуация: Заказчик просит исходный код, для интеграции своего небольшого кода.
Вопрос: Можно как то ограничить доступ для другого пользователя моего проекта? Поставить пароль на конкретный блок кода/структуры? Но при этом оставить ему возможность добавлять свой код.
Пробовал через Свойства->Контроль доступа: Но не понял какие данные он требует(рисунок прилагаю).
Буду благодарен за ответы.
А что у вас в коде такого особого?
В 90 %случаев используются готовые биб-ки, стандартные приёмы и стандартные ФБ и шаблоны. Или у вас эксклюзив какой то?
Dragoncorn3
02.12.2025, 15:14
А что у вас в коде такого особого?
В 90 %случаев используются готовые биб-ки, стандартные приёмы и стандартные ФБ и шаблоны. Или у вас эксклюзив какой то?
1) Самописный алгоритм, может конечно и велосипед
2) но всё равно не хотелось бы чтобы третьи лица вносили изменения или использовали его в своих проектах.
3) корпоративная этика и тд. и тп.
kondor3000
02.12.2025, 15:19
1) Самописный алгоритм, может конечно и велосипед
2) но всё равно не хотелось бы чтобы третьи лица вносили изменения или использовали его в своих проектах.
3) корпоративная этика и тд. и тп.
Без обид, но все проекты, про которые спрашивали как Запаролить, не стоят и выеденного яйца.
А те у кого есть серьёзные наработки, такого не спрашивают на форуме.
Евгений Кислов
02.12.2025, 15:21
Привет форум!!! Может кто подсказать, куда копать или как реализовать?
Ситуация: Заказчик просит исходный код, для интеграции своего небольшого кода.
Вопрос: Можно как то ограничить доступ для другого пользователя моего проекта? Поставить пароль на конкретный блок кода/структуры? Но при этом оставить ему возможность добавлять свой код.
Пробовал через Свойства->Контроль доступа: Но не понял какие данные он требует(рисунок прилагаю).
Буду благодарен за ответы.
87019
Добрый день.
https://oscat.ru/wp-content/Video/CodesysOneLove/MainPlaylist/016_SetProjectPassword.mp4
1) Самописный алгоритм, может конечно и велосипед
2) но всё равно не хотелось бы чтобы третьи лица вносили изменения или использовали его в своих проектах.
3) корпоративная этика и тд. и тп.
Вам не проект нужно сделать а библиотеку: файл с расширением *.compiled-library, таким образом добьетесь распространения функционала без исходного кода
а потому уже передавать проект посторонним с использованием собственной/корпоративной библиотеки
Без обид, но все проекты, про которые спрашивали как Запаролить, не стоят и выеденного яйца.
А те у кого есть серьёзные наработки, такого не спрашивают на форуме.
Полностью согласен. 99% таких эксклюзивов проще удалить и с нуля переписать. И уж точно речь не идет об использовании этого кода повторно. Такие деятели сдадут нерабочий проект и еще и доступ для исправления блокируют.
МихаилГл
02.12.2025, 18:12
Поддерживаю! Если человек разобрался с кодом, то значит или код грамотно составлен, или человек на своём месте, либо оба эти пункта.
Я вот не всё коды чужие разбираю, бывает и вправду, легче самому написать.
Поэтому, отдавать исходник, и не переживать. Ничего нового там всё равно нету...
Dragoncorn3
03.12.2025, 10:01
Добрый день.
https://oscat.ru/wp-content/Video/CodesysOneLove/MainPlaylist/016_SetProjectPassword.mp4
Спасибо!!! Это как раз то что нужно.
Party3AH
05.12.2025, 17:02
Команда "Выгрузка исходного кода" с ПЛК никак не влияет на его работу?
Можно ли выгружать проект из ПЛК на ПК на работающем оборудовании (конечно если ранее загрузили исходный код)?
Можно. Это просто скачивание файла если он в нем есть.
Артем Беднарский
08.12.2025, 00:22
Здравствуйте. Есть вопросы по передаче данных через SNMP:
1. Возможно ли передача данных двумя SNMP-агентами (OSNMP.Agent) на одном порту 161? Я пробовал делать следующее:
fbSnmpAgent_1(xEnable := TRUE, uiAgentPort := 161, usiTypeDevice := 1, sCommunityRead := 'public', sCommunityWrite := 'private',
pArrayVarBind := ADR(astVarBinds_1), usiCntVarBind := 255, eError => i_Error_1);
fbSnmpAgent_2(xEnable := TRUE, uiAgentPort := 161, usiTypeDevice := 2, sCommunityRead := 'public', sCommunityWrite := 'private',
pArrayVarBind := ADR(astVarBinds_2), usiCntVarBind := 176, eError => i_Error_2);
Проверял через MIB browser и не смог получить данные со второго агента, ошибок при отправке не было обнаружено. Если для каждого агента использовать разные порты, то всё работало.
2. Как правильно изменять параметр "gc_usiMaxCntVarbindTrap" в библиотеке OwenSnmp? В библиотеке есть два настраиваемых параметра, одно из них как раз gc_usiMaxCntVarbindTrap. Я изменял этот параметр, значение отображается новое, но в программном коде используется старое значение, которое задаётся по умолчанию.
3. Вопрос такой же как и в первом пункте, но только про блок OSNMP.SendTrap для отправки трапов. Возможно ли отправлять несколько трапов, используя один порт?
4. В какой именно момент отправляются трапы, при использования блока OSNMP.SendTrap? Вопрос возможно банальный, который легко проверить, но я не очень опытный пользователь codesys, поэтому меня этот вопрос запутал. Я знаю, что за отправку трапов отвечает xExecute внутри блока. Если нужно отправить трап, то переменную нужно выставлять в TRUE. А если я хочу отправлять трапы каждый раз, когда происходит некоторое событие, то должен ли я сбрасывать xExecute в FALSE, а после снова выставлять в TRUE? Замечал, что порой при сбрасывания xExecute в FALSE, трап отправлялся, что меня и запутало. Очень буду благодарен, если есть какой-то пример, где трап отправляется каждый раз при срабатывание какого-то условия.
Евгений Кислов
08.12.2025, 06:21
Добрый день.
Возможно ли передача данных двумя SNMP-агентами (OSNMP.Agent) на одном порту 161
Нет.
. Как правильно изменять параметр "gc_usiMaxCntVarbindTrap" в библиотеке OwenSnmp?
Прямо в менеджере библиотек:
87141
но в программном коде используется старое значение
Как вы это определили?
Возможно ли отправлять несколько трапов, используя один порт?
Да. В рамках вызова экземпляра SendTrap можно отправить несколько трапов.
Если нужно отправить больше, чем gc_usiMaxCntVarbindTrap, то нужно вызвать экземпляр несколько раз подряд с разными наборами трапов (но нет смысла пытаться вызвать несколько экземпляров одновременно).
В какой именно момент отправляются трапы, при использования блока OSNMP.SendTrap
По переднему фронту входа xExecute (т.е. значение входа должно перейти из FALSE в TRUE).
Очень буду благодарен, если есть какой-то пример, где трап отправляется каждый раз при срабатывание какого-то условия
Можете связаться со мной по телеграм (см. в подписи) и предоставить доступ по AnyDesk - это позволит решить оставшиеся у вас вопросы по SNMP.
Здравствуйте.
А может ли ПЛК быть в роли OPC UA Client`a?
Евгений Кислов
08.12.2025, 17:54
Здравствуйте.
А может ли ПЛК быть в роли OPC UA Client`a?
Добрый день.
У контроллеров ОВЕН отсутствует лицензия на использования компонента OPC UA Client в CODESYS.
Артем Беднарский
09.12.2025, 20:16
Здравствуйте. Извиняюсь, если вопрос не совсем по теме.
Подскажите, как выполняется настройка удаленного подключения к спк210. Какие настройки необходимо выставить на модели iRZ RL01w (SIM карта с внешним IP адресом), а также какие настройки необходимо выставить на панели управления спк210 для возможности удаленного подключения к панели управления посредством среды программирования codesys v3.5 sp17 и посредством подключения к WEB-интерфейсу.
Первый раз с таким столкнулся, информации об этом довольно мало.
Евгений Кислов
09.12.2025, 20:54
Здравствуйте. Извиняюсь, если вопрос не совсем по теме.
Подскажите, как выполняется настройка удаленного подключения к спк210. Какие настройки необходимо выставить на модели iRZ RL01w (SIM карта с внешним IP адресом), а также какие настройки необходимо выставить на панели управления спк210 для возможности удаленного подключения к панели управления посредством среды программирования codesys v3.5 sp17 и посредством подключения к WEB-интерфейсу.
Первый раз с таким столкнулся, информации об этом довольно мало.
Добрый день.
На стороне СПК достаточно настроить:
IP-адрес из подсети роутера;
такую же маску, как на роутере;
в качестве адреса шлюза указать IP-адрес роутера.
Все остальные настройки, связанные с пробросом нужных портов, производятся на стороне iRZ.
См. п. 5.4.4:
https://docs.irz.net/controls_main
В случае доп. вопросов по iRZ можете запросить консультацию по этому поводу у их технической поддержки.
DmitriiAnyushin
11.12.2025, 19:25
Добрый день! Использую таблицу тревог на СПК110. Одновременно на СПК приходит несколько событий, но на запущенном рантайме с ноутбука фиксируются все события, а на СПК только ОДНО (нижнее в с списке тревог). Таблица тревог настроена в режиме архивации. Биты, которые должны взвести данное событие выставляются (на рантайме ноутбука это видно). С временем в задачах эксперенитровал, но не помогает. Такое ощущение, что СПК в базу sqlite не успевает записать. Подскажите, в чем может быть проблема и как её решить? Спасибо!
СПК
87197
Ноутбук
87198
Евгений Кислов
11.12.2025, 19:37
Добрый день! Использую таблицу тревог на СПК110. Одновременно на СПК приходит несколько событий, но на запущенном рантайме с ноутбука фиксируются все события, а на СПК только ОДНО (нижнее в с списке тревог). Таблица тревог настроена в режиме архивации. Биты, которые должны взвести данное событие выставляются (на рантайме ноутбука это видно). С временем в задачах эксперенитровал, но не помогает. Такое ощущение, что СПК в базу sqlite не успевает записать. Подскажите, в чем может быть проблема и как её решить? Спасибо!
СПК
87197
Ноутбук
87198
Добрый день.
Напишите, пожалуйста, на support@owen.ru или завтра утром мне в телеграм.
Приложите проекты и опишите, как с его помощью повторить вашу проблему.
Артем Беднарский
17.12.2025, 10:54
Добрый день.
Не получается передать данные по SNMP вне зоны LAN. Оборудование - СПК210. Всё было настроено, порты 161 и 162 доступны. В LAN данные SNMP передаются без проблем через запрос GET, WEB-интерфейс также доступен. Со стороны заказчика, который через свою технологическую сеть подключается, доступен WEB-интерфейс, однако данные по SNMP получить через запрос GET не получается (timed out). Подскажите, в чём может быть проблема. Возможно необходимо провести какие-то дополнительные настройки в WEB конфигураторе? В разделе "Сеть" есть подразделы "Интерфейс" и "Межсетевой экран". Необходимо ли проводить какие-то дополнительные настройки в этих разделах? В интерфейсе пробовали указать зону межсетевого экрана "WAN", перезагружали контроллер, но это не помогло. Заказчику всё также доступен WEB-интерфейс, но не доступна передача данных по SNMP. Данные передаются агентом:
fbSnmpAgent(xEnable := TRUE, uiAgentPort := 161, usiTypeDevice := 1, sCommunityRead := 'public', sCommunityWrite := 'private',
pArrayVarBind := ADR(astVarBinds_1), usiCntVarBind := 251, eError => i_Error);
Ещё раз скажу, что через LAN параметры SNMP передаются, но заказчик через свою сеть получить их не может. По их словам проблем с доступом у заказчика нет и нам гарантировано предоставили порт 161 и 162 для передачи данных по SNMP.
Евгений Кислов
17.12.2025, 12:11
Добрый день.
Не получается передать данные по SNMP вне зоны LAN. Оборудование - СПК210. Всё было настроено, порты 161 и 162 доступны. В LAN данные SNMP передаются без проблем через запрос GET, WEB-интерфейс также доступен. Со стороны заказчика, который через свою технологическую сеть подключается, доступен WEB-интерфейс, однако данные по SNMP получить через запрос GET не получается (timed out). Подскажите, в чём может быть проблема. Возможно необходимо провести какие-то дополнительные настройки в WEB конфигураторе? В разделе "Сеть" есть подразделы "Интерфейс" и "Межсетевой экран". Необходимо ли проводить какие-то дополнительные настройки в этих разделах? В интерфейсе пробовали указать зону межсетевого экрана "WAN", перезагружали контроллер, но это не помогло. Заказчику всё также доступен WEB-интерфейс, но не доступна передача данных по SNMP. Данные передаются агентом:
fbSnmpAgent(xEnable := TRUE, uiAgentPort := 161, usiTypeDevice := 1, sCommunityRead := 'public', sCommunityWrite := 'private',
pArrayVarBind := ADR(astVarBinds_1), usiCntVarBind := 251, eError => i_Error);
Ещё раз скажу, что через LAN параметры SNMP передаются, но заказчик через свою сеть получить их не может. По их словам проблем с доступом у заказчика нет и нам гарантировано предоставили порт 161 и 162 для передачи данных по SNMP.
Добрый день.
Насколько я знаю, вы уже обратились в нашу техподдержку с этим вопросом - поэтому он будет решаться в рамках созданной заявки.
Артем Беднарский
20.12.2025, 14:28
Добрый день.
Подскажите, как можно отслеживать событие входа в систему конкретных пользователей, а также смены пароля пользователей?
У меня есть три группы пользователей "Admin", "Engineer" и "Operator" и я бы хотел отслеживать и записывать в журнал, какой пользователь заходит в систему и также записывать в журнал событие, когда происходит смена пароля того или иного пользователя. Я пытался создать бульки и написал простую логику, которая работает на основе считывания переменной sCurrentName
Событие входа в систему я хотел отслеживать следующим образом:
sCurrentName := WSTRING_TO_STRING(VisuElems.CurrentUserName);
IF sCurrentName = 'Admin' THEN
bLogIn_Admin := TRUE;
...
и т.п.
Но как я понял, то использовать переменную VisuElems.CurrentUserName в коде не стоит, к тому же я заметил, что переменная по какой-то причине сбрасывается самостоятельно, хотя на визуализации, при привязке этой переменной, этого не заметно.
Евгений Кислов
20.12.2025, 14:43
Добрый день.
Подскажите, как можно отслеживать событие входа в систему конкретных пользователей, а также смены пароля пользователей?
У меня есть три группы пользователей "Admin", "Engineer" и "Operator" и я бы хотел отслеживать и записывать в журнал, какой пользователь заходит в систему и также записывать в журнал событие, когда происходит смена пароля того или иного пользователя. Я пытался создать бульки и написал простую логику, которая работает на основе считывания переменной sCurrentName
Событие входа в систему я хотел отслеживать следующим образом:
sCurrentName := WSTRING_TO_STRING(VisuElems.CurrentUserName);
IF sCurrentName = 'Admin' THEN
bLogIn_Admin := TRUE;
...
и т.п.
Но как я понял, то использовать переменную VisuElems.CurrentUserName в коде не стоит, к тому же я заметил, что переменная по какой-то причине сбрасывается самостоятельно, хотя на визуализации, при привязке этой переменной, этого не заметно.
Добрый день
См. п. 2.9:
https://ftp.owen.ru/CoDeSys3/98_Books/CodesysVisuIecCode.pdf
Но как я понял, то использовать переменную VisuElems.CurrentUserName в коде не стоит
Все верно, она обрабатывается только в контексте экранов визуализации.
Артем Беднарский
23.12.2025, 10:02
Добрый день.
Возник ещё один вопрос. Встроена ли у СПК210 функция автоматического обновления журнала/логов/тренда при достижение заданного лимита по памяти? То есть замена старых данных на новые. Или же контроллер войдёт в состояние ошибки, когда лимит по памяти будет достигнут? Необходимо прописывать автоматическую очистку журнала/логов/трендов в коде программы?
Евгений Кислов
23.12.2025, 10:13
Добрый день.
Возник ещё один вопрос. Встроена ли у СПК210 функция автоматического обновления журнала/логов/тренда при достижение заданного лимита по памяти? То есть замена старых данных на новые. Или же контроллер войдёт в состояние ошибки, когда лимит по памяти будет достигнут? Необходимо прописывать автоматическую очистку журнала/логов/трендов в коде программы?
Добрый день.
Если в настройках хранилища задано ограничение (на размер файла или кол-во записей), то при его достижении самые ранние записи начнут удаляться и заменяться новыми.
Party3AH
25.12.2025, 15:25
Добрый день!
Вопрос по циклу опроса ПЛК в режиме Modbus TCP Master - как можно оценить частоту опроса Slave-устройств в случае конфигурации через шаблоны?
Верно ли предположение, что можно сделать опрос через ФБ, тогда скорость опроса будет зависеть от времени цикла задачи?
Для понимания: имеется ПЛК (TCP Master), в проекте через шаблон добавлен преобразователь Ethernet-RS485 (TCP Slave), в котором несколько датчиков RS485 с Modbus RTU на скорости 9600.
Связь неустойчивая, по датчикам постоянные ошибки MB_ERRORCODES - «TCP_COMMUNICATION_ERROR» - TCP Port error. Request was not sent.
Данных много, похоже, что ПЛК слишком часто опрашивает датчики через преобразователь, на скорости 9600 они не успевают отвечать.
kondor3000
25.12.2025, 15:36
Добрый день!
Вопрос по циклу опроса ПЛК в режиме Modbus TCP Master - как можно оценить частоту опроса Slave-устройств в случае конфигурации через шаблоны?
Верно ли предположение, что можно сделать опрос через ФБ, тогда скорость опроса будет зависеть от времени цикла задачи?
Данных много, похоже, что ПЛК слишком часто опрашивает датчики через преобразователь, на скорости 9600 они не успевают отвечать.
А 9600 зачем сделали?
Шаблоны и так тормозят, лучше читать модули групповыми запросами, и только то что нужно.
Евгений Кислов
25.12.2025, 15:42
Добрый день.
в проекте через шаблон добавлен преобразователь Ethernet-RS485 (TCP Slave)
Мы не разрабатывали шаблон какого-либо преобразователя.
Приложите скриншоты вашей конфигурации обмена. Лучше всего - выложите проект.
Укажите модель используемого преобразователя.
Party3AH
25.12.2025, 16:00
А 9600 зачем сделали?
Шаблоны и так тормозят, лучше читать модули групповыми запросами, и только то что нужно.
Предположительно, предыдущие разработчики снизили умышленно, т.к. не работало на бо'льшей скорости.
Посчитал кол-во регистров со всех устройств - около 500 регистров, это 8000 бит чистой информации (очень много лишнего, планирую сильно уменьшить).
Теперь вопрос возник - сколько раз в секунду ПЛК хочет опрашивать датчики. Если 1 раз в секунду - то скорости 9600 может и хватило бы.
А если цикл 100 мс, то это 10 раз в секунду, а значит 80 кбит, тогда уже 115200 только.
Добрый день.
Мы не разрабатывали шаблон какого-либо преобразователя.
Приложите скриншоты вашей конфигурации обмена. Лучше всего - выложите проект.
Укажите модель используемого преобразователя.
Используются стандартные шаблоны Codesys, конфигурация Ethernet выглядит так:
- Modbus TCP Master (ПЛК)
... - Modbus TCP Slave (Преобразователь WirenBoard MGE v2 - не знаю, как он оказался в этом проекте АСУ ТП :mad:)
...... -Modbus Slave, COM Port (датчик с Modbus RTU)
kondor3000
25.12.2025, 16:10
Цикл ПЛК должен быть 10 мс.
Цикл в целом никому не должен и 10 мс не догма. А ошибки идут из-за маленького времени таймаута. Ответ просто не успевает приходить. Плюс возможно витая пара(если она вообще витая там) неграммотно разведена по датчикам (например звездой или без терминаторов). Если все это устраните должно работать.
Добрый вечер, всех с вечером пятницы. Подскажите, вот так будет корректно читаться, с учетом того, что row_data - это массив из двух вордов?
87428
Скорее каждый элемент массива row_data по отдельности придется привязать. Точно не могу сказать, OCL использую, мне там проще сделать так как я хочу.
kondor3000
26.12.2025, 19:54
Добрый вечер, всех с вечером пятницы. Подскажите, вот так будет корректно читаться, с учетом того, что row_data - это массив из двух вордов?
Зачем вообще привязывать что то, у вас массив из 12 WORD, объявите 87429
W AT%IW0 : ARRAY [0..11] OF WORD; или
Sensors AT%IW0 : ARRAY [0..11] OF WORD; где AT%IW0 ваш адрес в конфиге
и используйте Sensors[0], Sensors[1] и т. д.
Зачем вообще привязывать что то, у вас массив из 12 WORD, объявите 87429
W AT%IW0 : ARRAY [0..11] OF WORD; или
Sensors AT%IW0 : ARRAY [0..11] OF WORD; где AT%IW0 ваш адрес в конфиге
и используёте Sensors[0], Sensors[1] и т. д.
это интересно
ruvanillabear
29.12.2025, 15:34
Добрый день.
Есть вопрос по корректной загрузке проекта в ПЛК210.
Как наиболее правильно выполнить загрузку проекта с исходным кодом для возможности в последующем работы с проектом через выгрузку архива?
Если взять проект, создать загрузочное приложение, а затем выгрузить архив, среда Codesys все равно ругается на различия в проекте (появляется дата загрузки в контроллер, т.е. в выгруженной версии проекта даты нет)
МихаилГл
29.12.2025, 16:21
Потому что одного проекта недостаточно для подключения онлайн без такого сообщения. Вы все файлы, которые в папке проекта сохраните, или в архив сожмите. Там 2...3 как раз и, с которыми онлайн идёт без проблем. В факе к плк тут на форуме где то есть, у Евгения Кислова...
Party3AH
29.12.2025, 16:23
Добрый день.
Есть вопрос по корректной загрузке проекта в ПЛК210.
Как наиболее правильно выполнить загрузку проекта с исходным кодом для возможности в последующем работы с проектом через выгрузку архива?
Если взять проект, создать загрузочное приложение, а затем выгрузить архив, среда Codesys все равно ругается на различия в проекте (появляется дата загрузки в контроллер, т.е. в выгруженной версии проекта даты нет)
"Создать загрузочное приложение" - это не загрузка исходного кода, а загрузка во флэш, чтобы после снятия питания исполняемое ПО осталось в ПЛК.
Для загрузки исходного кода нужно нажать "Файл" - "Загрузка исходного кода".
Если будете пробовать, напишите, получилось ли. Сам не пользовался, чтобы не оставлять свободный доступ к проекту, с возможностью выгрузить проект и сделать какие-то изменения.
Добрый день.
Есть вопрос по корректной загрузке проекта в ПЛК210.
Как наиболее правильно выполнить загрузку проекта с исходным кодом для возможности в последующем работы с проектом через выгрузку архива?
Если взять проект, создать загрузочное приложение, а затем выгрузить архив, среда Codesys все равно ругается на различия в проекте (появляется дата загрузки в контроллер, т.е. в выгруженной версии проекта даты нет)
У меня была хорошая статья (там про 2.3 и 3.5): https://cs-cs.net/codesys-archiv-projekta-ishodniye-kody
Тебе надо загружать Исходные тексты проекта
МихаилГл
29.12.2025, 18:27
Такой подход с сохранением исходника на плк считаю неправильным. Во первых плк может умереть вместе с исходниками. Отсюда во вторых, лучше их передать на носителе каком нибудь, это и приемо передаточные акты поможет подписать, и в дальнейшем послать нерадивого заказчика, если он профукал исходники. Ну или передать это ещё раз за определённую небольшую, но всё таки плату:
Исходники переданы, бумаги подписаны. Потеряли, ваши проблемы... Ну конечно если в договоре эти исходники есть...
ruvanillabear
30.12.2025, 11:38
У меня была хорошая статья (там про 2.3 и 3.5): https://cs-cs.net/codesys-archiv-projekta-ishodniye-kody
Тебе надо загружать Исходные тексты проекта
Вашу статью читал, как раз выставлено "при создании загрузочного приложения, онлайн загрузке и тд", так что исходный код загружается каждый раз.
Мой вопрос именно в том, что даже при таком подходе, невозможно подключиться к контроллеру с "нуля" и перейти в онлайн, все равно приходится перезаписывать загрузочное приложение.
ruvanillabear
30.12.2025, 11:40
Понимаю, но исходники и так есть у заказчика. Вопросы передачи и тд немного другая область. Мой вопрос больше о том, существует ли способ, чтоб к контроллеру можно было подключиться и перейти в онлайн, не имея проекта (условно с голым codesys и библиотеками)
ruvanillabear
30.12.2025, 11:42
"Создать загрузочное приложение" - это не загрузка исходного кода, а загрузка во флэш, чтобы после снятия питания исполняемое ПО осталось в ПЛК.
Для загрузки исходного кода нужно нажать "Файл" - "Загрузка исходного кода".
Если будете пробовать, напишите, получилось ли. Сам не пользовался, чтобы не оставлять свободный доступ к проекту, с возможностью выгрузить проект и сделать какие-то изменения.
В свойствах проекта как раз возможно выставить загрузку исходного кода, совместно с созданием загрузочного приложения
МихаилГл
30.12.2025, 11:55
Понимаю, но исходники и так есть у заказчика. Вопросы передачи и тд немного другая область. Мой вопрос больше о том, существует ли способ, чтоб к контроллеру можно было подключиться и перейти в онлайн, не имея проекта (условно с голым codesys и библиотеками)
Сжать в архив всю папку проекта, который был сохранён и подключался в онлайн без проблем, и сохранить на плк. Правда там много лишних файлов, основные для онлайна только 3 или 4...
Вашу статью читал, как раз выставлено "при создании загрузочного приложения, онлайн загрузке и тд", так что исходный код загружается каждый раз.
Мой вопрос именно в том, что даже при таком подходе, невозможно подключиться к контроллеру с "нуля" и перейти в онлайн, все равно приходится перезаписывать загрузочное приложение.
Доспрошу: а в настройках загрузки исходного кода стоят ВСЕ галки?
Он же должен туда ещё сохранять файлы компиляции. Если вот их нет - то тогда он скажет, что версии проектов не совпадают.
А если они там есть - то вот тогда я не знаю, что может быть
ruvanillabear
30.12.2025, 13:49
Доспрошу: а в настройках загрузки исходного кода стоят ВСЕ галки?
Он же должен туда ещё сохранять файлы компиляции. Если вот их нет - то тогда он скажет, что версии проектов не совпадают.
А если они там есть - то вот тогда я не знаю, что может быть
со всеми галками не смог проверить. По глупости выгрузил со всеми, а потом еще и создал архив приложения силами овена. Место на разделе кончилось и ПЛК в ступоре было. Еле по ssh вычистил раздел
Lapu-Leen
14.01.2026, 15:25
Подскажите, где посмотреть насколько проект нагружает "железо" СПК210, как примерно рассчитать или измерить задержку между появлением сигнала входе модуля DI и срабатыванием выхода модуля DO? Естественно вопрос в рамках обсуждения Codesys. В мануале нашёл вот это:
Tab: CPU Load
Object: Task Configuration
The CPU Load tab is available in online mode for multicore devices only. The load of the individual CPUs is presented in the trace editor.
For more information, see: Accessing All Traces on the Controller
If CODESYS Trace is installed, then you can open the trace configuration by double-clicking the legend in the window on the right side. Adding more variables is not possible here. к СПК210 это применимо или нет? Не увидел такой опции.
Евгений Кислов
14.01.2026, 15:33
где посмотреть насколько проект нагружает "железо" СПК210
В CODESYS при подключении к контроллеру: Конфигурация задач - Мониторинг.
В web-конфигураторе: Состояние - Графики в реальном времени и Статистика.
как примерно рассчитать или измерить задержку между появлением сигнала входе модуля DI и срабатыванием выхода модуля DO?
Завести DO на другой DI модуля. В программе фиксировать относительное время при детектировании сигнала на каждом из входов - например, с помощью оператора TIME()
к СПК210 это применимо или нет? Не увидел такой опции.
Неприменимо, объект Device Trace не поддерживается.
Lapu-Leen
14.01.2026, 16:50
В CODESYS при подключении к контроллеру: Конфигурация задач - Мониторинг.
В web-конфигураторе: Состояние - Графики в реальном времени и Статистика.
А какой нормальный диапазон Load Average для СПК210?
Евгений Кислов
14.01.2026, 17:02
А какой нормальный диапазон Load Average для СПК210?
Не очень понятно, каковы критерии "нормы".
Для общего представления можно почитать эту статью:
https://habr.com/ru/companies/vk/articles/335326/
Lapu-Leen
14.01.2026, 17:41
Не очень понятно, каковы критерии "нормы".
Если смотреть на страницу "Графики в реальном времени" на рисунке 3.15 руководства " Web-конфигуратор ПЛК/СПК с системой исполнения CODESYS V3.5" то у шкалы Y максимальное значение 1.50 (предположу в верхней части будет 2.00) собственно это и есть максимальный предел, или шкала динамическая? В таком случае при каком значение станет заметна нехватка ресурсов и заметно снизится быстродействие ПЛК?
Евгений Кислов
14.01.2026, 17:44
или шкала динамическая?
Динамическая.
при каком значение станет заметна нехватка ресурсов и заметно снизится быстродействие ПЛК?
"Заметность" зависит от качеств наблюдателя.
Dionis2000
15.01.2026, 16:13
Здравствуйте! Не могу понять на что ругается CodeSYS87553
kondor3000
15.01.2026, 16:19
Здравствуйте! Не могу понять на что ругается CodeSYS87553
Скорее всего не добавлена биб-ка Util.lib в проект, и потом зачем вам PutBit если биты можно упаковать (распаковать) из Маски через точку.
Dionis2000
15.01.2026, 16:24
Понятно. Спасибо.
aaaSashaMGGU
16.01.2026, 08:51
На новом ПК поставил Codesys
В проекте моя библиотека теперь ругается на библиотеку VisuElems:
87562
Сама библиотека компилируется без проблем, никаких библиотек не просит. VisuElems там даже нет в списках
Евгений Кислов
16.01.2026, 09:04
На новом ПК поставил Codesys
В проекте моя библиотека теперь ругается на библиотеку VisuElems:
87562
Сама библиотека компилируется без проблем, никаких библиотек не просит. VisuElems там даже нет в списках
Но, тем не менее, у вашей библиотеки есть зависимость от нее.
Можете доустановить отдельно через Репозиторий библиотек:
https://ftp.owen.ru/TechSupportShare/VisuElems_4_2_0_0.compiled-library
aaaSashaMGGU
16.01.2026, 09:08
Спасибо, это помогло!
P.S. Я её искал, но не смог найти, откуда её скачать
Нашёл только это: https://forge.codesys.com/prj/codesys-example/visudialogs/home/Home/
Но это оказалось не то
Добрый день! Такой вопрос будет, как в протоколе Modbus сделать передачу булевого значения, только при изменении значения, чтоб сеть не нагружать и чтоб не конфликтовать если по этому же адресу с другой переменной пойдут отправляться данные
Например: на панели я нажимаю кнопку включить устройство, мне надо отправить 1 один раз и больше не отправлять
Знаю как через триггер по переднему фронту это сделать, но тут я тпе понимаю больше для большого пакета данных который отправляется один раз, а для просто булевых значений используется тригер "Приложение" с которым я не очень разобрался, может кто подсказать как правильнее сделать
Евгений Кислов
16.01.2026, 09:41
Добрый день! Такой вопрос будет, как в протоколе Modbus сделать передачу булевого значения, только при изменении значения, чтоб сеть не нагружать и чтоб не конфликтовать если по этому же адресу с другой переменной пойдут отправляться данные
Например: на панели я нажимаю кнопку включить устройство, мне надо отправить 1 один раз и больше не отправлять
Знаю как через триггер по переднему фронту это сделать, но тут я тпе понимаю больше для большого пакета данных который отправляется один раз, а для просто булевых значений используется тригер "Приложение" с которым я не очень разобрался, может кто подсказать как правильнее сделать
Добрый день.
Мне кажется, разумнее так и сделать.
Ну тоесть булевую переменную подставить в сам канал и её же в тригер?
(на самом деле только понял что если я включу то 1 отправится,а если выключу 0 не отправится)
я думал есть способ чтоб при изменении значения, ну включил выключатель, отправил 1, выключил,отправил 0
kondor3000
16.01.2026, 10:14
Ну тоесть булевую переменную подставить в сам канал и её же в тригер?
(на самом деле только понял что если я включу то 1 отправится,а если выключу 0 не отправится)
я думал есть способ чтоб при изменении значения, ну включил выключатель, отправил 1, выключил,отправил 0
Тогда триггерная переменная должна быть другая.
Добрый день.
Работаю над проектом с шиной CAN, симулирую аварии. Логика простая: проблема на шине = запрет работы, нет проблем = работа разрешена.
С определением работоспособности разобрался, после устранения неисправности шина поднимается, но в проекте на шине висят восклицательные знаки. Убираются только нажатием кнопки "Подтвердить" на странице "Состояние" устройства. В принципе алгоритму не мешает, но лампочка "Авария шины" на ПЛК (не Овен) мыргает, что напрягает. Хотелось бы узнать как можно программно "нажать" эту кнопку.
87567
CODESYS V3.5 SP18 Patch 5
Евгений Кислов
16.01.2026, 10:22
Добрый день.
Работаю над проектом с шиной CAN, симулирую аварии. Логика простая: проблема на шине = запрет работы, нет проблем = работа разрешена.
С определением работоспособности разобрался, после устранения неисправности шина поднимается, но в проекте на шине висят восклицательные знаки. Убираются только нажатием кнопки "Подтвердить" на странице "Состояние" устройства. В принципе алгоритму не мешает, но лампочка "Авария шины" на ПЛК (не Овен) мыргает, что напрягает. Хотелось бы узнать как можно программно "нажать" эту кнопку.
87567
CODESYS V3.5 SP18 Patch 5
Добрый день.
Возможно (не проверял и нет возможности) поможет
CANbus.ResetBusAlarm();
CANbus.ResetBusAlarm();
Что-то не получается. Судя по справке это метод. Я с методами еще не работал.
Имею ошибки "для функции ResetBusAlarm требуется ровно 1 вход"
При компиляции - ошибка С0004 - ResetBusAlarm не является компонентом CANbus_Diag.
Евгений Кислов
16.01.2026, 13:21
CANbus.ResetBusAlarm();
Что-то не получается. Судя по справке это метод. Я с методами еще не работал.
Имею ошибки "для функции ResetBusAlarm требуется ровно 1 вход"
При компиляции - ошибка С0004 - ResetBusAlarm не является компонентом CANbus_Diag.
Выложите ваш проект - посмотрим, почему у вас появляется ошибка.
У меня компилируется без них.
87571
Upd. - я понял, в чем у вас проблема.
Этот метод появился только в версии 4.1.1.0 библиотеки CANbusDevice.
У вас, видимо, версия этой библиотеки - 3.5.17.0.
Можете попробовать обновить плагин CODESYS CANopen, если у вас есть такая возможность.
Евгений Кислов
Этот метод появился только в версии 4.1.1.0 библиотеки CANbusDevice.
У вас, видимо, версия этой библиотеки - 3.5.17.0.
Именно. Докопался до этого сам. Ваш UPD увидел после того как.
Драйвер шины умышлено был понижен. На шине висит единственное устройство - абсолютный энкодер очень известного российского производителя. Версия 4.1.1.0 у меня есть, соответствующая версия CanOpen Manager тоже, но этот энкодер с ними не хочет работать, просто висит в ошибке. Понижением версии получилось заставить его работать. Сам энкодер абсолютно новый, однако мне "повезло", производитель менял программно-аппаратную платформу своего изделия, и у меня чуть ли не экземпляр №1 с этой серии. Вероятно что-то там в своем EDS не допилили. Буду задавать вопросы производителю.
В любом случае, определение проблемы на шине успешно детектируется, надеюсь этого будет достаточно. Моргающая лампочка аварии работе не мешает, мне главное блокировать установку в случае проблемы с энкодером.
Спасибо за помощь.
Артем Беднарский
16.01.2026, 17:01
Добрый день.
Есть следующий вопрос:
Как воспроизвести звуковой сигнал при аварии в СПК210? Видел как это реализовано в WEB-визуализации, но возможно ли это сделать для контроллера, то есть звук не в вебе, а чтобы звук издал сам контроллер?
Евгений Кислов
16.01.2026, 17:28
Добрый день.
Есть следующий вопрос:
Как воспроизвести звуковой сигнал при аварии в СПК210? Видел как это реализовано в WEB-визуализации, но возможно ли это сделать для контроллера, то есть звук не в вебе, а чтобы звук издал сам контроллер?
Добрый день.
См. узел Buzzer в дереве проекта.
МихаилГл
16.01.2026, 18:01
Добрый день.
Есть следующий вопрос:
Как воспроизвести звуковой сигнал при аварии в СПК210? Видел как это реализовано в WEB-визуализации, но возможно ли это сделать для контроллера, то есть звук не в вебе, а чтобы звук издал сам контроллер?
https://owen.ru/forum/showthread.php?t=38389
yaroslavcik
17.01.2026, 11:32
Здравствуйте,
Есть ПЛК210-03 и CS3,5 sp17 , вопрос по персистент памяти
Есть тег в персистент памяти и он изначально 0, запись в него идет только в одном месте.
87574
Как только я перезаливаю проект, значение этого тэга становится "заоблачным".
87575
87576
Причем, делал так, что в программе удалял все присвоения этому тегу и все равно после перезаливки проекта появлялось такое значение
Такое происходит только с 1 тегом.
Что может быть не так делаю?
kondor3000
17.01.2026, 11:39
Причем, делал так, что в программе удалял все присвоения этому тегу и все равно после перезаливки проекта появлялось такое значение
Такое происходит только с 1 тегом.
Что может быть не так делаю?
У вас же сумма 2 переменных, 9,17 сохранилось + неизвестное число в 24 степени.
yaroslavcik
17.01.2026, 11:42
У вас же сумма 2 переменных, 9,17 сохранилось + неизвестное число в 25 степени.
Вот именно "+ неизвестное число в 25 степени" до перезаливки проекта был 0. Перезалил проект и 0 превратился в "+ неизвестное число в 25 степени". Как?!
kondor3000
17.01.2026, 11:46
Вот именно "+ неизвестное число в 25 степени" до перезаливки проекта был 0. Перезалил проект и 0 превратился в "+ неизвестное число в 25 степени". Как?!
Так смотрите проект, он у вас, что это за переменная, откуда она берётся и как вы её сохраняете ( зачем складываете)
yaroslavcik
17.01.2026, 13:00
Так смотрите проект, он у вас, что это за переменная, откуда она берётся и как вы её сохраняете ( зачем складываете)
Это переменная объявлена в области памяти персистент, раз в 12 часов к этой переменной прибавляется число - все, и потом это число передается на верхний уровень, больше операций с этим тегом нет. Проверял по поиску по проекту много раз.
Я отвязывал присвоение к этой переменной, обнулял ее онлайн, потом выходил из онлайна корректировал проект (в другом месте, не связанное с этим объектом), заливал заново и не привязанный тег принимал значение число в 27 степени - откуда не понятно, т.к. присвоений в проекте ее нет
Мысли:
1. При загрузке ПЛК не выдаёт ли предупреждений о том, что список PERSISTENT-переменных обновился и данные буду потеряны?
2. Сумма ТОЧНО выполняется ОДИН раз? А то в коде есть summ_ton.q, и это чуток напрягает: вдруг он несколько циклов ПЛК успевает прокрутить и нассумировать дофига?
Я обычно R_TRIG делаю, и по нему однократно выполняю операцию.
yaroslavcik
17.01.2026, 15:04
Мысли:
1. При загрузке ПЛК не выдаёт ли предупреждений о том, что список PERSISTENT-переменных обновился и данные буду потеряны?
2. Сумма ТОЧНО выполняется ОДИН раз? А то в коде есть summ_ton.q, и это чуток напрягает: вдруг он несколько циклов ПЛК успевает прокрутить и нассумировать дофига?
Я обычно R_TRIG делаю, и по нему однократно выполняю операцию.
1.не выдает, т.к. не добавляю/убавляю тегов в персистент память
2.точно, для проверки поставил счетчик
при чем такое происходит на 2 ПЛК одинаковых
kondor3000
17.01.2026, 16:38
при чем такое происходит на 2 ПЛК одинаковых
Проверить можно на новых PERSISTENT-переменных, записать число ( и 0 тоже) и посмотреть при перезагрузке, если новые сохраняются, то проблемы в коде.
Мне и так понятно, что в коде.
МихаилГл
17.01.2026, 17:38
1.не выдает, т.к. не добавляю/убавляю тегов в персистент память
2.точно, для проверки поставил счетчик
при чем такое происходит на 2 ПЛК одинаковых
СуммТриг:=фальш, идёт после условия :=тру... Это тру при неравенстве формируется. И это неравенство всегда может быть истина, и триггер всегда в сработке по тру, но в коде в переменных вы видите последнее присвоение фальши, но дли таймера оно тру... Проверьте условие возникновения неравенства... Ошибка тут...
PS По f7 запишите в эту персистент переменную ноль. Потом альт+f7. Может она и вправду не затерлась. Или через заводской сброс они в ноль вроде тоже сбрасываются...
yaroslavcik
18.01.2026, 10:16
в итоге создал еще переменную в персистент памяти, заменил ею "косячный" тег и все заработало:eek:. Проблем пока не наблюдается, может где то что то обращается к этой области памяти где лежит переменная, но в проекте я ни где не обращаюсь к памяти плк на прямую
yaroslavcik
19.01.2026, 02:18
87584
На картинке видно красной линией отмечен тег, который я отвязал вообще от всего в программе обнулили и все равно какая то ерунда в него сыпется, а зеленой линией отмечен тег новый и им заменен предыдущий и здесь все отлично
вопрос - что делать что бы такого больше не повторялось, т.к. не понятно откуда в старый тег все это приходит и может ли такое повториться?
МихаилГл
19.01.2026, 04:21
Что у вас там за куча предупреждений... Скинули б проект. Там поди неявное преобразование из одного формата в другой, только не знаю, влияет ли это на такое поведение...
87584
На картинке видно красной линией отмечен тег, который я отвязал вообще от всего в программе обнулили и все равно какая то ерунда в него сыпется, а зеленой линией отмечен тег новый и им заменен предыдущий и здесь все отлично
вопрос - что делать что бы такого больше не повторялось, т.к. не понятно откуда в старый тег все это приходит и может ли такое повториться?
Приходит так скорее всего из-за некорректной работы с памятью (или указателями) при обработке переменных, объявленных перед ней.
Попробуйте поставить эту переменной первой в объявлении и перекомпилировать проект
yaroslavcik
19.01.2026, 05:28
да, неявное преобразование есть, но не для этих переменных, т.к. все в real, только в одном месте идет преобразование real в 2 word для HMI
yaroslavcik
19.01.2026, 05:32
Приходит так скорее всего из-за некорректной работы с памятью (или указателями) при обработке переменных, объявленных перед ней.
Попробуйте поставить эту переменной первой в объявлении и перекомпилировать проект
На прямую с памятью не работаю.
Да, по пробую ее объявить в другом порядке...
Евгений Кислов
19.01.2026, 06:18
87584
На картинке видно красной линией отмечен тег, который я отвязал вообще от всего в программе обнулили и все равно какая то ерунда в него сыпется, а зеленой линией отмечен тег новый и им заменен предыдущий и здесь все отлично
вопрос - что делать что бы такого больше не повторялось, т.к. не понятно откуда в старый тег все это приходит и может ли такое повториться?
Добрый день.
Выложите, пожалуйста, проект со скриншота - посмотрим, что у вас происходит.
yaroslavcik
19.01.2026, 09:40
Добрый день.
Выложите, пожалуйста, проект со скриншота - посмотрим, что у вас происходит.
Спасибо за помощь!
Проблема была действительно в коде (не правильная адресация), как писали выше. В объявленной персистент памяти вначале был массив данных 0...179, а в программе я циклом FOR перебирал не 180 ячеек, а 181, поэтому данные из цикла наслаивались на ниже записанные переменные персистент памятию
Приветствую!
Сможете ли подсказать такой момент, как найти бит для мониторинга соединения TCP modbus устройства?
У модулей Овен в соотнесении сразу есть эти биты куда можно переменные подставить, если сторонние устройство, то как быть?
Евгений Кислов
20.01.2026, 16:34
Приветствую!
Сможете ли подсказать такой момент, как найти бит для мониторинга соединения TCP modbus устройства?
У модулей Овен в соотнесении сразу есть эти биты куда можно переменные подставить, если сторонние устройство, то как быть?
Добрый день.
<имя_устройства_в_дереве_проекта>.xError
yaroslavcik
26.01.2026, 04:33
Здравствуйте,
Есть ПЛК 210 и модуль МВ210-101. Задача - изменить тип датчика из программы или панели, завел бит на запись конфигурации и соответствующие теги под тип датчика ( ТСП100П и ТСМ50М) в библиотеке Мх210 Assistant они под номерами 3 и 10 соответственно.
87685.
Алгоритм изменения такой - поменял тип датчика, и нажал кнопку записать, но пока не понятно как это работает, т.к. датчики при изменении параметров ни как на это не реагируют.Может что забыл в конфигурации поменять?
87686
Нужно ли при смене типа датчика перезагружать модуль физически? Если менять просто в конфигурации , то все применяется и корректно отображается
зы Еще почему то модуль МВ210-101 обновляет данные очень медленно - температура с 0 до нормальной доходит за, в среднем, за 1-1,5 часа - это нормально ( при это в помещении температура не изменяется).
Евгений Кислов
26.01.2026, 06:24
Добрый день.
Есть ПЛК 210 и модуль МВ210-101. Задача - изменить тип датчика из программы или панели,
Посмотрите это видео:
https://oscat.ru/wp-content/Video/CodesysOneLove/MainPlaylist/117_WriteAiSettings_MV210_101_fromVisu.mp4
Может что забыл в конфигурации поменять?
"Использовать настройки конфигурации" на втором скрине нужно перевести в FALSE.
Нужно ли при смене типа датчика перезагружать модуль физически?
Нет.
AlexRezn
27.01.2026, 05:38
Здравствуйте!
Прошу сориентировать в общих конструктивах работы с OWEN контроллерами, панелями и Codesys. Я много лет разрабатывал системы в Siemens, пытаюсь по аналогии понять ваши технологии, некоторые вещи не удаётся найти.
1). Где в проекте Codesys заводятся глобальные DB, экземплярные DB для конкретного FB, таблица переменных памяти контроллера?
2). Как нарисованную визуализацию загрузить в панель?
(я просмотрел видео-пример, где экраны рисуют в конфигураторе панели, а информацию рецептов трансферят "вручную" областями памяти по Modbus.
А нарисованное в Codesys - экраны, таблицы трендов, алармов и тревог - это только для показа на компьютере? )
3). Где в проекте Codesys функциональные аналоги редакторов Hardware Configuration, Network Configuration?
Подскажите пожалуйста, как правильно настроит плк210 с мсд200 , а именно в плк у меня прописаны газоанализаторы с адресом от 1 до 10 и каналами чтения из них концентрации 87705 , мсд у меня настроен на режим слайв. Теперь я добавляю мсд200 в плк и добавляю каналы которые указаны в мсд 87706 только указываю уже функцию 4 для записи и вот тут запутался как указать чтобы канал с газоанализатора писался в канал мсд?
Евгений Кислов
27.01.2026, 07:03
только указываю уже функцию 4 для записи
Для записи используется функция 0x10 (Write Multiple Registers).
как указать чтобы канал с газоанализатора писался в канал мсд?
Надо присвоить значения переменных, привязанных к каналам газоанализатора, в переменные, привязанные к каналам МСД.
Sergey361
27.01.2026, 07:04
1. Глобальные - в глобальных переменных, просто это не называется DB. Экземплярные данные хранятся в экземпляре ФБ. Таблицу переменных можно создать в глобальных переменных или в программе, адреса можно прописывать при объявлении переменных, но это нежелательно.
2. Нарисованную в Codesys? В какую Панель? В СПК просто загрузить проект с Визуализацией, на сайте полно документации. Визуализацию можно и в ПЛК загрузить и отображать браузером с ПК, веб-панели, любого устройства с браузером.
3. Есть сам ПЛК, есть узлы ПЛК в дереве проекта, часть настраивается не через Codesys, а через веб-конфигуратор. Смотря, что нужно. Лучше прочитать документ "Первый старт".
Евгений Кислов
27.01.2026, 07:11
Здравствуйте!
Прошу сориентировать в общих конструктивах работы с OWEN контроллерами, панелями и Codesys. Я много лет разрабатывал системы в Siemens, пытаюсь по аналогии понять ваши технологии, некоторые вещи не удаётся найти.
1). Где в проекте Codesys заводятся глобальные DB, экземплярные DB для конкретного FB, таблица переменных памяти контроллера?
2). Как нарисованную визуализацию загрузить в панель?
(я просмотрел видео-пример, где экраны рисуют в конфигураторе панели, а информацию рецептов трансферят "вручную" областями памяти по Modbus.
А нарисованное в Codesys - экраны, таблицы трендов, алармов и тревог - это только для показа на компьютере? )
3). Где в проекте Codesys функциональные аналоги редакторов Hardware Configuration, Network Configuration?
Добрый день.
1) Начните с этого: https://owen.ru/poleznye_materialy/khroniki_importozamecheniya_perehod_tiaportal_code sysv3_5
2) Визуализация "загружается" в тот же контроллер, в который загружается весь проект.
Если вы используете ПЛК2хх - то визуализация будет доступна только через веб-сервер контроллера:
https://owen.ru/media/video/owen_plk210_web
Для ее отображения "по месту" удобно использовать веб-панель:
https://owen.ru/product/vp110
Если вы используете панельный контроллер СПК (https://owen.ru/product/spk210) - она будет отображена на его экране.
"Загрузить" визуализацию CODESYS в панель оператора СП3хх не получится, если суть вопроса в этом.
3) Сетевые настройки контроллера (если речь о них) задаются через веб-конфигуратор:
https://owen.ru/media/video/plk210_vozmoznosti_web
Если вопрос в том, как задать какие-то специфические настройки - уточните, какие именно вас интересуют.
Для записи используется функция 0x10 (Write Multiple Registers).
Надо присвоить значения переменных, привязанных к каналам газоанализатора, в переменные, привязанные к каналам МСД.
Спасибо большое.
Вот получается привязал переменную концентрации с газоанализатора 87707 в созданный канал мсд200 87708 87709 , а в самом мсд200 вот так получается нужно ? 87710 а то именно в самом мсд200 не понятно откуда мы берем Адрес? или он не нужен тут?
kondor3000
27.01.2026, 09:25
Спасибо большое.
Вот получается привязал переменную концентрации с газоанализатора 87707 в созданный канал мсд200 87708 87709 , а в самом мсд200 вот так получается нужно ? 87710 а то именно в самом мсд200 не понятно откуда мы берем Адрес? или он не нужен тут?
У вас сдвиг в ПЛК 16#0000, это адрес 0, вот его и надо поставить в МСД.
И ещё, у вас переменная точно целочисленная? Может всё таки Float, тогда 2 регистра надо, длина 2.
И ещё запись обычно по биту происходит, а не циклически.
Евгений Кислов
27.01.2026, 09:46
а то именно в самом мсд200 не понятно откуда мы берем Адрес? или он не нужен тут?
Нужен. Как именно он рассчитывается или задается - лучше уточнить у support@owen.ru
У вас сдвиг в ПЛК 16#0000, это адрес 0, вот его и надо поставить в МСД.
И ещё, у вас переменная точно целочисленная? Может всё таки Float, тогда 2 регистра надо, длина 2.
И ещё запись обычно по биту происходит, а не циклически.
А как быть если все 10 газиков у меня имеют адреса модбас от 1 до 10 , но сдвиг у всех 16#0000
С газиков у меня DWORD 87711 проходит через конвертер и на выходе получаем REAL (KP2_1_Value)
Не совсем понял по биту? объясните пожалуйста подробнее
kondor3000
27.01.2026, 09:53
А как быть если все 10 газиков у меня имеют адреса модбас от 1 до 10 , но сдвиг у всех 16#0000
С газиков у меня DWORD 87711 проходит через конвертер и на выходе получаем REAL (KP2_1_Value)
Не совсем понял по биту? объясните пожалуйста подробнее
Это 10 разных переменных, которые вы можете положить последовательно для отправки в МСД с адресами 0, 2,4, 6, 8, 10 и т.д.
REAL это 2 регистра на каждую переменную, REAL надо разложить на 2 WORD и отправить в МСД (REAL_TO_2WORD )
Запись у вас стоит циклическая, если пройдёт, хорошо, если нет надо изменить на запись по биту. Бит может быть один, для записи всех 10 переменных.
AlexRezn
27.01.2026, 09:59
Добрый день.
1) Начните с этого: https://owen.ru/poleznye_materialy/khroniki_importozamecheniya_perehod_tiaportal_code sysv3_5
Спасибо! Отличная статья, специально для первоначального ориентирования.
Не понял абзац:
"А вот экземплярных DB как таковых в CODESYS нет – вместо этого одновременно с FB создается его структура данных, включающая в себя входы, выходы, локальные переменные, константы и так далее. При объявлении экземпляра ФБ автоматически выделяется память под хранение данных этого экземпляра."
Смысл экземплярных DB в обработке одним алгоритмом нескольких наборов данных одной структуры.
Из цитаты следует, что для каждого экземпляра набора данных мне надо заводить ещё один FB? Наверняка же нет?
Евгений Кислов
27.01.2026, 10:17
Спасибо! Отличная статья, специально для первоначального ориентирования.
Не понял абзац:
"А вот экземплярных DB как таковых в CODESYS нет – вместо этого одновременно с FB создается его структура данных, включающая в себя входы, выходы, локальные переменные, константы и так далее. При объявлении экземпляра ФБ автоматически выделяется память под хранение данных этого экземпляра."
Смысл экземплярных DB в обработке одним алгоритмом нескольких наборов данных одной структуры.
Из цитаты следует, что для каждого экземпляра набора данных мне надо заводить ещё один FB? Наверняка же нет?
Если этот алгоритм не подразумевает необходимости хранения состояния каких-то промежуточных переменных на протяжении нескольких циклов ПЛК - то вы можете написать функцию, на вход которой будет передаться экземпляр конкретной структуры. Если нужно сохранение состояния (например, в алгоритме используются задержки на таймерах) - то да, потребуется набор экземпляров ФБ, чтобы обеспечить каждому из них независимость и сохраняемость внутренних данных.
kondor3000, Евгений Кислов
Спасибо все получилось
Добрый день коллеги! Может кто-нибудь подсказать, может сталкивались с такой задачей. Есть датчик импульса тока,который буквально на короткий промежуток времени делает короткий импульс и опять даёт 0. Так вот,как можно зафиксировать максимальное значение этого датчика? ну сути самый пик на графике.
Евгений Кислов
28.01.2026, 12:53
Добрый день коллеги! Может кто-нибудь подсказать, может сталкивались с такой задачей. Есть датчик импульса тока,который буквально на короткий промежуток времени делает короткий импульс и опять даёт 0. Так вот,как можно зафиксировать максимальное значение этого датчика? ну сути самый пик на графике.
Добрый день.
В библиотеке Util есть ФБ STATISTICS_INT и STATISTICS_REAL.
Добрый день.
В библиотеке Util есть ФБ STATISTICS_INT и STATISTICS_REAL.
Благодарю за подсказку
Добрый день!
Можете объяснить феномен?
При параллельно включенном бите, функциональный блок перестает работать.
Понимаю что можно написать в 2 строки, но все таки...
Значения обведенные красным можно менять как угодно, включая битовый вход RUN
Проект приложен
87784
https://disk.yandex.ru/d/HP6QA9_ug_ty4A
МихаилГл
30.01.2026, 13:53
Добрый день!
Можете объяснить феномен?
При параллельно включенном бите, функциональный блок перестает работать.
Понимаю что можно написать в 2 строки, но все таки...
Значения обведенные красным можно менять как угодно, включая битовый вход RUN
Проект приложен
87784
https://disk.yandex.ru/d/HP6QA9_ug_ty4A
А если поставить блок "или"? А то как то неправильно входа и выхода объединять. Я такое только в рслоджике себе позволял, так как язык LD в нём позволяет это делать.
А то как то неправильно входа и выхода объединять.
В языке программирования LD (Ladder Diagram) не нужно явно ставить оператор OR в месте соединения параллельных контактов — потому что параллельное соединение контактов по определению реализует логическую операцию «ИЛИ» (OR). Это фундаментальное правило синтаксиса и семантики LD
PS а здесь ситуация описана в доках https://content.helpme-codesys.com/en/CODESYS%20LD%20FBD/_cds_ld_element_closed_branch.html
МихаилГл
30.01.2026, 16:28
В языке программирования LD (Ladder Diagram) не нужно явно ставить оператор OR в месте соединения параллельных контактов — потому что параллельное соединение контактов по определению реализует логическую операцию «ИЛИ» (OR). Это фундаментальное правило синтаксиса и семантики LD
PS а здесь ситуация описана в доках https://content.helpme-codesys.com/en/CODESYS%20LD%20FBD/_cds_ld_element_closed_branch.html
Не спорю. Просто в ld что на кодсис, что в сименс, например, нельзя даже нарисовать так: контакт, выходной элемент, контакт, выходной элемент. В послед. А у ФБ это вполне себе я бы сказал выход.
А в роквелле рисуй как хочешь, и параллельные ветви ставь куда захочешь. Я просто предположил. Сам проверю, но это будет не скоро.
И по ссылке... Ну нет у меня впн. Висит страничка в темноте...
PS
Ну да, игнорится:
Замыкание ответвления на участке, оценка ИЛИ оценка короткого замыкания.
Новое: При выборе поля и выполнении команды «Вставить параллельный контакт» вставляется параллельная ветвь с одной вертикальной линией. Это указывает на реализацию оценки короткого замыкания («SCE»). SCE позволяет пропустить выполнение функционального блока с логическим выходом при выполнении определенного условия TRUE. Условие может отображаться в редакторе LD как ветвь, соединенная параллельно ветви функционального блока. Условие короткого замыкания определяется одним или несколькими контактами в этой ветви, которые соединены параллельно или последовательно.
Функциональность
Ветви, не содержащие функциональный блок, обрабатываются первыми. Если CODESYS обнаруживает значение TRUEдля одной из таких линий ветвления, то функциональный блок не вызывается в параллельной ветви. В этом случае значение на входе функционального блока отправляется непосредственно на выход. Если CODESYS определяет FALSEусловие SCE, то вызывается блок, и логический результат его обработки передается дальше. Если все ветви содержат функциональные блоки, то они анализируются сверху вниз, и их выходы подвергаются логическому ИЛИ. Если ветвей с функциональными блоками нет, то выполняются обычные операции ИЛИ.
..
Функциональность
Ветви, не содержащие функциональный блок, обрабатываются первыми. Если CODESYS обнаруживает значение TRUEдля одной из таких линий ветвления, то функциональный блок не вызывается в параллельной ветви. В этом случае значение на входе функционального блока отправляется непосредственно на выход. Если CODESYS определяет FALSEусловие SCE, то вызывается блок, и логический результат его обработки передается дальше. Если все ветви содержат функциональные блоки, то они анализируются сверху вниз, и их выходы подвергаются логическому ИЛИ. Если ветвей с функциональными блоками нет, то выполняются обычные операции ИЛИ.
Это в КДС3 так?
МихаилГл
30.01.2026, 19:32
Это в КДС3 так?
Это в ссылке capzap так написано...
PS Ну в 2.3 видимо ещё не так было. А тут увеличили похоже скорость расчетов, исключив из них "ненужные" по мнению разрабов элементы. Хорошо что я такого не использую, никогда бы не догадался...
PS Ну в 2.3 видимо ещё не так было. А тут увеличили похоже скорость расчетов, исключив из них "ненужные" по мнению разрабов элементы. Хорошо что я такого не использую, никогда бы не догадался...
Видимо в КДС3/LD добавили выбор полного/неполного вычисления логических выражений (отлично)
Ну и при неполном какой-то приоритет операндов для контакт/фб (так себе)
Holod_1812
05.02.2026, 16:47
Здравствуйте, знаю что тема такая уже имела место быть на этом форуме и как то не понятно она решилась. В общем - при установке Codesys 3.5 происходит "зависание" установки при статусе "Install all Packages added to the setup". Уже раз 8-мь или больше переустанавливаю, все перепробовал. До этого три раза на другие компы ставил и все было хорошо. А на работе корпоративный ноут дали, так с ним такая баня. Может есть у кого идеи еще кроме чистить регистры и ставить пока ни поставиться. Это же из-за чего-то происходит.
87895
kondor3000
05.02.2026, 17:21
Здравствуйте, знаю что тема такая уже имела место быть на этом форуме и как то не понятно она решилась. В общем - при установке Codesys 3.5 происходит "зависание" установки при статусе "Install all Packages added to the setup". Уже раз 8-мь или больше переустанавливаю, все перепробовал. До этого три раза на другие компы ставил и все было хорошо. А на работе корпоративный ноут дали, так с ним такая баня. Может есть у кого идеи еще кроме чистить регистры и ставить пока ни поставиться. Это же из-за чего-то происходит.
Тут видео как правильно уставливать Codesys 3.5_17.3 https://oscat.ru/wp-content/Video/CodesysOneLove/MainPlaylist/082_SP17_HowToInstall.mp4
Но у вас проблемы с ноутом похоже (работа не от админа, мешают антивирус или вебзащита), разбирайтесь.
МихаилГл
05.02.2026, 19:49
Здравствуйте, знаю что тема такая уже имела место быть на этом форуме и как то не понятно она решилась. В общем - при установке Codesys 3.5 происходит "зависание" установки при статусе "Install all Packages added to the setup". Уже раз 8-мь или больше переустанавливаю, все перепробовал. До этого три раза на другие компы ставил и все было хорошо. А на работе корпоративный ноут дали, так с ним такая баня. Может есть у кого идеи еще кроме чистить регистры и ставить пока ни поставиться. Это же из-за чего-то происходит.
87895
Вроде на 11 винде у меня так же. Прогресс стоит на месте, а папка в программ файлсах растет в объеме. В итоге установилось.
Вы установку прерывали?
На время установки отключайте интернет с компа. Установщик лезет в свое облако за обновлениями, а настоящее время с этим проблемы по известным причинам. После установки, не включая интернет, запустить программу, и отключить весь функционал, касаемо связи со своим облаком.
МихаилГл
05.02.2026, 20:13
На время установки отключайте интернет с компа. Установщик лезет в свое облако за обновлениями, а настоящее время с этим проблемы по известным причинам. После установки, не включая интернет, запустить программу, и отключить весь функционал, касаемо связи со своим облаком.
Не знаю как у ТС, а у меня это был вообще ПК без сети.
Holod_1812
05.02.2026, 20:21
Да,верно, прерывал установку, терпения не хватило... Завтра попробую без сети поставить, надеюсь за рабочий день установится.
МихаилГл
05.02.2026, 20:25
Да,верно, прерывал установку, терпения не хватило... Завтра попробую без сети поставить, надеюсь за рабочий день установится.
Там минут 15..20 это дело идёт. Главное проверьте что папка растёт в размере. Значит ставится. Я сразу туда полез смотреть, и решил подождать окончания без прогресс бара.
krollcbas
05.02.2026, 22:10
Да,верно, прерывал установку, терпения не хватило... Завтра попробую без сети поставить, надеюсь за рабочий день установится.
На слабых компах и по часу висит на этом моменте. Кто сбрасывает загрузку вредит себе и реестру, нужно ждать, развивать выносливость и терпение.
МихаилГл
05.02.2026, 22:19
На слабых компах и по часу висит на этом моменте. Кто сбрасывает загрузку вредит себе и реестру, нужно ждать, развивать выносливость и терпение.
Можно сходить и поесть в столовой, наконец!
Holod_1812
06.02.2026, 14:52
С горем пополам - установился, но обратно - не с первого раза. И старая версия codesys, которую год назад качал - ни пошла. Скачал заново, точно такая же версия, но весит на Гб меньше почему-то. С отключенным инетом - установился, но ни запустился, какие-то ошибки при запуске повылезали, отчет попросился отправить, но что ни так - ни сказал. Все-таки нужен видать инет (на видео об этом тоже говорят). С инетом тоже долго устанавливался, больше часа, но установился и благополучно запустился проект. Папка действительно "росла" при установке, но изменения проявлялись раз в мин 15. Благодарю за помощь коллеги. :o
yaroslavcik
12.02.2026, 16:18
Здравствуйте,
Столкнулся с такой проблемой:
88065
С панели нажимаю битовую кнопку, в контроллер добавлена программа, где выполняется условие -если бит нажат, то идет присвоение числа, но по какой то причине этого нет, при чем присваивается тегу test1, который расположен внутри программы и ни куда больше не привязан. Куда глянуть, на что обратить внимание?
п.с. как будто программа вообще не работает, но она добавлена в менеджер задач, ив ней еще крутится пару методов
88066
Евгений Кислов
12.02.2026, 16:29
Добрый день.
Выложите, пожалуйста, простейший проект, в котором эта проблема будет повторяться.
Все остальные программы из него желательно удалить.
Потому что в эту переменную еще где-то пишется значение. Или вообще программа туда не доходит.
yaroslavcik
12.02.2026, 16:42
Потому что в эту переменную еще где-то пишется значение. Или вообще программа туда не доходит.
88067
тоже так думал, поставил счетчик, он работает
МихаилГл
12.02.2026, 17:04
88067
тоже так думал, поставил счетчик, он работает
Вы не проверили то, что вам сказали. Где то ниже или далее по программе эта переменная обнуляется. Вы в менеджере видите последнее значение переменной, а не то, которое мечтаете увидеть.
Для проверки воткните ниже строчку, где присвойте новой переменной эту переменную, не ту, что присваиваете, а ту, которой присваиваете...
yaroslavcik
12.02.2026, 17:11
88068
вот так, если я правильно понял. Присвоение идет, видимо проблема в самих кнопках.
п.с но, что то ее определенно стирает, т.к. если просто назначить переменной GVL.MAP[2].DATA.CTRL любое значение и нажать ctrl+f7 переменная обнуляется, хотя запись в нее только в этой программе
МихаилГл
12.02.2026, 17:15
88068
вот так, если я правильно понял. Присвоение идет, видимо проблема в самих кнопках
Между иф и зен, где вы считаете что не присваивается, вставьте новую переменную, и присвойте ей то же значение...
PS Межде зен и эндиф
yaroslavcik
12.02.2026, 17:27
Между иф и зен, где вы считаете что не присваивается, вставьте новую переменную, и присвойте ей то же значение...
PS Межде зен и эндиф
Да, теперь понял
88069
еще я закомментировал, метод, который обращается к структуре MAP[2].DATA и все начало работать!!!! только теперь вопрос по методу
В нем я не как не использую GVL.MAP[2].DATA.CTRL, как это влияет на дальнейшую работу
МихаилГл
12.02.2026, 17:33
Тут не знаю, с поросёнком Фунтиком я не знаком... DATA уже включает в себя всё, что после точки, метод возможно присваивает нулевые значения при входе. Но это догадки. С этим механизмом не работаю
Емельянов Кирилл
13.02.2026, 01:39
Вам же уже написали, выложите проект. Проблема в вашем коде, и по скриншотам она никак не детектируется.
Евгений Кислов
13.02.2026, 07:02
DATA уже включает в себя всё, что после точки, метод возможно присваивает нулевые значения при входе
Это верное суждение.
Метод возвращает структуру ST_MAP_DATA. В коде метода полям ST_MAP_DATA.RUN и ST_MAP_DATA.STOP не присваивается никаких значений.
Соответственно, они остаются в значениях по умолчанию - в FALSE.
При вызове метода эта структура попадает в GVL.MAP[i].DATA, и в этот момент GVL.MAP[i].DATA.RUN и GVL.MAP[i].DATA.STOP получают значение FALSE.
Поэтому их проверка в IF, расположенная в следующих строках кода, является бессмысленной - условие никогда не выполнится.
Здравствуйте.
Вопрос касается CODESYS, СПК110 и МВ110-*.8АС, и он сам по себе короткий: "как средствами СПК изменить настройки Ain.L и Ain.H в МВ110-*.8АС?". И документация на модуль, и настройки устройства MV110-8AS в Codesys мне явным образом говорят "никак", но в то же время я вижу 2 факта: (1) конфигуратор М110 умеет менять эти параметры посредством отправки какой-то инструкции по RS-485, (2) СПК110 также умеет отправлять любые инструкции по любым адресам по RS-485, значит, видимо, принципиально это возможно.
Длинная часть -- описание, зачем мне это нужно:
У заказчика стоит мой стенд гидроиспытаний, среди прочего имеющий датчик давления 4..20мА (далее "мой датчик") и модуль МВ110-*.8АС. Также имеется контрольный датчик 4..20мА, подключенный к системе заказчика, данные с которого я получаю в свою систему по Ethernet. Оба датчика поверены, трогать их нельзя, они должны показывать одинаковые значения, но в силу разных причин могут показывать разные значения, причём корректность поверки -- не моя зона ответственности. Данные контрольного датчика считаются истиной. Мне нужно чтобы оператор стенда, без необходимости повышения квалификации, в рамках периодического обслуживания стенда или при обнаружении существенных расхождений, нажал кнопку "калибровать датчик", после чего стенд воспроизводит 10 давлений во всём диапазоне датчика, находит по ним уклон/смещение, проверяет линейность и корректирует Ain.L и Ain.H.
Вариант корректировать показания в программе контроллера мне критически не нравится в силу ряда причин. Я хочу использовать одну величину, а вместо этого для обеспечения полной надёжности у меня образуется куча мусора: переменная с неверным сигналом, переменная с верным сигналом, две переменные с уклоном и смещением, ещё две переменные с уклоном и смещением в энергонезависимой памяти, строки кода для пересчёта давления на каждом цикле, файл в flash-памяти контроллера с уклоном и смещением чтобы не вводить их заново каждый раз когда загружаю обновление, а значит переменная с дескриптором файла, переменная для результатов записи/чтения, переменная с количеством байт записи, строки кода в первом цикле контроллера с открытием, записью, чтением, преобразованием типов, закрытием, проверкой удалился ли дескриптор, и бог знает что ещё. Иначе я каждый раз с загрузкой обновления выписываю данные на листочек, и заношу из листочка обратно в настройки, это неудобно, а иногда и вовсе забывается и надо калибровать заново. Также мне не нравится что я не купирую враньё на подступе, то есть пропускаю его через МВ110, и уже в ПО прямым текстом с первых строк программы пишу "датчик мне врёт, поэтому вот я 100 раз в секунду вру на столько же в обратную сторону". Вместо этого после процесса калибровки я хочу записать в журнал событий, что, оказывается, мой датчик не от 0 до 2500 бар, а от -47 до 2484, и вносить эти изменения непосредственно в МВ110, не пропуская враньё в зону своей ответственности вообще.
Вариант подключаться к модулю конфигуратором тоже неприемлем: оператор, в чьи обязанности не входит вооще никакая настройка, вместо инструкции "нажмите кнопку Тарировать и не трогайте стенд 10 минут" получает инструкцию "откройте шкаф, отсоедините от контактов RS-485 контроллер, подсоедините модуль АС-4, подключите к ноутбуку, найдите программу конфигуратор М110" и пр.
Как я понимаю "широкими мазками", я должен в дереве проекта в тот же ком-порт где у меня висит преднастроенный слейв MV110_8AS, добавить ещё один слейв с тем же адресом, и на период перезаписи значений каким-то образом отключить MV110_8AS, включить второй слейв, отправить по какому-то секретному адресу команду записи новых Ain.L и Ain.H, проверить что они записались, выключить второй слейв и снова включить MV110_8AS. Но детали и возможные подводные камни мне не известны..
На всякий случай, предвижу вопрос, почему бы мне не пользоваться в ПО данными контрольного датчика, раз они у меня есть: у системы на контрольном датчике очень большой период опроса, а, например, в циклических испытаниях исключительно важна практически мгновенная реакция, иначе работа всей программы очень сильно замедлится. Плюс я не хочу чтобы моя программа опиралась на данные устройства, к приобретению и установке которого я не имею никакого отношения.
Николай Суриков
18.02.2026, 16:27
МВ110 конфигурируются по протоколу OWEN, так что через конфигуратор СПК менять настройки модуля не получится.
[QUOTE=Dmnd;479996]Здравствуйте.
Вопрос касается CODESYS, СПК110 и МВ110-*.8АС, и он сам по себе короткий: "как средствами СПК изменить настройки Ain.L и Ain.H в МВ110-*.8АС?". И документация на модуль, и настройки устройства MV110-8AS в Codesys мне явным образом говорят "никак"...
Не знаю, что за документация у вас, но в руководстве на модуль (https://docs.owen.ru/product/moduli_analogovogo_vvoda_s_bistrimi_vhodami_s_inte rfejsom_rs_485/459/59229#topic-59229) написано, что адреса с 0x58 по 0x77 отведены именно под эти значения.
МВ110 конфигурируются по протоколу OWEN, так что через конфигуратор СПК менять настройки модуля не получится.
По моему, очевидно, некомпетентному разумению, в модуле есть какой-то конкретный регистр, с каким-то конкретным адресом, содержащий нужные для корректировки величины, и он принципиально доступен для чтения-записи. Точно ли мне для того, чтобы до этого регистра добраться, нужен именно протокол OWEN? И если это бесспорно так, точно ли у меня никак не получится настроить обмен контроллера с модулем по этому протоколу, любыми мыслимыми окольными путями, пусть с посредником в виде АС-4 и ПК, главное чтобы без участия оператора?
Просто если допустить, что путь автоматизации может быть сколь угодно уродлив, то задача принципиально решаемая, но хотелось бы чтобы причастные при виде решения не хватались за голову..
Upd. Нашёл руководство по протоколу OWEN в Codesys. Похоже, это путь к решению. Действительно, в документации на модуль я упёрся в фразу "Значения <конфигурационных> параметров следует задавать с помощью программы
«Конфигуратор М110»" и решил что это принципиальное ограничение разработчика..
Евгений Кислов
18.02.2026, 17:05
и на период перезаписи значений каким-то образом отключить MV110_8AS
Это не обязательно.
отправить по какому-то секретному адресу команду записи новых Ain.L и Ain.H
Они не секретные и, как написали выше, указаны в РЭ.
См. стр. 38:
https://owen.ru/downloads/re_mv110-8as.pdf
После их записи нужно сделать запись регистра INIT для применения настроек и сохранения их в энергонезависимой памяти модуля.
См. стр. 39 в том же документе.
Николай Суриков
18.02.2026, 17:06
По моему, очевидно, некомпетентному разумению, в модуле есть какой-то конкретный регистр, с каким-то конкретным адресом, содержащий нужные для корректировки величины, и он принципиально доступен для чтения-записи. Точно ли мне для того, чтобы до этого регистра добраться, нужен именно протокол OWEN? И если это бесспорно так, точно ли у меня никак не получится настроить обмен контроллера с модулем по этому протоколу, любыми мыслимыми окольными путями, пусть с посредником в виде АС-4 и ПК, главное чтобы без участия оператора?
Просто если допустить, что путь автоматизации может быть сколь угодно уродлив, то задача принципиально решаемая, но хотелось бы чтобы причастные при виде решения не хватались за голову..
Реализация настроек на протоколе owen займет больше времени и ресурсов чем если вы весь свой алгоритм "калибровки" реализуете в программе.
Евгений Кислов
18.02.2026, 17:09
Простите за неточность.
А модуль с какой версией прошивки? H/W 2.0? Тогда там Modbus.
Если нет, то реализация настроек на протоколе owen займет больше времени и ресурсов чем если вы весь свой алгоритм "калибровки" реализуете в программе.
У модулей МВ110-8АС и МВ110-2АС не было обновления на аппаратную ревизию H/W 2.0.
Поддержка изменения конф. параметров по Modbus была в них всегда.
Всем спасибо! Домыслил себе ограничения сам, потратил кучу времени на описание задачи, а всё сравнительно просто >_<
p.s. не считаю открытие доступа к редактированию конфигурационных параметров модулей зря потраченными ресурсами, тем более что этот участок кода будет срабатывать условно раз в пол-года, в то время как пересчёт показаний датчика в программе будет производиться либо 100 раз в секунду, либо по обновлению циклического времени. Тем более что в обозримой перспективе датчиков будет 3 на разные диапазоны, и все лишние переменные превратятся в лишние массивы, с теми же проблемами хранения. Есть какое-то ощущение неправильности от такого пересчёта.
Всем спасибо! Домыслил себе ограничения сам, потратил кучу времени на описание задачи, а всё сравнительно просто >_<
p.s. не считаю открытие доступа к редактированию конфигурационных параметров модулей зря потраченными ресурсами, тем более что этот участок кода будет срабатывать условно раз в пол-года, в то время как пересчёт показаний датчика в программе будет производиться либо 100 раз в секунду, либо по обновлению циклического времени. Тем более что в обозримой перспективе датчиков будет 3 на разные диапазоны, и все лишние переменные превратятся в лишние массивы, с теми же проблемами хранения. Есть какое-то ощущение неправильности от такого пересчёта.
Вам конечно виднее, но если вопрос правильности показаний стоит так остро, что используются контрольный датчик, то использование коэффициентов наклона и смещения выглядит несколько странно. Ну ладно смещение, но наклон?
Я бы оставил сигнал с модуля в диапазоне 4..20 и пересчитывал его в ФЕ в программе, добавив только корректировку смещения значения.
А если в 10 значениях внутри диапазона погрешность получается разная и нелинейная - тогда что делать?
Paha1977
19.02.2026, 15:11
Добрый день
Не могу запустить ни эмуляцию, ни подключиться к виртуальному контроллеру.
Запрашивает какое-то имя и пароль. Что можете посоветовать?
88180
kondor3000
19.02.2026, 15:46
Добрый день
Не могу запустить ни эмуляцию, ни подключиться к виртуальному контроллеру.
Запрашивает какое-то имя и пароль. Что можете посоветовать?
Читать FAQ https://owen.ru/forum/showthread.php?t=28167&p=401060&viewfull=1#post401060
Виртуальный контроллер поддерживает только 32 битную версию, у вас WIN V3 х64
Вам конечно виднее, но если вопрос правильности показаний стоит так остро, что используются контрольный датчик, то использование коэффициентов наклона и смещения выглядит несколько странно. Ну ладно смещение, но наклон?
Я бы оставил сигнал с модуля в диапазоне 4..20 и пересчитывал его в ФЕ в программе, добавив только корректировку смещения значения.
А если в 10 значениях внутри диапазона погрешность получается разная и нелинейная - тогда что делать?
Честно говоря, природа накопления погрешности датчиков мне не известна, но я предполагаю что она в первом приближении эквивалентна случайному смещению регулировочных винтов в самом датчике. При такой погрешности, во всяком случае, датчик остаётся функциональным, т.е. работает как должен работать при произвольном повороте винтов. А почему он не откалиброван физически уже причин может быть куча -- попросили ли они поверителей просто бумажку по почте прислать, соответствует ли межповерочный интервал условиям работы, задели пречом, уронили, случайно провибрировали, пока мы можем установить линейную зависимость между током и давлением -- считаем что всё ок. Плюс у заказчика заказчика хотелки идеально ровных линий бар в бар на графиках, а у поверителей задача убедиться что датчик на 2500 врёт не более чем на 12.5 бар. Плюс не известно, какой именно из датчиков врёт больше. Как обычно, вопрос правильности показаний стоит не так остро, как желание метролога следовать букве своих должностных инструкций.
Если линейной зависимости между давлениями установить не удаётся, то датчик уже с чистой совестью можно признавать не функциональным и выбрасывать, а стенд блокировать до появления нового датчика. Заморочиться с кусочно-линейной функцией можно, но уже стрёмно. Если помимо линейности явно нефункциональный датчик в произвольный момент времени потеряет повторяемость, это может уже нанести вред испытываемым изделиям.
Добрый день
Не могу запустить ни эмуляцию, ни подключиться к виртуальному контроллеру.
Запрашивает какое-то имя и пароль. Что можете посоветовать?
88180
Логин: Admin Пароль: Admin
Вопрос: в КДС 2.3 была функция "Поиск неиспользуемых переменных", в КДС 3.5 что-то не могу найти.
МихаилГл
20.02.2026, 15:20
Вопрос: в КДС 2.3 была функция "Поиск неиспользуемых переменных", в КДС 3.5 что-то не могу найти.
Есть такая штука. Где то в опциях надо выставить. Не помню по памяти, помню визуально, но нет ПК под рукой.
Евгений Кислов
20.02.2026, 15:25
Вопрос: в КДС 2.3 была функция "Поиск неиспользуемых переменных", в КДС 3.5 что-то не могу найти.
http://www.owen.ru/forum/showthread.php?t=28167&p=270461&viewfull=1#post270461
Подскажите пж, OwenRTC в СПК110, переменная stRtc.ltSystemTick (системный таймер ПЛК), при условии что контроллер не выключается никогда, будет вечно расти до предела LTIME, или при каком-то значении обнулится?
Емельянов Кирилл
24.02.2026, 03:06
Ваш ПЛК не доживёт до того момента, когда она обнулится
МихаилГл
24.02.2026, 08:46
Ваш ПЛК не доживёт до того момента, когда она обнулится
Точно?
Переменная типа LTIME (Long Time) в ПЛК ОВЕН (на базе CODESYS V3) работает с точностью до наносекунд (
с) и способна хранить длительность до 213 дней (
наносекунд, или
нс). Это 64-битовый знаковый тип данных, обеспечивающий очень высокий диапазон значений для длительных процессов.
ОВЕН
ОВЕН
Плохая реклама тогда, или у меня данные неправильные)
PS ИИ галюциногирует, сейчас выдал 584 года... Чему теперь верить...
Евгений Кислов
24.02.2026, 08:49
или у меня данные неправильные
Как обычно, в принципе...
88224
https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_datatype_time.html
МихаилГл
24.02.2026, 08:59
Как обычно, в принципе...
88224
https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_datatype_time.html
Виноват ИИ, и я, что повторно не проверил. На второй запрос он исправил свой ответ. Уже второй раз ловлю его на так называемых галлюцинациях.
Но для ТС надо было немного по другому отвечать, не то, что контроллер не доживёт, а: надеюсь вы не будете использовать этот плк так долго и когда нибудь, лет через 10...15 всё же замените на более современный для грядущего будущего, так как технологии не будут стоять на месте!
Вопрос был немного в другом: есть ли ИНЫЕ причины для обнуления системного таймера, кроме перезагрузки и, бог бы с ним, истечения 584 лет. Если они есть, все мои таймеры имеют риск в любой момент сработать раньше чем должны, и надо с этим бороться. В противном случае ограничусь заметкой в руководстве что контроллер желательно перезагружать не реже чем раз в 500 лет. В рамках ежеполутысячелетнего обслуживания.
Везде где смог проверить, системный таймер сильно меньше чем время эксплуатации. Скорее всего, из-за отключения питания, но вдруг нет, отсюда и возник вопрос.
Vadik2881
26.02.2026, 08:38
Привет всем. Расскажите как искать в такой большой теме? Поиск ссылается на неё, но не указывает конкретно нужное сообщение.
Стал осваивать codesys 3.5 и вопрос по визуализации:
1) Нужно нарисовать и анимировать элемент силос(танк), но с удивлением обнаружил что его нет в библиотеке. Максимум, что можно это в ручную заниматься художеством и потом вставить шкалу уровня и относительно двигать по Y переменной.
2) Элемент радиокнопка получается никак нельзя редактировать по цвету и формату? Или де5лать эту функции полностью в ручную?
3) СП210 пока нет, делаю на виртуальном контроллере. Не получается вывести значение переменной на экран. В программе она работает. Элемент прямоугольник, текстовая переменная. При запуске пусто.
Евгений Кислов
26.02.2026, 09:00
Добрый день.
Расскажите как искать в такой большой теме?
В целом, не подразумевается, что кому-то будет интересен поиск по подобным темам.
Но вы можете использовать сторонние поисковики - гугл, яндекс и т. д.
2) Элемент радиокнопка получается никак нельзя редактировать по цвету и формату? Или де5лать эту функции полностью в ручную?
Единственное, что можно сделать - заменить картинки, используемые элементом.
3) СП210 пока нет, делаю на виртуальном контроллере. Не получается вывести значение переменной на экран. В программе она работает. Элемент прямоугольник, текстовая переменная. При запуске пусто.
Выложите ваш проект.
Vadik2881
26.02.2026, 09:29
Выложите ваш проект.
Вот, переменная SILOS.
kondor3000
26.02.2026, 09:36
3) СП210 пока нет, делаю на виртуальном контроллере. Не получается вывести значение переменной на экран. В программе она работает. Элемент прямоугольник, текстовая переменная. При запуске пусто.
В графе текст надо написать %d для целого или %3.1f для REAL, в графе переменная указать нужную.
%s для любой переменной (REAL будет со всеми знаками)
По F1 можно посмотреть информацию о разных выводах.
Подскажите пожалуйста, в чем может быть проблема.
Имеется плк 210 к нему подключены на линию RS1 на скорости 19200, 20 устройств (3 штуки МУ110 , 2 штуки МВ110 , 6 штук газоанализаторов Ганк4 и 8 штук самодельных rs485 реле на основе ардуины нано) , а на второй линии RS2 на скорости 9600 подключены 10 штук газоанализаторов ДАТ-М и 1 штука МСД200.
И проблема в следующем, что вроде как все работает хорошо, но может пройти 7 часов , может 1 час , а может и меньше и линия RS1 отваливается (причем перезагрузка плк не помогает, только полная перезагрузка всего).
Я так понимаю зависает какое то устройство , возможно как раз ардуины и вешает всю линию?
88370
Евгений Кислов
04.03.2026, 09:19
Подскажите пожалуйста, в чем может быть проблема.
Это можно выяснить только опытным путем.
Например, в момент "отвала RS1" поочередно отключать slave-устройства от шины и проверять, не возобновится ли обмен после отключения очередного устройства.
DmitriiAnyushin
04.03.2026, 13:43
Добрый день!
В проекте использую СПК107 CodeSys 3.5 SP7.
Подскажите пожалуйста, каким образом в среде CodeSys 3.5 в переменную формата STRING можно записать значение $ в коде контроллера?
Хочу прописать путь для копирования архивов из памяти Codesys ('Archiver/') на флэшку ('$USB$/') на уровне контроллера (чтобы по умолчанию выставлялось такая комбинация и не надо было каждый раз вводить с экрана)?
С экрана визуализации СПК значение записывается как положено и при онлайн просмотре отображается ($USB$/').
Евгений Кислов
04.03.2026, 14:02
Добрый день!
В проекте использую СПК107 CodeSys 3.5 SP7.
Подскажите пожалуйста, каким образом в среде CodeSys 3.5 в переменную формата STRING можно записать значение $ в коде контроллера?
Хочу прописать путь для копирования архивов из памяти Codesys ('Archiver/') на флэшку ('$USB$/') на уровне контроллера (чтобы по умолчанию выставлялось такая комбинация и не надо было каждый раз вводить с экрана)?
С экрана визуализации СПК значение записывается как положено и при онлайн просмотре отображается ($USB$/').
Добрый день.
Надо удваивать - '$$USB$$/'
DmitriiAnyushin
04.03.2026, 15:32
Большое спасибо!
Вопрос по задачам(таскам) в КДС3.5
В проекте сделал две POU, затолкал их в высокоскоростную задачу с фиксированным циклом в нужной последовательности. Наблюдаю проблемы. Задача 1мс, приоритет 0. Интересует как распределяется время в таске - на обе задачи 1мс, или на каждую по 1мс? После объединения этих POU в одну проблем вроде как не наблюдал (завтра планирую плотненько протестировать). В проекте есть еще POU, но они в другом таске, с более низким приоритетом, и в свободном режиме.
Назаров Александр
05.03.2026, 10:43
Неожиданно возникло ИСКЛЮЧЕНИЕ!
88392
Что можно сказать по журналу, где искать?
Неожиданно возникло ИСКЛЮЧЕНИЕ!
88392
Что можно сказать по журналу, где искать?
https://ftp.owen.ru/CoDeSys3/98_Books/CodesysDebug.pdf
Смотрите раздел 4.3.
Евгений Кислов
05.03.2026, 12:22
Вопрос по задачам(таскам) в КДС3.5
В проекте сделал две POU, затолкал их в высокоскоростную задачу с фиксированным циклом в нужной последовательности. Наблюдаю проблемы. Задача 1мс, приоритет 0. Интересует как распределяется время в таске - на обе задачи 1мс, или на каждую по 1мс? После объединения этих POU в одну проблем вроде как не наблюдал (завтра планирую плотненько протестировать). В проекте есть еще POU, но они в другом таске, с более низким приоритетом, и в свободном режиме.
В вашем случае 1 мс - это период начала "очередной цепочки вызовов". В рамках этой цепочки сначала выполняется первая программа, затем вторая.
Евгений Кислов
То есть таки на каждую ПОУ по 1мс?
Евгений Кислов
05.03.2026, 13:10
Евгений Кислов
То есть таки на каждую ПОУ по 1мс?
Для меня ваша фраза звучит странно, но я не знаю, как вы ее для себя интерпретируете.
К сказанному выше мне нечего добавить.
Емельянов Кирилл
06.03.2026, 02:26
Евгений Кислов
То есть таки на каждую ПОУ по 1мс?
На каждую ПОУ придётся по столько по сколько нужно и зависит от сложности ПОУ. Вы же понимаете, что 1мс - это период вызова, а не длительность. Выложите скрин со статистикой менеджера задач (когда вы наблюдаете проблемы), что-то мне подсказывает, что там будет интересное.
Емельянов Кирилл
Работаю над проектом с SoftMotion, для удобства разбил высокоскоростные задачи на две. Первая - обработка и подготовка данных с абсолютного энкодера, вторая - собственно ФБ из библиотеки SM3_Basic. При таком раскладе, при работе железа имел сбой координат по подчиненным осям (энкодер - мастер) в хаотичном порядке. Выражалось это как стук в двигателе сервопривода. После объединения ПОУ в одну, проблема исчезла. Сегодня тестировал довольно продолжительное время, сбоев не зафиксировано. Сам алгоритм из ПОУ_1 был просто скопирован в ПОУ_2. В ПОУ_1 нет сложных вычислений, практически всё сделано на элементарной логике. Вот и появился вопрос.
Емельянов Кирилл
07.03.2026, 00:49
Емельянов Кирилл
Работаю над проектом с SoftMotion, для удобства разбил высокоскоростные задачи на две. Первая - обработка и подготовка данных с абсолютного энкодера, вторая - собственно ФБ из библиотеки SM3_Basic. При таком раскладе, при работе железа имел сбой координат по подчиненным осям (энкодер - мастер) в хаотичном порядке. Выражалось это как стук в двигателе сервопривода. После объединения ПОУ в одну, проблема исчезла. Сегодня тестировал довольно продолжительное время, сбоев не зафиксировано. Сам алгоритм из ПОУ_1 был просто скопирован в ПОУ_2. В ПОУ_1 нет сложных вычислений, практически всё сделано на элементарной логике. Вот и появился вопрос.
Рекомендовал бы начать с этого: Использование задач в CODESYS V3 (https://oscat.ru/wp-content/Docs/CODESYS/CodesysTaskManagment.pdf)
Здравствуйте! Как запаковать данные типа BOOL в WORD в Codesys 3.5 ? Распаковать у меня получилось при помощи блока MEM.UnpackWord из библиотеки MEM. А для запаковки сигнала ничего не нашел кроме блока PUCK - но он работает с переменными типа Byte.
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot