Программирование ПЛК на 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 - Наука
👍👍👍👍👍👍
Добрый день. Почему в уроке используете сетевые переменные, а не локальные?
Хороший вопрос :). Спасибо.
Если использовать локальные переменные, то для их отображения в симуляторе пришлось бы их размещать в менеджере экранов на какой-нибудь экран. А если бы я начал их туда добавлять, то это бы уже превратилось в уроки по OWEN Logic, а у меня была цель сделать видео чтобы подходило под условно любой редактор FBD.
Поэтому посчитал, что использование сетевых переменных будет самое то :). С одной стороны покажу работу в симуляторе, а с другой стороны вызову вопросы у людей, кто действительно решит повторять эти уроки, что поспособствует их проф. развитию.
Вот как-то так.
Подскажите если используешь сетевые переменные то параллельно локальные использовать уже ненужно, сетевые выполняют и для передачи по сети и локальные?
День добрый.
Я правильно понимаю ваш вопрос: условно есть какая-то сетевая переменная Уставка_1. Нужно ли создавать ещё локальную переменную Уставка_1? Правильно? Если правильно понимаю, то нет не нужно. Одной переменной достаточно.
Дмитрий добрый вечер. Смотрю ролики, жду когда пойдет что нибудь сложное) совет нужен. Генератором считаю секунды импульса сервопривода, фиксирую их на счетчике с реверсом ( суть- контроллер знает на сколько секунд он открыл задвижку, соответственно при закрытии эти секунды отнимаются). Проблема что при пропаже питания импульсы отчитываются опять и задвижка физически уже находясь в нужном положении опять идет в открытие. Сохранение положения через энергонезависимость и запись в блок не помогли. Может есть макросы на подобие kzr? Есть ли они в общем доступе?
Вечер добрый.
Почему энергонезависимость не помогла (как сохранять без энергонезависимой памяти при пропадание питания я не знаю)? Может вы что-то не так делаете (например при старте вашей программе эти значения обнуляются самой программой)?
А в чём у вас вообще задача заключается? Для чего вам это положение нужно?
Проблема именно в этом- что значение обнуляется. Значение зависят от уставки, показаний и кусочно линейной аппроксимации, и времени полного хода- эти значения не меняются и пишутся в энергонезависимую память, соответственно не должно меняться и количество секунд «открытия». Ситуация: задвижке дано указание откройся на 15 секунд, пропадает питание, фактический отчет обнуляется, а задание остается и при уже физическом нахождении задвижки на 15 секундах она еще делает открытие на те же 15 секунд и оказывается в положении 30 секунд. Подбор положения осуществляется не ПИДом а апроксимацией
У вас 100% какой-то "косяк" в программе. Попробуйте в симуляторе в шаговом режиме погонять. Скорее всего в первый момент что-то проскакивает и обнуляет ваши секунды. Если переменная энергонезависимая, то вы сами (ваша программа) её и обнуляет. Без вариантов :)
Здраавствуйте, можно ли таймеры то что в программе при симуляции работают, вывести на экран пр200 чтоб можно было с кнопок вводить значения на таймер и изменять при необходтмости?
Можно с помощью менеджера экрана и специальных функций чтения и записи из/в функционального блока, Менеджер экранов слева от рабочей области, специальные функции чтения/записи слева от конвертеров типа данных. Необходимо создать нужные переменные привязать их к функциям чтения/записи, а в менеджере экранов добавить строку ввода/вывода под тип данных переменных и в свойствах указать имя переменной, для каждой переменной свою строку.
Макс Соколов всё верно написал. Могу только лишь добавить, что значения времени будут передаваться в таймер (например в TON) в мсек.
Спасибо, но ведь счётчик нажатий прекрасно работает и без функции арифм. операции умножения MUL...
Да всё правильно. Я уже тут отвечал на этот вопрос )
Дмитрий, здравствуйте. Видел Вас на стриме у S0er-а. Этот язык совсем не похож на классические. Вы знаете еще какие-то языки программирования?
День добрый. Это один из 5-ти специализированных языков для программирования именно промышленных контроллеров (МЭК 61131-3). FBD занимает больше половины "рынка" АСУТП. К Web программированию, про которое рассказывает Soer, имеет очень-очень-очень отдалённое отношение.
Я в основном (95%) использую язык ST. Он тоже относится к МЭК 61131-3 и представляет собой что-то типа паскаля. Могу "что-то" на Си изобразить.
Из Web вещей я не могу ни чего :))). Я предлагал кстати Soer-у записать типа стрима про отличия Web программирования от АСУТП. Он проигнорировал. Ещё Михаилу Флёнову (когда у него только-только появился его канал) предлагал. Он ответил, что надо подумать...ну и потом в никуда это ушло :).
Я тоже не делаю web напрямую. Да и Соер вещает вещи больше общепрограммистского толка :). У меня бывший коллега писал программы к микроконтроллерам. Не помню, что за язык, но там точно был вечный цикл. Сам я программист на заводе, а отопление мое хобби. Собрал уже несколько систем. :) Много написал, но мне показалось интересным, что наши с вами интересы немного совпадают.
А вы программист чего? Что программируете то?
Я к "Web" отношу всё, что не имеет реального ввода и вывода :)
Я пишу на Delphi. Так уж сложилось много лет назад. Программа для завода включает всё. От бухгалтерии и платежных систем до управления станками. С железом напрямую почти не работаю.
Блок умножения на 9:30 создан в учебных целях? Без него же работает.
Отличный вопрос! Рад что вы обратили внимание!
Это что-то вроде "подсказки" в какую сторону смотреть если потребуется изменить "вес" этого импульса. Эту конструкцию же можно использовать не только так :)
@@dimalimite спасибо, теперь понял)