CODESYS форум

Добро пожаловать на официальный форум CODESYS
Deutsche Version English version russian version 
Текущее время: Пн апр 24, 2017 8:08 pm

Часовой пояс: UTC+01:00




Начать новую тему  Ответить на тему  [ 10 сообщений ] 
Автор Сообщение
СообщениеДобавлено: Вс фев 05, 2017 11:07 pm 
Не в сети

Зарегистрирован: Ср июл 13, 2016 12:37 pm
Сообщения: 5
Прошу разъяснить один принципиальный момент.В среде Codesys 3.5 необходимо в конфигурации привязать больше 100 дискретных вх\вых и около 1000 вещественных входных величин.Объем большой, исчерпывающей информации для этой многозадачной среды нет почти никакой, а четкого представления о механизме привязки и обновления переменных нет.
И так:
1. К каким переменным привязывать вх(вых)- к глобальным, к переменным в секции var_input(var_output) программы plc_prg, к переменным в секции var пр-мы plc_prg?
2. как все это дело будет обновляться, т.к.необходимо иметь неизменяемое состояние входов на протяжении всего цикла plc_prg, т.к.из нее, понятно, вызываются все блоки. Выходы хотелось бы устанавливать из вложенных функ.блоков(а не из plc_prg), а выходные значения должны передаваться на периферию , понятно, только после завершения plc_prg.
3.как на обновление данных влияет параметр "задача цикла шины" в конфигурации, вкладка "соотнесение входов\выходов". Что инициализирует этот пар-р - работу драйвера, просто обновление памяти %I, %Q или чего-то еще? А параметр "всегда обновлять переменные" - какие переменные, помимо того что мы видим изменение всех %I,%Q?
4.Если не имеет значения, к переменным какой секции привязывать - var_input(output) или var, зачем тогда в plc_prg эта секция var_input, как она работает
Прошу прощения за большой вопрос, но бесконечные эксперименты не вносят ясности.
Можно ли объяснить механизм работы? спасибо.


Вернуться к началу
СообщениеДобавлено: Пн фев 06, 2017 12:20 pm 
Не в сети

Зарегистрирован: Вс янв 29, 2017 11:00 am
Сообщения: 3
ПЛК какой? Если BergHof
Если надо использовать встроенные дискретные выходы и входы, то необходимо в дереве в левой части CDS щелкнуть правой кнопкой мыши на названии контроллера и нажать добавить Device.
В группе Miscellaneous выбрать IO Slot . После этого нажать кнопку Add Device.
В списке устройств появится новое устройство IO_Slot. Необходимо
нажать правой кнопкой мыши на первый подпункт Empty и выбрать Plug Device.
В открывшемся окне необходимо выбрать пункт DC20XX Basic и нажать
Plug Device. Чтобы перейти к параметрам входов и выходов, нужно дважды щелкнуть на
модуль DC20XX Basic в дереве конфигурации. В правой части экрана откроется
окно с настройками модуля.
Если речь идет о входах и выходах блоков модуля, подключенных по EtherCat то на этом видео рассказано https://www.youtube.com/watch?v=j2sd2cX4fxo


Вернуться к началу
СообщениеДобавлено: Пн фев 06, 2017 12:40 pm 
Не в сети

Зарегистрирован: Ср июл 13, 2016 12:37 pm
Сообщения: 5
ПЛК Овен - СПК207. Необходимо использовать встроенный конфигуратор Codesys, т.к.большой объем данных, вручную все это опрашивать, конечно, можно, но нагляднее через конфигуратор. Как создавать конфигурацию, добавлять устр-ва (мастеров\слейвов) и т.д. - это все понятно. Возникает много вопросов, связанных с параметрами при настройке каналов, как они взаимосвязаны. В рез-те так и не понятно, как все-таки будут обновляться входы и выходы(т.е.связанные переменные) - в какой задаче, с какой частотой. Как соотнести параметр "задача цикла шины" и цикл опроса канала в devise-ах. И т.д. К чему в конце концов нужно привязываться. Ну вот. В любом случае, спасибо за ответ


Вернуться к началу
СообщениеДобавлено: Пн фев 06, 2017 12:57 pm 
Не в сети

Зарегистрирован: Вс янв 29, 2017 11:00 am
Сообщения: 3
На форуме ОВЕНа лучше спросить их СПК все-таки. И советую задать для начала, один коротенький конкретный вопрос. А то я лично, таки не понял о чем речь. И дальше, один за одним спрашивать.


Вернуться к началу
СообщениеДобавлено: Вт фев 07, 2017 10:15 am 
Не в сети

Зарегистрирован: Пт окт 02, 2015 2:05 pm
Сообщения: 39
Любая задача в CODESYS состоит из 3-х фаз.
1. Фиксация значений входов.
2. Выполнение программы.
3. Установка значений выходов.

Т.е. изменение входов во время исполнения программы никак не повлияет на привязанные переменные.
Нет разницы, к каким переменным привязывать входы/выходы.

NikPavl писал(а):
Если не имеет значения, к переменным какой секции привязывать - var_input(output) или var, зачем тогда в plc_prg эта секция var_input, как она работает

Если переменная не будет находиться в var_input, то ее невозможно будет установить из другой подпрограммы.


Вернуться к началу
СообщениеДобавлено: Ср фев 08, 2017 12:33 pm 
Не в сети

Зарегистрирован: Ср июл 13, 2016 12:37 pm
Сообщения: 5
А что означает "фиксация" в этом случае - защита от записи извне в область входных данных %I или нет?
А если мы привязываем вх\вых каналы к глобальным переменным, как в этом случае каждая задача "фиксирует" входные\выходные данные?


Вернуться к началу
СообщениеДобавлено: Чт фев 09, 2017 9:51 am 
Не в сети
Site Admin

Зарегистрирован: Ср июл 20, 2005 2:32 pm
Сообщения: 153
По определению любой стандартный МЭК ПЛК - это устройство синхронное. Неважно с CODESYS он или с другой МЭК средой. Правильный ПЛК обязан (сам, без участия пользовательской программы) считать все входы в образ памяти и зафиксировать их. Это делает рантайм CODESYS без нашего участия. Затем запускается пользовательская программа. Она пишется с пониманием того, что 'на ходу' в процессе ее выполнения измеренные значения входов меняться не будут. Это закон! В идеале образ входов снимается в один момент времени. Например, замерены напряжения на 3х фазах сети. В программе я четко вижу картинку как в учебнике. Либо давление и температура в трубе. Понятно, что они должны быть сняты одновременно (синхронно). Еще пример - один раз проверил что переменная не равна нулю и делаю с ней в программе все что угодно много раз, умножаю или делю, без риска получить фатальную ошибку. Если сделать так, что во время выполнения программы, кто-то еще будет менять значения входов, то это не ПЛК, а адская машина, которая рано или поздно устроит Армагеддон.
МЭК программа вычисляет значения выходов и аналогично помещает их в образ выходов. Она завершает свой раб. цикл и отдает управление рантайму ПЛК (ОС). Он сам синхронно передает вычисленные значения на физ. выходы.


Вернуться к началу
СообщениеДобавлено: Пт фев 10, 2017 3:22 pm 
Не в сети

Зарегистрирован: Ср июл 13, 2016 12:37 pm
Сообщения: 5
Здравствуйте, Игорь.
Вы описали классическую модель «однозадачного» контроллера, здесь действительно логика работы с образом входов\выходов понятна, а тонкости не должны волновать разработчика. А в нашем же случае в Codesys 3 имеем вытесняющую многозадачность.

Вопрос в следующем:
- имеем проект с ,допустим, двумя задачами. Эти задачи обрабатывают входы\выходы – реализуют какую-то логику.
- мы создаем некую задачу с более высоким приоритетом, в ней вызываем какой-то пустой POU – сл-но не опрашиваем в теле никакие переменные, привязанные к входам\выходам(хотим, например, с больше частотой опрашивать периферию)
- в конфигурации настройках Мастера указываем эту задачу в качестве ЗАДАЧИ ЦИКЛА ШИНЫ, выбираем способ обновления Вкл.2
Именно в этой задаче, как я понимаю, будут вызываться некие методы драйвера I/O для работы с периферией.
Эта задача изменит области входных и выходных данных(образ памяти) и вернувшись в предыдущую задачу мы получим измененный образ входов или нет? Какую задачу в таком случае указывать в качестве ЗАДАЧИ ЦИКЛА ШИНЫ, что бы данные обновлялись корректно?

В статье вы пишите:
Каждая задача имеет свой собственный рабочий цикл ПЛК. Опрос 'своих' входов, вызов 'своих' программ,
запись 'своих' выходов происходит автономно, независимо от остальных задач. При компиляции проекта
CoDeSys автоматически распределяет входы/выходы по задачам, в которых они задействованы и передает
соответствующую конфигурацию драйверам аппаратуры

Выходит, что каждая задача на стадии компиляции анализирует используемые переменные, привязаны ли они к области вх\вых данных, отдает эту информацию драйверу I/O. Перед выполнением задачи корректируется под эту задачу образ входов, в конце из области выходов, к которым привязаны переменные, отдаются значения. Т.е. считываются не все входы(выходы), а только используемые. Так что ли? В таком случае, категорически нельзя использовать одну и ту же привязанную переменную в разных задачах.

Или все это ерунда, и независимо от количества задач и т.д. всегда имеем один единый образ входов и выходов для всех, как вы и написали в предыдущем сообщ.?


Вернуться к началу
СообщениеДобавлено: Пн фев 13, 2017 11:40 am 
Не в сети
Site Admin

Зарегистрирован: Ср июл 20, 2005 2:32 pm
Сообщения: 153
У драйвера в/в есть свой промежуточный буфер. Обновляется он не чаще, чем требуется самой быстрой задаче. Медленная задача просто будет забирать свои входы реже. Ничего страшного не произойдет. Менять один выход в разных задачах точно не стоит.


Вернуться к началу
СообщениеДобавлено: Пт фев 17, 2017 1:14 pm 
Не в сети

Зарегистрирован: Ср июл 13, 2016 12:37 pm
Сообщения: 5
Спасибо, что не оставляете без ответа наши вопросы. Тема многозадачности для контроллера сложная, поэтому формулировать лаконичные вопросы трудно.
Из документации на другие контроллеры с codesys 2 (нас, правда, интересует codesys 3 - нет достаточно документации)становится понятно, что при связывании с областями образа %I,%Q для каждой задачи создаются свои списки ссылок на области %I,%Q и на память, где фиксируются связанные с этими областями переменные. Так вот даже после прочтения всей найденной документации остается непонятным, фиксируется ли сам образ %I,%Q или "образ образа %I,%Q" на время выполнения задачи.
Кто в таком случае обновляет сам образ %I,%Q?

Потом, происходит постоянная путаница с терминами. При описании процесса связывания переменных их называют входными\выходными, т.е.непременно объявленными в области var_input, var_output программы plc_prg - тогда они обновляются и фиксируются один раз и навсегда до окончания цикла задачи. А если я их объявлю глобальными или в области var и свяжу с %I,%Q - они будут обновляться по другому закону или точно также?
Спасибо


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 10 сообщений ] 

Часовой пояс: UTC+01:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB