Спасибо работает :)
Вид для печати
Всем привет! Возникла проблема в создании сетевой переменной с плавающей запятой в Owen Logic 1.7. После того как залил прогу в ПР114-8Д.4А и прописав переменные в OPS Lectus, далее настроив в TraceMode. Запустив скаду возникли проблемы с переменными в ОРС но. как только удаляю сетевые переменные с плавающей запятой все работает как часы.Вложение 19399
И еще, установив новую версию Owen Logic-1.8, создав новый проект с сетевыми переменными, возникла проблема при сохранение проекта, то-есть файл не сохраняется.Вложение 19400
раздел в котором Вы задаете вопрос про КДС и плк, для ПР есть свой раздел и тема про новый лоджик http://www.owen.ru/forum/showthread....l=1#post177116
Спасибо за правильное русло
Добрый ночер ))
Прошу подсказки корифеев по циклу выполнения программы на ПЛК под КДС. Про последовательность выполнения программы (опрос входов)-(выполнение программы)-(запись выходов)-(в начало) в курсе. Но терзают сомнения - а как это работает если в вызываемой из программы функции определен таймер с задержкой включения большей чем время цикла выполнения программы ?
Очень жду ваших комментариев.
Во-первых, внутри функции таймер не будет работать, для этого используйте функциональный блок. А работает таймер очень просто: он при каждом вызове поглядывает на часы, и как только время подошло, то выдает сигнал.
Спасибо, что откликнулись.
С таймером понятно. Я правильно понимаю, что количество созданных экземпляров ФБ равно количеству их вызовов и PLC_PRG ? Просто никак не могу представить общую картину по последовательности исполнения программы вместе с фунциями и функциональными блоками (((
Программа выполняется сверху вниз (язык ST). Если встерчается ФБ или программа или функция, то выполняется код внутри, потом остальное ниже. На языке CFC выполняемые элементы пронумерованы и выполняются согласно нумерации.
В codesys есть элементы условия IF ELSE и как их задать? Пробовал на ПЛК100-220.P-L элемент AND - срабатывал дискретный выход, все нормально. Менял текстом в элементе на OR, никакой реакции на выходе.
Здравствуйте! Помогите новичку. :confused:
Есть:
ПЛК100-24.Р-М
1. Светильник 220в
2. Водяная помпа 12в
3. Воздушный компрессор 220в
Нужно:
1. Светильник включался в 08:00 выключался в 20:00
2. Водяная помпа включалась каждые 2 часа на 5 минут
3. Воздушный компрессор включался каждые 2 часа на 5 минут параллельно с водяной помпой.
Гуру помогите написать код в CoDeSys 2.3 :confused:
Подскажите как на трм212 создать температурный график ? Какие кнопки жать . И какая велbчина величины.
Например на трм 32 все просто U1.....
Привет всем. Только начал изучать контроллеры. Пишу программу для Овен ПЛК 63 на языке ST, пока в режиме эмуляции, и немного непойму работу с таймерами.
Задача: Каждые 3 минуты необходимо включать двигатель (Engine1 = 1) на 10 секунд.
Написал такой код:
Всё работает, только почему-то, когда запустился таймер T1 и переменой T1_start установлено значение FALSE, код под условием IF T1.Q AND T1_start выполняется заново в следующем цикле, в связи с чем не могу в другом месте запустить двигатель. Почему так?Код:PROGRAM TEMP_CONTROL
VAR
T1,T2: TON;
T1_start, T2_start: BOOL;
END_VAR
T2(IN:=T2_start, PT:=T#10s);
T2_start := FALSE;
IF NOT T2.Q THEN
Engine1 := 1;
Vibrator := TRUE;
T1_start := TRUE;
END_IF;
T1(IN:=T1_start, PT:=T#3m);
IF T1.Q AND T1_start THEN
Engine1 := 0;
Vibrator := FALSE;
T1_start := FALSE;
T2_start := TRUE;
END_IF;
Что-то сложно слишком, почему BLINK не использовать, вместо всей этой конструкции?
Ну или так
Вложение 19545Код:VAR
t1: TON:=(PT:=t#3m);
t2: TON:=(PT:=t#10s);
Engine,Vibrator: BOOL;
END_VAR
t1(IN:= NOT t2.Q );
t2(IN:= t1.Q );
Engine:=t1.Q;
Vibrator:=t1.Q;
var
tik:ton;
delay1:time:=t#3m;
delay2:time:=t#10s;
q:bool;
end_var
if tik.q then
if tik.pt=delay1 then
tik.pt:=delay2;
q:=true;
else
tik.pt:=delay1;
q:=false;
end_if
end_if;
tik(in:=not tik.q,pt:=tik.pt);
так попробуйте, набрал с телефона в автобусе, поэтому не писал инициализацию каким должно быть время, ну и может ошибся где
Блинк вообще фигня , не используйте его !
Дакие штуки удобно делать при помощи оператора CASE :
(* опустим раздел объявлений *)
Case State_engine of
0://*Стоим*)
Tmr_pause(In:= true ,Pt:=t#3m);
if Tmr_pause.q then
Tmr_pause(In:=false);
State_engine:=10;
end_if
R_engine:=false;
10://*Мослаем 10 сек*)
R_engine:=true;
Tmr_pause(In:=true,Pt:=t#10s);
if Tmr_pause.Q then
Tmr_pause(In:=false);
State_engine:=0;
end_if
end_case
Подобными конструкциями можно сколько угодно (65534) разных вариантов работы задать , в таком простом случае конечно проще на IF конструкциях сделать (см.выше пример) , но если вариантов работы-уставки больше 2х , тогда конструкция CASE рулит + 1 таймер на толпу.
Вложение 19554
Написал тестовые таймеры для помпы и компрессора, заливаю на ПЛК100, все как надо работает, выключаю питание во время работы, включаю, ничего не сохраняется. Дату и время выставляю текущие, выкл./вкл. питание ПЛК100, все сбрасывается. Что делать? Может нужно как то сохранить после заливки кода и изменения даты и времени? Или аккумулятор дохлый?
Спасибо всем кто помог разобраться с таймерами для помпы и компрессора, осталось разобраться с таймером для светильника, пока не пойму что да как сделать.
...Сейчас проверил, время сохранилось. Но я менял сутки назад, ПЛК лежал без питания, время сбросилось.
.....Сделал "создание загрузочного проекта" отключил на 1 минуту, все сохранилось :) На ночь выключу его, посмотрим сохранится ли дата и программа.
PLCInfo
PLC model MODEL PLC 100
Binary VERSION 2.12.7
Need Target version 2.10
Compiled: 11:34:29 Sep 30 2010
MAC
IP
GATE
MASK
PIC upper version is 07
Licence unlimited
No DAC
PIC lower version is 0a
Нужно ли обновлять прошивку?
Вложение 19555
Изменил время в blink, 2 часа выкл., 5 мин. работает. Включаю, исполнение программы начинается с 2 часового отключения, а мне нужно чтобы она начиналась с 5 мин. включения, как исправить? Или как вариант можно сделать принудительный 5 минутный пуск в любое время по кнопке, решается TP, TON, TOF ? Какую кнопку можно использовать на вход?
Попробуйте ФБ GEN_PULSE из библиотеки OSCAT, а еще можно время местами поменять и инверсию на выход, вообще BLINK не самый удачный выбор
Кэп , риспект и уважуха , но эти конструкции можно и нужно комбинировать и , самое главное учиться это делать . Если бы на видео-интернет уроках от Овен это делали , меньше вопросов было-бы . А так только профанация и популизм , как-то - использование Блинк (Вообще исключить из библиотек , или доработать ) , именование каналов в конфигураторе (сколько смотрел примеров для КДС2 для других ПЛК (Не Овен) , никто так не делает ) и прочее .
:) я на семене,тоже сразу именую все входы выходы и не работаю с I,IW,ID и т.д
блинком действительно не пользуюсь, вобще не подключаю бибку util
а по поводу как проще,для меня проще скопировать область входов в структуру,а из структуры соответствующие данные в область выходов одним махом, в проге уже пользуюсь только именами, и эту же структуру вычитываю панелью,тоже зараз,т.ч. нет необходимости что то привязывать
???
Позвольте немного раскрыть ваши тезисы , уважаемый .(Примерно как В.И Ленин на сборище 2 интернационала ;):D:D).
1.Вы именуете каналы в конфигураторе , соотв. имена становятся глобальными переменными .
2.Создается некие 2 структуры и соотв. прописывается присвоение элементам структуры переменным из конфигурации и наоборот из структуры выходов переменные из конфигурации подключаются к элементам структуры , так ?
3.Может вы работаете как-то ч-з указатели с областью ввода-вывода ? Если да , для чего тогда именование каналов ? Может примерчик простенький выложите для полного понимания , так сказать .
ну чтоб создать указатель, как минимум один кaнaл нужно обозвать
а пример хотя бы этот http://www.owen.ru/forum/showthread....l=1#post178030
Вот смотрю некоторые примеры , что выкладывают и удивляюсь , поражаюсь .
Байт адресация -НА-ФИ-ГА ???
Байт в конфигурации в модбас слэйв - НА-ФИ-ГА ? Зачем вводить неоднородность , чтобы потом хэроически с ней бороться ?
Когда начинал тоже по "примерчикам" блин для битовых адресов использовал пару раз "байт" в слэйве , пока не понял , что это Феерический идиотизм .
Эта идиотская феерия когда-нибудь закончится ? Почему обучение от Овена ведет народ к той самой проблеме -"Проблемы смещения" ?
Спецом что-ли , дабы занюханные-затертые до дыр темы-вопросы поднимались снова и снова ?
Здравствуйте, Уважаемые Форумчане.
Пишу свою первую программу для автомата, который отмеряет-отрезает. На выходе должны получиться жалюзи.
В процессе работы оператор с панели должен задать ширину, высоту изделия, поставить выбор "Стандарт" или "Арка". От ширины в ПЛК рассчитывается кол-во повторений цикла.
Высота изделия "Стандарт" зависит от уставки "Высота", а высота "Арка" рассчитывается функцией ПЛК, в которой в зависимости от номера "палочки" определяется ее длина. Формулу написал, вроде результат ПЛК выдает верный. При каждом проходе цикла результат функции должен выводиться на панель. Но вот в связи с этим вопрос: Как сделать, чтобы на панель выводилась информация по высоте всех "палочек", которые будут изготовлены. Ведь функция выдает высоту только одной, производимой в данный момент "палочки". Другими словами, мы еще "старт" не нажали, а гистограмма всех высот "палочек" на панели уже есть.
Может вопрос не совсем понятно сформулировал, но, оказывается, умение задавать вопрос по программированию тоже приходит с опытом.
Пыс. Во вложении только кусочек программы. Вся программа для меня пока неподъемна.
кто то интересовался бит-адресацией я показал один пример использования, для Вас показал, что используя указатель не обязательно каждый канал именовать, главное от чего оттолкнутся. В семене я спокойно копирую всю область, в КДС надо следить чтоб були совпадали, а из-за малого количества входов/ыходов можно обойтись именовкой каждого канала, по моему это удобство в КДС относительно других сред
Сначала вычисляете все размеры "палочек" и заносите их в массив. Его содержимое выводите на панель. Если оператора устраивает результат он нажимает старт, после чего берется размер из первого элемента массива и изготавливается первая "палочка". Сделали, берем размер из следующего элемента массива и делаем следующую "палочку". И так до конца.