можно от сюда что то подчерпнуть http://www.owen.ru/forum/showthread.php?t=13446
Вид для печати
можно от сюда что то подчерпнуть http://www.owen.ru/forum/showthread.php?t=13446
Никакой абсолютно.
Програма 1 (маленькая, 3 строки)
1|while true do
2| ;
3|end_while
Программа 2 (большая, 1000 строк)
1|case step of
2| 0: i:=i+1;
3| 1: i:=i+1;
4| 2: i:=i+1;
..
998| 996: i:=i+1;
999| 997: i:=i+1;
1000|end_case
Сравните время выполнения
PS
Причем увеличив код 2й, можно уменьшить время выполнения, например
case step of
0..100:
case step of
0: ..
..
100:..
end_case
101..200:
case step of
101: ..
..
200:..
end_case
... и т.д.
Чот я сомневаюсь. По-хорошему в кейсе и так branch table, быстрее уже некуда и разбивать его незачем.Цитата:
Причем увеличив код 2й, можно уменьшить время выполнения, например
)) Может быть. Сейчас нет возможности, но конверт в IL наглядно покажет - таблица или цепочка cmp/jamp
Хотел показать : размер и скорость несвязанные непосредственно свойства
Да, насчёт отсутствия корреляции согласен.
А вот конвертация в IL может быть непоказательной. Я тут третью версию кодесиса ковырял (ее проще ковырять, ибо дотнет), и там не похоже, чтобы IL в качестве промежуточного кода использовался. То есть методы конечных классов-кодогенераторов на вход принимают распарсенные конструкции высокого уровня. Впрочем, не буду сильно оффтопить.
Я понимаю, что примеров туча по подключению модулей МУ110, напишу сюда, чтобы не плодить тем.
Очень прошу помочь с подключением модуля МУ 110-16 К к ПЛК 110-32 по протоколу Owen по интерфейсу RS485.
Привожу скрины подключения.
Вложение 13924
Вложение 13925
в программе присваиваю единицу выходу, но в результате на приборе ничего нет.
есть разница между словом Listen и Write ?
вот так надо: (Work Mode по конкретной задаче-или циклически или двойной режим Both)
Подскажите, а можно ли для МЭ110-220 3М, на вход Ua и Un подать 220В?
MrNobody ну почему НЕТ сразу ? вы на модуль заводите либо 220В либо через трансформаторы напряжения более высокое напряжение.
Вторую схему подключения смотрите внимательнее...
Единственное, это необходимость трансформаторов тока, если он выше 5А. в РЭ должно быть указано.
Вопрос по подсчету времени работы/не работы с переходом через сутки. В какую сторону копать ?
функция TIME() чем не подходит
capzap просто считать полное время, когда было отключено/включено понятно, эта же функция может считать время во сколько ?
хотите сказать, что такой код не посчитает работу вплоть до 49 суток?Код:VAR
flag : BOOL;
oldFlag : BOOL;
foo : DWORD;
bar : DWORD;
tik : TIME;
END_VAR
IF flag AND NOT oldFlag THEN
foo := TIME_TO_DWORD(TIME());
ELSIF flag THEN
bar:=TIME_TO_DWORD(TIME())-foo;
tik:=DWORD_TO_TIME(bar);
END_IF;
oldFlag:=flag;
Ограничение в 49 суток намекает на излишнюю точность. Проще и надёжнее считать секунды или даже минуты:Код:VAR sectrig: R_TRIG;
running: BOOL;
END_VAR
VAR RETAIN
uptime: DWORD := 0;
END_VAR
sectrig(CLK := TIME_TO_DWORD(TIME()) MOD 1000 > 500);
uptime := uptime + BOOL_TO_DWORD(sectrig.Q AND running);
речь шла о перескоке через полночь (может это какой то проект для золушки ), поэтому посчитав время с типом данных TIME и по окончанию события получить с помощью бибки syslibtime текущее время, можно получить дату окончания и с помощью разности узнать начало события в реальных часах
Ну мне собственно нужно фиксировать время включ/отключ, то есть отключилось в 10.45 06 августа 2014 года, включилось в 0.32 07 августа 2014
Отсюда и переход через сутки, ну и общее время посчитать.
Да, и включенное состояние может быть гораздо больше 49 суток.
capzap и подсчет и фиксация, все, что связано со временем. На счет точности времени, будет ваш код для ntp сервера времени. У меня дома Mikrotik стоит, который может им выступить. Тут не проблема вроде раз в сутки делать корректировку времени
Да на долго вам их хватит. Там omron реле стоит, тока практически не будет через него.
Заранее прошу простить, не знаю где задать вопрос. Установил Codesys 2.3.99 для ознакомления - на XP пока вопросов нет, а на 7 не выделяются графические элементы рамкой, например для копирования или перемещения группой.
Ребята! Как подключить поплавковый датчик ПДУ-1.1 к ОВЕН ПЛК 150 АМ? там всего 2 провода торчит на датчик.
Вопрос по таймеру. Если расположить таймер внутри программы, чтобы срабатывал раз в секунду (иное время) и вызывать ее из основной программы каждый цикл, как правильно в СТ прописать параметры ?
Вот пример кода, или это неправильно ? TM - таймер, tr1 это R_TRIG
TM(In:=start_tmr,pt:=t#1s);
start_tmr:=TRUE;
tr1(clk:=TM.Q);
IF tr1.Q THEN
A:=A+IN/X;
start_tmr:=FALSE;
END_IF
Или надо как-то иначе ?
Я вот так делаю:
TM(pt:=t#1s);
TM.in:=TRUE;
tr1(clk:=TM.Q);
IF tr1.Q THEN
A:=A+IN/X;
TM.in:=false;
END_IF
Ну или вот так (если просто через определенное время выполнять действия):
TM(in:=NOT TM.q, pt:=t#1s);
IF TM.q THEN
A:=A+IN/X;
END_IF
приборист меня в некоторой степени волнует, какова будет погрешность измерения при увеличении времени цикла программы ?
Может лучше раз в секунду вызывать программу расчета по событию самого ПЛК в конфигурации ? тогда погрешность должна снизиться
Измерения чего?
Время цикла к скорости обработки сигнала АЦП не имеет ни какого отношения. и в ПЛК примерно 0.5 сек на канал.
приборист не фурычит ни мой пример таймера, ни ваш. Не пойму где проблема. IN таймера всегда true.
Таймер ВНУТРИ другой программы, наверное это важно...
прибор МЭ110-224.1М - мультиметр однофазный. с какой скоростью измеряет он мне фиолетово (указано менее 1 секунды). Мне с него раз в секунду надо читать для расчета.
С прибора я читаю в основной программе в каждом цикле, ну или сколько успевает ПЛК через конфигуратор, это мне тоже фиолетово.
мне просто нужно один из параметров пересчитывать строго раз в секунду, даже если он не успел обновиться из прибора.
не въеду, как в задачи кинуть программу.
PLC_PRG должен быть с приоритетом 0 и свободный ?
моя программа, циклическая 1 с, есть вход и выход. my_prg(IN:= , OUT=> ):
а как передать на вход переменную из PLC_PRG и как обратно забрать выходную переменную ???
обычно такие переменные(in-out) используют в функциональных блоках или функциях.
вам проще объявить эти переменные глобальными.
Полюбопытствую, зачем такая строгость ?Цитата:
мне просто нужно один из параметров пересчитывать строго раз в секунду, даже если он не успел обновиться из прибора.
melky видимо еще не обращал внимание что часы в контроллере точностью не отличаются
capzap часы будут корректироваться раз в сутки. NTP сервером будет Mikrotik
Валенок хотелка, чтобы беря данные из однофазного мультиметра считать киловатт_часы и значения были близки к показаниям счетчика, просто чтобы смотреть на панели не бегая на улицу, ну и смотреть сколько сгорело за сутки, за месяц. Потом скаду прикручу, чтобы графики строила.
Описание Конфигурации задач скудненькое. Так и не понял вчера как передать переменные из одной программы в другую. Даже назначив их глобальными. Входная переменная почему-то всегда 0.
Сделал вчера через FB, работает. Но хотелось бы сделать именно через вызов программы, а что-то лыжи не поехали.
Глобальные переменные вроде являются Retain или нет ?
Все "фурычит", даже без конфигуратора задач.:rolleyes:
Вложение 14073 Вложение 14072