Страница 1 из 6 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 53

Тема: Организация программы для ПЛК (переход с AVR на ПЛК)

  1. #1
    Пользователь
    Регистрация
    03.10.2011
    Адрес
    Псков
    Сообщений
    48

    По умолчанию Организация программы для ПЛК (переход с AVR на ПЛК)

    Здравствуйте люди добрые.

    Обычно работаю с микроконтроллерами ATMEL AVR. Управление вентиляцией. Необходимо построить нечто подобное на ПЛК 160. Наш контроллер не имеет возможности диспетчеризации (RS485, Ethernet). В проекте был заложен ПЛК 160.

    Никак не переключить свои мозги на работу с ПЛК.

    Так вот на языке С делаю бесконечный цикл (main) с watchdog'ом в процессе которого по флагам выполняются определённые действия: управление исполнительными устройствами, получение температур, сканирование датчиков, вычисление регуляторов и т.д. Флаги устанавливаются в таймере с определённым периодом: получение температур 1 раз в секунду, сканирование датчиков 100 раз в секунду, вычисление регуляторов 1 раз в секунду, управление ЖКИ 10 раз в секунду и т. д.

    В обсуждении http://www.owen.ru/forum/showthread.php?t=8830 сказано что "Основное отличие надо прочувствовать: на Си цикл надо организовывать. В CoDeSys цикл надо тормозить - контроллер автоматически работает по циклу..."

    В общем хожу-брожу вокруг да около как говорится...

    Начал делать главную программу PLC-PRG в CFC. Думается как-то так:

    PLC-PRG.jpg

    Не сообразить никак, дайте ниточку пожалуйста...

  2. #2

    По умолчанию

    сложно вам придется)
    совет для начала - это не CFC, а SFC. главную программу PLC_PRG не следует делать на этом языке. st, fbd, cfc - пожалуйста, но не sfc.

  3. #3
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,823

    По умолчанию

    Ваш пример будет работать не так как Вам кажется, а именно Step2 включится через 1с и останется активным до выключения ПЛК, через 2с в дополнение к Step2, включится Step3 и останется активным до выключения ПЛК, через 3с в дополнение к Step2 и Step3, включится Step4 и останется активным до выключения ПЛК или пока переменная t1 не станет равной 0.
    Т.е через 3с будут активны все шаги и будут выполняться все операнды, описанные в действиях этих шагов.
    Если Вы хотели чтобы через 2c выполнялся Step3, а не Step2, то условие нужно описать более точно
    для Step1 - (t1>=1s AND t1<2s).

    Судя по тому, что Вы хотели
    выполняются определённые действия: управление исполнительными устройствами, получение температур, сканирование датчиков, вычисление регуляторов и т.д. Флаги устанавливаются в таймере с определённым периодом: получение температур 1 раз в секунду, сканирование датчиков 100 раз в секунду, вычисление регуляторов 1 раз в секунду, управление ЖКИ 10 раз в секунду и т. д.
    язык CFC не совсем подходит.
    Создайте в дополнение к PLC_PRG другие POU (подпрограммы или Функц. блоки) каждый из которых будет выполняются определённые действия:
    управление исполнительными устройствами, получение температур, сканирование датчиков, вычисление регуляторов и т.д. Флаги устанавливаются в таймере с определённым периодом: получение температур 1 раз в секунду, сканирование датчиков 100 раз в секунду, вычисление регуляторов 1 раз в секунду, управление ЖКИ 10 раз в секунду и т. д.
    и вызывайте их из PLC_PRG с заданной периодичностью с использованием таймеров.
    Или используйте многозадачность как здесь Вложение 4856, пример не мой не помню у кого я его закачал. Смотреть нужно в конфигурации задач.
    Вложения Вложения
    Последний раз редактировалось petera; 23.09.2018 в 23:59.

  4. #4
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    определённым периодом: получение температур 1 раз в секунду, сканирование датчиков 100 раз в секунду, вычисление регуляторов 1 раз в секунду, управление ЖКИ 10 раз в секунду и т. д.
    Фиксированные каналы, независимо от программиста будут обновлять значение каждый цикл ПЛК. Отображать данные с различной периодичностью задача не ПЛК, а СКАДА-систем

  5. #5
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,823

    По умолчанию

    Для того, чтобы
    переключить свои мозги на работу с ПЛК
    нужно прочитать литературу типа "ПЛК для начинающих" и ознакомиться с принципом работы классического ПЛК.
    Это не свободно программируемое устройство, которое Вы разрабатывали раньше с использованием микропроцессоров или микроконтроллеров. В данном случае программа в ПЛК выполняется циклически с периодом называемом рабочим циклом с первой строки программы по последнюю (это очень утрированное утверждение, но смысл такой).
    Для классического ПЛК рабочий цикл:
    1. Сканирование физических входов и запоминание состояния входов на время рабочего цикла;
    2. Выполняются строки программы с 1 по последнюю с учетом условных операторов и операторов переходов (переходы в программе снизу вверх не возможны). При этом в программе используются те состояния входов, которые были получены на шаге 1 и значения переменных которые были получены на предыдущем рабочем цикле. Выходные воздействия получаемые при выполнении строк программы запоминаются в специальном буфере выходов, а не записываются в физические выходы ПЛК.
    3. Происходит запись значений из буфера в физические выходы ПЛК.
    Отсюда и особенности программирования ПЛК и требования не использовать циклы в своей программе.

  6. #6
    Пользователь
    Регистрация
    03.10.2011
    Адрес
    Псков
    Сообщений
    48

    По умолчанию

    используйте многозадачность
    Спасибо, посмотрю возможность применения. Для меня это гораздо понятнее.
    Step2 включится через 1с и останется активным до выключения ПЛК, через 2с в дополнение к Step2, включится Step3 и останется активным до выключения ПЛК, через 3с в дополнение к Step2 и Step3, включится Step4 и останется активным до выключения ПЛК или пока переменная t1 не станет равной 0
    Условия перехода просто так задал. Меня больше волнует сама идея построения цикла.
    вызывайте их из PLC_PRG с заданной периодичностью с использованием таймеров
    Может и так попоробую. Только вот кажется что не так это должно делаться.
    на картинке полный бред конечно и это SFC а не CFC
    для начала - это не CFC, а SFC
    Очепятка конечно, сильно не пинайте...

  7. #7
    Пользователь
    Регистрация
    03.10.2011
    Адрес
    Псков
    Сообщений
    48

    По умолчанию

    Если я правильно понял про конфигуратор задач, картина должна получиться следующая:

    Task_config.jpg

    Каждая задача вызывается с необходимой частотой, задаваемой в свойствах задачи. Из каждой задачи вызывается соответствующая программа (можно и не одна).

    Программы можно будет в крайнем случае и на ST написать - ближайший родственник языка С.

    Поправьте меня если что не так.

  8. #8

    По умолчанию

    Послушайте совета - начните с чтения литературы.
    Ну зачем вообще все выносить в отдельные задачи?

  9. #9
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,823

    По умолчанию

    Если я правильно понял про конфигуратор задач, картина должна получиться следующая
    С точки зрения теории примерно так и есть. Только вроде название главной задачи не должно быть PLC_PRG, и ее тоже надо включить в конфигуратор задач как свободно выполняемую. Согласен с Aso,
    Ну зачем вообще все выносить в отдельные задачи?
    Многозадачность отъедает ресурсы ПЛК.
    Зачем?
    получение температур 1 раз в секунду, сканирование датчиков 100 раз в секунду, вычисление регуляторов 1 раз в секунду
    Надо менять психологию, многое из того что Вы программировали для микроконтроллера, в ПЛК делает операционная система (встроенная среда исполнения). Все датчики и так сканируются автоматически с периодом цикла выполнения программы, если значение на входе ПЛК изменяется в середине цикла выполнения программы, то программа и не заметит это изменение, и почему нельзя в каждом цикле устанавливать значения на выходах ПЛК (например 100 раз подряд за одну сек. будет записываться значение "ВКЛ" или один раз в сек. какая разница?). Время измерения аналоговых величин зависит от железа ПЛК и тоже имеет конкретные значения.
    То, что весь алгоритм управления разбит на отдельные POU, это правильно, причем не обязательно их все делать программами можно и функциональными блоками, ф.блоки те же подпрограммы. Можно на этапе разработки всей программы разрабатывать конкретные POU по частям. Сначала POU c пустым оператором (; например), а затем наполнять их постепенно коддом и главная программа будет работать практически сразу.

  10. #10

    По умолчанию

    Некоторые рекомендации (в принципе аккумулирующие все вышесказанное).
    Контроллер уже работает в цикле.
    Контроллер уже может управлять входами и выходами - Вам об этом думать в принципе не надо.
    1. Настройте конфигурацию контроллера. Подключите датчики, отмасштабируйте, убедитесь, что работает.
    2. Создайте простую программу на языке, аналогичном тому, на котором программировали AVR. Скорее всего это st (аналог паскаля). Простую - это не вентиляцию простую, а пустую программу, на которой можно посмотреть как работают таймеры, детекторы фронтов, счетчики. Как все это вызывается, запускается, сбрасывается.
    3. PLC_PRG должна быть всегда в проекте, кроме тех случаев, когда Вы работаете с многозадачностью. В Вашем случае это абсолютно не нужно, так как у Вас все алгоритмы связаны между собой (управление тем, или инным узлом). Ну не логично клапан калорифера регулировать с одним периодом, а заслонки с другим... Зачем?
    4. Для наглядности и простоты реализации можно делать программные модули (отдельные POU на любом удобном языке) аналоги библиотек для AVR. И уже вызывать эти блоки в основной программе.

    Много примеров, в том числе как организовать вызов блоков можно найти на форуме, в разделе ПЛК\Примеры программ и полезности.

Страница 1 из 6 123 ... ПоследняяПоследняя

Похожие темы

  1. Организация работы системы
    от DSV в разделе Сетевые технологии
    Ответов: 16
    Последнее сообщение: 21.08.2011, 17:39
  2. Организация связи PLC - modbus - HMI
    от interprog в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 09.06.2010, 23:35
  3. организация сети по Rs485 (плк, ип320, пк)
    от lsass в разделе Сетевые технологии
    Ответов: 6
    Последнее сообщение: 29.11.2009, 21:30
  4. Организация работы по сети
    от dmm в разделе Эксплуатация
    Ответов: 2
    Последнее сообщение: 30.07.2009, 15:46

Ваши права

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