Добрый день. Подскажите, можно ли в Codesys v3.5 SP17 использовать для опроса модулей МВ210 стандартный компонент codesys Modbus TCP master, а для связи с панелью библиотеку owen communication в режиме modbus tcp slave одновременно?
Вид для печати
Добрый день. Подскажите, можно ли в Codesys v3.5 SP17 использовать для опроса модулей МВ210 стандартный компонент codesys Modbus TCP master, а для связи с панелью библиотеку owen communication в режиме modbus tcp slave одновременно?
Здравствуйте, помогите пожалуйста найти ПИД регулятор для управления аналоговой Задвижкой (0-10В или 4-20 мА). Изучал документацию на APID_POS_VALV, но насколько понял этот ФБ управляет трехпозиционным клапаном (Команда открыть/Закрыть). Я по мануалам в интернете написал свой ПИД регулятор для аналогового управления задвижкой и его наладил на объекте, но у меня задвижка находится в неустойчивом равновесии поддерживая давление от 4.9 атм до 5.1 атм. Насколько я понимаю это не очень хорошо для исполнительного механизма. Старшие и более опытные товарищи говорят, что задвижка должна выйти на какое то стабильное положение для определенного расхода воздуха и в нем находиться. Предполагаю, что для этого нужен алгоритм с автонастройкой коэффициентов.
Стабильного состояния вы можете добиться и на своем алгоритме, главное подрбрать коэффициенты...
Добрый день.
Такой вопрос: библиотека CmpOwenPidRegs, ФБ APID_POS_VALV. Вход "SM" - он как-то должен влиять на выходы "LESS" и "MORE", или он чисто косметический? Я подключил имитатор сигнала 0..10В к модулю ввода для имитации обратной связи КЗР, а ФБ как будто вообще его не замечает, выходы управляются совершенно одинаково что при 100% обратной связи, что 0%.
Я бы хотел в итоге попробовать какой то стандартный ПИД регулятор, чтобы добиться такого режима управления. В принципе, готов приобрести ТРМ 10 или ТРМ 12 для этой цели. Может быть поможете с выбором? Мне нужно управлять клапаном с аналоговым управлением (скрин во вложении) Вложение 84949.
Предполагаю, что мне нужно приобрести ТРМ-12-Щ1-У2-УР-RS. К 1 выходу я должен подключить сам привод, а к 1 входу датчик давления 4..20 мА
Добрый день.
Может быть кто подскажет, в каком направлении копать:
Есть проект на СПК, заказчик хочет подключить его к OwenCloud. Проблема заключается в том, что у меня очень многие данные собраны в структуры, которые им не поддерживаются.
Сейчас я нахожусь в раздумьях, как это дело побороть, возможно приделать какой-нибудь костыль. От структур отказываться никак нельзя, потому что они кочуют из проекта в проект и на них завязаны многие мои типовые ФБ.
Пока единственным вариантом выглядит создание отдельного списка переменных для ОвенКлауд, с зеркалированием в них данных из структур. Есть ли какой-то простой способ подобного?
Ну формально можно и структуру туда запихнуть, но обычно там слишком много избыточных данных. Я создаю отдельную область памяти куда копирую через библиотеки работы с памятью или обычным копированием данные в нужном объеме и в нужной последовательности.
За OwenCloud точно не скажу, до OPCUA клиента доходят, но там уровень вложенности ограничен (возможно проблема моего клиента, а не CoDeSys). Возможно Cloud и не умеет.
Я же выше писал...
Простой вариант:
Иногда удобнее:Код:rVarMir:= sStruct.rVarStr;
А вот если переменные надо редактировать и там и там то тогда уже сильно сложнее.Код:MEM.MemMove( pSource:= ADR(sStruct.rVarStr),
pDestination:= ADR(rVarMir),
uiNumberOfBytes:= SIZEOF(rVarMir));
Например простой способ - можно хранить в структурах лишь указатель на rVarMir.
Добрый день!
Только начинаю программировать на ПЛК ОВЕН 210-14-CS для проекта. Помимо самого ПЛК используются модуль аналогового ввода ОВЕН МВ210-101, модуль дискретного вывода ОВЕН МУ210-412.
Как настроить среду программирования codesys 3.5 чтобы начать отлаживать алгоритм программы подключив к витруальному контроллеру с перечисленными модулями?
Я тоже по OPC-UA отдавал данные, проблем со структурами не было. До сегодняшнего дня даже не задумывался, что Клауд не умеет этого, считал, что это само собой разумеющееся - а оказалось, что нет. Просто удар в спину...
Ну, с переменными только для чтения вопрос и не стоит, конечно же их можно просто через ":=", хоть и муторно.
Насчет указателей подумаю, но наверное придется строить ФБ для контроля изменений в обеих переменных и ручной из синхронизации...
В общем решил, что проще всего будет создать список переменных-ссылок (REFERENCE TO) и сопоставить их с полями структур. Как оказалось, ОвенКлауд нормально воспринимает ссылки вместо обычных переменных. Костыль, но что поделать, раз такое дело(
Теперь возник вопрос, наверное в первую очередь к Евгению: операцию "rVarMir REF= sStruct.rVarStr;" нужно сделать один раз при запуске СПК, или постоянно повторять в цикле программы?
Один раз при старте
В свете недавнего открытия*, детский вопрос: в каких случаях будет создан локальный экземпляр myFB(всех кроме 7,8?)?
*Открытие: https://owen.ru/forum/showthread.php...l=1#post468802
Код:
- VAR_IN_OUT x: myFB;
- VAR_INPUT x: myFB;
- VAR_INPUT x: myFB := (var1 := 1, var2 := 2);
- VAR_INPUT CONSTANT x: myFB;
- VAR_INPUT x: REFERENCE TO myFB;
- VAR_INPUT CONSTANT x: REFERENCE TO myFB;
- VAR_INPUT x: POINTER TO myFB;
- VAR_INPUT CONSTANT x: POINTER TO myFB;
1 это тоже pointer как 7 и 8. Только неявный
И чего там смотреть?
Внутри 2х экземпляров фб получите adr всех этих "открытий" и сюда их выложите вместе с адресом внешней переменной которую пихните всем фб во все эти "открытия". Толку больше будет чем от шоков как от кисейной барышни
Здравствуйте,
есть ли способ вывести значение IP-адреса ПЛК и использовать его в программе?
Например, добавить в визуализацию отображение текущего IP-адреса?
Добрый день.
Если речь о ПЛК2xx - то см. пример:
https://owen.ru/forum/showthread.php...l=1#post336649
Доброго времени суток!
Есть СПК110 версия таргета 3.5.17.30 Codesys версия v3.5 SP17 Patch 3
В проекте на одном из окон визуализации расположены элементы:
Тренд
Элемент выбора временного диапазона
Элемент выбора интервала дат
Таблица тревог
Как сделать так, чтобы в элементе "Таблица тревог" отображались события произошедшие между датами и временем выбранными в элементе выбора интервала дат ?
Добрый день.
У таблицы тревог см. группу параметров Filter by time range:
https://content.helpme-codesys.com/e...e-1966301.html
Но использовать "Элемент выбора интервала дат" вряд ли получится.
Используйте "Элемент выбора даты и времени" или просто текстовое поле с привязанной переменной типа DT.
Большое спасибо за оперативный ответ!
Коллеги здравствуйте, прошу помощи в таком вопросе.
Сделал FB для работы с задвижкой(Valve_711), который работает без вопросов.
Но как только я создаю ещё один FB с вентилятором (Vent_611) и беру в первой/второй строчке глобальную переменную из таблицы GVL(выход на задвижку, которая была обработана в предыдущем FB (задвижки Valve_711), то переменная перестаёт реагировать на сигнал с Master SCADA (MS.MS_karta_start). Причём если я эту переменную пытаюсь в самом кодесие активировать в TRUE, то она всё равно возвращается в FALSE. Знаний не хватает победить данный вопрос.
Вызываю экземпляры ФБ вначале задвижки, потом вентилятора.
Может кто подскажет в чём моя ошибка?
Привязал эти переменные к физическим входам/выходам модулей контроллера..правда под вопросом почему оно работало в первом ФБ...
Вы этот fb запускаете? Пераый наверное из осноаной программы запустили, а этот забыли.
PS А, последний скрин... Не заметил. Надо внимательнее смотреть, с телефона на удобно.
А где взять этот кросреференц?
У меня вообще вот такое случилось:
Загружаю False. На выход контроллера подаётся False, а на самом контроллере TRUE.
Как сие вылечить?
Причём удалив его с Записи, т.е. нигде в него ничего не записывается, всё осталось без изменений.
А теперь ещё интереснее удалил выходную переменную со входа - выход перешёл в False...кто-нибудь сможет пояснить почему при подаче на вход False он почему-то ставится TRUE в самом контроллере, но не в программе?
Такая же история происходит в ST. Горит физически False, а контроллер даёт на выходе TRUE ?!?!?!?!
Потому что где то дальше перезаписывается. У вас на холсте отображаются итоговые значения переменных, а не то, что по логике должно быть.
Типа так?
Всё равно такой же результат.
Опять же с точки зрения логики ну допустим в первый цикл у меня произошло чтение переменных. И в самом начале у меня было TRUE, но после выполнения ФБ программы он у меня станет FALSE. А по умолчанию ВСЕ переменные после загрузки в ПЛК в положении False. Что собственно сам контроллер и видит и присваивает на выходе FALSE. Почему физически он становиться TRUE?
Это как понять? Есть перекрёсные ссылки - там все переменные подписаны где они вызываются в самой программе. Причём даже написано где идёт чтение, где вызов, а где запись. Так вот по скрину видно, что запись идёт в 1 месте, в остальных местах происходит чтение и не более того. Почему оно стало вдруг записываться, если оно в чтении? Я говорю про конкретный программы в где происходит активация таймера TON. Ибо если я его убираю с этого места (чтения), то физически контроллер перезходит в FALSE. Такая же история происходит в ST. Как только я выходную переменную убираю со входа, то у меня она становится FALSE.
Причём есть точно такая же задвтжка с такой же логикой 821 и у неё нет активации TRUE на выходе PLC
А печему установка обновления переменных в родительском контроле? В это контроллере так положено? В овене режим 2, например. Вы приводите скрины без пояснений, где какие переменные вас не устраивают...