1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

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

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

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

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

Сообщение g-71 »

Пробую писать прикладные программы для 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
осмотрелся
осмотрелся
Сообщения: 128
Зарегистрирован: 12 авг 2010, 01:49
Имя: Сергей
Благодарил (а): 2 раза
Поблагодарили: 10 раз

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

Сообщение Sergeyvmm »

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

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

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

Сообщение g-71 »

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

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

Looker
эксперт
эксперт
Сообщения: 1108
Зарегистрирован: 09 фев 2011, 11:32
Имя: Дитрих Евгений Линусович
город/регион: Донецк
Благодарил (а): 321 раз
Поблагодарили: 218 раз

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

Сообщение Looker »

g-71 писал(а):Пробую писать прикладные программы для PLC на opensource среде разработки Beremiz ( неважно почему, просто так надо ). Я не могу понять, как сделать так чтобы написанная программа работала не циклом, а например я запускаю ПЛК и жду какого-то условия. А тут получается запускаю ПЛК и они выполняется, например, каждые 1000 миллисекунд. И настроить иначе вообще не получается. Можно ли это сделать в Beremiz?
Измени свои мысли о выполнении программы в к ПЛК:
- всегда от начала до конца
- цикл уже сделан, как зависит от типа ПЛК.
- ожидание условия: If "нет условия" Then Do A Else Do B
_______________________________________________
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу

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

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

Сообщение Владимир Кузнецов »

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

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

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

Сообщение g-71 »

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

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

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

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

Сообщение Владимир Кузнецов »

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

Sergeyvmm
осмотрелся
осмотрелся
Сообщения: 128
Зарегистрирован: 12 авг 2010, 01:49
Имя: Сергей
Благодарил (а): 2 раза
Поблагодарили: 10 раз

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

Сообщение Sergeyvmm »

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

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

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

Сообщение Владимир Кузнецов »

Sergeyvmm писал(а):Используй глобальные переменные, юный падаван ;)
Глобальная область видимости не обязательна, достаточно что бы переменная не пересоздавалась постоянно (была static).
Ответить

Вернуться в «Средний уровень автоматизации (управляющий)»