Вход

Просмотр полной версии : POU связь



Билл
01.06.2017, 07:32
Здравствуйте коллеги!

Написал программу в PLC_PRG. Теперь хочу создать другую программу (или подпрограмму)(новый объект POU).
1) Создал новый объект в POU (рис. 1). Запускаю программу не работает.
2) Создал функциональный блок тоже не работает. (рис.2)
2) Создал новый объект как узел PLC_PRG (рис.3) тоже не работает.
Читаю справку (пример про светофор) и там тоже таким методом добавили новый POU (рис.4).
Подскажите пожалуйста может связь или от PLC_PRG надо включать эти узлы?

Заранее спасибо.
С уважением Билл

capzap
01.06.2017, 09:01
Вы наверное думаете чем меньше картинка тем понятнее смысл проблемы, проект выложите с тем что Вы там понаписали

lazy
01.06.2017, 09:07
Создать - создали, а объявить и(или) вызвать?

Билл
01.06.2017, 09:55
Вы наверное думаете чем меньше картинка тем понятнее смысл проблемы, проект выложите с тем что Вы там понаписали

Вот проект (если есть у вас идеи на счет программы, то буду благодарен)

С уважением Билл

Билл
01.06.2017, 09:57
Я не объявил и не вызвал. Объявить надо в PLC_PRG?

lazy
01.06.2017, 11:03
Да, объявить в PLC_PRG один или несколько экземпляров, если Et создано как FB. затем нужный экземпляр вызвать все в том же PLC_PRG. Хотя, FB можно и объявлять и вызывать в других FB.
Действие Et_1 - нужно просто вызвать.

Билл
01.06.2017, 14:29
Да, объявить в PLC_PRG один или несколько экземпляров, если Et создано как FB. затем нужный экземпляр вызвать все в том же PLC_PRG. Хотя, FB можно и объявлять и вызывать в других FB.
Действие Et_1 - нужно просто вызвать.

Вызвать Et_1 как ? (язык LD)?
(через EN блок?)

lazy
01.06.2017, 14:52
Я на ST пишу только. но похоже что вставить как функциональный блок. затем пользовательские программы и выбрать это дейсвие.

Билл
02.06.2017, 07:35
Я на ST пишу только. но похоже что вставить как функциональный блок. затем пользовательские программы и выбрать это дейсвие.

На St как вы вызываете программу ? (Я попробовал делать по инструкции "Help", но ошибку выдает).
Я объявил на PLC_PRG переменную (2 программу). Потом написал такой вот код:

PRG2;

PLC_PRG := PRG2.out_var;

Выдает ошибку

С уважением Билл

capzap
02.06.2017, 07:54
Вот проект (если есть у вас идеи на счет программы, то буду благодарен)

С уважением Биллсегодня подгрузил проект, первое это всё же надо читать сообщения ошибок компиляции, двойным кликом переходить к месту ошибки и разбираться что не так. У Вас во первых имя программы совпадало с таким же именем булевой переменной в глобальных данных. Во вторых, всем ПОУ давайте более осмысленные имена, Et совсем не подходящий вариант, он почти как ключевое слово языка
Ну и чтоб добавить ПОУ в цепь, Вам нужно создать цепь, правой кнопкой нажать в место обведенное пунктиром на цепи, в контекстном меню выбрать функциональный блок и вставить нужное ПОУ, случай с EN тоже можно использовать но потребуется для программы ставить заглушку из какой нибудь переменной

Билл
02.06.2017, 08:38
Ну и чтоб добавить ПОУ в цепь, Вам нужно создать цепь, правой кнопкой нажать в место обведенное пунктиром на цепи, в контекстном меню выбрать функциональный блок и вставить нужное ПОУ, случай с EN тоже можно использовать но потребуется для программы ставить заглушку из какой нибудь переменной

Я пробовал этот метод, но ошибка выдает

capzap
02.06.2017, 08:49
виноват, попробовал действительно ошибка, тогда только с EN а выходной хвостик удалите если напрягает и не хочется ставить заглушку, а так вместо вопросительных знаков напишите %M0.0

Билл
02.06.2017, 08:54
Как раз так и сделал и сразу хотел написать сюда, вижу вы ответили.
Спасибо вам!