-----
18.11.2017 форум перенесён на другой хостинг. О замеченых глюках просьба сообщать администраторам.
-----
На форуме обязательно:
  1. Заполнить свой профиль на Русском языке. См. Правила, п.2.d.
  2. Не писать свой вопрос в первую попавшуюся тему, а вместо этого создать свою. См. Правила, п.3.a.
Рекламу на своём форуме мы не размещаем ни на каких условиях.

Написание программ для ПЛК на 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
осмотрелся
осмотрелся
Сообщения: 125
Зарегистрирован: 12 авг 2010, 00:49
Имя: Анохин С.А.
Поблагодарили: 2 раза

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
не первый раз у нас
не первый раз у нас
Сообщения: 303
Зарегистрирован: 09 фев 2011, 11:32
Имя: Дитрих Евгений
Откуда: Донецк
Благодарил (а): 46 раз
Поблагодарили: 18 раз

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
осмотрелся
осмотрелся
Сообщения: 125
Зарегистрирован: 12 авг 2010, 00:49
Имя: Анохин С.А.
Поблагодарили: 2 раза

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

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

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


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

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

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

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

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