1 февраля 2016 в 06:07

FLProg – Урок второй: Работа с аналоговыми сигналами tutorial


В предыдущем уроке , были рассказаны основные принципы работы с программой FLProg, а так же работы с дискретными сигналами. В этом уроке будет рассмотрены возможности FLProg в работе с аналоговыми сигналами.
В процессе урока будет создана программа управления светодиодным индикатором уровня и показана регулировка яркости светодиода с помощью выхода ШИМ.

Схема тестового стенда.



Как и в прошлом уроке, проект будем создавать на двух языках FBD и LAD. Только теперь это будет делаться параллельно.

Создаём новый проект.

Для языка LAD

  • Первый путь — перетаскиваем на схему аналоговый вход A0 из дерева установленного оборудования
  • Второй путь — перетаскиваем блок «Аналоговый вход контроллера» из библиотеки элементов, после чего сделав на новом блоке двойной клик, привязываем его к нулевому аналоговому входу платы


Для языка FBD создаём новый аналоговый вход, дважды кликнув на пункте «Добавить вход» дерева тэгов или нажав соответствующую кнопку



В открывшемся окне свойств входа ввести имя входа, выбрать аналоговый тип и номер контакта 0



После чего перетащить новый вход из дерева тэгов в область схемы.

Блоки аналогового входа в FLProg на своём выходе выдают величину пропорциональную напряжению на привязанном к ним реальном входе платы. При 0В на входе платы, на выходе блока будет значение 0, а при 5V на входе платы, на выходе блока будет значение 1023.


Затем создаём аналоговый выход.

Для языка LAD перетаскиваем блок «Аналоговый выход контроллера» из библиотеки блоков, и в редакторе свойств, блока (двойной клик на блоке) привязываем его к выходу платы D3



В языке FBD для создания аналогового выхода необходимо дважды кликнуть на пункте «Добавить выход» дерева тэгов или нажать соответствующую кнопку.



В открывшемся окне свойств выхода заполняем имя выхода, выбираем тип ШИМ, и номер выхода D3



После чего перетаскиваем новый выход в рабочую область схемы.

Вообще-то у плат Arduino настоящих аналоговых выходов нет (не считая Arduino Duo, но пока эти платы программой FLProg не поддерживаются). Аналоговые выходы платы работают в режиме ШИМ

Широтно-импульсная модуляция
Широтно-импульсная модуляция (ШИМ, англ. pulse-width modulation (PWM)) — процесс управления мощностью, подводимой к нагрузке, путём изменения скважности импульсов, при постоянной частоте. Для примера можно в качестве нагрузки использовать светодиод.

Частота, это количество периодов за одну секунду. Скважность — отношение длительности импульса к длительности периода. Можно изменять и то и другое, но для управления светодиодами достаточно управлять скважностью. На картинке выше мы видим ШИМ сигнал со скважностью 50 %, так как длительность импульса (ширина импульса) ровно половина от периода. Соответственно светодиод будет ровно половину времени во включенном состоянии и половину в выключенном. Частота ШИМ очень большая и глаз не заметит мерцания светодиода из-за инерционности нашего зрения, поэтому нам будет казаться, что светодиод светится на половину яркости. Если мы изменим скважность на 75%, то яркость светодиода будет на 3 четверти от полной, а график будет выглядеть так:

Получается, что мы можем регулировать яркость светодиода от 0 до 100 %. А теперь поговорим о таком параметре ШИМ, как разрешение. Разрешение — это количество градаций (шагов) регулировки скважности. В платах Arduino разрешение составляет 256 шагов.

В программе FLProg блок аналогового выхода управляет скважностью ШИМ привязанного к нему выхода. При подаче на вход бока значения 0 на выходе паты скважность будет составлять 0%, а при подаче значения 255 – 100%.
Исходя из того что пределы сигнала на выходе блока аналогового входа контроллера составляет 0 — 1023 а пределы допустимого сигнала на входе блока аналогового выхода контроллера составляют 0 – 255 встает вопрос о необходимости приведения их к одним значениям. В этом поможет блок масштабирования.
В языке LAD он находится в папке «Аналоговые блоки» библиотеки элементов.



В языке FBD тот же блок находится в папке «Специальные блоки» библиотеки элементов.



Блок масштабирования пропорционально переносит значение, получаемое на вход, в другой диапазон значений и выдает это значение на выход. Параметры входного и выходного диапазонов значений задаются в свойствах блока. Дважды кликнув на блок, мы можем открыть редактор параметров блока и задать эти значения.



Расчет в блоке производится по следующей формуле
Q = (I – I_min)*(Q_max – Q_min)/(I_max – I_min)+Q_min
Где:
  • Q – значение на выходе блока
  • I – значение на входе блока
  • I_max – верхний предел входного значения
  • I_min – нижний предел входного значения
  • Q_max – верхний предел выходного значения
  • Q_min – нижний предел выходного значения

В результате показанной на скриншоте настройки блока при изменении значения на входе блока от 0 до 1023 значение на выходе будет пропорционально изменяться от 0 до 255, что и требуется. Теперь необходимо соединить все блоки в соответствии со схемой.

LAD


FBD


Первая плата практически готова. Назовём её «Управление яркостью» и создадим новую, сразу назвав её «Индикатор уровня»
Во второй плате нам так же нужно значение с входа контроллера. В принципе можно ещё раз вытащить вход блока на вторую плату, и использовать его. Но это приведёт к тому, что в процессе выполнения программы в контроллере будет повторно считываться значение с входа. А процедура считывания аналогового сигнала с входа достаточно ресурсоёмкая и длительная. Поэтому мы используем в случае LAD аналоговый соединитель, а в случае FBD – переменную.
В FLProg переменные и аналоговые соединители можно представить как клеммные соединения на плате. С помощью них платы обмениваются значениями и соединятся между собой.

В проекте на языке LAD перетащим блок «Вход аналогового соединителя» на ПЕРВУЮ плату проекта.



Ему автоматически присвоится имя АС1. После чего соединим его вход с выходом блока аналогового входа.



А на вторую плату перетащим блок «Выход аналогового соединителя».



Сделаем на нём двойной клик и в редакторе блока привяжем его к соединителю AC1

В проекте на языке FBD создадим новую переменную, нажав на соответствующую кнопку или сделав двойной клик на пункте «Добавить переменную» в дереве тэгов.



В открывшемся окне редактора блока заполним имя переменной, выберем тип (Integer), и установим значение по умолчанию – 0



После чего перетащим новую переменную сначала в одну плату, а затем в другую. Так же соединим в первой плате вход переменный с выходом блока аналогового входа контроллера.



Поскольку индикатор уровня на 10 значений необходимо чтобы при изменении значения от нуля до максимума, управляющее значение изменялось от нуля до 10. В этом опять поможет блок масштабирования. Вытащим его на вторую плату и настроим следующим образом.



Теперь подключим его вход в случае LAD-а к блоку выхода аналогового соединителя, а в случае FBD к выходу переменной.

LAD


FBD


Рассмотрим логику работы индикатора уровня.
  • Светодиод «Уровень 1» должен загореться, если значение сигнала больше 0
  • Светодиод «Уровень 2» должен загореться, если значение сигнала больше 1
  • Светодиод «Уровень 3» должен загореться, если значение сигнала больше 2
  • Светодиод «Уровень 4» должен загореться, если значение сигнала больше 3
  • Светодиод «Уровень 5» должен загореться, если значение сигнала больше 4
  • Светодиод «Уровень 6» должен загореться, если значение сигнала больше 5
  • Светодиод «Уровень 7» должен загореться, если значение сигнала больше 6
  • Светодиод «Уровень 8» должен загореться, если значение сигнала больше 7
  • Светодиод «Уровень 9» должен загореться, если значение сигнала больше 8
  • Светодиод «Уровень 10» должен загореться, если значение сигнала больше 9

Для реализации данной логики мы используем в случае языка LAD реле сравнения, в случае языка FBD – компаратор.

LAD


FBD


В проекте на языке LAD вытащим на вторую плату 10 реле сравнения и привяжем их выходам, к которым подключён измеритель уровня ( смотри первый урок) и выставим тип сравнения «Больше».



Кликнув правой кнопкой на входе «В» каждого блока реле сравнения вызовем контекстное меню и выберем пункт «Вставить константу». В открывшемся окне редактирования константы оставим тип “Integer” и введём для каждого выхода значение соответствующее логике работы индикатора.



Входы «А» всех блоков реле сравнения соединим с выходом блока масштабирования. Должна получится такая схема.



В проекте на языке FBD вытащим на вторую плату 10 блоков «Comparator» так же настроим на вид сравнения «Больше» (двойной клик на блоке для вызова редактора блоков). Так же как и в LAD-e вставим константы на входы I2 блоков, а входы I1 соединим с выходом блока масштабирования.



После этого создадим 10 цифровых выходов привязанных к выходам платы, к которым подключён измеритель уровня (смотри первый урок) и вытащим их на вторую плату. И соединим каждый со своим компаратором.



Всё – программы готовы, можно компилировать и заливать в контроллер (смотри первый урок)
Автор: @totuin
FLProg
рейтинг 46,01
Простое программирование микроконтроллеров
Похожие публикации

Комментарии (31)

  • 0
    на днях в arduino ide, последней версии, неприятный момент обнаружил.
    вот такая конструкция не работала: if (условие) { действие }
    не знаю у меня только такое или ещё у кого, но автор примите к сведению.
  • 0
    В первой схеме надпись «Уровень 9» повторяется дважды.
    И у меня возникли такие же ощущения как и после изучения языка С попробовал Бейсик… Ощущение неуправляемости кода.
    • –1
      Извините, где вы здесь видите код?
      Что вижу я:
      Принципиальная схема устройства (ПЭ3), состоящая из блоков. Блоки имеют крышечку (редактор свойств блоков), под которой находятся подстроечные резисторы (InputField) и микропереключатели (CheckBox и RadioButton).
      Жаль что Вы этого не видите, видно не дано…
      • 0
        а IL и ST поддерживает? или только LAD и FBD?
        • –1
          Нет IL и ST не поддерживает. Я не думаю что это необходимо целевой аудитории программы. Хотя в последней версии программы появилась возможность создавать пользовательские блоки используя язык C. Точнее тот его диалект, который используется в Arduino IDE
          • 0
            ну в принципе да, это я уже совсем разогнался, нагляднее LD не придумано вроде ничего, но спасибо за ответ.
  • 0
    Я тут волею судьбы занялся кодингом на LAD.
    После Си это просто боль.
    Квадратики эти скобочки.
    Нафиг он нужен если есть Си?
    И я вам скажу, как я думаю этот язык изначально делался для перевода старых релейных схем в ПЛК. Потом он оброс финтифлюшками и в общем оказался удобным для автоматизации технологических процессов людьми, ничего не понимающими в программировании.
    А цель как-бы научиться программировать, на RLL это довольно затруднительно.
    Да и собственно, удивляет желание ардуиноподобных сред разработки максимально отдалить программиста от железа.
    ATmega контроллер очень простой, это же не Кортекс, мать его м3. Разобраться в нем можно реально за день, там всего то десяток-другой служебных регистров и там все понятно. И потом никогда не будет криков на форумах типа: «аааааа, подключил библиотеку, а она не работает, мама!!!» хотя там вообще никакая библиотека изначально была не нужна, а надо было пять строк написать.
  • –2
    Это с Вашей точки зрения — боль. Представляете какую боль испытывают электронщики привыкшие всю жизнь работать с этими самыми квадратиками когда видят портянки программы. Представляете их зубовный скрежет когда так горячо любимая Вами программа не работает из за неправильно поставленной запятой, или забытой скобки.
    Почему то Вы решили что главная мечта любого инженера — научится программировать. Это Вы так решили. На самом большинству из них это ни грамма не нужно. У них есть идея, и они хотят её реализовать, наиболее доступными для себя инструментами. И язык С не входит в их число. Кто хочет научится программировать на С, научится, слава богу по этому поводу информации хватает.

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

    По этому поводу я уже много раз писал. FLProg — это просто ещё один уровень абстракции. Скажите пожалуйста — почемы ВЫ — программисты пишете на языках программирования высокого уровня. Если следовать Вашим словам — вы должны писать в машинных кодах. Это же наиболее близкие отношения с железом. Да и контроллеры ВЫ программируете на C а не пишете в блокноте HEX файл. Вы так же обкладываетесь библиотеками, синтаксическим сахаром и т.д. Так что не стоит призывать к близости к железу если сами не владеете машинными кодами.
    • 0
      Я хотел сказать, что программист микроконтроллеров должен знать железо под которое пишет. Иначе непонятки и постоянные проблемы.
      Си сам по себе вполне достаточный уровень абстракции. И приближаться к железу ближе чем Си не нужно. Где вы там углядели, что нужно программировать на асме? То-есть, если человек знает регистры используемого процессора, он сразу ломится писать в hex кодах? Забавно. Да я и не программист по сути. Так, мимопроходил. Забавляюсь по необходимости. На самом деле я как раз электронщик. Никаких проблем с Си.
      LAD язык для ПЛК. Для довольно узкого спектра задач. Вот и все.
      Чет вас прямо подорвало, видать есть причины.
      • –2
        Я хотел сказать, что программист микроконтроллеров должен знать железо под которое пишет. Иначе непонятки и постоянные проблемы.
        Си сам по себе вполне достаточный уровень абстракции. И приближаться к железу ближе чем Си не нужно

        Почему С достаточный уровень абстракции, а FLProg — уже слишком много? Кто определил достаточный уровень абстракции. Кто провёл эту черту с одной стороны которой — GOOD а с другой — ФУУУУ.

        То-есть, если человек знает регистры используемого процессора, он сразу ломится писать в hex кодах?


        Ну судя по Вашему лозунгу «Ближе к железу» то да.

        А зачем обязательно знать регистры процессора. Если поставленную перед собой задачу можно решить без этого знания, — то зачем? Будет нужно — изучит. Я не понимаю когда делаются такие громкие заявления — «Должен знать и точка». Кому должен? Человек сам решает какие ему нужны знания, и что ему интересно.
      • 0
        ИМХО, да тут не столько подорвало, сколько ваша реакция на использование ЛАД — какая разница каким инструментом вы решите задачу, если ваш
        инструмент её решит так же эффективно: Си, ЛАД, да хоть молоток и гвозди, если вы можете решить задачу и требования к её исполнению, используя любые из перечисленных инструментов, то какая разница на чем её решили? ЛАД хорош наглядностью, плох — громоздкостью и тратой времени, зато человеку слабо знакомому понятен, захочет человек новых трюков или оптимизировать свой труд — освоит Си, не захочет — ну значит не зацепило, не надо ему, хватает того что есть.

        насчет ЛАД язык для плк — ну на первых порах да, а дальше — паскалеподобный ST или IL, хотя последний МЭК уже не рекомендует использовать.
  • 0
    Ну дык на Си можно писать и не зная ни одного регистра. Но если знаешь — можно написать например быстрее или короче. Есть простор для творчества.
    LAD никакого творчества не подразумевает, это рутинная работа. Это язык АСУТП.
    • –1
      Вы подразумеваете что разработчики АСУТП — не творческие люди. То есть если бы программу для станка написал человек на С — то это было бы творчество, а если её написал специалист АСУТП на LAD-е или FBD то это тупая не творческая работа?.. Или блинк на из примеров Arduino — это творчество (хорошо даже не из примеров а с применением чистого С), а данный урок, это так клепание шаблонов? Уважаемый AVKinc не надо считать себя выше других если вы освоили язык программирования, а остальных которые его не знают заторможенными не творческими людьми. Комьютер за которым Вы работаете собран так же на базовых элементах типа тригера, ИЛИ, НЕ. И поверьте — те кто его создавал — были творческими людьми. А программирование придумали уже после создания компьютера. Причем те же творческие люди — электронщики.
    • 0
      вот такое определение слову творчество даёт википедия: творчество — Создание новых по замыслу культурных, материальных ценностей.

      слушайте. если вы в своей жизни ничего не придумали. ничего не создали. ничего не СОТВОРИЛИ. то вы не творческий человек. поэтому плевать в сторону творцов, которые каждый день что-то создают, творят не надо.
  • 0
    Да я сам АСУТПшник. И пишу на всех этих LAD и FB и пофиг на чем. Как поручик Ржеский. И я говорил, что я не настоящий сварщик. И стопудово никого не выше. Я довольно обычный инженер. Вы хоть читали вообще, что я писал?
    На RLL написать что-то по настоящему большое и сложное это очень долго и муторно.
    Он для простых в общем задач автоматизации производства предназначен.
    На Си можно написать все что угодно. И он совсем не сложен применительно к AVR. За пару дней можно освоить если есть базовые знания.
    На AVR очень редко выполняются задачи автоматизации.
    То есть должен же быть какой-то профит от LAD на AVR?
    Я его не вижу и говорю почему.
    Вы начинаете возбуждаться и в общем не приводите никаких доводов в свою пользу.
    При этом стараетесь меня унизить почему то.
    • 0
      Ладно, только факты.
      1. Число зарегистрированных пользователей на сайте проекта приближается к тысяче.
      2. Каждую новую версию программы скачивают около десяти тысячь раз (в сумме всех вариантов, то есть под Винду, Линукс и обновления со старых версий)

      Ну и для интереса зайдите в группу программы в контакте и на сайт программы, почитайте форум, комментарии к новостям и т.д.
      Потом можете говорить о том что это никому не нужно и никакой пользы от этого нет.

      Программа нужна как минимум этим людям:


      • 0
        Полностью согласен с высказываниями в соц. сетях. Несомненно автор ФлПрог достоин похвалы. Это не очередная программка для ОлдФагов, которая написана кем-то и когда-то, а потом заброшена. Вижу на сайте ФлПрог постоянные обновления версий с доработками, новыми функциями. Эта какой титанический труд затрачен!!!
    • 0
      упс
  • 0
    Ну дык, факты то где плюсов LAD?
    Ну вы могли бы написать типа «можно за пару дней ничего не понимая в контроллерах написать простую программу»
    Я бы сказал «Ну и на Си можно, ну три дня уйдет, а через месяц на Си можно уже что-нибудь веселое написать.»
    Ну как то так, вы же начинаете хвастаться загрузками и постами никому не известных людей.
    Почему вы совершенно не воспринимаете критику?
    • +1
      AVKinc
      что то ты совсем запутал: то ты электронщик, то ты асутэпэшник и пишешь на всех ПЛК-языках, то ты волею судеб случайно взялся писать на
      ЛАД, но после си он тебе показался никчемным. Может ты всё таки больше киповец? тогда всё более-менее логично.

      давай по порядку — если не прав — поправишь:
      ты утверждаешь: — ЛАД не практичный язык и решает узкоспециальные задачи, должны изучать Си ибо маст хэв
      тебе отвечают: — окей, но вот мы предлагаем инструмент ФЛПрог, который понравится людям, которые в основном работают со схемами.
      ты утверждаешь: — на Си быстрее и больше плюшек, а LD удел рутинных задач среди АСУТП прочих не творческих личностей.
      тебя отвечают: АСУТП — это вообще то творческая работа (с чем я абсолютно согласен, и уж более чем уверен — творчество зашкаливает).
      ты отвечаешь: Си МАСТ ХЭВ ИБО ОН В АВР ВСЕМОГУЧ!!!, а LD бесполезен ибо не вижу профита, причем профита ты не видишь в силу трудозатратности и муторности реализации на нём сложных алгоритмов (если я правильно понял).

      Да, LD любопытный язык, и то что ты можешь сделать на Си в две строчки, на LD и FBD может занять массу пространства и кучи кликов, но давай не будем откидывать тот факт что LD существенно проще в освоении и требует меньший порог вхождения (в отличии от Си, который за пару дней можно освоить если есть базовые знания, а если их нет, то всё бросить?)
      соответственно ФЛпрог с LD нужен как минимум для начинающих, он позволяет начать думать логичными алгоритмами, он прямо наглядно показывает все логические взаимосвязи — что, зачем и почему.
      И только за это автора этой программы благодарить надо, и уж тем более при этом утверждать что их работа бесполезна — это попросту не уважение к чужому труду, тем более что они проделали большую работу.
      • –1
        как жаль что рид-онли аккаунты не могут плюсовать :((
        ну да ладно. я думаю что он наверно не в курсе что ПО для промышленных контроллеров идёт изначально с пристройкой LAD или FBD или то и другое вместе. так же он наверно не в курсе что всё в промышленных контроллерах в LAD и FBD автоматически ковертится в IL перед заливкой в контроллер (как у автора FLProg, но только тут конвертация в Си). ассемблер никто не отменял :)). Тот же ST паскалеподобный, а не Си подобный. Про долю промышленных контроллеров с ПО на Си я вообще молчу. Встречал только зелёные вроде бы Латвийские контроллеры.
        Наверно он из серии ниши разработки ПО на Си для АВР или СТМ для управления к примеру ключами IGBT сборок электропривода. что достаточно узкоспециализированно, в отличие простых электриков, киповцев, в общем обслуживающего персонала или просто тех у кого руки из плечей растут и есть желание что-то для себя реализовать. Те, которые видят просто электрические схемы и для них проще и без заморочек видеть привычные им схемы в LAD или FBD.
        Не понимаю таких людей, которые считают своё мнение истинно правильным. А все остальные просто заблуждаются.
    • 0
      Ну так это не критика а заявление типа: «Мне не понравилось — значит это г...». Соответственно факты такие — же. Некоторому количеству людей понравилось, и их больше. Вы то один.
      Вы спрашивали про профит, так вот это он и есть, люди смогли реализовать свои идеи и заняться творчеством.

      Ну а если серьёзно, то задайтесь вопросом, почему все производители промышленного оборудования до сих пор используют для программирования своих систем FBD и LAD. Даже новейшая среда от Siemens (Tia-Portal) основана на них -же. Это то же может служить фактом.
      Ну я думаю Вы не будете утверждать что создание серьёзной системы АСУТП уровня какой ни будь электростанции не требует творческого подхода.
      Или я что то не понимаю в Ваших словах. Что Вы имеете в виду под профитом и творческим потенциалом?
  • 0
    Почему пользуются LAD.
    Потому что во первых это фактически стандарт и он прост. И изначально он был заточен под совершенно конкретные задачи.
    Он прост для простых вещей.
    Я вам не говорил, что ваш проект говно.
    Вот вы пишите, что ваш проект для электронщиков.
    Я электронщик, мне очень удобно писать на Си. Никаких проблем. Может все же не для электронщиков ваш проект?
    Про творческий потенциал я тоже не говорил. Я говорю, что LAD это по сути язык для производства. На котором сможет работать даже дилетант. Ибо АСУТП штука достаточно простая в целом.
    • 0
      ОФФ
      ага, конечно простая, чего сложного — увязать хотелки технологов с возможностями железа, учесть особенности работы
      людей, не забыть про физику, химию там, согласен — проще уже не куда.

      интересно когда уже теги сарказм и ирония появятся
    • –1
      Уважаемый AVKinc Вот вы пишете
      Вот вы пишите, что ваш проект для электронщиков.
      Я электронщик, мне очень удобно писать на Си. Никаких проблем. Может все же не для электронщиков ваш проект?

      А с чего Вы взяли что Вы выражаете общее мнение всех электронщиков. Вы председатель их профсоюза? Если Вам больше нравится С, это Ваше право. Но не надо говорить от имени всех. Насчет простоты АСУП. <ирония> Ну… у меня возникают вопросы какие проекты вы реализуете или обслуживаете</ирония>(как заказывали).
    • 0
      вся логика контроллеров для станков написана на LAD. думаю вам надо поспорить со станкостроителями «что проще перетягивать электрическую схему в станок в LAD или Си ?». а так же с остальными сферами где преимущественно электросхемы, провода, реле, контакторы и прочая атрибутика. ну и в добавок надо предусмотреть что вашу программу может смотреть обслуживающий персонал и он должен понимать что там в программе происходит, а не ковырять справочник по Си что бы понять что делает та или иная стандартная функция какой-нибудь библиотеки Си. всё должно быть очень быстрым для понимания и освоения. простой оборудования это всегда потеря денег. и так же не стоит забывать что иногда заказчик требует в ТЗ всю программу на LAD.
      так что ваши выпады или точнее сказать «высеры» в сторону FLProg и LAD c FBD мало того что беспочвенны, так ещё и не от опытности и больше похожи на высказывания школоты в период полового созревания когда идёт выпендрёж и весь мир крутится только вокруг них.
  • 0
    Господи, как вы попали то сюда? С двача подтянулись?
    Вежливо принято общаться в таких местах.
    Продолжить хотите дискуссию о моем возрасте?
  • –1
    У программы FLProg есть уже приличное количество пользователей.
    Сергею (автору программы) многие выражают свою искрению благодарность, и это заслуженно!
    Так-же, пользователи FLProg делают законченные проекты с нуля и до завершения.

    Я уже ранее писал (не в обиду программистам), в большинстве своем программисты того-же языка С являются лишь приложением к чему либо, работают по определенному ТЗ, и как такового не производят собственного конечного продукта.
  • 0
    Программы для большинства современных промышленных контроллеров PLC пишутся в средах разработки поддерживающих языки LAD, FBD а так же и другие графические и функциональные языки. И о чем тут спорить? Функционала для решения большинства задач более чем достаточно. Кода я занялся АСУ то пришел абсолютно из другой области (инженер связи) и специально этому не учился. Каково же было мое удивление когда я увидел блоки двоичной логики языка FBD. Этот язык по сути виртуализация задачи по проектированию автоматов на микросхемах двоичной логики. Был у нас в универе такой предмет «микропроцессорная техника» там мы и составляли двоичные уравнения по таблицам истинности, решали их и составляли схемы из элементов логики. Я тогда думал, что вот это мне никогда не пригодится :-)
    Или вот еще пример из жизни. Совсем недавно пришлось производить пусконаладку систем вентиляции, незнакомый PLC, чужие шкафы, спасибо разработчикам, что еще исходниками поделились. Три дня изучения среды разработки и полетели язык FBD. А пришли парни из отдела АСУ заказчика, увидели как происходит наладка и отладка в железе и программе для них это было откровение. Оказалось, что они таких языков не знают все они знают только С++. Для меня они просто программисты а не АСУшники.
    Я понимаю кто хорошо знает С тем возможно сложно переключится и он кажется таким людям проще и элегантнее, но тем кто начал с нуля, FBD будет проще чем С. Кроме того наглядность такой разработки программы даже не обсуждается, особенно если имеется возможность отладки в реальном времени. Отслеживать схему проще чем код.
    Каждому свое, все выбирают средства по вкусу и способностям :-)
  • 0
    Вставлю и я свои 5 копеек. Неудержался :))
    Являюсь много-многолетним электронщиком, аналоговую схемотехнику знаю хорошо, цифровую (на уровне логических схем) тоже совсем неплохо, но вот с программированием не дружу еще со времен Политеха и тогдашних Фортранов. Про С и прочее вообще молчу. Ну не мое это.
    Потому в освоении Ардуины, когда понадобилось, дальше помигать светодиодом и подобной лабуды не двинулся. Забросил.
    А с появлением FLProg с его LAD и FBD (особенно!) случилось чудо — за пару вечеров нарисовал несколько достаточно сложных (как для меня) программ, залил их в Ардуину — и все работает! Также появилось много новых интересных планов, и все — благодаря FLProg.
    Так что очень прошу уважаемого автора программы FLProg даже и не вступать в споры с тру-программерами вроде AVKinc и прочими, ежели таковые найдутся, не тратить на них свое время. Все равно переубедить их не удастся. Да и незачем это, у них свой мир, пусть там и живут.
    А от лица всех не-программистов, которые, однако, смогли делать очень полезные для себя вещи, Вам огромное спасибо!
  • 0
    Да уж, такого я еще не видел: срач C++ VS LAD ))))))
    Хотя тут все вроде как очевидно))

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое