Да всё очень просто, прочитать документацию на изделие до конца, включая приложения
Вид для печати
Использую блок BLINK. При значение TRUE на выходе ничего не происходит. Приходится переводит в FALSE? потом снова в TRUE и блок работает, в чем дело?
Может такой вариант подойдет?
Вложение 12554
Как сохранить файл визуализации кдс с сохранением результатов измерений отображенных в нем? Возможно ли это? Спасибо.
На аналоговом входе контроллера при измерении число с большим количеством знаков после запятой (25.249873 (real)). Как удалить не нужные знаки, что бы после запятой было хотя бы 2 знака
Если для отображения в стандартной визуализации, то используйте форматную строку %.2f в текстовом поле. Если для отображения в какой-то другой системе визуализации, то обратитесь к её документации. Если же для непосредственного использования в программе ПЛК, то вы что-то не так делаете. На самый крайний случай capzap сказал.
Просто очень большая точность вывода информации, надо передвинуть запятую чтобы можно было оставить два или три, к примеру, знака после запятой. И число 25,249873 это уже градусы цельсия.
См. #2830 без крайних случаев
Добрый, день. Есть где-то такая схема ПЛК110_RS232 - RS232_АС3_RS485 - RS484_верхний уровень. И вот в этой сети есть еще одно устройство RS485. вся проблема в том что это доп.устройство работает на скорости не выше 38400. Сейчас настроено на скорость 115200, получается как-бы без доп. устройства. Так как опыта еще не было в настройке эксплуатации ОВЕНов следует вопрос-просьба подсказать как в ОВЕНе перенастроить скорость порта RS232? Спасибо.
Какие блоки надо использовать совместно с блоками ПД, ПИД из библиотеки Util.lib, что бы на выходе получить два выхода открыть-закрыть типа BOOL. Вроде блока управления сервоприводом.
В этом случае лучше не пользоваться util.lib и не пользоваться соответствующим блоком из OSCAT. Лучше самостоятельно переписать закон ПИД-регулирования в дифференциальной форме.
Можно использовать VALVE_REG_NO_POS из библиотеки PID_Regulators.lib.
Где-то так, например.
Вложение 12666
Только как отслеживать крайние положения?
Вообще хочеться получить, что-то вроде ТРМ12 или ТРМ212
Так почитайте инструкцию к нему, а лучше - к ТРМ32. Там написано, как это реализовать.
Предложенный мной вариант в посте http://www.owen.ru/forum/showthread....l=1#post136187 не теория, а реально работающий на объекте. Задача повторения ТРМ212 не ставилась, а требовалось "получить, что-то вроде ТРМ12 или ТРМ212"
А по сути он является вариантом предложенным здесь http://www.owen.ru/forum/showthread....l=1#post111633
более подробно можно посмотреть здесь http://www.asutp-volgograd.com/1/pos...r-codesys.html
Вариант от ga-nozry :
Результат работы ФБ от ga-nozry при поддержания температуры ГВС во время разбора:
В свой вариант добавил зону не чувствительности и т.к. у меня не используется датчик положения, то добавил в свой вариант формирование импульсов "доводки"
Вложение 12672
А если в параметрах PID Y_MIN:=0 Y_MAX:=100 поставить и LIN_TRAFO убрать не тоже самое будет?
В том числе и для этого.
Если посмотреть на мой вариант, то видно - датчика положения клапана нет.
Регулятор может останавливаться от внешних сигналов -Stop_reg и Man(Ручной режим управления клапаном). При этом сбрасывается PID (Y:=Y_OFFSET) и сбрасывается VALVE_REG_NO_POS, и виртуальное положение клапана приравнивается к значению IN_Val:=50 импульсов управления на клапан нет.
Таким образом при включении регулятора или перехода из ручного режима в автоматический
если сигнал ошибки (SET_POINT-ACTUAL)=0, то импульсов на клапан нет
если сигнал ошибки (SET_POINT-ACTUAL)≠0, то VALVE_REG_NO_POS начнет работать от среднего положения клапана 50% и в зависимости от знака (SET_POINT-ACTUAL).
Не совпадение реального и виртуального положения клапана компенсируются импульсами доводки.
Подскажите пожалуйста как перевести ПИД-регулятор из библиотеки Util.lib в режим «холодильник». Мне нужно управлять клапаном с аналоговым входом 4...20ма.
На выходе PID (Y_MIN:=-100 Y_MAX:=100) ставите LIN_TRAFO для которого IN_MIN:=-100 IN_MAX:=100, а OUT_MIN:=20 OUT_Max:=4 на выходе LIN_TRAFO буден нужный Вам сигнал
ЗЫ. А в режиме "нагреватель" для LIN_TRAFO нужно установить IN_MIN:=-100 IN_MAX:=100, а OUT_MIN:=4 OUT_Max:=20
Здравствуйте. Есть ли возможность настроить плк 150 на работу сразу в 2 сетях - по rs-232 опрашивать через АС-2 приборы укт38 и по rs-485 опрашивать приборы трм 138?
Вопрос: Надо в будние дни включать устройство с 6:30 до 8:30 и с 18:30 до 0:00.
Понятно, что мы берем из системного времени DayOfWeek и Hour и Minute. Как сделать диапазон в CFC для подобного диапазона лаконично, а то на ум только сплошные сравнения постоянные лезут.
Ваше сообщение слишком короткое. Оно должно быть не менее 10 символов.
))) Оригинально с временем.
Воскресенье это 0.
в развитие темы..
limialarm(hour+minute/100.0, low:=6.30, high:=8.30, il =>);
Егор на форуме выкладывал гениальный пример из 3 строчек на ST. Так вот если его использовать, то можно получить очень даже лаконичное решение. Время задается в минутах.
Вложение 12717
У меня вопрос я хочу сделать (CDv3, написание в LD) после переменной отображение на экране (СПК207) картинки. Т.е. появился на входе (реле) сигнал - появился на выходе (катушка) сигнал, на выходе ( у меня привязано к картинке через Pool).
Это всё понятно, но возникает момент, когда мне нужна пульсация на выходе. Я знаю, что при создании проекта в Omron (NSJ), там есть уже таблица символов Вложение 12728 и там есть уже набор генераторов (выделенная строка для пульсации в 1 секунду). Есть ли подобное что то в CDv3. Я конечно могу поставить 2 таймера которые будут включатся и выключатся, что бы отображалось на конце цепи выход. Но есть ли проще варианты? Где-то я видел видео урок на CFC -- генератор, но меня интересует на LD что либо есть подобное, как на CX-programmer?
Коллеги. Возник вопрос. Не могу решить следующую задачу: Есть 3 входа(real input module), надо их загнать в массив из трех элементов. Понимаю что решение простое но сообразить не могу. Может кто подсказать как это реализовать??
А простым присвоением не пробовали, 3 элемента это же не 100?
a[0]:=input1;
a[1]:=input2;
a[3]:=input3;
Цитата:
Пока вижу один вариант - массив указателей..... Вот только с реализацией в CodeSys v2 не могу сообразить..
Код:VAR
a: ARRAY [0..2] OF POINTER TO REAL;
init:BOOL;
x,y,z:REAL;
END_VAR
---------------
IF NOT init THEN (*один раз при старте*)
init:=TRUE;
a[0]:=ADR(input1);
a[1]:=ADR(input2);
a[2]:=ADR(input3);
END_IF
(*далее используем в программе*)
x:=a[0]^;
y:=a[1]^;
z:=a[2]^;