Профиль должен быть заполнен на русском языке кириллицей. Заполнение профиля заведомо ложными или некорректными данными - причина возможного отказа в регистрации на форуме.

Написание программ для ПЛК на Beremiz. Условие ожидания.

PLC, прочие контроллеры, промышленные компьютеры, операторские панели

Автор темы
g-71
здесь недавно
здесь недавно
Сообщения: 4
Зарегистрирован: 26 окт 2011, 19:37
Ф.И.О.: Gt. GFdd. gf

Написание программ для ПЛК на Beremiz. Условие ожидания.

Сообщение g-71 » 28 окт 2011, 11:06

Пробую писать прикладные программы для PLC на opensource среде разработки Beremiz ( неважно почему, просто так надо ). Я не могу понять, как сделать так чтобы написанная программа работала не циклом, а например я запускаю ПЛК и жду какого-то условия. А тут получается запускаю ПЛК и они выполняется, например, каждые 1000 миллисекунд. И настроить иначе вообще не получается. Можно ли это сделать в Beremiz?

Вот скрин конфигурации:
Изображение

Не вижу там каких-то особых возможностей написать конфигурацию для моей задачи. Может вместо t#1000ms нужно условие написать?

ST код генерируется примерно такой:

Код: Выделить всё

PROGRAM pou1
VAR
pin1Out AT %QX0.0.1 : BOOL := 0;
ee AT %QX0.0.2 : BOOL := 0;
pin5In AT %IX0.1.5 : BOOL;
pin1In AT %IX0.1.2 : BOOL;
END_VAR

INITIAL_STEP startStep:
END_STEP

TRANSITION FROM startStep TO step1
:= (pin1In > 0);
END_TRANSITION

STEP step1:
action1(D, t#3s);
END_STEP

ACTION action1 :
pin1Out := TRUE;
END_ACTION

END_PROGRAM


CONFIGURATION conf

RESOURCE res ON PLC
TASK t1(INTERVAL := t#1000ms,PRIORITY := 0);
PROGRAM instance1 WITH t1 : pou1;
END_RESOURCE
END_CONFIGURATION



Мне нужно сделать так чтобы запускалась моя PLC программа и ожидала какого-то действия, выполнения условия и дальше что-то другое выполнялось. Т.е. реализовать условие ожидания, если так можно выразиться.

Можно сделать такое в Beremiz?


Sergeyvmm
осмотрелся
осмотрелся
Сообщения: 127
Зарегистрирован: 12 авг 2010, 00:49
Ф.И.О.: Анохин С.А.

Re: Написание программ для ПЛК на Beremiz. Условие ожидания.

Сообщение Sergeyvmm » 28 окт 2011, 12:04

Напишу чисто теорию, поскольку об этой среде первый раз прочитал от тебя.
Вариантов может быть несколько. Вот самые распространенные
1. Ищешь в среде возможность создания программы, срабатывающей по аппаратному прерыванию. Подбираешь себе подходящий источник прерывания.
2. Используешь циклическую программу и в нем проверяешь свои условия.
3. Самый простой способ. Ставишь время цикла в текущей программе таким, чтобы гарантированно успеть среагировать на свои условия. Profit!
Правильно поставленная задача – уже наполовину решенная


Автор темы
g-71
здесь недавно
здесь недавно
Сообщения: 4
Зарегистрирован: 26 окт 2011, 19:37
Ф.И.О.: Gt. GFdd. gf

Re: Написание программ для ПЛК на Beremiz. Условие ожидания.

Сообщение g-71 » 28 окт 2011, 13:07

1. Ищешь в среде возможность создания программы, срабатывающей по аппаратному прерыванию. Подбираешь себе подходящий источник прерывания.

Вот этой возможности к сожалению нет, или я её никак не могу найти
3. Самый простой способ. Ставишь время цикла в текущей программе таким, чтобы гарантированно успеть среагировать на свои условия.

так не катит, потому что каждый раз программа как бы сбрасывается и новой выполняется...

мне нужна фича подобная вот этой Task Configuration в CoDeSys

Аватара пользователя

Looker
осмотрелся
осмотрелся
Сообщения: 192
Зарегистрирован: 09 фев 2011, 11:32
Ф.И.О.: Дитрих Евгений
Откуда: Донецк
Благодарил (а): 22 раза
Поблагодарили: 6 раз

Re: Написание программ для ПЛК на Beremiz. Условие ожидания.

Сообщение Looker » 28 окт 2011, 13:40

g-71 писал(а):Пробую писать прикладные программы для PLC на opensource среде разработки Beremiz ( неважно почему, просто так надо ). Я не могу понять, как сделать так чтобы написанная программа работала не циклом, а например я запускаю ПЛК и жду какого-то условия. А тут получается запускаю ПЛК и они выполняется, например, каждые 1000 миллисекунд. И настроить иначе вообще не получается. Можно ли это сделать в Beremiz?


Измени свои мысли о выполнении программы в к ПЛК:
- всегда от начала до конца
- цикл уже сделан, как зависит от типа ПЛК.
- ожидание условия: If "нет условия" Then Do A Else Do B


Владимир Кузнецов
не первый раз у нас
не первый раз у нас
Сообщения: 321
Зарегистрирован: 31 авг 2011, 21:14
Ф.И.О.: Кузнецов Владимир Сергеевич

Re: Написание программ для ПЛК на Beremiz. Условие ожидания.

Сообщение Владимир Кузнецов » 28 окт 2011, 13:51

Интересная среда, надо попробовать.


Автор темы
g-71
здесь недавно
здесь недавно
Сообщения: 4
Зарегистрирован: 26 окт 2011, 19:37
Ф.И.О.: Gt. GFdd. gf

Re: Написание программ для ПЛК на Beremiz. Условие ожидания.

Сообщение g-71 » 28 окт 2011, 15:31

Looker писал(а):
g-71 писал(а):Пробую писать прикладные программы для PLC на opensource среде разработки Beremiz ( неважно почему, просто так надо ). Я не могу понять, как сделать так чтобы написанная программа работала не циклом, а например я запускаю ПЛК и жду какого-то условия. А тут получается запускаю ПЛК и они выполняется, например, каждые 1000 миллисекунд. И настроить иначе вообще не получается. Можно ли это сделать в Beremiz?


Измени свои мысли о выполнении программы в к ПЛК:
- всегда от начала до конца
- цикл уже сделан, как зависит от типа ПЛК.
- ожидание условия: If "нет условия" Then Do A Else Do B


видимо я что-то не так понимаю. Вот есть например программа у меня, написанная на языке SFC:
Изображение

когда делаю инстанс её, а потом необходимо прицепить к ней task а у task указать интеревал, то она как каждый раз снова выполняется, сначала, а меня так не устраивает.


Владимир Кузнецов
не первый раз у нас
не первый раз у нас
Сообщения: 321
Зарегистрирован: 31 авг 2011, 21:14
Ф.И.О.: Кузнецов Владимир Сергеевич

Re: Написание программ для ПЛК на Beremiz. Условие ожидания.

Сообщение Владимир Кузнецов » 28 окт 2011, 17:06

Программа выполняется в цикле постоянно, а нужные куски просто срабатывают по условию.
bool do_init (изначально true)
bool event (false)
---- рабочий цикл ------
if(do_init) { make_init(); do_init=false; }
if(event) { process_event(); event=false; }
--------------------------------


Sergeyvmm
осмотрелся
осмотрелся
Сообщения: 127
Зарегистрирован: 12 авг 2010, 00:49
Ф.И.О.: Анохин С.А.

Re: Написание программ для ПЛК на Beremiz. Условие ожидания.

Сообщение Sergeyvmm » 30 окт 2011, 11:27

Используй глобальные переменные, юный падаван ;)
Правильно поставленная задача – уже наполовину решенная


Владимир Кузнецов
не первый раз у нас
не первый раз у нас
Сообщения: 321
Зарегистрирован: 31 авг 2011, 21:14
Ф.И.О.: Кузнецов Владимир Сергеевич

Re: Написание программ для ПЛК на Beremiz. Условие ожидания.

Сообщение Владимир Кузнецов » 30 окт 2011, 12:46

Sergeyvmm писал(а):Используй глобальные переменные, юный падаван ;)

Глобальная область видимости не обязательна, достаточно что бы переменная не пересоздавалась постоянно (была static).


Вернуться в «Средний уровень автоматизации»



Кто сейчас на конференции

Сейчас этот форум просматривают: Camcon, Google Adsense [Bot] и 1 гость