Создание функционального блока

Промышленные Логические Контроллеры SIMATIC S7-200/300/400
gawgaw2
Posts: 2
Joined: Wed Mar 14, 2018 2:25 pm

Создание функционального блока

Post by gawgaw2 »

Вопрос в создании блока.
Внутри блока пишу одну строку включить выход OUT.
В программе вставляю экземпляр этого блока
На вход EN блока подключаю М0,0 на выход OUT подключаю Q0,0
Выход OUT не включится пока на EN не попадет сигнал с M0,0
При попадании сигнала на EN выход OUT включается.
После этого даже если мы снимаем сигнал с EN выход так и останется включенным.

ВПОРОС.
Что нужно поменять в коде блока чтобы выход выключался вместе с EN
CoMod
Site Admin
Posts: 3992
Joined: Thu Feb 16, 2006 3:25 pm
Location: Russia

Re: Создание функционального блока

Post by CoMod »

Во первых - в настройках процессора активируй Таймерный Меркер по адресу МВ0 и впредь используй это определение МВ0 как аксиому.

Вход EN разрешает вызов функции или процедуры, но не влияет на результаты вызываемой функции.
Если ты функцию по обработке значения входа не вызываешь, то значения внутри функции не меняются = она же не вызвана на исполнение.
Dfcz
Posts: 878
Joined: Tue Dec 26, 2006 5:21 am
Location: Russia

Re: Создание функционального блока

Post by Dfcz »

Может проблема в слове "включаю"?
Если есть слово "включить", то должно быть слово "выключить".
Ну, типа, set-reset.
gawgaw2
Posts: 2
Joined: Wed Mar 14, 2018 2:25 pm

Re: Создание функционального блока

Post by gawgaw2 »

Dfcz wrote:Может проблема в слове "включаю"?
Если есть слово "включить", то должно быть слово "выключить".
Ну, типа, set-reset.
Нет моя проблема в любопытстве.
У блока есть вход EN и выход ENO
В документации на сименс нашел как управлять этим ENO.
А про вход EN написано что ону булев. Ну раз он булев то КАК его можно прочитать???
Rex2701
Posts: 374
Joined: Wed Oct 13, 2010 8:44 am
Location: Russian Federation

Re: Создание функционального блока

Post by Rex2701 »

gawgaw2 wrote:А про вход EN написано что ону булев. Ну раз он булев то КАК его можно прочитать???
Дело в том, что если твой код исполняется, то EN=1, всегда. Если же EN=0, то твой код не будет исполняться и не сможет проверить его состояние.
В общем же, при вызове блока состояние EN копируется в статусный бит BR, который можно проверить несколькими способами:
1. L STW. BR будет скопирован в 8 бит аккумулятора.
2. Использовать инструкции JBI / JNBI.