PDA

Просмотр полной версии : ФБ и POU



Анатолий
08.08.2009, 19:06
Составил в POU программу арифметической обработки входных сигналов:) .Далее эти данные будут архивироваться и отсылатся с фиксированным промежутком по модему.

Далее , по рекомендации , Петрова. перенес эту программу во вновь созданный ФБ., Загрузил в ПЛК,:D
Читаю входа, F5 , а программа не запускается:eek:
:confused: :confused:
1 Является ли отдельно созданный ФБ исполняемой программой
2.:mad: Тупею:mad: Подскажите доки где расписанно Как состыковывоть POU c ФБ.т.е Как сохранить ФБ и как его потом вызвать в POU.
:cool: Ну очень много листов вычитать;)

Nik
09.08.2009, 07:00
1 Является ли отдельно созданный ФБ исполняемой программой


Нет не является. Это как бы описание - прототип. Вам необходимо создать экземпляр этого ФБ в программе.

Николаев Андрей
09.08.2009, 10:26
Смотрите вложенный пример.
Любой POU должен вызываться в PLC_PRG, так как по умолчанию выполняется только PLC_PRG. В общем то это как с вызовом любого ФБ из библиотеки, например таймера...
А еще есть понятие многозадачности, где несколько задач выполняются псевдо-параллельно:
http://www.owen.ru/forum/showthread.php?t=551&page=4 - пост 36

Анатолий
09.08.2009, 15:40
Спасибо откликнувшимся
помогло.
И тодЫ в догонку еще вопрос
о Яязыках состоавления пограмм
в ФБ выбираем язык исходя из решения задач какие стоят перед данным ФБ(извените за повторы)
а вот POU на каком языке собирать?.
Какой язык позволит главную прогу сделать более понятноной в дальнейшем?
Петров И.В. не рекомендует увлекаться глобальными пермеными(ГБ) Но если к ГБ обращаются из разных ФБ? То она нужна!?

Николаев Андрей
09.08.2009, 17:06
И PLC_PRG и любые другие Ваши блоки, программы - все это POU (Programm oriented unit). И на каком языке их писать - дело сугубо добровольное. Пишите на том, на котором потом сможете прочитать... и изменить. Я главную программу делаю на CFC. Правда говоря я и программирую в большинстве на CFC. Есть мнение, что главная программа должна быть на SFC, но на мой взгляд не всегда удобно.

Глобальными переменными не нужно увлекаться по двум причинам:
1. Не рекомендуется глобальные переменные втаскивать в дополнительные POU (PLC_PRG не считается). Тем более без особого опыта.
2. Если использовать одни и те же глобальные переменные во многих POU - крайне сложно понять закономерность - в каком же POU твою переменную ошибочно сбрасывают\устанавливают\включают... выбери свое. И отладка программы становится шахматной партией Вас с Вашей программой. POU (не PLC_PRG) - это описание логики работы узла, а не управление им. Управляет экземпляр, вызванный в PLC_PRG...и только в отдельных случаях POU - это конкретные вычисления\управление.

По приобретению опыта можно эти вещи совмещать :)

Nik
09.08.2009, 18:04
Николаев Андрей вам всё хорошо описал. Хочу немножечко уточнить: POU (Programm oriented unit) - можете считать как корневую папку (примерно как С: на PC). В которую помещаются написанные пользователем ФБ, функкции, программы, подпрограммы. По умолчанию, ПЛК исполняет только программу с именем PLC_PRG, если в конфигурации задач не указано иного.
А вобщем... у Петрова И.В. всё хорошо "разжевано" почитайте на сон грядущий и у вас всё будет хорошо;) !

Николаев Андрей
09.08.2009, 18:50
Хочу немножечко уточнить: POU (Programm oriented unit) - можете считать как корневую папку (примерно как С: на PC).
Вы говорите о названии раздела в CoDeSys. Однако любой программный блок, будь то PLC_PRG или любой другой программный модуль - он POU. А в CoDeSys так называется место для их хранения - так сказать в одном месте.

Nik
09.08.2009, 19:03
Ну да! ;) В CoDeSys и программный модуль - POU и где они хранятся тоже POU...:) А понятия разные. Согласен. Я имел ввиду именно раздел.

Анатолий
10.08.2009, 08:50
:( а вот Pou на каком языке собирать?.:(
Здесь я ошибся

Должно быть так:
"вот PLC_PRG на каком языке собирать?"
Николаев уже ответил.
спасибо откликнувшимся

"И вновь продолжается бой"

Игорь Петров
11.08.2009, 15:23
В CoDeSys и программный модуль - POU и где они хранятся тоже POU...:) А понятия разные
Да, есть такое, проблема локализации. 'Программные компоненты' - длинно. 'POUs' - не по русски, 'POU-сы' - смешно. Пока так и осталось...
Кстати, в этой паке можно делать свои, с осмысленными именами и раскладывать по ним свои POU-сы.