Просмотр полной версии : CODESYS V3.5. Вопросы и ответы
ГЛЮКОNIC
03.04.2024, 09:37
Это не так.
Если момент подачи питания переключатель будет в положении СТОП - то после загрузки контроллера пользовательское приложение не будет запущено.
а вот это интересно, понял, но остановить приложение переведя в стоп нельзя, хм, а стоп при старте может пригодится
kondor3000
03.04.2024, 10:48
а вот это интересно, понял, но остановить приложение переведя в стоп нельзя, хм, а стоп при старте может пригодится
Если вам нужно остановить работу куска кода, ФБ, это делается программно по IF......THEN, а не остановкой работы ПЛК.
ГЛЮКОNIC
03.04.2024, 11:05
Если вам нужно остановить работу куска кода, ФБ, это делается программно по IF......THEN, а не остановкой работы ПЛК.
нет, меня интересовало просто остановка логики на ходу всей сразу
МихаилГл
03.04.2024, 11:29
нет, меня интересовало просто остановка логики на ходу всей сразу
И что же мешает это сделать по if? Встанет сразу, всё кроме этого условия будет стоять колом)
а вот это интересно, понял, но остановить приложение переведя в стоп нельзя, хм, а стоп при старте может пригодится Это как в старых ПЛК110: состояние такого переключателя считывается при включении питания ПЛК (и ПЛК решает - запускать программу или нет). А когда программа уже запущена - это просто ещё один вход.
ГЛЮКОNIC
03.04.2024, 13:50
Не могу понять почему окна открываются очень низко, в настройках Менеджер визуализации выставил Y = 50 но на ВП110 открывается низко, а в настройках Логина и Пароля в отличии от самопальных диологов нет параметра открытия в определённых координатах, или я где-то не доглядел, но вроде пролез всё
ГЛЮКОNIC
03.04.2024, 13:52
Это как в старых ПЛК110: состояние такого переключателя считывается при включении питания ПЛК (и ПЛК решает - запускать программу или нет). А когда программа уже запущена - это просто ещё один вход.
у Сименса такой переключатель плк в режим стоп уводит, я надеялся что и в кодесис так реально сделать.
ГЛЮКОNIC
03.04.2024, 13:53
И что же мешает это сделать по if? Встанет сразу, всё кроме этого условия будет стоять колом)
а если If овер много
МихаилГл
03.04.2024, 14:17
а если If овер много
А зачем вам их много делать? Только один в основной управляющей программе...
edvard_munch
08.04.2024, 14:18
Update Device в дереве проекта перестало работать. Открывается, но сразу перекидывает на Append Device и остальные варианты кроме этого становятся неактивны.
См. видео
В чем может быть проблема? Ибо еще несколько дней назад все работало.
Попробовал на двух разных проектах.
Перезагружал программу и виндовс.
Правда делал экспорт проекта из старой версии. Возможно сделал что-то лишнее в плане замены глобальных параметров среды разработки.
https://youtu.be/_zXAd2n1Okw
Евгений Кислов
08.04.2024, 16:00
Попробуйте отключить автоскрытие для дерева проекта.
Если не поможет - напишите мне в телеграм (в подписи).
МихаилГл
08.04.2024, 16:10
Попробуйте отключить автоскрытие для дерева проекта.
Если не поможет - напишите мне в телеграм (в подписи).
Кстати да, авто скрытие является причиной многих проблем при вызове каких либо подменю из этого скрытого списка. Подтверждаю.
PS Складывается впечатление, что вызываемое подменю прикрепляется не к тому объекту.
МихаилГл
08.04.2024, 16:17
Попробуйте отключить автоскрытие для дерева проекта.
Если не поможет - напишите мне в телеграм (в подписи).
Евгений, форум откатили на резервную копию? Или восстановлен без потерь?
Евгений Кислов
08.04.2024, 16:31
Евгений, форум откатили на резервную копию? Или восстановлен без потерь?
Насколько я вижу - восстановлен без потерь.
olegik7711
08.04.2024, 23:45
Здравствуйте! Возник вопрос. Есть контроллер Овен ПЛК 160 v2 . Проект написан в CoDeSys v2. Есть компьютер , на компьютере лицензионная CoDeSys HMI v 3.5. Создан проект HMI v 3.5. Подскажите пожалуйста, как сделать чтобы контроллер связался с визуализацией. Чтобы я из визуализации мог управлять входа-выходами контроллера. То есть нужна связь HMI v3.5 + Овен ПЛК 160 V2 (проект в контроллере CoDeSys V2)? Заранее признателен.
Скорее всего нужно идти по классическому методу: в контроллере на CodeSys 2.3 делать Modbus Slave, а в CodeSys HMI - Modbus Master.
В общем, по аналогии с такими же задачами, когда к ПЛК подключают панели оператора: только тут вместо панели оператора будет CodeSys HMI.
kondor3000
09.04.2024, 09:43
Здравствуйте! Возник вопрос. Есть контроллер Овен ПЛК 160 v2 . Проект написан в CoDeSys v2. Есть компьютер , на компьютере лицензионная CoDeSys HMI v 3.5. Создан проект HMI v 3.5. Подскажите пожалуйста, как сделать чтобы контроллер связался с визуализацией. Чтобы я из визуализации мог управлять входа-выходами контроллера. То есть нужна связь HMI v3.5 + Овен ПЛК 160 V2 (проект в контроллере CoDeSys V2)? Заранее признателен.
Запускаете CoDeSys v 3.5 на виртуальном контроллере, выбираете порт, где стоит переходник USB-RS485, забиваете настройки и регистры в ПЛК 160 v2, как в CoDeSys v 3.5.
Можно работать как мастером, так и слейвом.
Связать можно даже 2 виртуальных контроллера.
edvard_munch
09.04.2024, 11:07
Попробуйте отключить автоскрытие для дерева проекта.
Если не поможет - напишите мне в телеграм (в подписи).
Да! Без автоскрытия получилось, спасибо.
olegik7711
09.04.2024, 18:54
Спасибо , добрые люди! Буду пробовать.
Khudyakoff
10.04.2024, 05:28
Здравствуйте. Пытаюсь подключить КТР121_02_20 к СПК 110.
Задаю переменные, задаю каналы modbus slave в соответствии с руководством к КТР 121
температура с типом real в соотнесении входов/ выходов считывается правильно75074 75071 75072 75073
с переменной типа bool (аварийная кнопка) тоже правильное отображение в соотнесении входов/выходов
75075 75076 75077 75078
Но с переменными типа WORD, например текущая уставка, отображение в соотнесении входов /выходов уже не совсем правильное
75081 75079 75080 75082
Так и переменная real - уставка ПИД Кп модулируемой горелки тоже вместо 2 отображается как 90
75083 7508475085 75086
Подскажите, пожалуйста, что я делаю не правильно.
Спасибо.
Евгений Кислов
10.04.2024, 07:27
Здравствуйте. Пытаюсь подключить КТР121_02_20 к СПК 110.
Задаю переменные, задаю каналы modbus slave в соответствии с руководством к КТР 121
температура с типом real в соотнесении входов/ выходов считывается правильно75074 75071 75072 75073
с переменной типа bool (аварийная кнопка) тоже правильное отображение в соотнесении входов/выходов
75075 75076 75077 75078
Но с переменными типа WORD, например текущая уставка, отображение в соотнесении входов /выходов уже не совсем правильное
75081 75079 75080 75082
Так и переменная real - уставка ПИД Кп модулируемой горелки тоже вместо 2 отображается как 90
75083 7508475085 75086
Подскажите, пожалуйста, что я делаю не правильно.
Спасибо.
Добрый день.
Вы уверены, что у вас именно КТР-121.02.20?
По описанию выглядит так, что у вас другая модификация прибора (у них есть отличия в картах регистров).
Если уверены - напишите мне в телеграм, пожалуйста (в подписи), и предоставьте доступ по AnyDesk.
Khudyakoff
10.04.2024, 08:44
Добрый день.
Вы уверены, что у вас именно КТР-121.02.20?
По описанию выглядит так, что у вас другая модификация прибора (у них есть отличия в картах регистров).
Если уверены - напишите мне в телеграм, пожалуйста (в подписи), и предоставьте доступ по AnyDesk.
Действительно, мною используется ранняя версия КТР121 у которой карта регистров не сходится с картой регистров в новом руководстве. решили проблему более старой версией руководства для КТР121_02_20.https://www.owen.ru/uploads/rie_ktr-121-02.20_2756.pdf
Спасибо Евгению.
Shinkaruk
11.04.2024, 10:34
Добрый день!
Подскажите пожалуйста в чем отличия создания Persistent Retain переменной через специальный объект "PersistentVars" и через "Список глобальных переменных"
Евгений Кислов
11.04.2024, 11:11
Добрый день!
Подскажите пожалуйста в чем отличия создания Persistent Retain переменной через специальный объект "PersistentVars" и через "Список глобальных переменных"
Добрый день.
В любом случае, потребуется использовать объект PersistentVars.
Если объявить область PERSISTENT в списке глобальных переменных - то нужно будет открыть PersistentVars и использовать команду Объявления - Добавить все пути экземпляров.
В результате PERSISTENT-переменные из списка глобальных переменных будут автоматически импортированы в PersistentVars.
75128
Shinkaruk
11.04.2024, 11:49
Добрый день.
В любом случае, потребуется использовать объект PersistentVars.
Если объявить область PERSISTENT в списке глобальных переменных - то нужно будет открыть PersistentVars и использовать команду Объявления - Добавить все пути экземпляров.
В результате PERSISTENT-переменные из списка глобальных переменных будут автоматически импортированы в PersistentVars.
75128
В таком случае будет использовано в 2 раза больше энергонезависимой памяти...
Пока не добавить этот объект и не импортировать в него все пути экземпляра, persistent работать не будет?
Дело в том что хотелось как то логически разгруппировать переменные (их много).
Про {region} в курсе, но удобства от него не намного больше чем без него... (значительно уступает реализации в TIA Portal)
Евгений Кислов
11.04.2024, 11:54
В таком случае будет использовано в 2 раза больше энергонезависимой памяти...
Не думаю.
Пока не добавить этот объект и не импортировать в него все пути экземпляра, persistent работать не будет?
Да.
Дело в том что хотелось как то логически разгруппировать переменные (их много).
Можете создать структуры, и в PersistentVars объявить их экземпляры.
Shinkaruk
11.04.2024, 12:03
Не думаю.
75134
75135
Евгений Кислов
11.04.2024, 12:24
75134
75135
Да, согласен - вы правы.
sco-scorpion
12.04.2024, 10:55
Евгений, Добрый день. По вашему видео реализую считывание и записывание рецепта и собственно, при нажатии запись, ничего не записывается, подскажите в чем может быть проблема?
Евгений Кислов
12.04.2024, 11:44
Евгений, Добрый день. По вашему видео реализую считывание и записывание рецепта и собственно, при нажатии запись, ничего не записывается, подскажите в чем может быть проблема?
Добрый день.
Свяжитесь, пожалуйста, со мной через телеграм (в подписи) и обеспечьте доступ по AnyDesk.
sco-scorpion
12.04.2024, 15:48
Добрый день.
Свяжитесь, пожалуйста, со мной через телеграм (в подписи) и обеспечьте доступ по AnyDesk.
Спасибо за помощь!
Добрый день.
Пишу код без подключения к ПЛК210. Периодически проверяю, было всё ОК.
Начал работать над визуализацией. Компилирую, загружаю эмуляцию - появляется ошибка: "Отсутствует исходный код ...". Нажимаю нет, появляется второе сообщение. Не знаю, куда смотреть.
Подскажите пожалуйста, в чём может быть проблема?
75192
Ошибка в вашей визуализации, которая приводит к исключениям в указанной библиотеке. Но поскольку у вас нет исходного кода этой библиотеки то вы и не видите где именно. Ищите ошибку в визуализации. Может переменную или индекс массива где-то не так указали.
Поудалял почти всё с визуализации.
Теперь ругается не на "behaviour", а на "owenstorage".
75194
А owenstorage будет работать только на контроллере.
Как в СПК107 (поправить) время или это в CODESYS 3.5 надо делать?
Crashroma2009
15.04.2024, 11:28
Здравствуйте! После манипуляций с кодесис инсталлером, перестал устанавливать пакеты, к примеру
"Package Installation Error: Не удалось подтвердить подпись для следующего пакета: C:\Users\user\Downloads\CODESYS Visualization 4.3.0.0.package Для следующего пакета подпись не соответствует подписи для принятого контекста установки: C:\Users\user\Downloads\CODESYS Visualization 4.3.0.0.package"
и не только с этим пакетом.
Манипуляции - была сделана копия кдс (чтоб ставить разные пакеты), нужно было под впн выйти, чтоб подгрузились файлы . Файлы подгрузились, но вот файл конфигурации подхватить не захотел, начал ругаться на подписи. Попробовал через восстановление. Repair удалил кдс. Поставил обратно кдс - (? кэш профиль) приложения остался старый, но вот теперь не могу пакеты установить. Инсталлер понизил до версии 2.0
Здравствуйте. Подскажите, как вы решили данную проблему?
Я пытаюсь установить GIT и после установки пакета вылетает такая же ошибка: Package Installation Error: Не удалось подтвердить подпись для следующего пакета.....
Евгений Кислов
15.04.2024, 11:39
Как в СПК107 (поправить) время или это в CODESYS 3.5 надо делать?
Добрый день.
Это можно сделать через экранный конфигуратор или веб-конфигуратор.
Евгений Кислов
15.04.2024, 11:40
Здравствуйте. Подскажите, как вы решили данную проблему?
Я пытаюсь установить GIT и после установки пакета вылетает такая же ошибка: Package Installation Error: Не удалось подтвердить подпись для следующего пакета.....
Добрый день.
https://owen.ru/forum/showthread.php?t=28167&p=430550&viewfull=1#post430550
А owenstorage будет работать только на контроллере.
Подключился к ПЛК. Опять ругается на "owenstorage".
Подключился к ПЛК. Опять ругается на "owenstorage".
Грешил на визуализацию. Не туда смотрел.
Что сделал: установил "POU неявныйх проверок". Программа заработала. Понял, что проблема в коде.
В одном из объявлении массивов нашёл ошибку: в переменных был размер [1..10], а в коде было присвоение элемента массива с номером [11].
Скорректировал, всё заработало.
Danila Kholkin
16.04.2024, 11:59
Добрый день, подскажете поддерживают ли плк овен резервирование , и сертифицированы они для применения на горелках .
Евгений Кислов
16.04.2024, 12:04
Добрый день, подскажете поддерживают ли плк овен резервирование , и сертифицированы они для применения на горелках .
Добрый день.
ПЛК ОВЕН с CODESYS V3.5 (обсуждаемые в данной теме) не поддерживают резервирование и не сертифицированы для применения на горелках.
olegik7711
16.04.2024, 18:20
Возникла следующая ситуация. Я создаю проект в CoDeSys 2.4 для виртуального контроллера sp PLCWinNT v 2.4, в CoDeSys 3.5 создаю проект HMI, в проекте HMI добавляю в качестве источника данных проект CoDeSys 2.4 . Запускаю оба проекта жму кнопки на HMI , значения переменных в проекте CoDeSys меняются, все работает. Соединение через TCP , localhost. На фото надеюсь видно , что нажата кнопка в CoDeSys HMI 3.5, переменная в CoDeSys 2.4 стала True
75222
75223
75224
Дальше, создаю проект для ПЛК 160 в CodeSys v2 , гружу его в ПЛК , соединение контроллера с компьютером через Ethernet, соединение с проектом HMI 3.5 через TCP IP level 2 (через Getway). На этапе создания источника данных все проходит нормально, переменные видны. При запуске HMI не соединяется с источником данных и онлайн ничего не меняется, то есть я жму кнопки в проекте HMI 3.5 а в проекте CoDeSys v2 ничего не меняется. Может я где-то галочку не поставил или чего-то не учел.
75225
75226
75227
Проект изначально был написан с визуализацией Codesys HMI 2.4, но сейчас компания Пролог заявляет, что HMI v 2 не пддерживается производителем и лицензия на нее не продается. На сайте сказано, что CoDeSys HMI v 3.5 работает с проектами v 2.3, но как коннектиться не показано. Пролог с этим вопросом, также не помог. Может кто-то делал такие проекты ОВЕН ПЛК 110, 154 , 160 с программой CoDeSys v 2.3 + визуализация CoDeSys HMI v3.5? Может какой-то target нужен? На виртуальном контроллере работает. Может кто-то знает, как лицензировать или крякнуть CoDeSys HMI v2 ? Нужно, чтобы нажимая кнопку в визуализации HMI v3, менялось значение переменной в программе CoDeSys v2.3 на контроллере Овен ПЛК 160 v2. А лучший вариант, если есть возможность лицензировать или крякнуть CoDeSys HMI v 2.3, раз он все равно не поддерживается производителем.
Заранее благодарен.
kondor3000
16.04.2024, 20:00
Дальше, создаю проект для ПЛК 160 в CodeSys v2 , гружу его в ПЛК , соединение контроллера с компьютером через Ethernet, соединение с проектом HMI 3.5 через TCP IP level 2 (через Getway). На этапе создания источника данных все проходит нормально, переменные видны. При запуске HMI не соединяется с источником данных и онлайн ничего не меняется, то есть я жму кнопки в проекте HMI 3.5 а в проекте CoDeSys v2 ничего не меняется. Может я где-то галочку не поставил или чего-то не учел.
Вы записали программу в живой ПЛК160, не понятно как вы подключаетесь к компу с виртуальным WIN 3.5 ?
Кто у вас мастер и кто слейв?
Если вы используете 127.0.0.1, как с виртуальным ПЛК, то работать не будет. Порт 1200 нужен для связи с ПЛК160, его трогать не надо.
Надо использовать IP живого ПЛК и порт 502, в слейве наставить нужных переменных, а мастером их читать, писать.
На компе и в 3.5 должны быть IP, маска и шлюз из той же подсети, как у ПЛК160. Либо в ПЛК160 сделать IP близкий, но отличный от компа последними цифрами.
Когда соединял живой ПЛК110_60 с виртуальным 3.5, кроме TCP, обычно использовал переходник USB-RS485, ставил номер COM порта переходника, тоже всё работает в любой конфигурации.
PetrAfonin
17.04.2024, 15:35
Добрый день. Ситуация.
На несколько миллисекунд отключаются все выходы модуля МУ210-401
В режиме Онлайн сами выхода остаются активными, но пропадают сигналы на битовых масках - выделено в прикрепленном файле.
Хотя в программе задание на выход стабильно активно.
PetrAfonin
17.04.2024, 15:52
Ещё вопрос по Codesys 3.5 - зачастую, чтобы посмотреть Онлайн, сделать Login, программа требует полной прогрузки с остановкой контроллера.
Что может быть.
PetrAfonin
17.04.2024, 15:58
Хочу добавить. В состоянии модуля Modbus TCP Slave статус - Работает. Ошибка исправлена.
МихаилГл
17.04.2024, 16:26
Ещё вопрос по Codesys 3.5 - зачастую, чтобы посмотреть Онлайн, сделать Login, программа требует полной прогрузки с остановкой контроллера.
Что может быть.
Надо залить загрузочное приложение и оффлайн лучше никаких компиляций приложения не делать.
И не удалять доп файлов, который среда делает. Если их удалять и открывать кодесисский проект без наличия этих файлов, то тоже самое происходит.
PetrAfonin
17.04.2024, 16:31
Спасибо.
Допфайлы я не удаляю, а вот компиляцию иногда делаю.
olegik7711
17.04.2024, 18:18
Раньше как было , вы пишите проект в CoDeSys v 2.3. Создаете визуализацию в проекте , привязываете переменные к кнопкам, напрямую , без мастеров и слейвов. Компилируем проект, загружаем в контроллер . Запускаем контроллер , запускаем приложение CoDeSys HMI (указав нужную нам визуализацию) и все работает, кнопки жмутся, выходы контроллера срабатывают при нажатии кнопки в CoDeSys HMI (это и сейчас работает , только 30 минут), лицензия на HMI v 2 не продается.
Теперь ситуация такая. Я не могу использовать CoDeSys HMI v2 по выше приведенным причинам. Теперь я должен использовать CoDeSys HMI V3. То есть , теперь у меня проект написанный в CoDeSys v 2.3 (потому что Овен ПЛК 160 не программируется в CoDeSys v3) и мне нужно создать визуализацию в CoDeSys v3 (это тоже не проблема) , проблема заключается в том, как сделать , чтобы это все работало вместе , как было раньше в версии CoDeSys v2. Возможно я чего-то не понимаю. И это так не работает.
Подскажите пожалуйста, как обозначить CoDeSys HMI мастером (в версии CoDeSys v2.3 этого не нужно было делать). Когда HMI в качестве device в проекте CoDeSys v3.5, там нет возможности даже добавить устройство (смотрите первый рисунок , нажал правой кнопкой мыши на device), есть возможность добавить только источник данных Datasource. Выбор источника (типа ) соединения для источника данных представлен на второй картинке. Помогите пожалуйста выбрать правильный тип соединения и какие адреса и порты туда нужно ввести для работы реального контроллера Овен ПЛК 160. На третьей картинке параметры подключения ПЛК 160 к CoDeSys 2.3
75246
75247
75250
Когда я делаю проект CoDeSys V2.3 для виртуального контроллера , все работает как нужно. Настройки соединения для для источника данных для проекта на виртуальном контроллере представлен на картинке ниже
75248
Ниже ссылка на видео, как работает проект на виртуальном контроллере.
https://www.youtube.com/watch?v=_uLwE_EqeGo
МихаилГл
17.04.2024, 18:41
А для реального контроллера нужен не local host, а его ip адрес... Так пробовали? Вам же вроде это советовали сделать...
Евгений Кислов
17.04.2024, 18:44
Добрый день. Ситуация.
На несколько миллисекунд отключаются все выходы модуля МУ210-401
В режиме Онлайн сами выхода остаются активными, но пропадают сигналы на битовых масках - выделено в прикрепленном файле.
Хотя в программе задание на выход стабильно активно.
Добрый день.
Продублируйте, пожалуйста, эту информацию на support@owen.ru, чтобы мы с вами смогли более предметно обсудить данный вопрос.
Khudyakoff
18.04.2024, 08:24
Здравствуйте. Подскажите, пожалуйста, как через текстовое поле ввода визуализации, (используя VisuDialogs.Numpad и выбрав пункт "исп. другую переменную" , записать переменную по фронту, при том что в этом поле уже отображается считанное значение переменной, которую нужно изменить.
Спасибо!
Евгений Кислов
18.04.2024, 08:38
Здравствуйте. Подскажите, пожалуйста, как через текстовое поле ввода визуализации, (используя VisuDialogs.Numpad и выбрав пункт "исп. другую переменную" , записать переменную по фронту, при том что в этом поле уже отображается считанное значение переменной, которую нужно изменить.
Спасибо!
Добрый день.
С чем именно у вас возникли трудности?
Выложите простой пример или скриншоты, которые пояснят ваш вопрос.
olegik7711
18.04.2024, 19:26
Делал так (смотрите картинку). Тогда проект CoDeSys v 3 видит переменные проекта Codesys v 2 и их можно добавить, как источник данных Datasource, но не работает онлайн. Я понимаю , что где-то туплю, но не понимаю где. Как организовать эти коммуникации. Что такое Getway, какое он участие принимает в коммуникациях между ПЛК и HMI. Что нужно прописывать в параметрах Getway и нужен ли он? Вопросы наверное наивные и глупые. 75268
kondor3000
18.04.2024, 20:33
Делал так (смотрите картинку). Тогда проект CoDeSys v 3 видит переменные проекта Codesys v 2 и их можно добавить, как источник данных Datasource, но не работает онлайн. Я понимаю , что где-то туплю, но не понимаю где. Как организовать эти коммуникации. Что такое Getway, какое он участие принимает в коммуникациях между ПЛК и HMI. Что нужно прописывать в параметрах Getway и нужен ли он? Вопросы наверное наивные и глупые. 75268
3 раз пишите одно и тоже. Уже ответил вам и все расписал, осталось прочитать пост #7062 и сделать.
PetrAfonin
19.04.2024, 17:56
Добрый день.
Продублируйте, пожалуйста, эту информацию на support@owen.ru, чтобы мы с вами смогли более предметно обсудить данный вопрос.
Проблема решена. Было воздействие электромагнитными полями.
Убрал из шкафа контакторы и автоматы мощных приводов - 15кВт. Запуск через мягкий пуск с переходом на байпасный контактор.
Во время запуска(разгона) привода проблем не было, но после перехода на байпасный контактор через несколько секунд контроллер терял связь или с последним модулем:МУ210-502; или с модулем МУ210-401, который
расположен вторым. До него находится модуль МВ210-202, после него модули дискретного вывода и аналогового ввода. Но вот именно этот модуль в основном терял связь с контроллером.
Менее мощные привода, которые так же находятся в шкафу и управляются преобразователями частоты не оказывают воздействие.
Получается у ПЛК200 шина связи слабо защищена от помех? Так как до того, как убрать пробовал менять автоматы и контакторы, думал, что где то дуга появляется.
У нас на заводе много шкафов (можно сказать все), в которых совмещены контроллеры и силовая часть вплоть до 110кВт, но такая проблема впервые.
Письмо в техподдержку написал. Что бы проанализировали ситуацию.
Спасибо.
olegik7711
20.04.2024, 17:11
Извините, но нет у меня в проектах ни master ни slave, это не modbus. Я могу добавить проект v 2.3 только как источник данных, когда CoDeSys HMI в CoDeSys v 3.5 выбран как device и вариантов соединения с ПЛК , там всего 2 напрямую CODESYS v2 или CODESYS v2(через Getway). Я в параметры связи вбивал ip ПЛК 10.0.6.10 , пробовал порты 1200, 1210, 502.(это когда напрямую) Пишет что логин к ПЛК не выполнен. Удалось подвязаться только через Getway, с теми настройками , когда адрес Getway 127.0.0.1 порт Getway 1210, адрес ПЛК 10.0.6.10 порт ПЛК 1200, тогда проект версии 3.5 видит переменные проекта версии 2.3 , я могу назначить их кнопке, но онлайн эта схема не работает. То есть кнопка не изменяет переменную.
Когда я делаю проект версии 2.3 для виртуального контроллера и добавляю его в качестве источника данных , то все работает, там где-то видео есть.
Тут именно вопрос подключения к device CoDeSys HMI не modbus, кто-то может подключал живой ПЛК с программой версии 2 именно к CoDeSys HMI версии 3.5 (не к СПК), пришлите пожалуйста скрин настроек окошка который на рисунке ниже если можно, дальше я разберусь.
75299
Может у меня какая-то урезанная версия CoDeSys
kondor3000
20.04.2024, 18:44
Тут именно вопрос подключения к device CoDeSys HMI не modbus, кто-то может подключал живой ПЛК с программой версии 2 именно к CoDeSys HMI версии 3.5 (не к СПК), пришлите пожалуйста скрин настроек окошка который на рисунке ниже если можно, дальше я разберусь.
Может у меня какая-то урезанная версия CoDeSys
Для CoDeSys HMI, если создать проект, то у меня все окна пустые. Это похоже платная версия. Тут помочь не могу
Чтобы работала связь с реальным ПЛК, нужно создать проект для виртуального контроллера CODESYS Control Win V3_SP17, выбрать Стандартный проект 75302
настроить и запустить его, можно по Модбас или ТСР. 75303Тогда будет работать связь с живыми ПЛК, панелями и МВВ
Для виртуального контроллера доступна не только связь, но и HMI и WEB визуализация
Извините, но нет у меня в проектах ни master ни slave, это не modbus. Я могу добавить проект v 2.3 только как источник данных, когда CoDeSys HMI в CoDeSys v 3.5 выбран как device и вариантов соединения с ПЛК , там всего 2 напрямую CODESYS v2 или CODESYS v2(через Getway). Я в параметры связи вбивал ip ПЛК 10.0.6.10 , пробовал порты 1200, 1210, 502.(это когда напрямую) Пишет что логин к ПЛК не выполнен. Удалось подвязаться только через Getway, с теми настройками , когда адрес Getway 127.0.0.1 порт Getway 1210, адрес ПЛК 10.0.6.10 порт ПЛК 1200, тогда проект версии 3.5 видит переменные проекта версии 2.3 , я могу назначить их кнопке, но онлайн эта схема не работает. То есть кнопка не изменяет переменную.
Когда я делаю проект версии 2.3 для виртуального контроллера и добавляю его в качестве источника данных , то все работает, там где-то видео есть.
Тут именно вопрос подключения к device CoDeSys HMI не modbus, кто-то может подключал живой ПЛК с программой версии 2 именно к CoDeSys HMI версии 3.5 (не к СПК), пришлите пожалуйста скрин настроек окошка который на рисунке ниже если можно, дальше я разберусь.
75299
Может у меня какая-то урезанная версия CoDeSys
Не пробовали вместо localhost указать реальный IP ПЛК (в разделе "ПЛК"-"Адрес:"?
Увидел - пробовали
olegik7711
21.04.2024, 12:43
Для CoDeSys HMI, если создать проект, то у меня все окна пустые. Это похоже платная версия. Тут помочь не могу
Чтобы работала связь с реальным ПЛК, нужно создать проект для виртуального контроллера CODESYS Control Win V3_SP17, выбрать Стандартный проект 75302
настроить и запустить его, можно по Модбас или ТСР. 75303Тогда будет работать связь с живыми ПЛК, панелями и МВВ
Для виртуального контроллера доступна не только связь, но и HMI и WEB визуализация
Спасибо! Наша компания купила лицензию на CoDeSys HMI 3.5, а нужна была на HMI 2.3. Но правообладатели говорят, что версия 2.3 не поддерживается. Может кто-то знает, можно ли лицензировать версию 2.3 лицензией 3.5, вероятно вопрос глупый конечно.
olegik7711
21.04.2024, 13:27
Спасибо, ребята! Извините за панику))) Вопрос решился переустановкой CoDeSys 3.5 . Дело по видимому было в пакете.
Напишу для информации, вдруг кому понадобится:
Контроллер ПЛК 160 v2 подключен по TCP/IP к компьютеру.
Настройки подключения как источника данных показаны на рисунке
75306
ВладОвен
23.04.2024, 09:49
Здравствуйте.
Подскажите, есть ли какая-нибудь библиотека, которая позволяет осуществлять обмен пакетами по сети Ethernet, но у которой будет возможность (среди прочего) задавать еще и исходящий порт соединения?
Я смотрел в сторону OwenCommunication и NetBaseService. Там исходящий порт можно задать только для UDP, а для TCP такой возможности нет. Увы.
Евгений Кислов
23.04.2024, 10:11
Здравствуйте.
Подскажите, есть ли какая-нибудь библиотека, которая позволяет осуществлять обмен пакетами по сети Ethernet, но у которой будет возможность (среди прочего) задавать еще и исходящий порт соединения?
Я смотрел в сторону OwenCommunication и NetBaseService. Там исходящий порт можно задать только для UDP, а для TCP такой возможности нет. Увы.
Добрый день.
Сомневаюсь.
https://datatracker.ietf.org/doc/html/rfc6056
Client applications
connecting to any such service will contact the server by specifying
the server IP address and service port number. The IP address and
port number of the client are normally left unspecified by the client
application and thus are chosen automatically by the client
networking stack. Ports chosen automatically by the networking stack
are known as ephemeral ports
ВладОвен
24.04.2024, 19:46
Здравствуйте.
Не компилируется проект на языке CFC.
Получаю ошибку:
[ERROR] Установки проекта: В свойствах элемента включена обработка свойств, но директива компилятора VISU_USEPROPERTYINFO не задана.
Как это можно решить?
Спасибо.
Евгений Кислов
24.04.2024, 19:48
Здравствуйте.
Не компилируется проект на языке CFC.
Получаю ошибку:
[ERROR] Установки проекта: В свойствах элемента включена обработка свойств, но директива компилятора VISU_USEPROPERTYINFO не задана.
Как это можно решить?
Спасибо.
Добрый день.
Снятием галочки Activate property handling in all element properties в установках проекта.
https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_dlg_project_settings_visualization.html
Здравствуйте. В файле первый старт CODESYS 3.5 стр.209 и 213, сказано о 8 каналах. У меня в проекте 6 аналоговых входных сигналов и 4 входных дискретных пока. Я смогу сохранить эти данные в архиве, ведь у меня 10 входных данных получается? Получается 10 каналов? И еще описание про архив, два варианта предлагает CODESYS 3.5: на год и на сутки. Смогу ли я сохранить эти данные на 10 сигналов на год и посуточно? А если я захочу еще 20 входных сигналов архивировать одновременно, архив на год и сутки? Как можно подгрузить картинку (скриншот)? В чем лучше и быстрей картинку подгружать на форум? Спасибо!
kondor3000
25.04.2024, 15:35
Здравствуйте. В файле первый старт CODESYS 3.5 стр.209 и 213, сказано о 8 каналах. У меня в проекте 6 аналоговых входных сигналов и 4 входных дискретных пока. Я смогу сохранить эти данные в архиве, ведь у меня 10 входных данных получается? Получается 10 каналов? И еще описание про архив, два варианта предлагает CODESYS 3.5: на год и на сутки. Смогу ли я сохранить эти данные на 10 сигналов на год и посуточно? А если я захочу еще 20 входных сигналов архивировать одновременно, архив на год и сутки? Как можно подгрузить картинку (скриншот)? В чем лучше и быстрей картинку подгружать на форум? Спасибо!
В сообщении, наверху есть иконка Вставить Изображение, а в расширенном режиме, есть Вложение (Добавить файл), можно выложить проект.
Как создать таблицу оперативных данных (состояние сигналов), для персонала в случаи Аварии. Авария произошла и в таблице зафиксировались все сигналы - аналоговые и дискретные по времени. Типа скрина. Выложил проект.
Здравствуйте! Прошу совет. Есть СПК107 (CODESYS 3.5) + модули Мх110. Не могу решить задачу с выводом сигналов на СПК: визуализация в журнале событий. Произошла авария агрегата, должны быть на экране зафиксированы все сигналы (температура, давление). Всего 6 аналоговых сигналов и 4 дискретных (состояние ключей). 10 строк. Все! Но эти данные должны быть зафиксированными на экране для дежурного. Дальше будем разбираться далее с архивом (CSV файлом - расшифровывать его), с дежурными КИП. Мне вроде понравился Журнал тревог. Все вроде нормально в нем и к задаче нашей подходит: есть время события, диапазоны срабатывания, но нет фиксации значения сигнала. Может можно в Журнале тревог вытащить само значение - температуру, давление?
Евгений Кислов
26.04.2024, 11:12
Здравствуйте! Прошу совет. Есть СПК107 (CODESYS 3.5) + модули Мх110. Не могу решить задачу с выводом сигналов на СПК: визуализация в журнале событий. Произошла авария агрегата, должны быть на экране зафиксированы все сигналы (температура, давление). Всего 6 аналоговых сигналов и 4 дискретных (состояние ключей). 10 строк. Все! Но эти данные должны быть зафиксированными на экране для дежурного. Дальше будем разбираться далее с архивом (CSV файлом - расшифровывать его), с дежурными КИП. Мне вроде понравился Журнал тревог. Все вроде нормально в нем и к задаче нашей подходит: есть время события, диапазоны срабатывания, но нет фиксации значения сигнала. Может можно в Журнале тревог вытащить само значение - температуру, давление?
Добрый день.
Можно использовать для этого latch-переменные:
https://youtu.be/IFUN4cYskRI?t=1799
Khudyakoff
26.04.2024, 11:54
Здравствуйте. В проекте для СПК110 есть конфигурация тревог и соответственно список текстов из 65 пунктов(все они дискретные). Есть ли возможность передать эти тревоги в master scada 3 не используя 65 отдельных точек?
Евгений Кислов
26.04.2024, 12:11
Здравствуйте. В проекте для СПК110 есть конфигурация тревог и соответственно список текстов из 65 пунктов(все они дискретные). Есть ли возможность передать эти тревоги в master scada 3 не используя 65 отдельных точек?
Добрый день
Можете упаковать их в два LWORD, например (используя битовую маску).
Khudyakoff
26.04.2024, 12:39
Добрый день
Можете упаковать их в два LWORD, например (используя битовую маску).
Есть ли какие то готовые библиотеки? (не совсем понимаю как битовую маску использовать) или может где то подробнее почитать об этом.
Евгений Кислов
26.04.2024, 12:53
Есть ли какие то готовые библиотеки? (не совсем понимаю как битовую маску использовать) или может где то подробнее почитать об этом.
VAR
xBool_00: BOOL;
xBool_01: BOOL;
...
xBool_63: BOOL;
lwMask: LWORD;
END_VAR
// в коде
lwMask.0 := xBool_00;
lwMask.1 := xBool_01;
...
lwMask.63 := xBool_63;
// далее нужным образом передаем lwMask в MasterSCADA
Каждый LWORD позволяет с помощью битовой маски работать с 64 битами.
Если нужно больше бит - объявляем еще LWORD'ы.
Некоторые другие варианты работы с битовыми масками описаны здесь в п. 1.1.3:
https://ftp.owen.ru/CoDeSys3/98_Books/CodesysMemoryManipulation.pdf
Khudyakoff
26.04.2024, 13:01
VAR
xBool_00: BOOL;
xBool_01: BOOL;
...
xBool_63: BOOL;
lwMask: LWORD;
END_VAR
// в коде
lwMask.0 := xBool_00;
lwMask.1 := xBool_01;
lwMask.63 := xBool_63;
// далее нужным образом передаем lwMask в MasterSCADA
Каждый LWORD позволяет с помощью битовой маски работать с 64 битами.
Если нужно больше бит - объявляем еще LWORD'ы.
Некоторые другие варианты работы с битовыми масками описаны здесь в п. 1.1.3:
https://ftp.owen.ru/CoDeSys3/98_Books/CodesysMemoryManipulation.pdf
Спасибо, теперь понял.
DmitriiAnyushin
26.04.2024, 14:09
Добрый день! Подскажите пожалуйста, каким образом возможно осуществить синхронизацию времени ПЛК210 с сервером точного времени?
В Codesys 3.5 в разделе OwenRTC вкладку NTP не нашел (в отличии от СПК107). Тут какой-то другой принцип или где-то что-то добавить надо? Спасибо!
Добрый день! Подскажите пожалуйста, каким образом возможно осуществить синхронизацию времени ПЛК210 с сервером точного времени?
В Codesys 3.5 в разделе OwenRTC вкладку NTP не нашел (в отличии от СПК107). Тут какой-то другой принцип или где-то что-то добавить надо? Спасибо!
может этот документ поможет, раздел 4.2 https://owen.ru/uploads/181/1/tn-ug-owrt-luci-r2.pdf
DmitriiAnyushin
26.04.2024, 14:19
Помог) Большое спасибо!
ВладОвен
26.04.2024, 15:23
Здравствуйте.
Подскажите, а как пользоваться вот этим примером: https://store.codesys.com/en/opc-ua-client-example.html
Я загружаю в инсталлятор этот пакет, но где я должен его увидеть далее в ИДЕ?
ВладОвен
26.04.2024, 15:30
Есть вопрос.
Подскажите, если я создаю проект, который состоит из двух устройств, тот каким мне образом сделать обмен оперативными параметрами между этими железками?
1. OPC сервер и клиент
2. TCP сервер и клиент
3. MQTT (обмен через третью сторону)
4. Как-то еще?
Желательно, что-бы это был функционал КДС, а не программная часть.
Даст ли такой метод шифрование?
Спасибо.
75451
Евгений Кислов
26.04.2024, 17:14
Здравствуйте.
Подскажите, а как пользоваться вот этим примером: https://store.codesys.com/en/opc-ua-client-example.html
Я загружаю в инсталлятор этот пакет, но где я должен его увидеть далее в ИДЕ?
Добрый день.
Наши контроллеры не поддерживают этот функционал.
Если вы планируете использовать его на контроллерах других производителей (не ОВЕН) - обратитесь в их техподдержку, пожалуйста.
Евгений Кислов
26.04.2024, 17:17
Есть вопрос.
Подскажите, если я создаю проект, который состоит из двух устройств, тот каким мне образом сделать обмен оперативными параметрами между этими железками?
1. OPC сервер и клиент
2. TCP сервер и клиент
3. MQTT (обмен через третью сторону)
4. Как-то еще?
Желательно, что-бы это был функционал КДС, а не программная часть.
Даст ли такой метод шифрование?
Спасибо.
75451
Любым образом, который вам подходит в рамках вашей задачи.
Например, одним из перечисленных вами, упомянутых в этом документе (https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_PlcCommunication_v3.0.pdf), по Modbus или каким-то еще.
Здравствуйте, подскажите пожалуйста что делать с исключением "runtime received SIGABRT - system may be in an inconsistent state". Пока не выявил закономерность появления, но последние два раза появлялось в простое. На пк открыта web-визуализация, никто ничем не управляет, когда обнаруживается, что визуализация отвалилась, нахожу это исключение. Пока не пойму куда копать. После него строчка в журнале Application stop. Прикладываю скрин журнала. 75474
Евгений Кислов
30.04.2024, 15:48
Здравствуйте, подскажите пожалуйста что делать с исключением "runtime received SIGABRT - system may be in an inconsistent state". Пока не выявил закономерность появления, но последние два раза появлялось в простое. На пк открыта web-визуализация, никто ничем не управляет, когда обнаруживается, что визуализация отвалилась, нахожу это исключение. Пока не пойму куда копать. После него строчка в журнале Application stop. Прикладываю скрин журнала. 75474
Добрый день.
Веб-визуализация доступна из интернета?
Добрый день.
Веб-визуализация доступна из интернета?
Нет, во внутренней подсети предприятия
Евгений Кислов
30.04.2024, 20:47
Нет, во внутренней подсети предприятия
В отдельной подсети (с фильтруемым трафиком) или в общей? Если второе - есть ли в ней какие-то источники интенсивного трафика? (например, видеокамеры)
Могут ли в сети возникать какие-то необычные ситуации? (например, петли).
В целом, вашу ситуацию мы наблюдали только в ситуациях, связанных с описанными примерами.
МихаилГл
01.05.2024, 05:59
В отдельной подсети (с фильтруемым трафиком) или в общей? Если второе - есть ли в ней какие-то источники интенсивного трафика? (например, видеокамеры)
Могут ли в сети возникать какие-то необычные ситуации? (например, петли).
В целом, вашу ситуацию мы наблюдали только в ситуациях, связанных с описанными примерами.
А вот это уже интересно. Делаю решение с веб визуализацией. Сеть будет отдельная, но там ещё 6 камер с видео фиксацией и определением номеров со своим сервером обработки... Может как раз из-за этого у меня визуализация отваливалась на работе... Хотя одна отваливалась, а вторая работала нормально. Неприятная новость. Надо записать...
Как заставить изменяться системному времени?
Здравствуйте! Подскажите, создал примитив прямоугольник (Визуализация стр. 145-146, переменная REAL), решил вывести системное время. В этом прямоугольнике формат времени, с часовым поясом: %t[dd:MM:yyyy HH:mm:ss:ms:Z]. Время выводится – все ОК. Но значения времени не изменяются после этого. Изменение будет, если взять и перейти на другой экран визуализации с кнопки (всего два экрана). Переход между экранами, с кнопок каждого экрана. Почему время стоит, не меняется, пока не перейдешь на другой экран. CODESYS 3.5 SP17, СПК107, ввод-вывод Мх110. Чем его запустить?
Евгений Кислов
02.05.2024, 16:29
Как заставить изменяться системному времени?
Здравствуйте! Подскажите, создал примитив прямоугольник (Визуализация стр. 145-146, переменная REAL), решил вывести системное время. В этом прямоугольнике формат времени, с часовым поясом: %t[dd:MM:yyyy HH:mm:ss:ms:Z]. Время выводится – все ОК. Но значения времени не изменяются после этого. Изменение будет, если взять и перейти на другой экран визуализации с кнопки (всего два экрана). Переход между экранами, с кнопок каждого экрана. Почему время стоит, не меняется, пока не перейдешь на другой экран. CODESYS 3.5 SP17, СПК107, ввод-вывод Мх110. Чем его запустить?
Добрый день.
Выложите, пожалуйста, простейший проект, в котором можно будет повторить вашу ситуацию.
Антон Замилов
02.05.2024, 16:46
Здравствуйте!
AlarmManager. Как из кода программы поменять Latch1 или Latch2 ?
Может есть рабочий пример iAlarm3.SetLatchVarValue , или другой способ ?
Загрузил файл Журнал Тревог, системное время не меняется в примитиве прямоугольник.
kondor3000
02.05.2024, 18:44
Загрузил файл Журнал Тревог, системное время не меняется в примитиве прямоугольник.
С каких пор переменная даты и времени из OwenRTC , типа DT стала переменной типа REAL, да ещё чтобы время показывала? 75512
Надо скопировать и перенести в переменную текста (ваш вывод времени), эту переменную TargetVars.stRtc.dtDateAndTime
Работать будет только в живой панели.
Евгений Кислов
02.05.2024, 18:55
Здравствуйте!
AlarmManager. Как из кода программы поменять Latch1 или Latch2 ?
Может есть рабочий пример iAlarm3.SetLatchVarValue , или другой способ ?
Добрый день.
Путем привязки к столбцу Latch-переменных в группе тревог переменных программы и изменения в коде их значений.
Или есть еще какие-то специфические требования, заставившие вас двигаться в сторону IAlarm?
В отдельной подсети (с фильтруемым трафиком) или в общей? Если второе - есть ли в ней какие-то источники интенсивного трафика? (например, видеокамеры)
Могут ли в сети возникать какие-то необычные ситуации? (например, петли).
В целом, вашу ситуацию мы наблюдали только в ситуациях, связанных с описанными примерами.
Вообще у меня отдельная подсеть, в ней видеокамер нет, насколько могу знать. В сети предприятия камер много да.
Вот к общему роутеру, которому подключен Коммутатор Овен (от него идет сеть на ПЛК, ПК с визуализацией, и в еще один ШУ с картами входов, выходов) вполне возможно, что какие-то видеокамеры подключены.
Антон Замилов
03.05.2024, 14:40
Добрый день.
Путем привязки к столбцу Latch-переменных в группе тревог переменных программы и изменения в коде их значений.
Или есть еще какие-то специфические требования, заставившие вас двигаться в сторону IAlarm?
Спец требований нет. При большом кол-ве алармов в глазах рябить начинает, да и что-то исправит тоже неудобно. Сразу скажу импорт экспорт cvs советовать не надо, там свои минусы.
Хочется уметь использовать, по необходимости SET возможности IAlarm, а не только GET
edvard_munch
03.05.2024, 16:54
Подскажите, как правильно указывать смещение для записи в определенные области модбас регистров? Только в coil у меня получилось вот с эмулятором, так как там область начинается с 0.
Как быть в частности с областью holding registers. Канал с чтением у меня работает, когда выбираешь соотвествующую область и смещение плюсуются к первому регистру в этой области.
Но, я что-то упускаю при настройке записи. Указывал 40000 и 40001. Codesys пишет что в данном слэйве такого адреса нет и выдает соотв. ошибку.
75527
Здравствуйте! В этом видео latch-переменные для Ethernet, а если у нас RS-485 и Модбас, тоже они будут подходить к нашей задаче? И еще latch-переменные это единственное решение или как одно из нескольких? Хотелось проще. Если это самое простое решение, то пожалуйста подтвердите, хотелось бы ваше мнение услышать. Сильно не ругайте. С уважением!
Антон Замилов
03.05.2024, 16:58
Подскажите, как правильно указывать смещение для записи в определенные области модбас регистров? Только в coil у меня получилось вот с эмулятором, так как там область начинается с 0.
Как быть в частности с областью holding registers. Канал с чтением у меня работает, когда выбираешь соотвествующую область и смещение плюсуются к первому регистру в этой области.
Но, я что-то упускаю при настройке записи. Указывал 40000 и 40001. Codesys пишет что в данном слэйве такого адреса нет и выдает соотв. ошибку.
75527
Holding тоже начинается с 0 укажи в CS смещение 0 и попадешь в 40001
edvard_munch
03.05.2024, 17:07
Holding тоже начинается с 0 укажи в CS смещение 0 и попадешь в 40001
А, все, спасибо, это я затупил конкретно, подумал что Write Register не только к области holding относится.
Но, и вроде бы казалось что с нулевым смещением я тоже пробовал.
Надо в очередной раз освежить для себя спецификацию модбас
Евгений Кислов
03.05.2024, 21:02
Здравствуйте! В этом видео latch-переменные для Ethernet, а если у нас RS-485 и Модбас, тоже они будут подходить к нашей задаче? И еще latch-переменные это единственное решение или как одно из нескольких? Хотелось проще. Если это самое простое решение, то пожалуйста подтвердите, хотелось бы ваше мнение услышать. Сильно не ругайте. С уважением!
Добрый день.
В рамках использования latch-переменных нет разницы, какой используется протокол обмена (и используется ли он вообще).
Я считаю, что это самое простое решение вашей задачи.
Евгений Кислов
03.05.2024, 21:03
Спец требований нет. При большом кол-ве алармов в глазах рябить начинает, да и что-то исправит тоже неудобно. Сразу скажу импорт экспорт cvs советовать не надо, там свои минусы.
Хочется уметь использовать, по необходимости SET возможности IAlarm, а не только GET
Понятно. Я постараюсь в понедельник подготовить пример по вашему вопросу.
Евгений Кислов
06.05.2024, 11:11
Понятно. Я постараюсь в понедельник подготовить пример по вашему вопросу.
https://ftp.owen.ru/CoDeSys3/21_Examples/01_3.5.11.5/02_Visu/03_Additional/Example_AlarmMessageBox_3517v1.projectarchive
Результаты сомнительные.
Установить значение latch-переменной из кода получилось только в том случае, если она целочисленного типа (и без участия IAlarm3.SetLatchVarValue).
(потому что AlarmManager.ITypedValue.SetValue на уровне интерфейса имеет только вход liValue типа LINT).
75584
Документации про ITypedValue нет в принципе, и как оно обрабатывается в вызове IAlarm3.SetLatchVarValue - не очень очевидно (возможно, с какой-то спецификой).
Попытка сделать создать свой ФБ, реализующий ITypedValue, и создать код его методов интуитивным путем у меня успехом не увенчалась.
Здравствуйте! В этом видео latch-переменные для Ethernet, а если у нас RS-485 и Модбас, тоже они будут подходить к нашей задаче? И еще latch-переменные это единственное решение или как одно из нескольких? Хотелось проще. Если это самое простое решение, то пожалуйста подтвердите, хотелось бы ваше мнение услышать. Сильно не ругайте. С уважением!
Подскажите, где почитать про latch-переменные и примеры использования?
Добрый день.
Можно использовать для этого latch-переменные:
https://youtu.be/IFUN4cYskRI?t=1799
Здравствуйте! Я еще хотел бы уточнить для себя и по поводу latch-переменных согласно видео, которое предложили на ютубе. В этом видео идет речь в основном об аварийных событиях, т.е. об аварийном журнале. Где аварии, сообщения, предупреждения - это дискретные события или диапазон аналоговых событий (верхний предел, нижний предел и т.д), которые почти всегда можно перевести в дискретные события. А меня интересуют именно значения аналоговых сигналов, в этом видео я это не заметил или плохо смотрел. Когда переходишь допустим верхний/нижний порог - это конечно значение и это понятно, но как их тогда интерпретировать-выводить? Поправьте меня, может я не прав и в этом видео, есть сами значения аналоговых сигналов
Евгений Кислов
07.05.2024, 08:56
Здравствуйте! Я еще хотел бы уточнить для себя и по поводу latch-переменных согласно видео, которое предложили на ютубе. В этом видео идет речь в основном об аварийных событиях, т.е. об аварийном журнале. Где аварии, сообщения, предупреждения - это дискретные события или диапазон аналоговых событий (верхний предел, нижний предел и т.д), которые почти всегда можно перевести в дискретные события. А меня интересуют именно значения аналоговых сигналов, в этом видео я это не заметил или плохо смотрел. Когда переходишь допустим верхний/нижний порог - это конечно значение и это понятно, но как их тогда интерпретировать-выводить? Поправьте меня, может я не прав и в этом видео, есть сами значения аналоговых сигналов
Добрый день.
Ваш пост:
https://owen.ru/forum/showthread.php?t=20069&p=435965&viewfull=1#post435965
Произошла авария агрегата, должны быть на экране зафиксированы все сигналы
Latch-переменные позволяют отобразить в журнале тревог зафиксированные значения latch-переменных (latch переводится как "защелка"), которые те имели в момент наступления аварии.
В рамках примера из видео фиксируется текст ошибки обмена. В вашем случае будут фиксироваться значения аналоговых сигналов. Принцип от этого не меняется.
Емельянов Кирилл
08.05.2024, 06:58
Вот это можно как-нибудь использовать?
75612
Евгений Кислов
08.05.2024, 07:05
Вот это можно как-нибудь использовать?
75612
Да, можно.
Емельянов Кирилл
08.05.2024, 07:12
Понял, спасибо, смутило, что в OwenRTC нет такого канала
Евгений Кислов
08.05.2024, 07:16
Понял, спасибо, смутило, что в OwenRTC нет такого канала
Есть:
75613
Но, возможно, у вас старая прошивка, в которой его еще не было.
Добрый день. Столкнулся с такой проблемой. Реального ПЛК нет. Поэтому тестирую программу на ControlWin3. Не могу из MasterScada 4D записать данные в Holding Register (Читает из Input Register без проблем). При этом SimpLight и пишет и читает тоже без вопросов. В чем может быть проблема? Сори если не по теме :)
Добрый день. Столкнулся с такой проблемой. Реального ПЛК нет. Поэтому тестирую программу на ControlWin3. Не могу из MasterScada 4D записать данные в Holding Register (Читает из Input Register без проблем). При этом SimpLight и пишет и читает тоже без вопросов. В чем может быть проблема? Сори если не по теме :)
Причин может быть много - но самая первая и часто встречающаяся - у тега, который идёт на запись, параметр "StatusCode" имеет значение "Bad "(чтобы прошла команда на запись должен быть статус "Good")
Лесурмыг
14.05.2024, 09:44
Приветствую всех. С чем может быть связано появление ошибки "
Сетевые переменные: <наименование переменной>.Объединения недопустимы."?
В программе используется два типа объединений.
Ошибку выдаёт только на объединение которое объявляется первым.
Данное программное решение использовал в другой программе и никаких ошибок не было.
Заранее благодарю за любую помощь
Евгений Кислов
14.05.2024, 09:59
Приветствую всех. С чем может быть связано появление ошибки "
Сетевые переменные: <наименование переменной>.Объединения недопустимы."?
В программе используется два типа объединений.
Ошибку выдаёт только на объединение которое объявляется первым.
Данное программное решение использовал в другой программе и никаких ошибок не было.
Заранее благодарю за любую помощь
Добрый день.
Выложите, пожалуйста, проект, в котором я смогу повторить вашу ошибку.
Лесурмыг
14.05.2024, 10:31
Добрый день.
Выложите, пожалуйста, проект, в котором я смогу повторить вашу ошибку.
https://disk.yandex.ru/d/lqdwhslS6BtxxQ
Евгений Кислов
14.05.2024, 10:58
В списке сетевых переменных тип UNION не поддерживается.
75754
Ошибку выдаёт только на объединение которое объявляется первым.
Это мелкий недостаток компилятора - он обнаруживает первый UNION и останавливает поиск.
Если закомментируете первый UNION - будет ошибка по второму.
Данное программное решение использовал в другой программе и никаких ошибок не было.
Вероятно, в другой программе в списке сетевых переменных не было UNION.
Лесурмыг
14.05.2024, 13:05
Еще раз благодарю. Список глобальных переменных каким-то образом оказался сетевым. Снятие этой опции решило проблему
PINGVIN52
15.05.2024, 15:08
Приветствую всех! При работе программа иногда уходит в стоп, а при подключении к контроллеру обнаруживаю множество предупреждений в журнале - "EventBuffer full for app=Application an inputevent with the tag 4 has been droped". Прошу подсказать, как можно исправить данную проблему.
Евгений Кислов
15.05.2024, 15:52
Добрый день.
Приветствую всех! При работе программа иногда уходит в стоп, а при подключении к контроллеру обнаруживаю множество предупреждений в журнале - "EventBuffer full for app=Application an inputevent with the tag 4 has been droped". Прошу подсказать, как можно исправить данную проблему.
Путем отладки.
Для начала нужно определить, в какие моменты времени она возникает (связаны ли с этим какие-то события - например действия в визуализации) и, желательно, научиться стабильно ее воспроизводить.
PINGVIN52
16.05.2024, 13:01
К сожалению данная ошибка просто ссылается на задачу VisuTask и больше ничего конкретного не выдаёт
Евгений Кислов
16.05.2024, 13:05
К сожалению данная ошибка просто ссылается на задачу VisuTask и больше ничего конкретного не выдаёт
Это не ошибка, а предупреждение (иконка желтая, а не красная).
И оно является не причиной вашей проблемы, а просто сопутствующим фактором.
Карбофос
20.05.2024, 09:15
Здравствуйте. Подскажите, при настройке тревог через конфигурацию, можно ли в поле "Сообщение" добавлять текстовые переменные?
Евгений Кислов
20.05.2024, 09:52
Здравствуйте. Подскажите, при настройке тревог через конфигурацию, можно ли в поле "Сообщение" добавлять текстовые переменные?
Добрый день.
Можно.
Для этого нужно создать строковую LATCH-переменную, и в сообщении тревоги использовать спецификатор LATCH.
Конкретный пример:
https://youtu.be/IFUN4cYskRI?t=1799
Здравствуйте!
Еще один момент. Проект на СПК107 (работаю с шаблонами, Мodbus RTU, RS-485, модули ввода/вывода Мх110). Подскажите, как мне в программе CODESYS 3.5 для СПК107 выполнить контроль по обрыву связи моих датчиков 4-20 мА (как контролировать входа/выхода). Где что смотреть? Обрыв самого канала связи по Мodbus RTU. Спасибо. Новенький.
Евгений Кислов
22.05.2024, 14:10
Здравствуйте!
Еще один момент. Проект на СПК107 (работаю с шаблонами, Мodbus RTU, RS-485, модули ввода/вывода Мх110). Подскажите, как мне в программе CODESYS 3.5 для СПК107 выполнить контроль по обрыву связи моих датчиков 4-20 мА (как контролировать входа/выхода). Где что смотреть? Обрыв самого канала связи по Мodbus RTU. Спасибо. Новенький.
Добрый день.
75941
Добрый день.
В теме Owen Communication не работают ссылки на фтп. Есть ли альтернативная возможность скачать библиотеку и описание?
Евгений Кислов
22.05.2024, 15:40
Добрый день.
В теме Owen Communication не работают ссылки на фтп. Есть ли альтернативная возможность скачать библиотеку и описание?
Добрый день.
Ссылки рабочие - только что проверил.
Возможно, какие-то сложности на стороне вашего провайдера.
Вы можете связаться со мной по контактам в подписи - я пришлю вам нужные файлы.
ВладОвен
23.05.2024, 14:15
Привет.
Подскажите, как вызвать метод в языке CFC?
В языке ST это работает без ошибок:
IF rFlowCurrent < rLimit THEN // Малый расходомер
port1Mng.exchangeRmetr(eSelect := rMetrsMode.small);
END_IF
А в языке CFC как?
75970
Там постоянно горит красная волнистая линия.
Как это вызвать? Этот метод у меня в другой задаче.
Что я делаю не так?
Здравствуйте! Документ Визуализация. Примитив Таблица стр. 223. Там есть кнопка Запись в Таблицу. Нажал и таблица значение записала. Я привязал свою переменную к переменной этой кнопки: bTrigger, но у меня идет постоянная запись в эту таблицу. Все строки забивает. Есть пример на ST, типа Триггера (например по переднему фронту срабатывает кнопка) или как выполнить краткий запуск этой кнопки. Что то не пойму, как реализовать просто. А то у меня сигнал Авария пришел TRUE и висит, таблица заполняется, пока не выключишь Аварию
МихаилГл
23.05.2024, 14:57
Здравствуйте! Документ Визуализация. Примитив Таблица стр. 223. Там есть кнопка Запись в Таблицу. Нажал и таблица значение записала. Я привязал свою переменную к переменной этой кнопки: bTrigger, но у меня идет постоянная запись в эту таблицу. Все строки забивает. Есть пример на ST, типа Триггера (например по переднему фронту срабатывает кнопка) или как выполнить краткий запуск этой кнопки. Что то не пойму, как реализовать просто. А то у меня сигнал Авария пришел TRUE и висит, таблица заполняется, пока не выключишь Аварию
Взведение, сброс и квитирование аварии это целая наука.
Как вариант, заведите бит наличия аварии, бит квитирования и бит сброса. На крайний случай после аварии ставьте р'триггер и бит проскочит один раз при первом появлении. Только надо успеть его записать куда нужно, а если запись в таблицу до этой процедуры, то ничего и не получите.
Евгений Кислов
23.05.2024, 15:51
Привет.
Подскажите, как вызвать метод в языке CFC?
В языке ST это работает без ошибок:
IF rFlowCurrent < rLimit THEN // Малый расходомер
port1Mng.exchangeRmetr(eSelect := rMetrsMode.small);
END_IF
А в языке CFC как?
75970
Там постоянно горит красная волнистая линия.
Как это вызвать? Этот метод у меня в другой задаче.
Что я делаю не так?
Добрый день.
https://owen.ru/forum/showthread.php?t=28167&p=389349&viewfull=1#post389349
ВладОвен
23.05.2024, 16:01
Добрый день.
https://owen.ru/forum/showthread.php?t=28167&p=389349&viewfull=1#post389349
Ок. Вопросов еще больше... :)
Т.е. нужно создать отдельный экземпляр функционального блока, содержащего нужный метод?
Но в ST я же его не создаю. И оно работает?..
Т.е. у меня есть две программы (PRG). Я хочу что-бы одна вызвала нужный метод в другой программе.
Евгений Кислов
23.05.2024, 16:02
Т.е. нужно создать отдельный экземпляр функционального блока, содержащего нужный метод?
Нет. Достаточно одного экземпляра ФБ.
Но в ST я же его не создаю. И оно работает?..
Вы можете использовать STи не создавать себе лишние трудности.
ВладОвен
23.05.2024, 16:09
Вы можете использовать STи не создавать себе лишние трудности.
Это точно!
Но легкие пути - это не для нас.
Евгений! Ведь CFC дает офигительную читаемость кода! Вроде бы так говорят студентам при изучении этих языков?
А тут - БАЦ - и "не создавать себе лишние трудности".
У меня есть две программы (PRG). Я хочу что-бы одна вызвала нужный метод в другой программе.
На ST это реализовывается без проблем.
О. Я понял как:
75986
Вопрос закрыт.
Емельянов Кирилл
24.05.2024, 01:25
Ведь CFC дает офигительную читаемость кода! Вроде бы так говорят студентам при изучении этих языков?
По должности приходится достаточно много работать с чужим кодом. Я вам так скажу: ещё не было случая, когда в хоть сколько-нибудь сложной программе CFC/LD/прочие_квадратики что-то там облегчали в читаемости. В лучшем случае читаемость равнозначна. Но гибкость ST позволяет гораздо больше других языков.
Здравствуйте! Подскажите у меня две программы. 1-ая прогр. (язык CFC) – тут есть переменные (REAL, BOOL), которые привязаны к графическим примитивам Визуализации (кнопки, лампы, отображения значений аналоговых сигналов). 2-ая прогр. (язык ST) – это переделанный пример примитива Таблица для 10 переменных (стр.223 Визуализация – пример Таблица). Переменных глобальных нет, только локальные. Переменные из 1-й проги во второй не воспринимаются. Как правильно выполнить для 1- программы свою подпрограмму или “Действие” на другом языке для 1-й программы? Не получается выполнить переход в подпрограмму (или доступ к “Действию”). Рассмотрю пример также и на том же языке, на котором выполняется и основная программа. Допустим ST и ST, или CFC и ST, или ST и CFC. Пример Руководство пользователя по программированию ПЛК в CoDeSys 2.3 мне не понятен (про Действие),его лучше не предлагайте или подробно с примером или видео. С уважением.
в TIA Portal к каждому FB "идет" DB в CoDeSys их нет?
по клику на любую переменную в каком то окне показывал где объявляется, где записывается, где читаются И по клику можно было перейти на это место.
Почему то перестал показывать. Вызов окна перекрестных ссылок (через контекстное меню ПКМ или меню Вид-"Список перекрестных ссылок" никакой реакции не дает (только "перемаргивает" строка состояния).
Окно Дерево вызовов отобразил НО, если введешь вручную в окно поиска переменную и нажать Найти, покажет лишь место где эта переменная объявляется.
Подскажите как вернуть чтобы показывал все места: объявление, записи, чтения?
Евгений Кислов
29.05.2024, 12:46
в TIA Portal к каждому FB идут DB в CoDeSys их нет?
В CODESYS нет понятия DB.
ФБ в CODESYS включает в себя структуру данных, содержащих переменнные блока.
При объявлении экземпляра ФБ выделяется память под хранение значений этих переменных.
Евгений Кислов
29.05.2024, 12:47
Подскажите как вернуть чтобы показывал все места: объявление, записи, чтения?
Сложно сказать, не видя того, что происходит у вас на мониторе.
Пожалуйста, свяжитесь со мной через телеграм (в подписи) и продемонстрируйте вашу проблему по AnyDesk.
Сложно сказать, не видя того, что происходит у вас на мониторе.
Пожалуйста, свяжитесь со мной через телеграм (в подписи) и продемонстрируйте вашу проблему по AnyDesk.
Спасибо вам за помощь. Решение в меню Окно-"Сбросить параметры окна"
edvard_munch
29.05.2024, 14:54
Подскажите, а какой тип датчика выбрать в OwenTypes.ANALOG_SENSORS для ТПТ-3/ТМТ-3?
https://termiko.ru/catalog/section_3/product_3/
kondor3000
29.05.2024, 15:18
Подскажите, а какой тип датчика выбрать в OwenTypes.ANALOG_SENSORS для ТПТ-3/ТМТ-3?
https://termiko.ru/catalog/section_3/product_3/
Паспорт датчика откройте и прочитайте тип датчика или скрин выложите.
По ссылке все типы датчиков.
подскажите пожалуйста что за подчеркивания прямые, двойные, волнистые, черные, синие, красные (красн. наверно только ошибки)?
Евгений Кислов
29.05.2024, 16:22
подскажите пожалуйста что за подчеркивания прямые, двойные, волнистые, черные, синие, красные (красн. наверно только ошибки)?
Синие - это предупреждения. Стиль линии может быть разным - в зависимости от подчеркиваемого объекта.
Синие - предупреждения. Стиль линии - в зависимости от подчеркиваемого объекта.
Спасибо.
На скриншоте совершенно разные объекты имеют синее двойное подчеркивание. Так же есть волнистое подчеркивание (на скриншоте) на скрине а часто так же подчеркиваются внутри объектов переменные. Получается и разные объекты имеют одинаковый тип подчеркивания
edvard_munch
29.05.2024, 17:29
Паспорт датчика откройте и прочитайте тип датчика или скрин выложите.
По ссылке все типы датчиков.
Спасибо. С этим вроде как разобрался
Но, сразу потом понял что не разобрался изначально с более важным вопросом, что-то делаю не так при записи настроек для аналогового входа.
Устанавливаю значение для типа датчика - потом возвожу бит для записи
Как я могу предположить, есть общий - для записи настроек всех четырех каналов и отдельный триггер для каждого канала
При возведении бита для чтения настроек каналов - у меня там по-прежнему "off"
И там чтение значений - статус DISABLED
Что не так?
Не могу найти более-менее подробный пример для работы со входами в ПЛК 200 или 210
Где-то вроде прочитал что при изменении настроек входа нужно перезагружать питание контроллера, мне это показалось странным
Но попробовал - не помогло.
Скрин ниже
76117
МихаилГл
29.05.2024, 18:16
Там 2 вкладки настроек. При помощи настроек модуля и из программы пользователя. Но действовать будет одна, зависит от булевой переменной в одной из вкладок. Надо поискать по форуму, недавно был ответ по данному вопросу.
Наугад не меняйте биты, ничего не выйдет. Только сами запутаетесь.
PS https://owen.ru/product/codesys_v3
Примеры, настройка обмена. Там вроде всё есть.
Alex_krg
29.05.2024, 20:44
Всем доброго времени суток!
Помогите разобраться в следующем вопросе: разрабатываю первую программу для АВР на ПЛК-210-14 + МВ-210-12 (несколько штук). В программе будет n-e количество автоматических выключателей, с одинаковым количеством сигналов. По этой причине, в программе создал массив функциональных блоков.
Возникли вопросы по привязке дискретных входов контроллера:
1. Является ли нормальным привязка битовой маски входов контроллера напрямую к экземпляру функционального блока ?
2. Или все же привязку лучше делать через структуры, а потом привязывать структуры к ФБ?
3. А мб вообще лучше через глобальные переменные?
Если без разницы, то хотел бы для себя усвоить, как решают такие вопросы опытные специалисты. И какие могут возникнуть проблемы, в случае привязки битовой маски напрямую к входным переменным ФБ?
Просто как я понимаю, то это двойная работа, сначала входы привязать к структуре, а потом эту же структуру привязывать к ФБ.
Программу разрабатываю на CFC.
Alex_krg Ты задал очень абстрактный вопрос. Я бы ответил так:
а) Если тебе прям вот ВЕЗЁТ так, что в твоём проекте на один FB выключателя все сигналы укладываются в одну битовую маску - ну привяжи так.
Но, наверное, в реальности это же не так, и распределение входов-выходов ПЛК может быть любым.
б) Структуры удобно (по моему мнению) использовать, если надо передать в FB много настроек или опций. Тогда можно сделать так, что основные параметры передаются как есть, а расширенные опции - структурой.
в) Сам я использую концепт глобальных IO-переменных. Я описывал его вот здесь (заголовок 4): https://cs-cs.net/technologii-testirovaniya-i-otladky-shhgitov-s-svtomatikoy-na-plk#4_____io
Мне так удобнее из-за того, что все переменные наглядно видны, привязаны в одном месте, и эти привязки можно изменить, не трогая кода, который их использует.
Емельянов Кирилл
30.05.2024, 03:53
Спасибо. С этим вроде как разобрался
Но, сразу потом понял что не разобрался изначально с более важным вопросом, что-то делаю не так при записи настроек для аналогового входа.
Устанавливаю значение для типа датчика - потом возвожу бит для записи
Как я могу предположить, есть общий - для записи настроек всех четырех каналов и отдельный триггер для каждого канала
При возведении бита для чтения настроек каналов - у меня там по-прежнему "off"
И там чтение значений - статус DISABLED
Что не так?
Не могу найти более-менее подробный пример для работы со входами в ПЛК 200 или 210
Где-то вроде прочитал что при изменении настроек входа нужно перезагружать питание контроллера, мне это показалось странным
Но попробовал - не помогло.
Скрин ниже
76117
CDSv3.5_Targets_v3.1.pdf (https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Targets_v3.1.pdf)
Карбофос
30.05.2024, 10:29
Здравствуйте. Сколько адаптеров МКОН можно одновременно подключить к СПК1хх? Я же правильно понимаю, что с их помощью можно добавить дополнительные COM-порты к существующим пяти?
Сколько угодно, но одновременно больше 10 лучше не опрашивать.
Здравствуйте! Скажите, есть уже встроенный классический ПИД регулятор на СПК107. Чтоб это был не самодельный придуманный программно мной ПИД регулятор, а уже встроенный, готовый сертифицированный ПИД регулятор, как у некоторых ПЛК контролеров, например, ранее видел на некоторых объектах Directlogic dl06 (206)? Или придется сочинять все самому.
Alex_krg
30.05.2024, 13:40
Alex_krg Ты задал очень абстрактный вопрос. Я бы ответил так:
а) Если тебе прям вот ВЕЗЁТ так, что в твоём проекте на один FB выключателя все сигналы укладываются в одну битовую маску - ну привяжи так.
Но, наверное, в реальности это же не так, и распределение входов-выходов ПЛК может быть любым.
б) Структуры удобно (по моему мнению) использовать, если надо передать в FB много настроек или опций. Тогда можно сделать так, что основные параметры передаются как есть, а расширенные опции - структурой.
в) Сам я использую концепт глобальных IO-переменных. Я описывал его вот здесь (заголовок 4): https://cs-cs.net/technologii-testirovaniya-i-otladky-shhgitov-s-svtomatikoy-na-plk#4_____io
Мне так удобнее из-за того, что все переменные наглядно видны, привязаны в одном месте, и эти привязки можно изменить, не трогая кода, который их использует.
Благодарю за развернутый ответ. Идея с глобальными IO-переменными класс!!!
Здравствуйте!
У нас СПК107 и модули ввода/вывода Мх110. Работаем по шаблонам c Modbus (Modbus RS-485). Есть одно из типовых решений типового кондиционера у нас, до этого ставили всегда в управление на эту схему 2TPM1 (проверенный, сертифицированный измеритель-регулятор микропроцессорный двухканальный) и подключали к нему термометр сопротивления Pt100. И регулировали по релейному закону (двухпозиционному) по этой схеме. Все Ок. Но сейчас у нас есть СПК107 и модули ввода/вывода Мх110 для отображения информации всех сигналов, так решил заказчик. СПК107 идет по требованию заказчика как панель HMI – для отображения информации (регулировать с панели несказанно, что можно регулировать – в задании не указано ничего про это, написано для отображения). А вместо ПЛК у нас предлагается ваш проверенный 2TPM1. Мы ничего не нарушаем. Но тут появилась идея, а зачем нам два ПЛК в шкафу (2TPM1 и СПК107), давай возьмем СПК107 и выполним нашу задачу регулирования на панели без устройства 2TPM1. Стоит ли нам применять такое решение? Или оставить как есть: СПК107 только для отображения информации (HMI), а 2TPM1 для регулирования. СПК107 будет получать информацию от 2TPM1, через модули ввода/вывода.
Евгений Кислов
30.05.2024, 13:48
Здравствуйте! Скажите, есть уже встроенный классический ПИД регулятор на СПК107. Чтоб это был не самодельный придуманный программно мной ПИД регулятор, а уже встроенный, готовый сертифицированный ПИД регулятор, как у некоторых ПЛК контролеров, например, ранее видел на некоторых объектах Directlogic dl06 (206)? Или придется сочинять все самому.
Добрый день.
Блок ПИД-регулятора (стандартный для CODESYS) есть в библиотеке Util.
kondor3000
30.05.2024, 13:58
Здравствуйте!
У нас СПК107 и модули ввода/вывода Мх110. Работаем по шаблонам c Modbus (Modbus RS-485). Есть одно из типовых решений типового кондиционера у нас, до этого ставили всегда в управление на эту схему 2TPM1 (проверенный, сертифицированный измеритель-регулятор микропроцессорный двухканальный) и подключали к нему термометр сопротивления Pt100. И регулировали по релейному закону (двухпозиционному) по этой схеме. Все Ок. Но сейчас у нас есть СПК107 и модули ввода/вывода Мх110 для отображения информации всех сигналов, так решил заказчик. СПК107 идет по требованию заказчика как панель HMI – для отображения информации (регулировать с панели несказанно, что можно регулировать – в задании не указано ничего про это, написано для отображения). А вместо ПЛК у нас предлагается ваш проверенный 2TPM1. Мы ничего не нарушаем. Но тут появилась идея, а зачем нам два ПЛК в шкафу (2TPM1 и СПК107), давай возьмем СПК107 и выполним нашу задачу регулирования на панели без устройства 2TPM1. Стоит ли нам применять такое решение? Или оставить как есть: СПК107 только для отображения информации (HMI), а 2TPM1 для регулирования. СПК107 будет получать информацию от 2TPM1, через модули ввода/вывода.
Зачем тут СПК107 вообще нужен? Одного 2ТРМ1 за глаза достаточно. И это не ПЛК, а регулятор.
Если нужен экран, то есть намного дешевле ИП120, ИП320, СП307 (или аналоги ещё дешевле)
СП307 предлагали. Не получилось, отвергли, не понятно почему. Потом со временем решили по советам менеджеров по продажам СПК107 (тачскрин хочется заказчику). Появилось новая хотелка-задание, что нужно контролировать – видеть и другие дополнительные параметры с аналоговых датчиков у кондея. Ну купили и купили. Начинаем работать.
Здравствуйте! Скажите, есть уже встроенный классический ПИД регулятор на СПК107. Чтоб это был не самодельный придуманный программно мной ПИД регулятор, а уже встроенный, готовый сертифицированный ПИД регулятор, как у некоторых ПЛК контролеров, например, ранее видел на некоторых объектах Directlogic dl06 (206)? Или придется сочинять все самому.
Смотря что вы понимаете под словом встроенный? Если вам обычный ПИД без автонастройки то там формула почти 100 лет известна и с тех пор не менялась. В чем для вас разница?
Еще раз здравствуйте!
Евгений, благодарю за ответ про ПИД-регулятор!
Все четко. И другим участникам диалога спасибо за ваши мысли и вопросы!
1. Вопрос: cкажите, а вот мы хотели бы еще рассмотреть такой вариант. Это еще мысли только. Сможем ли мы очень быстро реализовать на СПК107, сам регулятор 2TRM1 т.е. повторить его функционал. У нас просто измеряется одна температура (один сигнал входной) на нем и все. Хотелось бы очень быстро и просто или не получится так, ведь 2TRM1 сертифицированное устройство.
2. Вопрос: заказчик просит еще у нас руководство по загрузке и восстановлению работоспособности ПЛК , т.е. СПК107. Подскажите, что мы должны ему предложить? Есть ли типовой документ руководство по загрузке и восстановлению ПЛК (СПК107) или этот документ нам надо самим разрабатывать?
Евгений Кислов
31.05.2024, 13:16
Евгений, благодарю за ответ про ПИД-регулятор!
Все четко . Скажите, а вот мы хотели бы еще рассмотреть такой вариант. Это еще мысли только. Сможем ли мы очень быстро реализовать на СПК107, сам регулятор 2TRM1 т.е. повторить его функционал. У нас просто измеряется одна температура (один сигнал входной) на нем и все. Хотелось бы очень быстро и просто или не получится так, ведь 2TRM1 сертифицированное устройство.
Зависит от навыков того, кто будет реализовывать.
Технически - сама задача, конечно, решаема.
Сертифицировано как низковольтное оборудование. СПК107 тоже такой сертификат имеет. Какое отношение это имеет к регулированию? И касательно вашего вопроса то 2х позиционное регулирование это 5 строк кода на ST или можно готовый ФБ в библиотеке найти.
Назаров Александр
03.06.2024, 11:10
Всем добрый день! При установке CDS3.5 на диск D вылезает : it is possible that packages from this patch cloud not be installed. Пробовал дважды. Запускаю для инсталляции *.exe
В чем может быть проблема? На C:\ не пробовал, места маловато.
МихаилГл
03.06.2024, 11:21
Всем добрый день! При установке CDS3.5 на диск D вылезает : it is possible that packages from this patch cloud not be installed. Пробовал дважды. Запускаю для инсталляции *.exe
В чем может быть проблема? На C:\ не пробовал, места маловато.
Из распакованного архива? Или прямо из архива?
Евгений Кислов
03.06.2024, 11:35
Всем добрый день! При установке CDS3.5 на диск D вылезает : it is possible that packages from this patch cloud not be installed. Пробовал дважды. Запускаю для инсталляции *.exe
В чем может быть проблема? На C:\ не пробовал, места маловато.
Добрый день.
В любом случае, в процессе установки часть файлов записывается в C:\ProgramData и другие директории на C:\.
Попробуйте освободить на диске C:\ хотя бы 4 Гб и повторите установку.
Здравствуйте Евгений! В видео про Латч переменные (29. Вывод ошибок обмена Modbus в таблицу тревог ) есть момент, где с 30:17 (мин:сек) идет объяснение о Latch переменной. И далее на интервале с 30:37 – 30:56 сказано об одном Триггере 1 и более двух Триггерах, и о возможности добавить большее количество столбцов Триггеров привязанной к одной дискретной переменной (столбец Детали). Я увидел еще возможность добавить и столбцы нескольких сообщений: Сообщение 2 ...Сообщение 3 и т.д и все это к одной переменной или выражению (см. столбец Действие).
У меня получилось по одному дискретному событию (столбец Действие ) вытаскивать с помощью Латч переменной (в колонке Сообщение) само значение Температуры (строковый тип). А как мне выполнить задачу, чтоб от этого же дискретного события (у меня это общая Авария кондея) “вытаскивалась” – фиксировалось все мои 10 сигналов одновременно (у меня 6 сигналов аналоговых и 4 дискретных)? Как правильно выполнить синтаксис? Что, надо мне набивать 10 строк или добавить в одной строке все: добавив новые столбцы Триггеров или добавляя новые Сообщения и что надо номер Латч переменной постоянно менять в каждой строке с разным номером. Не могу пока понять механизм, как правильно решить свою задачу. С уважением!
Евгений Кислов
04.06.2024, 15:34
Здравствуйте Евгений! В видео про Латч переменные (29. Вывод ошибок обмена Modbus в таблицу тревог ) есть момент, где с 30:17 (мин:сек) идет объяснение о Latch переменной. И далее на интервале с 30:37 – 30:56 сказано об одном Триггере 1 и более двух Триггерах, и о возможности добавить большее количество столбцов Триггеров привязанной к одной дискретной переменной (столбец Детали). Я увидел еще возможность добавить и столбцы нескольких сообщений: Сообщение 2 ...Сообщение 3 и т.д и все это к одной переменной или выражению (см. столбец Действие).
У меня получилось по одному дискретному событию (столбец Действие ) вытаскивать с помощью Латч переменной (в колонке Сообщение) само значение Температуры (строковый тип). А как мне выполнить задачу, чтоб от этого же дискретного события (у меня это общая Авария кондея) “вытаскивалась” – фиксировалось все мои 10 сигналов одновременно (у меня 6 сигналов аналоговых и 4 дискретных)? Как правильно выполнить синтаксис? Что, надо мне набивать 10 строк или добавить в одной строке все: добавив новые столбцы Триггеров или добавляя новые Сообщения и что надо номер Латч переменной постоянно менять в каждой строке с разным номером. Не могу пока понять механизм, как правильно решить свою задачу. С уважением!
Добрый день.
Вопросы становятся всё более частными, и давать точечные ответы на них становится сложнее.
Свяжитесь, пожалуйста, со мной через телеграм (в подписи) и подготовьте доступ по AnyDesk, чтобы мы, глядя на ваш открытый проект, смогли более предметно обсудить ситуацию.
Доброго знатоки.
Кликаю ПКМ на графике трассировки (логин, не логин - не влияет), контекстное меню не появляется и перестает появляться на любом элементе. Помогает только закрытие CoDeSys (3.5 сп17 патч 6 32бит). Проверил с разными проектами так же. Хотел загрузить трассировку для наблюдения за переменным, не получается. Тут архив (https://disk.yandex.ru/d/U2pq-zXFyu7xmg) проекта с библиотеками и настройками.
Подскажите пожалуйста что не так, как можно выполнить?
edvard_munch
07.06.2024, 11:53
Добрый день.
Вопрос хотел бы прояснить для себя.
При объявлении структуры инициализирую ее элементы определенными значениями.
Объявляю экземпляр без инициализации новыми значениями
Потом меняю значения в объявлении структуры. Перекомпилирую программу. Но программа при этом в экземпляре продолжает видеть самые первые значения, заданные при объявлении структуры, хотя они нигде уже в программе не фигурируют.
Это нормальное поведение? Я что-то совсем потерялся.
При объявлении экземпляра структуры с индивидуальными значениями в скобочках программа конечно их видит.
Но и я конечно понял, что логичнее наверное ENUM использовать для этого случая.
Евгений Кислов
07.06.2024, 12:19
Добрый день.
Вопрос хотел бы прояснить для себя.
При объявлении структуры инициализирую ее элементы определенными значениями.
Объявляю экземпляр без инициализации новыми значениями
Потом меняю значения в объявлении структуры. Перекомпилирую программу. Но программа при этом в экземпляре продолжает видеть самые первые значения, заданные при объявлении структуры, хотя они нигде уже в программе не фигурируют.
Это нормальное поведение? Я что-то совсем потерялся.
При объявлении экземпляра структуры с индивидуальными значениями в скобочках программа конечно их видит.
Но и я конечно понял, что логичнее наверное ENUM использовать для этого случая.
Добрый день.
Если вы используете "Логин с онлайн-заменой" вместо нормального полноценного "Логина с загрузкой" - то да, это предсказанное поведение.
edvard_munch
07.06.2024, 12:26
Добрый день.
Если вы используете "Логин с онлайн-заменой" вместо нормального полноценного "Логина с загрузкой" - то да, это предсказанное поведение.
В том то и дело что нет, всегда использую логин с загрузкой, много раз менял значения и повторял эту процедуру
Евгений Кислов
07.06.2024, 12:35
В том то и дело что нет, всегда использую логин с загрузкой, много раз менял значения и повторял эту процедуру
Повторил вашу ситуацию. Чтобы избежать ее - перед загрузкой проекта нужно выполнять команду Компиляция - Очистить все.
Похоже на мелкий баг CODESYS.
edvard_munch
07.06.2024, 12:49
Повторил вашу ситуацию. Чтобы избежать ее - перед загрузкой проекта нужно выполнять команду Компиляция - Очистить все.
Похоже на мелкий баг CODESYS.
Да, я вот только вам видео записал на пустом проекте и виртуальном контроллере, что даже с полной загрузкой эффект тот же (уже выкладывать не буду)
При очистке все действительно заработало, спасибо
Приличный баг.
Евгений Кислов
07.06.2024, 12:58
Приличный баг.
Соглашусь, что степень серьезности бага каждый пользователь оценивает по собственным критериям.
Наблюдаю у себя и коллег привычку на автоматизме выполнять "очистить все" перед каждой загрузкой проекта.
Справедливо, что у других пользователей ее может не быть.
В любом случае - в более поздних версиях CODESYS этот баг исправлен.
Здравствуйте! Регулирование температурой самого простого кондиционера. Хотим попробовать реализовать с выбором уставки, например от 2 градусов до 45. Задание все с панели СПК107 с кнопок (выбор уставок). Укажите или подскажите готовый интерфейс из примеров или видео самый простой пример (например в описании Визуализации - самый простой вариант: просто выбор значений с привязанных графических примитивов) для выбора уставки. Не большой пример, но рабочий. Регулировать будем как у ТРМ (диапазон вкл/выкл – когда выше верхней границы или ниже). Гистерезис – если есть опробованный готовый вариант примера (гистерезис от 2-х до 3-град, рассмотрим любой готовый пример). Более менее рабочий вариант, если можно, а то бывают учебные варианты в инете и почему-то часто в методичках пишут, что нельзя использовать как рабочий.
edvard_munch
07.06.2024, 13:33
Соглашусь, что степень серьезности бага каждый пользователь оценивает по собственным критериям.
Наблюдаю у себя и коллег привычку на автоматизме выполнять "очистить все" перед каждой загрузкой проекта.
Справедливо, что у других пользователей ее может не быть.
В любом случае - в более поздних версиях CODESYS этот баг исправлен.
Радует что баг исправлен.
Работаю в версии что заявлена как рабочая для ПЛК200/210. Обновляться же не стоит?
Евгений Кислов
07.06.2024, 13:33
Радует что баг исправлен.
Работаю в версии что заявлена как рабочая для ПЛК200/210. Обновляться же не стоит?
Да, не стоит.
edvard_munch
07.06.2024, 17:01
Не пойму, как грамотно возводить и сбрасывать переменную для записи/чтения по Модбас
Вроде бы раньше получалось и так. Но не выходит сейчас
Вот один цикл ПЛК. Переменные внутри условий не возводятся. Или они успевают перезаписаться быстро в том же цикле? И получается что не возвелись.
Но команды модбаса по крайней мере не активируются таким образом, только если убрать две строчки, которые за пределами IF
Если коротко, при изменении переменной в поле на hmi панели, там же выставляется бит в регистре, за которым циклически следит ПЛК.
При появлении сигнала об изменении этого бита в 1, ПЛК забирает значение с панели.
И ПЛК сам сбрасывет этот бит в панели.
В другой более крупной программе это у меня работало. Простой сброс в FALSE в том же цикле ПЛК.
IF pumpType = 0 THEN
IF pumpTypeValueChangedByOperatorRead THEN
readPumpTypeValueTrigger := TRUE;
pumpType:= pumpTypeFromHMI;
pumpTypeValueChangedByOperatorWrite := FALSE;
resetPumpTypeValueTrigger := TRUE;
IF pumpType = PUMP_TYPE.nitrogen THEN
minStartPumpTemperature:= s_minStartPumpTemperatures.nitrogen;
END_IF
END_IF
END_IF
readPumpTypeValueTrigger := FALSE;
resetPumpTypeValueTrigger := FALSE;
Очень простой наверное вопрос для тех кто в теме ПЛК.
kondor3000
07.06.2024, 17:37
Не пойму, как грамотно возводить и сбрасывать переменную для записи/чтения по Модбас
Вроде бы раньше получалось и так. Но не выходит сейчас
Вот один цикл ПЛК. Переменные внутри условий не возводятся. Или они успевают перезаписаться быстро в том же цикле? И получается что не возвелись.
Но команды модбаса по крайней мере не активируются таким образом, только если убрать две строчки, которые за пределами IF
Если коротко, при изменении переменной в поле на hmi панели, там же выставляется бит в регистре, за которым циклически следит ПЛК.
При появлении сигнала об изменении этого бита в 1, ПЛК забирает значение с панели.
И ПЛК сам сбрасывет этот бит в панели.
В другой более крупной программе это у меня работало. Простой сброс в FALSE в том же цикле ПЛК.
Очень простой наверное вопрос для тех кто в теме ПЛК.
Для чтения бит вообще не нужен, достаточно циклического опроса.
Бит записи должен быть TRUE, не менее одного цикла ПЛК. Ваш код работать не будет, поставьте хотя бы строку сброса, перед началом конструкции IF, тогда сброс произойдёт в следующем цикле ПЛК.
edvard_munch
07.06.2024, 19:53
Для чтения бит вообще не нужен, достаточно циклического опроса.
Бит записи должен быть TRUE, не менее одного цикла ПЛК. Ваш код работать не будет, поставьте хотя бы строку сброса, перед началом конструкции IF, тогда сброс произойдёт в следующем цикле ПЛК.
Циклически конечно проще, но а если считать нужно вообще всего один раз? Вообще только при первом старте ПЛК (даже не цикле).
Есть смысл постоянно читать?
Суть понял про сброс, спасибо
Но одна переменная у меня не сбрасывается и я не пойму почему, вот она в начале цикла должна уходить в False. Но постоянно True.
76372
МихаилГл
07.06.2024, 19:57
Потому что отображается всегда последний её статус а ниже он как раз в истине...
Fds:= true
Fds:= false
Fds:= true
В статусе у всех будет последнее присвоение, true
kondor3000
07.06.2024, 20:25
Циклически конечно проще, но а если считать нужно вообще всего один раз? Вообще только при первом старте ПЛК (даже не цикле).
Есть смысл постоянно читать?
Но одна переменная у меня не сбрасывается и я не пойму почему, вот она в начале цикла должна уходить в False. Но постоянно True.
Выше уже ответили, этой переменной ниже по программе присвоено TRUE. Так она никогда не сбросится.
Если надо прочитать один раз, то то проще сравнить переменную с 0, если она =0, то выставить бит чтения, иначе сбросить бит.
МихаилГл
07.06.2024, 20:31
Выше уже ответили, этой переменной ниже по программе присвоено TRUE. Так она никогда не сбросится.
Если надо прочитать один раз, то то проще сравнить переменную с 0, если она =0, то выставить бит чтения, иначе сбросить бит.
Не, она сбрасывается, просто компилятор или как его, показывает переменные только после всего цикла. По идее в кодесисе вроде есть пошаговое отображение. Можно его попробовать.
Если бы между присвоениями фальши и истины был бы код, учитывающий фальш, он бы работал. Это особенности среды, и я не встречал контроллеров с другим отображением.
kondor3000
07.06.2024, 21:34
Не, она сбрасывается, просто компилятор или как его, показывает переменные только после всего цикла. По идее в кодесисе вроде есть пошаговое отображение. Можно его попробовать.
Если бы между присвоениями фальши и истины был бы код, учитывающий фальш, он бы работал. Это особенности среды, и я не встречал контроллеров с другим отображением.
Какой толк от сброса на 2 строки кода, если ему переменную надо сбросить совсем ?
edvard_munch
07.06.2024, 22:41
Выше уже ответили, этой переменной ниже по программе присвоено TRUE. Так она никогда не сбросится
Почему не сбрасывается? Должна же. В каждом цикле, сброс и возведение.
Просто по другим переменным я видел прям в живую как менялось false на true в пределах одного цикла.
А тут и запись должна происходить, а ее не было и изменения переменной я не видел глазами.
Возможно потому что
Если бы между присвоениями фальши и истины был бы код, учитывающий фальш, он бы работал
Ну ладно, это я потом еще посмотрю проверю. Пока оборудование не под рукой.
Можно полробовать этот бит возвести только в первом цикле, дальше сбросить.
Ибо запись этой переменной нужна один раз, из retain в плк на панель, там в макросе идет проверка по данному параметру, если 0, то показывается окно выбора, выбирается параметр и данные нужно с панели забрать на плк
В следующих циклах уже выбор не предлагать (и при следующих включениях контроллера без сброса retain), а показывать основное окно. Ибо панель должна получать параметр отличный от 0.
Я немножко с алгоритмом запутался получается, не во всех случаях работает адекватно (смотрю например, чтобы работало при перезагрузке контроллера отдельно от панели и наоборот). Перекидывание переменных туда-сюда, куча триггеров
До этого было сделано подобное, но проще. Есть retain переменная в ПЛК, ее нужно при старте записать в панель и дальше чтоб на панели можно было ее поменять и отправить обратно в retain ПЛК. При следующих запусках уже соответсвенно из ПЛК грузить в панель измененный вариант.
Это все работало отлично. В панель писал в первом цикле программы ПЛК или по флагу о перезагрузке панели, макрос на секунду выставлял флаг, читал его контроллером.
Сейчас для другого случая оставил в макросе только подъем бита, снимаю его уже командой из ПЛК по факту выполнения нужных операций.
Пока все в комплексе не совсем работает.
Спасибо за подсказки всем. Буду разбираться, докручивать.
kondor3000
07.06.2024, 22:56
Можно полробовать этот бит возвести только в первом цикле, дальше сбросить.
Ибо запись этой переменной нужна один раз, из retain в плк на панель, там в макросе идет проверка по данному параметру, если 0, то показывается окно выбора, выбирается параметр и данные нужно с панели забрать на плк
В следующих циклах уже выбор не предлагать (и при следующих включениях контроллера без сброса retain), а показывать основное окно. Ибо панель должна получать параметр отличный от 0.
Я немножко с алгоритмом запутался получается, не во всех случаях работает адекватно (смотрю например, чтобы работало при перезагрузке контроллера отдельно от панели и наоборот). Перекидывание переменных туда-сюда, куча триггеров
Спасибо за подсказки всем. Буду разбираться, докручивать.
Это горе от ума))) Зачем вы всё усложняете?
Храните уставку в панели, в PFW. При включении считываете в оперативный регистр PSW, если надо, там же и меняете пока идёт процесс.
При нажатии кнопки Стоп, например в конце смены, записываете уставку обратно в PFW. Запись делать желательно не чаще нескольких раз в день.
Никаких одноразовых считываний, никаких триггеров и подобной дребедени вообще не надо.
Или вообще, можно читать уставку циклически и не париться совсем, а упор лучше сделать на групповое чтение, запись по 120 регистров за раз, например массивом.
МихаилГл
08.06.2024, 06:42
Возможно потому что
Если бы между присвоениями фальши и истины был бы код, учитывающий фальш, он бы работал
Код между присвоениями будет работать, но вы всё равно будете видеть false...
Asd:= false
If not asd then fff:= fff+1
Asd:= true
Но переменная Asd в редакторе будет false, я про это писал.
Добрый день. После запуска проекта на выполнение, (ALT+F8) codesys выдает сообщение об ошибке: "неверный пакет результатов". Компиляция проходит без ошибок. Кто знает, где копать? Заранее спасибо. PS: результат один и тот же, если действующий проект заменить бэкапом, который точно рабочий.
Сегодня тоже вылезло сообщение "неверный пакет результатов".
Как устранить эту ошибку?
Евгений Кислов
11.06.2024, 06:09
Сегодня тоже вылезло сообщение "неверный пакет результатов".
Как устранить эту ошибку?
Добрый день.
Каким образом организовано подключение между вашим ПК и контроллером?
В какой момент появилось это сообщение?
edvard_munch
11.06.2024, 15:59
Подскажите, что не так может быть с настройками, что запись задания частоты не проходит? Нажимаю Ctrl+F7 естественно.
76483
Связь по Модбас есть, еще в самом частотнике выставил такие настройки
https://owen.ru/uploads/383/primer_9_udalennoe_upravlenie.pdf
kondor3000
11.06.2024, 17:20
Подскажите, что не так может быть с настройками, что запись задания частоты не проходит? Нажимаю Ctrl+F7 естественно.
76483
Связь по Модбас есть, еще в самом частотнике выставил такие настройки
https://owen.ru/uploads/383/primer_9_udalennoe_upravlenie.pdf
Разве нет ограничения 50 Гц ? Вы пытаетесь 51 Гц записать
Мария2508
12.06.2024, 23:19
Долгое время не получалось изменить язык, в итоге нашла ошибку, при установке нет выбора complete, полностью все удаляла и переустанавливала несколько раз с сайта овен, подскажите пожалуйста что делать?
МихаилГл
13.06.2024, 04:44
Долгое время не получалось изменить язык, в итоге нашла ошибку, при установке нет выбора complete, полностью все удаляла и переустанавливала несколько раз с сайта овен, подскажите пожалуйста что делать?
Язык интерфейса?
Вот так не пробовали? (сам не пробовал, т.к. всегда все нормально ставилось...)
76532
PS Tools/Options.../International Settings - вроде работает...
Евгений Кислов
13.06.2024, 06:22
Долгое время не получалось изменить язык, в итоге нашла ошибку, при установке нет выбора complete, полностью все удаляла и переустанавливала несколько раз с сайта овен, подскажите пожалуйста что делать?
Добрый день.
Переустановите CODESYS в точности по видео:
https://youtu.be/3KcJWZEVXCg?si=p4zs9mCdr9V0tkBL
Мария2508
13.06.2024, 06:30
Извините, что не уточнила, язык программирования, только ST
ВладОвен
13.06.2024, 10:33
Здравствуйте.
Хочу реализовать такой подход:
При нажатии на одном из экранов визуализации на клавишу должна переключиться визуализация и на ней выбраться нужная вкладка.
Подскажите, как это реализовать.
Спасибо.
Евгений Кислов
13.06.2024, 10:35
Здравствуйте.
Хочу реализовать такой подход:
При нажатии на одном из экранов визуализации на клавишу должна переключиться визуализация и на ней выбраться нужная вкладка.
Подскажите, как это реализовать.
Спасибо.
Добрый день.
1. О какой именно клавише речь? О кнопке на экране визуализации?
2. Что вы называете термином "вкладка"?
ВладОвен
13.06.2024, 10:47
Добрый день.
1. О какой именно клавише речь? О кнопке на экране визуализации?
2. Что вы называете термином "вкладка"?
Да. У меня есть экран со вкладками. Их 12 штук.
Я могу их переключать, нажимая по заголовку вкладки.
И есть 12 клавиш где-то на другом экране.
Я хочу, что-бы при нажатии на те клавиши сразу переключаться на этот экран и на нужную вкладку.
С экраном понятно как реализовать. А как реализовать открытие нужной вкладки?
76546
Евгений Кислов
13.06.2024, 10:50
Да. У меня есть экран со вкладками. Их 12 штук.
Я могу их переключать, нажимая по заголовку вкладки.
И есть 12 клавиш где-то на другом экране.
Я хочу, что-бы при нажатии на те клавиши сразу переключаться на этот экран и на нужную вкладку.
С экраном понятно как реализовать. А как реализовать открытие нужной вкладки?
76546
76547
https://content.helpme-codesys.com/en/CODESYS%20Visualization/_visu_dlg_input_configuration.html
Пытаюсь реализовать перезапуск для "обхода" ограничения по времени работы нелицензированной CODESYS Control for Linux SL.
1 Пробовал на Linux в cron указать .sh файл с прописанной командой systemctl restart codesyscontrol.service + 2 пустых строки - не перезапускается;
пробовал в самом cron эту команду указать (вместо указания путь/имя скрипта) - не перезапускается;
если ввожу вручную systemctl restart codesyscontrol.service - перезапускается. Занимает примерно 3-4 сек и связь с ним пропадает, необходимо переподключаться.
2 После выполнил по инструкции https://ftp.owen.ru/CoDeSys3/98_Books/RaspberryCodesysV3Faq.pdf#page=16
Нигде, никак не могу заметить что происходит "перезапуск" или "сбой" в тех.процессе. В Мониторинге даже значения в столбце "Счетчик циклов" по всем задачам продолжали накапливать значения без сброса и приостановок.
Подскажите пожалуйста что не так делаю или кто как это решал?
указать .sh файл с прописанной командой systemctl restart codesyscontrol.service + 2 пустых строки - не перезапускается;
не хватает предложения, что запустили в ручную данный файл и всё перегружается/неперегружается
W1nn1ep00h
14.06.2024, 15:05
День добрый. Напомните пожалуйста. В функциональном блоке всегда входные переменные (var_input) сохраняли последнее значение , при обращении к ним(Так как первый раз работаю с ПЛК200-02-CS + Codesys 3.5)?
Т.е. например у меня в ФБ объявлена входная переменная со значением по-умолчанию :
var_input
a : bool := False;
end_var
При обращении к ФБ , я указываю для нее состояние :
FB(a := TRUE);
А потом, я не указываю ее в вызове ФБ , в другом месте программы и не в одном цикле :
FB();
Какое значение будет иметь входная переменная а? Последнее(т.е. a := TRUE) или дефолтное при объявлении(a := False)?
не хватает предложения, что запустили в ручную данный файл и всё перегружается/неперегружается
Извините не понял, вроде указано понятно:
"пробовал в самом cron эту команду указать (вместо указания путь/имя скрипта) - не перезапускается;
если ввожу вручную systemctl restart codesyscontrol.service - перезапускается."
kondor3000
14.06.2024, 19:05
День добрый. Напомните пожалуйста. В функциональном блоке всегда входные переменные (var_input) сохраняли последнее значение , при обращении к ним(Так как первый раз работаю с ПЛК200-02-CS + Codesys 3.5)?
Т.е. например у меня в ФБ объявлена входная переменная со значением по-умолчанию :
Какое значение будет иметь входная переменная а? Последнее(т.е. a := TRUE) или дефолтное при объявлении(a := False)?
Если вы не меняли больше нигде состояние входа, то оно останется a := TRUE
Работать будет не внутреннее присвоение, а внешнее, при вызове блока.
W1nn1ep00h
16.06.2024, 18:06
Если вы не меняли больше нигде состояние входа, то оно останется a := TRUE
Работать будет не внутреннее присвоение, а внешнее, при вызове блока.
Спасибо. Просто после вызова с a:= true, я вызываю ее уже без данной переменной и думал, что присвоится по умолчанию, если входная переменная не была объявлена в вызове принудительно
ВладОвен
18.06.2024, 11:22
Привет.
Подскажите, есть ли способ подсчитать контрольную сумму структуры?
Я хочу записать структуру в файл и добавить к этому еще и контрольную сумму, чтобы потом быть уверенным в правильности данных.
Евгений Кислов
18.06.2024, 11:24
Привет.
Подскажите, есть ли способ подсчитать контрольную сумму структуры?
Я хочу записать структуру в файл и добавить к этому еще и контрольную сумму, чтобы потом быть уверенным в правильности данных.
Добрый день.
https://content.helpme-codesys.com/en/libs/CAA%20Memory/Current/CAA_Memory/Checksum/fld-Checksum.html
sco-scorpion
18.06.2024, 14:08
Добрый день.
Помогите разобраться со следующей ситуацией:
имеется СПК110 + МБ210-212, на вход подключены концевики (NC). В программе у меня соответственно проходит опрос входов и если нету сигнала выдает ошибку . И проблема в том что при запуске контроллер считает что на входах ничего нету и соответственно выдает ошибку. Так же пробовал сбрасывать при проходе первого цикла, но тоже не помогло. Подскажите как лучше сделать или нужно поставить таймер сброса с задержкой при включении на 1 минуту ?
Назаров Александр
18.06.2024, 15:42
Возник глюк. При формировании Каналов ModBus, последний из добавленных был перенесен выше соответствующей кнопкой. При этом вкладка каналы отображается корректно. Но на вкладке Привязки этот последний канал задублировался. Удалить его нечем. Поможет только Удаление конфигурации?
7669676697
Евгений Кислов
18.06.2024, 16:11
Возник глюк. При формировании Каналов ModBus, последний из добавленных был перенесен выше соответствующей кнопкой. При этом вкладка каналы отображается корректно. Но на вкладке Привязки этот последний канал задублировался. Удалить его нечем. Поможет только Удаление конфигурации?
7669676697
К сожалению, да.
Назаров Александр
18.06.2024, 16:37
К сожалению, да.
Существует список того чего не надо делать из того что доступно в CDS3?
Евгений Кислов
18.06.2024, 16:52
Существует список того чего не надо делать из того что доступно в CDS3?
Cписка не существует. Можете установить свежую версию плагина Modbus - в нем эту ошибку должны были исправить:
https://ftp.owen.ru/CoDeSys3/01_CODESYS/plugins/CODESYS%20Modbus%204.4.0.0.package
Cоответственно, потребуется использовать свежие версии Modbus-компонентов, которые входят в состав этого плагина.
Здравствуйте. подскажите пожалйста. как можно на плк 210-14 (новый образец) использовать энкодер ABZ, в конфигурации плк Leftside не нашел таких настроек как были на плк 210-04. как в данной ситуации быть? ведь мне нужен счет как по часовой так и против часовой то есть и на увеличение и на уменьшение. а в конфигурации только счетчики быстрых входов
Евгений Кислов
20.06.2024, 06:06
Здравствуйте. подскажите пожалйста. как можно на плк 210-14 (новый образец) использовать энкодер ABZ, в конфигурации плк Leftside не нашел таких настроек как были на плк 210-04. как в данной ситуации быть? ведь мне нужен счет как по часовой так и против часовой то есть и на увеличение и на уменьшение. а в конфигурации только счетчики быстрых входов
Добрый день.
К сожалению, в линейке ПЛК210-1x поддержки энкодеров не будет.
МихаилГл
20.06.2024, 06:51
Здравствуйте. подскажите пожалйста. как можно на плк 210-14 (новый образец) использовать энкодер ABZ, в конфигурации плк Leftside не нашел таких настроек как были на плк 210-04. как в данной ситуации быть? ведь мне нужен счет как по часовой так и против часовой то есть и на увеличение и на уменьшение. а в конфигурации только счетчики быстрых входов
Используйте программный:
https://owen.ru/forum/showthread.php?t=39812
Здравствуйте. столкнулся с такими трудностями для плк 210 создаю программу, вернее можно сказать копирую написанную программу для омрона. но в програмной среде для плк омрона часто используется система двоично-десятичная и мне чтобы минимизировать ручную работу для плк 210, подскажите какие либо библиотеки по работе с двочино десятичной системой, интересуют операции сложения умножения,вычитания для BCD
Используйте программный:
https://owen.ru/forum/showthread.php?t=39812
это не плк210
МихаилГл
20.06.2024, 15:52
это не плк210
Вы невнимательны, там в диалоге я привёл код на кодесисе 3.5, который я использую в плк210
Вы невнимательны, там в диалоге я привёл код на кодесисе 3.5, который я использую в плк210
сколько килогерц ловит такой код? в плк 110 там есть прерывание, а вплк 210?????????????
sssssaaaaabbbbb
21.06.2024, 08:14
Здравствуйте коллеги! Опишу ситуацию. Есть функциональный блок. Есть несколько экземпляров этого блока. Вопрос: можно ли к каждому экземпляру приделать отдельных функций?(я слышал, что такое возможно сделать методами). Если есть положительный ответ, то буду благодарен примеру, как это реализовывается. Может и видео есть какое, на просторах интернета не нашел.
sssssaaaaabbbbb Мне интересно то, что ты хочешь сделать, но я немного не понимаю тебя.
Расскажи, как ты это видишь. Я понял так, что я разных экземплярах одного FB должна быть разная начинка.
Да, Методы в FB есть - но так как FB ОДИН РАЗ создаётся в виде исходного кода (ну, самого FB), то методы появятся в каждом экземпляре FB.
Да, ты можешь их где-то вызывать, а где-то - не вызывать. Но это будет один и тот же FB всё равно.
(я слышал, что такое возможно сделать методами). Если есть положительный ответ, то буду благодарен примеру, как это реализовывается. Может и видео есть какое, на просторах интернета не нашел.
это методы не ФБ, а через ООП
должно помочь https://owen.ru/forum/showthread.php?t=28167&p=381247&viewfull=1#post381247
sssssaaaaabbbbb
21.06.2024, 09:22
sssssaaaaabbbbb Мне интересно то, что ты хочешь сделать, но я немного не понимаю тебя.
Расскажи, как ты это видишь. Я понял так, что я разных экземплярах одного FB должна быть разная начинка.
Да, Методы в FB есть - но так как FB ОДИН РАЗ создаётся в виде исходного кода (ну, самого FB), то методы появятся в каждом экземпляре FB.
Да, ты можешь их где-то вызывать, а где-то - не вызывать. Но это будет один и тот же FB всё равно.
У меня множество ФБ и в них нужно подабавлять разные дополнительные функции - каждому экземпляру добавить разное.
Наверное это можно сделать с помощью интерфейсов, пока не понял как.
Я тоже не совсем понял. Попробую просортировать мысли, как я представляю:
* Если код (реализация) FB должна быть одна и та же, но разные методы у экземпляров - то хз как
* Если (как capzap говорит) надо иметь разные экземпляры РАЗНЫХ FB - то тоже наследовать текущий твой и дописать туда что-то дополнительно. Но FB (которые унаследованы) всё равно будут разные под разные функции.
sssssaaaaabbbbb
21.06.2024, 13:42
Я тоже не совсем понял. Попробую просортировать мысли, как я представляю:
* Если код (реализация) FB должна быть одна и та же, но разные методы у экземпляров - то хз как
* Если (как capzap говорит) надо иметь разные экземпляры РАЗНЫХ FB - то тоже наследовать текущий твой и дописать туда что-то дополнительно. Но FB (которые унаследованы) всё равно будут разные под разные функции.
Взял как пример эту статью https://prolog-plc.ru/art7 , не знаю что получится. Пока в ней тоже не могу все разом понять. Хотя по этой статье сделал проект, все работает, но как , теперь предстоит разобраться тут проект https://transfiles.ru/iqo8t
Назаров Александр
21.06.2024, 13:47
Всем добрый день! В визуализации есть поле в которое считывается в цикле регистр Com порта. Необходимо при смене значения в визуализации изменить значение в регистре путем записи по стробу. Что делаю: В визуализации текстовая переменная - входной регистр. В диалоге OnMouseClick в качестве вывода использую "исп. другую переменную" - регистр на запись. Запись по стробу через Iodrvmodbus.ModbusChannel.
Вопрос: как получить строб при выходе из редактирования значения регистра?
Евгений Кислов
21.06.2024, 13:54
Всем добрый день! В визуализации есть поле в которое считывается в цикле регистр Com порта. Необходимо при смене значения в визуализации изменить значение в регистре путем записи по стробу. Что делаю: В визуализации текстовая переменная - входной регистр. В диалоге OnMouseClick в качестве вывода использую "исп. другую переменную" - регистр на запись. Запись по стробу через Iodrvmodbus.ModbusChannel.
Вопрос: как получить строб при выходе из редактирования значения регистра?
Добрый день.
В свежих версиях CODESYS есть событие OnValueChanged.
Можете в нем записать TRUE в переменную, привязанную ко входу xExecute ФБ Iodrvmodbus.ModbusChannel, а после xDone или xError сбросить ее в FALSE.
Belletein
21.06.2024, 14:07
Добрый день. Подскажите, почему Codesys не видит библиотеку VisuElems?767767677776778
Евгений Кислов
21.06.2024, 14:08
Добрый день. Подскажите, почему Codesys не видит библиотеку VisuElems?767767677776778
Добрый день.
Видимо, при создании этого проекта использовался плагин визуализации 4.2.0.0 (а в дистрибутив V3.5 SP17 Patch 3 входит плагин визуализации 4.1.1.0).
Belletein
21.06.2024, 14:10
Добрый день.
Видимо, при создании этого проекта использовался плагин визуализации 4.2.0.0 (а в дистрибутив V3.5 SP17 Patch 3 входит плагин визуализации 4.1.1.0).
а его можно обновить? Проект делал другой программист
sssssaaaaabbbbb
21.06.2024, 15:51
Подскажите пожалуйста, как отправить переменную через интефейс в функциональный блок? https://ibb.co/dPYrGqM
Назаров Александр
21.06.2024, 16:19
Добрый день.
В свежих версиях CODESYS есть событие OnValueChanged.
Можете в нем записать TRUE в переменную, привязанную ко входу xExecute ФБ Iodrvmodbus.ModbusChannel, а после xDone или xError сбросить ее в FALSE.
Именно так и делал. Но PLC_PRG.xExecute всегда равна false76781
Евгений Кислов
21.06.2024, 20:55
Именно так и делал. Но PLC_PRG.xExecute всегда равна false76781
Выложите, пожалуйста, простейший (один ПЛК, один экран, одно поле ввода) проект, в котором я смогу повторить вашу проблему
Евгений Кислов
21.06.2024, 20:57
а его можно обновить? Проект делал другой программист
Технически можно - через CODESYS Installer:
https://ftp.owen.ru/CoDeSys3/01_CODESYS/plugins/CODESYS%20Visualization%204.2.0.0.package
Но для начала я бы рекомендовал связаться с другим программистом и попросить у него совета по вашей ситуации.
Назаров Александр
22.06.2024, 00:08
Выложите, пожалуйста, простейший (один ПЛК, один экран, одно поле ввода) проект, в котором я смогу повторить вашу проблему
Это просто еще один ГЛЮК. Вернее два.
1. OnValueChanged не работает у объекта помещенного в элемент управления "ГРУППА". Что у меня и было сделано.
2. При выборе свойства "Записаться переменную" и "Исп. другую переменную" отличной от "ПУСТО", а затем обратно к "Использовать текстовую выходную переменную" в свойствах объекта все равно остается "Другая ... переменная", т.е селектор выбора переменных не работает при наличии переменной в поле.
76793 76794
PS При группировании объектов свойство OnValueChanged тоже теряется
Евгений Кислов
22.06.2024, 10:33
Опыт показывает, что использовать в визуализации группировку и элемент "Группа" не стоит - с ними регулярно проявляются какие-то баги (их исправляют, и появляются новые).
Конкретно ваш баг, возможно, исправлен в плагине визуализации 4.6.0.0 (VIS-3647 | Bug | Visu, OnValueChanged: Fix functionality for supported nested elements (https://www.codesys.com/fileadmin/data/Images/System/Releaseinformation/Release-Notes-CODESYS-Visualization-4600.html)).
Спорягин Кирилл
26.06.2024, 13:44
День добрый.
Имею панель СПК110 2019 года выпуска.
Можно ли на нее поставить прошивку 2.4.0923.1000 (SP17)?
И как обновлять прошивку?
Можно сразу накатывать 2.4.0923.1000 или нужно какую-то промежуточную версию устанавливать?
Евгений Кислов
26.06.2024, 13:45
День добрый.
Имею панель СПК110 2019 года выпуска.
Можно ли на нее поставить прошивку 2.4.0923.1000 (SP17)?
И как обновлять прошивку?
Можно сразу накатывать 2.4.0923.1000 или нужно какую-то промежуточную версию устанавливать?
Добрый день.
Все ответы здесь:
https://owen.ru/forum/showthread.php?t=36852
ВладОвен
03.07.2024, 23:22
Здравствуйте.
Подскажите, а есть ли способ поиска подстроки в строке (типа OwenStringUtils.WFindSubstringPosAfterN от ОВЕНа),
но с wstring длинной 16000 символов? (а не 255 символов).
Спасибо.
Евгений Кислов
04.07.2024, 06:11
Здравствуйте.
Подскажите, а есть ли способ поиска подстроки в строке (типа OwenStringUtils.WFindSubstringPosAfterN от ОВЕНа),
но с wstring длинной 16000 символов? (а не 255 символов).
Спасибо.
Добрый день.
См. функцию StrFindW в библиотеке StringUtils.
Здравствуйте уважаемые форумчане. Возник вопрос. Можно ли как то поменять адрес модуля расширения или датчика(например ПД150) без использования специальной утилиты для изменения конфигурации? каким образом изменить адрес modbus rtu модуля ввода/вывода через спк?(т.е. мне нужно нажать кнопку и прочитать текущий адрес modbus rtu модуля, после чего оно будет в текстовом поле, потом я хочу изменить его и чтобы он записался в модуле, как читать адреса модулей на самой панели PD150.SlaveAddress, а как именно с модуля)
Евгений Кислов
04.07.2024, 09:14
Здравствуйте уважаемые форумчане. Возник вопрос. Можно ли как то поменять адрес модуля расширения или датчика(например ПД150) без использования специальной утилиты для изменения конфигурации? каким образом изменить адрес modbus rtu модуля ввода/вывода через спк?(т.е. мне нужно нажать кнопку и прочитать текущий адрес modbus rtu модуля, после чего оно будет в текстовом поле, потом я хочу изменить его и чтобы он записался в модуле, как читать адреса модулей на самой панели PD150.SlaveAddress, а как именно с модуля)
Добрый день.
В ПД150 значение его адреса хранится в holding-регистре 0x0007.
После записи в него нового значения адреса нужно записать значение 129 в регистр 0x000F, чтобы новое значение адреса было применено и сохранено в энергонезависимой памяти датчика.
Здравствуйте уважаемые форумчане. Возник вопрос. Можно ли как то поменять адрес модуля расширения или датчика(например ПД150) без использования специальной утилиты для изменения конфигурации? каким образом изменить адрес modbus rtu модуля ввода/вывода через спк?(т.е. мне нужно нажать кнопку и прочитать текущий адрес modbus rtu модуля, после чего оно будет в текстовом поле, потом я хочу изменить его и чтобы он записался в модуле, как читать адреса модулей на самой панели PD150.SlaveAddress, а как именно с модуля)
В документации на конкретный модуль или датчик и смотрите.
Вот для ПД150 например:
77029
В документации на конкретный модуль или датчик и смотрите.
Вот для ПД150 например:
77029
Извините если туплю. Я не совсем понимаю как мне обратиться к модулю. Получается чтобы мне прочитать адрес модуля мне нужно используя библиотеку owencommunication перебрать все адреса и прочитать все что есть в модуле и от туда взять сетевой адрес, а потом как его записать в него? Просто я не совсем даже понимаю как реализовать сканирование сети и последующее изменение адреса на самом модуле
Извините если туплю. Я не совсем понимаю как мне обратиться к модулю. Получается чтобы мне прочитать адрес модуля мне нужно используя библиотеку owencommunication перебрать все адреса и прочитать все что есть в модуле и от туда взять сетевой адрес, а потом как его записать в него? Просто я не совсем даже понимаю как реализовать сканирование сети и последующее изменение адреса на самом модуле
Чтобы задавать правильные вопросы уже нужны какие-то базовые знания об использовании протокола Modbus.
Почитайте здесь (https://owen.ru/forum/showthread.php?t=23897), чтобы хоть с чего-то начать
ВладОвен
04.07.2024, 11:58
Привет.
Я получаю от ВЕБ-сервера строку типа wstring длинной около 15Кб. Я создал строку wstring(16000).
Потом я пытаюсь ее сохранить к другую локальную строку того же типа.
Какую длину я должен поставить для функции копирования MEM.MemMove? 16000 или 32000?
77037
Я думал, что 32000, т.к. каждый символ в wstring - это 2 байта.
Для эксперимента я поставил туда 16000. Думал, что скопируется только пол строки.
Но функция поиска STU.StrFindW находит на 15000-15500 (это 30000-31000 байт) участке нужные мне символы!.. Как так?
Мне хочется ругаться и плёткой, плёткой.
Чтобы программы потом не глючили, НЕЛЬЗЯ указывать прямой размер данных в цифрах!
Надо использовать SIZEOF. Тогда всё будет правильно: размер буфера в байтах.
ВладОвен
04.07.2024, 12:21
Да ладно, погоди ты с плеткой. Вот еще прикол:
1. Получаю от сервера ответ 200 (iStatus).
2. Получаю длину ответа от сервера - 15162 байта (diLen).
3. Копирую ответ от сервера в переменную wsResult : wstring(16000). Но! Копирую только 7000 байт.
4. Ищу в этой строке подстроку wsOlolo := "2020". Этот фрагмент внизу ВЕБ-страницы сервера (в подвале).
5. Получаю успешный поиск на позиции 15109!
Перед запуском делал сброс, что-бы все переменные были пустыми.
77039
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot