Программирование ПЛК на FBD с нуля. Урок 5. Типы данных и арифметика

Поделиться
HTML-код
  • Опубликовано: 15 сен 2024
  • Типы данных и арифметические функции:
    - булевый тип BOOL;
    - целочисленный тип INT;
    - действительный тип REAL;
    - конвертация типов данных;
    - сложение ADD;
    - вычитание SUB;
    - умножение MUL;
    - деление DIV.
    Рассмотрение примеров конвертирования типов данных. Создание программы определения количества срабатываний механизма для ПЛК на языке FBD семейства МЭК 61131-3. Тестирование на симуляторе.
    Уроки ориентированы на людей, которые хотят научиться программировать логические контроллеры (ПЛК), но не знают с чего начать. Сложность уроков постепенно увеличивается.
    Рекомендую к просмотру:
    • Основы программировани... Основы программирования контроллеров за 5 минут
    • Программирование ПЛК н... Программирование ПЛК на FBD с нуля
    Рекомендую к прочтению:
    • Программируемые контро... Программируемые контроллеры. Обзор книги
    Скачать среду разработки OwenLogic можно на сайте Овен owen.ru/produc...
    Телеграмм t.me/dimalimite
    Дзен dzen.ru/id/623...
    Ютуб / @dimalimite
  • НаукаНаука

Комментарии • 25

  • @leowinch8828
    @leowinch8828 Год назад

    👍👍👍👍👍👍

  • @MrLockdown377
    @MrLockdown377 Год назад

    Добрый день. Почему в уроке используете сетевые переменные, а не локальные?

    • @dimalimite
      @dimalimite  Год назад +1

      Хороший вопрос :). Спасибо.
      Если использовать локальные переменные, то для их отображения в симуляторе пришлось бы их размещать в менеджере экранов на какой-нибудь экран. А если бы я начал их туда добавлять, то это бы уже превратилось в уроки по OWEN Logic, а у меня была цель сделать видео чтобы подходило под условно любой редактор FBD.
      Поэтому посчитал, что использование сетевых переменных будет самое то :). С одной стороны покажу работу в симуляторе, а с другой стороны вызову вопросы у людей, кто действительно решит повторять эти уроки, что поспособствует их проф. развитию.
      Вот как-то так.

  • @Kipp547
    @Kipp547 Год назад

    Подскажите если используешь сетевые переменные то параллельно локальные использовать уже ненужно, сетевые выполняют и для передачи по сети и локальные?

    • @dimalimite
      @dimalimite  Год назад

      День добрый.
      Я правильно понимаю ваш вопрос: условно есть какая-то сетевая переменная Уставка_1. Нужно ли создавать ещё локальную переменную Уставка_1? Правильно? Если правильно понимаю, то нет не нужно. Одной переменной достаточно.

  • @user-bt1bh7ny2x
    @user-bt1bh7ny2x Год назад

    Дмитрий добрый вечер. Смотрю ролики, жду когда пойдет что нибудь сложное) совет нужен. Генератором считаю секунды импульса сервопривода, фиксирую их на счетчике с реверсом ( суть- контроллер знает на сколько секунд он открыл задвижку, соответственно при закрытии эти секунды отнимаются). Проблема что при пропаже питания импульсы отчитываются опять и задвижка физически уже находясь в нужном положении опять идет в открытие. Сохранение положения через энергонезависимость и запись в блок не помогли. Может есть макросы на подобие kzr? Есть ли они в общем доступе?

    • @dimalimite
      @dimalimite  Год назад

      Вечер добрый.
      Почему энергонезависимость не помогла (как сохранять без энергонезависимой памяти при пропадание питания я не знаю)? Может вы что-то не так делаете (например при старте вашей программе эти значения обнуляются самой программой)?
      А в чём у вас вообще задача заключается? Для чего вам это положение нужно?

    • @user-bt1bh7ny2x
      @user-bt1bh7ny2x Год назад

      Проблема именно в этом- что значение обнуляется. Значение зависят от уставки, показаний и кусочно линейной аппроксимации, и времени полного хода- эти значения не меняются и пишутся в энергонезависимую память, соответственно не должно меняться и количество секунд «открытия». Ситуация: задвижке дано указание откройся на 15 секунд, пропадает питание, фактический отчет обнуляется, а задание остается и при уже физическом нахождении задвижки на 15 секундах она еще делает открытие на те же 15 секунд и оказывается в положении 30 секунд. Подбор положения осуществляется не ПИДом а апроксимацией

    • @dimalimite
      @dimalimite  Год назад +2

      У вас 100% какой-то "косяк" в программе. Попробуйте в симуляторе в шаговом режиме погонять. Скорее всего в первый момент что-то проскакивает и обнуляет ваши секунды. Если переменная энергонезависимая, то вы сами (ваша программа) её и обнуляет. Без вариантов :)

  • @user-cj8uo6nf9m
    @user-cj8uo6nf9m Год назад

    Здраавствуйте, можно ли таймеры то что в программе при симуляции работают, вывести на экран пр200 чтоб можно было с кнопок вводить значения на таймер и изменять при необходтмости?

    • @1FrozenHeart1
      @1FrozenHeart1 Год назад

      Можно с помощью менеджера экрана и специальных функций чтения и записи из/в функционального блока, Менеджер экранов слева от рабочей области, специальные функции чтения/записи слева от конвертеров типа данных. Необходимо создать нужные переменные привязать их к функциям чтения/записи, а в менеджере экранов добавить строку ввода/вывода под тип данных переменных и в свойствах указать имя переменной, для каждой переменной свою строку.

    • @dimalimite
      @dimalimite  Год назад

      Макс Соколов всё верно написал. Могу только лишь добавить, что значения времени будут передаваться в таймер (например в TON) в мсек.

  • @den-ned
    @den-ned Год назад

    Спасибо, но ведь счётчик нажатий прекрасно работает и без функции арифм. операции умножения MUL...

    • @dimalimite
      @dimalimite  Год назад

      Да всё правильно. Я уже тут отвечал на этот вопрос )

  • @ivanmatew568
    @ivanmatew568 Год назад

    Дмитрий, здравствуйте. Видел Вас на стриме у S0er-а. Этот язык совсем не похож на классические. Вы знаете еще какие-то языки программирования?

    • @dimalimite
      @dimalimite  Год назад

      День добрый. Это один из 5-ти специализированных языков для программирования именно промышленных контроллеров (МЭК 61131-3). FBD занимает больше половины "рынка" АСУТП. К Web программированию, про которое рассказывает Soer, имеет очень-очень-очень отдалённое отношение.
      Я в основном (95%) использую язык ST. Он тоже относится к МЭК 61131-3 и представляет собой что-то типа паскаля. Могу "что-то" на Си изобразить.
      Из Web вещей я не могу ни чего :))). Я предлагал кстати Soer-у записать типа стрима про отличия Web программирования от АСУТП. Он проигнорировал. Ещё Михаилу Флёнову (когда у него только-только появился его канал) предлагал. Он ответил, что надо подумать...ну и потом в никуда это ушло :).

    • @ivanmatew568
      @ivanmatew568 Год назад

      Я тоже не делаю web напрямую. Да и Соер вещает вещи больше общепрограммистского толка :). У меня бывший коллега писал программы к микроконтроллерам. Не помню, что за язык, но там точно был вечный цикл. Сам я программист на заводе, а отопление мое хобби. Собрал уже несколько систем. :) Много написал, но мне показалось интересным, что наши с вами интересы немного совпадают.

    • @dimalimite
      @dimalimite  Год назад

      А вы программист чего? Что программируете то?

    • @dimalimite
      @dimalimite  Год назад

      Я к "Web" отношу всё, что не имеет реального ввода и вывода :)

    • @ivanmatew568
      @ivanmatew568 Год назад

      Я пишу на Delphi. Так уж сложилось много лет назад. Программа для завода включает всё. От бухгалтерии и платежных систем до управления станками. С железом напрямую почти не работаю.

  • @RS_83
    @RS_83 Год назад

    Блок умножения на 9:30 создан в учебных целях? Без него же работает.

    • @dimalimite
      @dimalimite  Год назад +1

      Отличный вопрос! Рад что вы обратили внимание!
      Это что-то вроде "подсказки" в какую сторону смотреть если потребуется изменить "вес" этого импульса. Эту конструкцию же можно использовать не только так :)

    • @RS_83
      @RS_83 Год назад

      @@dimalimite спасибо, теперь понял)