Доброго времени суток, Хабр!



Разработка промышленного контроллера с дисплеем для сбора и анализа данных, а также для управления нагрузками, объединенными в группы. Кому интересно, что из этого получилось, прошу под кат.

Тема промышленных контроллеров давно развивается для использования в автоматизированных системах управления (АСУ). Когда я вижу очередной контроллер Siemens, ViewPAC или любого другого производителя, я вижу лишь большой планшет (пишу именно об этом формфакторе, то есть не стоечные варианты) со специализированным софтом внутри, но это лишь на первый взгляд. На самом же деле, чаще всего, схож лишь внешний вид со стороны дисплея, а вот задняя панель имеет интерфейсные разъемы, отсеки для подключения модулей расширения, датчиков, внешних носителей для хранения данных и т.д. Существуют универсальные промышленные контроллеры и узкоспециализированные, то есть предназначенные для выполнения набора задач, чаще всего однотипных.

Именно такой (узкоспециализированный) контроллер мы и разрабатывали. Для начала, пара слов о реализации. Глобально устройство делится на две части. Первая – это модуль на iMX6D, который был нами разработан как раз для реализации таких задач, вторая – это микроконтроллер STM32F103RBT7. Как я уже писал ранее (в предыдущих статьях), именно блочная (модульная) система позволяет быстро реализовывать сложные проекты. В такой системе большая часть аппаратно-программного комплекса уже отлажена, и остается лишь согласовать ее с другими модулями и доработать под конечного заказчика.

iMX6D

Полноценный процессорный модуль (два ядра по 1ГГц), который занимается рядом задач, для взаимодействия с пользователем:

  • вывод данных на дисплей/обработка тачскрина;
  • Ethernet 10/100/1000;
  • синхронизация времени;
  • хранение логов событий;
  • web-интерфейс + обновление;
  • хранение данных профилей;
  • сложные расчеты для микроконтроллера.


И это не полный список того, чем занимается модуль.



Рис.1. Процессорный модуль

Web-интерфейс почти полностью повторяет картинку с дисплея, что позволяет легко ориентироваться пользователям и оперативно менять настройки. Реализация, как и в прошлых проектах, на движке “11-parts”. Так как львиную долю задач выполняет микроконтроллер, появилась необходимость обновления его прошивки (также, как и основной) через web. Эта задача стояла особенно остро, так как заказчик планировал обновлять устройства для расширения функционала. Процессорный модуль связан с микроконтроллером по UART (через него происходит и прошивка последнего).

STM32

Микроконтроллер в данном проекте имеет очень важное значение. Во-первых, его использование позволило распараллелить задачи для программистов и выделить два основных направления:

  • Взаимодействие с пользователем.
  • Сбор данных, обработка и управление.


Во-вторых, модульная система более удобна для отладки, тестирования и расширения функционала.

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

Конкретно для данного проекта для каждой группы доступны:

  • 6 датчиков температуры, объединенные в единую сущность для определения средней;
  • 2 независимых датчика температуры;
  • 2 датчика влажности;
  • 1 датчик CO2;
  • 12 каналов управления внешними исполнительными элементами.


Также несколько уличных датчиков:

  • 2 независимых датчика температуры;
  • 2 датчика влажности.


Итого, получается, что микроконтроллер собирает данные с 48 датчиков и управляет 48 исполнительными элементами. Все датчики температуры аналоговые. Датчики влажности и CO2 имеют токовый интерфейс 4-20мА.

Теперь немного схемотехники. Для коммутации датчиков было решено использовать аналоговые мультиплексоры HCF4051 (у них есть задержка на переключение, но для нашей задачи это было не критично). Именно эта серия уже снята с производства, ее отличие, например, от CD4051 только в скорости переключения (ну и в производителе). Таких мультиплексоров в контроллере шесть. Переключение всех мультиплексоров происходит одновременно (одними и теми же ножками микроконтроллера), что значительно сокращает ресурсы и время считывания. На микроконтроллере, соответственно, задействовано шесть каналов АЦП.



Рис.2. Схема включения мультиплексоров

Для каждого температурного датчика используется отдельный источник опорного напряжения TL431 (в корпусе SOT-23), таким образом, при КЗ на одном из датчиков остальные продолжают работать также, как и прежде. Для подачи питания на все опорники используется LM1117 на 3,3В. Питание платы осуществляется от внешнего источника DC24V, поэтому для вторичных питаний используются два одинаковых DC/DC TPS54560DDAR (формирование 12В и 5В), так как использую их уже не в первом проекте. 3,3В получается из 5В с помощью ST1S10.



Рис.3. Расположение питателей на плате

Для управления внешними нагрузками обычно используются реле, срабатывающие от подачи переменки 24В. Поэтому на каждую группу подается AC24V, которые коммутируются симисторами BT138-600 через оптронную развязку. Схема представлена ниже. Работает все стабильно.



Рис.4. Схема управления на симисторах



Рис.5. Группа разъемов датчиков и сигналов управления на плате

Программы управления хранятся на отдельной EEPROM, подключенной к микроконтроллеру. Там же хранятся начальные параметры при горячем включении и последнее состояние всей системы (чтобы можно было продолжить исполнение программы).

Понятно, что на микроконтроллере не хватает GPIO для управления таким количеством оптронов (да и не гуманно через всю плату тащить столько проводников), поэтому используются расширители портов TCA6424ARGJR, по одному на две группы и один системный (обработка нескольких входных сигналов, обработка системных кнопок, светодиода индикации и т.д.).

Реле, которое хорошо видно на Рис.5. (по одному на каждую группу), используется для определения наличия входного напряжения AC24V и исправности предохранителя на каждую группу. При срабатывании оно отправляет сигнал на микроконтроллер, который, в свою очередь, оповещает о неисправности.

Синхронизация времени происходит по протоколу NTP, но также имеется микросхема RTC PCF8523 (тоже неоднократно использовалась) для подсчета времени в отсутствии напряжения питания.



Рис.6. Схема RTC

Отображение

Управление ПК происходит оперативно с помощью тачскрина и удаленно через web. Как я уже говорил, интерфейс браузера (этот функционал еще в доработке) повторяет экран. В данный момент написано приложение на Qt, которое общается с ПК напрямую по mqtt и максимально приближено к реальности. В web, на данный момент, имеются общие настройки устройства, организация доступа и обновления софта.



Рис.7. Отображение данных в приложении на Qt



Рис.8. Отображение данных на дисплее

Такого рода контроллеры позволяют строить полноценные АСУ для промышленных комплексов. Функционал и набор датчиков, как правило, различен и соответствует требуемым задачам, но назначение одно – мониторинг и/или управление. Для больших систем можно наращивать количество контроллеров, объединенных одними задачами. Контроллер может не содержать дисплея, а управляться по сети (Ethernet).



Рис.9. Небольшая партия

Спасибо за внимание и до скорых встреч!

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


  1. lelik363
    26.09.2019 20:42
    +2

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

    Зачем Вы заложили в проект снятый с производства компонент?
    На соответствие каким стандартам устройство проходило испытания?


    1. the_bat Автор
      26.09.2019 22:05

      Софт писался под оба мультиплексора (то есть не зависимо от скорости переключения). Работать будут и те и те. И аналоги.


  1. FDA
    26.09.2019 21:35

    Это классический аналоговый мультиплексор. Есть серия CD4051 и куча других аналогов. Они ещё долго не будут сниматься с производства. А вот на счёт испытаний тоже интересно.


    1. the_bat Автор
      26.09.2019 22:06

      Опытная партия была произведена для заказчика. Сертификация и испытания ложатся на его плечи. У нас есть внутренние испытания, плюс наработка, пока все хорошо.


      1. lelik363
        26.09.2019 22:17

        У нас есть внутренние испытания

        Какие параметры проверяли?


        1. the_bat Автор
          26.09.2019 22:23

          Кроме логики работы и длительной работы, многократные срабатывания нагрузок, отработка кз на нагрузках, разные длины кабелей датчиков в различных условиях, работа при температурах -20 +45 град, мануальное тестирование на зависания (с поиском багов) при длительной работе, многократные включения с полным восстановлением работоспособности, тесты на стабильность работы и скорость загрузки и др. Еще не все тесты описаны и проделаны.


      1. lingvo
        27.09.2019 12:15

        Плохо. А требования по ЭМС вам хоть какие-то спустили?


        1. the_bat Автор
          27.09.2019 12:20

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


          1. lingvo
            27.09.2019 12:30

            Это решает только проблемы из-за помех через излучение (по воздуху)
            От кондуктивных помех это не защитит.


            1. the_bat Автор
              27.09.2019 12:32

              Это да, но шкафы заземлены, так что частично это спасает от помех по земле.


              1. lelik363
                27.09.2019 13:06

                А помехи по питанию?


                1. the_bat Автор
                  27.09.2019 13:54

                  В корпусе стоит слок питания MW 220-24


    1. lingvo
      27.09.2019 10:56

      Мы используем 4051/4052 в своих изделиях уже 20 лет. Очень нежная техника — самый часто выходящий из строя элемент по причине ЭМС. После гроз пачками вылетают. Причем защит вокруг них полно понаставили, все равно.
      А умирают они хитро — получается, что начинают каналы друг на друга влиять или не полностью отключаться. Причем на стенде может быть все ОК, а на объекте при других температурах… Иногда просто по подозрению выкусываем и ставим новую.


      В новой серии отказались от них и слава богу.


      1. FDA
        27.09.2019 12:11

        Ясное дело. Там же внутри каналы на полевых транзисторах реализованы, поэтому требуется хорошая защита. К слову, наш отечественный ОВЕН, в своих регуляторах раньше на входах CD4051 ставил, дальше АЦП. Защита несложная по входам. Каких-либо нареканий по ним не было.
        Но от гроз защита совсем другая должна быть. Там и разрядники ставить надо. Это отдельная тема. Во время гроз даже драйверы RS485 со всеми классическими защитами по входу только так из строя выходят.


        1. lingvo
          27.09.2019 12:19

          Не помню точно, но вроде там была проблема КМОП технологии тех времен, что напряжения на пинах не должны превышать напряжение на питании на меньшее значение, чем падает на обычном диоде. Т.е. обычные диоды их не защищают, им подавай Шоттки или извращайся.


          1. FDA
            27.09.2019 12:30

            Это проблема вообще всех КМОП микросхем серии CD. Возникает так называемый «тиристорный» эффект. Бороться с ними действительно непросто. Но если принять нужные меры, то работать всё будет нормально. В принципе, в интернете много схем по защите входов таких микросхем. А горят они часто даже при пайке. Поэтому в случае ручного монтажа надо использовать заземляющие браслеты.


            1. VT100
              28.09.2019 15:17

              Есть ещё один не очевидный путь наловить проблем с аналоговым КМОП коммутатором. Перегрузка по напряжению на не выбранном выходе — может влиять на выход.
              См. раздел «Crosstalk And Latchup» в AN205 от Vishay и TB3013 от Microchip.


              1. lingvo
                28.09.2019 16:36

                Это тоже было.


  1. DenisHW
    26.09.2019 22:03

    Проходили ли тесты на вибрацию? Как вели себя TO-220 корпуса?
    Спасибо.


  1. crustal
    26.09.2019 23:44
    -2

    При совке разработки и документацию к ним делил (для себя) на два типа: — еврейские и другой национальности. Еврейские — это такие, как книга Ельяшкевича про цветные телевизоры или серия книг Айсберга про радио, телевидение "… так это же просто!" Читаешь — все понятно, все логично, все просто, кайф — одним словом. Другой национальности — это когда читаешь и нихрена не можешь въехать, зачем здесь нагородили то, что здесь в принципе быть не должно, зачем здесь намешали винегрет из того, что удобнее было бы разнести в отдельные блоки, зачем так, когда можно проще и т.д. и т.п.

    Легкое вступление, теперь по теме. У автора лейтмотивчик — «модульность — есть гуд». Блин, не всякая модульность, а только правильная модульность, ага, лейтмотивчик скорее всего для самоуспокоения.

    Здравый смысл говорит, User Interface не имеет никакого отношения ни к процессорной логике, ни к управлению железом. Это отдельный модуль, который вполне можно было бы собрать на дешевом STM32F7. Теперь чисто мозги — мало ли под Линуксом железа — хоть на Армах, хоть на чем угодно — стоят немного и уже есть, не надо разрабатывать. Может без UI, эти гигагерцовые Армы можно заменить на что-то по-проще, типа из STM32H. Зачем в одном проекте и ST и NXP? Это удорожает разработку.

    Теперь собственно контроллеры. Это отдельные модули, зачем на них лепить сверху какие-то платы с мозгами. Последовательного канала связи достаточно. Зачем мешать в кучу на одной плате входные линии и выходные? Это независимые модули. Зачем нужны аналоговые коммутаторы, когда по их цене, а то и дешевле можно купить микроконтроллеры те же STM32F* с 16/24 аналоговыми входами и коммутаторами внутри их на 3 АЦП?

    Зачем мешать в кучу выходную низковольтную логику с силовой — пусть дешевый STM32F* разворачивает команду от мозгов на выходные линии — открытые высоковольтные коллекторы (стоки) и их надо закрепить на плате надежно, а не как на соплях симисторы на картинке. Симисторы, реле — это отдельная тема, зависит от конкретного управляемого железа, — отдельный модуль, пусть может быть и реализованный на той же плате, чтобы не ставить коннекторы, но это отдельный модуль, возможно с тяжелыми, вибрирующими, помехосоздающими компонентами.

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


    1. the_bat Автор
      27.09.2019 00:07
      +2

      Странный, конечно коммент, но отвечу. С конца. Вообще не вижу логики в размещении 4-х реле на отдельной плате. Да и симисторов тоже. Посмотрите любую плату с управлением 220В, например стиралки или посудомойки, и Вы увидите те де симисторы, реле и контроллер на одной плате. Ничего криминального.
      Контроллеры вместо мультиплексоров? Жесть какая! Я не завидую тем, кто будет писать для этого всего софт, а потом писать софт для обновления системы, когда найдется баг).
      Про входные и выходные линии вообще ничего не понял. В ТЗ есть четкое указание, объединить разъемы в группы…
      Что Вы имеете против ST и NXP в одном проекте? Я не вижу хороших процессоров у ST и нет освоенного контроллера от NXP. Криминал? Да ну) я теперь что должен все компоненты одного производителя использовать в проекте? Смешно.
      Про Ваш сарказм про модульность мне не очень понятно. Процессорные модули используют все и вся, что в этом такого? Вы хотите чтобы я вместо него поставил микроконтроллер? Нет, спасибо! Может убрать микроконтроллер и оставить толко процессор? А для чего? Описаная модель мне вполне нравится и я намерен ее придерживаться.
      И еще, а где Вы вообще видите высоковольтные линии? Тут 24В максимум…


      1. 8street
        27.09.2019 08:55

        Кстати, про реле и модульность входов-выходов. В этом что-то есть. Залипла реле — меняй всю плату. Погорели некоторые входа — меняй всю плату. Уже встречал такие решения и приходилось их ремонтировать. А ремонтировалось, естественно, заменой, поскольку производство ждать не может, пока ты расчехлишь паяльник.


        1. the_bat Автор
          27.09.2019 10:17

          Я думал об этом. О ремонторигодности. Я уже давно занимаюсь ремонтом электроники в свободное время и в основном для того, чтобы почерпнуть новые идеи. Но все-таки, посмотрите на плату телевизора, магнитолу в автомобиле, плату усилителя (ресивера). Автомагнитолы подвержены большим нагрузкам (думаю хуже только рельсовый транспорт). Чаще всего там нет блоков, либо эти блоки сделаны для унификации, то есть замена блока ведет к расширению/сужению функционала. Разъемы ухудшают отказоустойчивость аппаратуры. Хорошие межплатные разъемы на -10 (я даже не говорю о -40), дорогие. Дорогая часть — это модуль. Он вынесен отдельно. Стоимость только его сборки в 3 раза дороже всей платы. Да, в моем случае матплата изымается, на ее место ставится новая, модуль остается старый (вся привязка устройства к к конкретному местоположению тоже). После ремонта плата снова отправляется в зип.


      1. lelik363
        27.09.2019 11:16

        Как правило в АСУТП системы модульные, хотя, наверное, бывают исключения.
        Модульность дает некую гибкость при построении системы и её обслуживании.


        1. the_bat Автор
          27.09.2019 11:58

          Поэтому в самом начале статьи я написал что контроллер узкоспециализированный.


      1. lelik363
        27.09.2019 11:20

        *


      1. hardegor
        28.09.2019 20:51

        Тут 24В максимум…

        А симисторы на 600 В тоже 24 В коммутируют?
        Модульность имелось ввиду раскладка — один/два ключа+защита это отдельный модуль с гальванически развязанным логическим выходом. И впаян он в основную плату — тогда ремонтопригодность и надежность выше. Плюс достаточно просто складывать различные конфигурации. Я на такие модули еще светодиоды состояния добавляю.


  1. ermakovd
    27.09.2019 10:58

    Я, конечно понимаю, что есть ТЗ заказчика и всё такое, но аналоговый и токовый интерфейс сенсоров, мультиплексоры, TL431 и LM-ки… Музеем от этого всего веет. Имею общение с (новым) оборудованием, даже в Китае так почти уже не делают. Про Европу вообще молчу.
    Что касается реле — действительно когда-нибудь выйдет из строя, но его можно поставить в панельку. И симистор без защиты дохнет от маломальского КЗ, и защитить его экономически разумным способом не получится (но его тоже можно поставить в панельку, такую же как и у реле).


    1. lingvo
      27.09.2019 11:02

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


    1. DenisHW
      27.09.2019 12:09
      +2

      А что не так с TL431 и LM1117? И в Китае и в Европе еще как используют. Какие вы компоненты используете? Можете привести примеры?


      1. ermakovd
        27.09.2019 12:24

        Использовать то они используют, вопрос — где. TL431 — это компонент дешёвого блока питания. Есть огромное количество недорогих специализированных ИОН. LM1117 до кучи под раздачу попала, просто сейчас импульсники кругом, причём синхронные. И стоят даже дешевле оригинальной ЛМки.
        Тут вопрос к аналоговой схемотехнике вообще.


        1. the_bat Автор
          27.09.2019 12:29

          В шите на 431 так и написано «Precision Programmable Reference»


          1. ermakovd
            27.09.2019 15:15

            Не такой он precision, как хотелось бы.
            Даже недорогие шунты современные на порядок точнее (да и стабильнее), какой-нибудь ADR50хх посмотрите.
            Но тут вопрос, конечно, какая точность нужна. Нужно считать.
            Я считаю, что нужно стремиться к максимальному разрешению использованного ADC, ошибка и так набежит от других компонентов системы. А ошибка на ошибку и снова на ошибку — может много получиться.


            1. hardegor
              28.09.2019 20:39
              +1

              Там написано NTC, т.е. точность «никакая», как-раз TL431 подойдут.
              А импульсники вместо LM1117 шумов добавят. И цену, и количество компонентов…


          1. ermakovd
            27.09.2019 16:01

            AD158х имел бы здесь нормальные цена/качество, ИМХО. Но это не шунт, а бандгап.
            Отмечу и положительный момент — ни одного электролита на плате не увидел.


        1. VT100
          28.09.2019 14:53

          Снобизм в сообщении этом вижу я. Если компонент достаточен по характеристикам и стоит немногим больше стоимости песка, затраченного на его производство, то почему не использовать именно его?


          1. ermakovd
            28.09.2019 17:22

            Про снобизм согласен, неправ. Раскрутили меня на критику компонентов, не то я имел ввиду изначально. Я просто до сих пор не понимаю, почему настолько аналоговая схема в 2019 году.


    1. SvSh123
      27.09.2019 13:39
      +1

      Это не музей, это винтаж. :)
      Просто для старого оборудования сделали новые мозги. Обычное дело. Заменять собственно оборудование, как правило, на порядок (а то и два) дороже, чем разработать такой вот контроллер на замену ветхозаветным командоаппаратам и пультам с лампочками и тумблерами.


  1. lingvo
    27.09.2019 10:58

    Так проходила плата испытания на ЭМС? Без этого трудно назвать ее промышленным контроллером.


    Вопрос — зачем внешний RTC, если в STM32F103 есть встроенные часы?


    1. the_bat Автор
      27.09.2019 12:03

      По поводу испытаний я написал выше.
      По плану время должен получить модуль на iMX6. При том, что если с контроллером что-то не так, то время все равно должно быть, так как модуль — главный (если умер модуль, то это крах, если умер микроконтроллер, то модуль должен об этом сообщить, записать в лог и т.д.). На процессоре тоже ест встроенный RTC, но поработав с ним поняли что лучше использовать независимую микросхему.


      1. lingvo
        27.09.2019 12:14

        А, у вас система чисто собирающая? Потому что в управляющих системах зачастую наоборот — контроллер, который управляет оборудованием — главный, а модуль взимодействия с пользователем — это некритичная функция.
        Если модуль накроется, то управляющий контроллер может проработать и сам какое-то время, безопасно остановив процесс в нужное время в нужном месте. А наоборот — какой толк от модуля, если основная начинка мертва?


        1. the_bat Автор
          27.09.2019 12:17

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


  1. the_bat Автор
    27.09.2019 11:52

    Случайно отклонил комментарий
    Комментарий пользователя Grey4ip к публикации «Промышленный контроллер. Система сбора данных. АСУ» ожидает вашего одобрения:
    Спасибо за статью.
    Для управления внешними нагрузками, обычно используются реле, срабатывающие от подачи переменки 24В
    Странно, по моему опыту, DO (дискретный выход) ПЛК выдаёт постоянное напряжение около 24V, соответственно используются реле на 24V DC.
    Кстати, нет фото промышленного контроллера в корпусе. Как монтируется на дин-рейку?


    1. the_bat Автор
      27.09.2019 11:53

      Заказчик на своих объектах использует именно реле AC24V.

      Корпус разрабатывался сторонней организацией, Крепления на DIN рейку нет. Просто настенный вариант.


      1. lingvo
        27.09.2019 12:09

        Заказчик на своих объектах использует именно реле AC24V.

        Скажите этому заказчику, что он немного странный.
        Согласно стандарту на ПЛК ГОСТ IEC 61131-2 п.5.1.1.1 (к которому ваш промышленный контроллер должен стремиться, так как все датчики/актуаторы разрабатываются под этот стандарт) переменный ток не рекомендуется использовать для входных/выходных сигналов напряжениями до 100В. В этом случае рекомендуется использовать постоянку. Используя переменку, заказчик рискует оказаться в ситуации, что он не сможет использовать стандартное оборудование.


        1. the_bat Автор
          27.09.2019 12:14

          Говорить я не буду. Но для тестирования нам даже выданы несколько типов реле. Заказчик целиком оснащает объекты, может в этом есть скрытый смысл?


        1. SvSh123
          27.09.2019 14:04

          Просто на оснащение для этого заказчика имеются особые стандарты.


        1. ser-mk
          27.09.2019 14:15

          Используя переменку, заказчик рискует оказаться в ситуации, что он не сможет использовать стандартное оборудование

          А чем реле AC24V не стандартное устройство?


          1. lingvo
            27.09.2019 15:44

            А чем реле AC24V не стандартное устройство?

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


            1. hooperer
              27.09.2019 20:35
              +1

              Не согласен.
              достаточно часто в качестве выходных элементов в Автоматизации используют симисторы. В том числе для управления всякими КЗР-ами. с тем чтобы не «толкать» их реле. Соответственно и на 24 вольта переменки и на 220 вольт переменки вполне себе стандартные дискретные выходы. Ну и собственно реле можно спокойно найти на 24 вольта переменки.


  1. Ernest88
    27.09.2019 13:32

    От Siemens есть бюджетные контроллеры 1200, где встроен Web сервер. Хорошо подходит для всяких мониторингов и сборов данных.


  1. hooperer
    27.09.2019 17:25
    +1

    … сразу вопрос — Не сильно дорого при таких малых партиях получается?
    Почему то прикинув на пальцах мне кажеться что вместе с разработкой дешевле взять готовые модули ввода-вывода и плк, поместить в такой же металлический шкаф. Тот же beckhoff по размеру готового изделия может быть интересней, а по цене Овен. (а когда кажется, видимо, надо ещё пару раз подумать, чтобы показалось совсем другое).
    Ну да это экономика, но как только возникает Пром ПК сразу возникают Языки программирования оного — а это в стандарте МЭК61131-3 стандарт на языки программирования.
    Это я к тому, что можно было бы взять, к примеру Masterscada4d положить на Linux на тот же самый imx6D, и иметь визуализацию в браузере, но уже тех.процесса, описанного Стандартным языком описания систем автоматизации. Причем в такой архитектуре — Мозги на Imx6, ввод-вывод на stm32- портирование могло бы быть не таким сложным как создание собственной среды. И кратно дешевле, при объёмах до 100 штук в месяц.


    1. the_bat Автор
      27.09.2019 17:34

      Контроллер не предназначен для перепрограммирования. Алгоритмы задаются из визуализированного интерфейса. Никакого программирования, пришел пользователь, тукнул в экран пальцем, поменял гистерезис, температуру, переназначил нагрузку. Существует набор программ, которые планируется добавлять прошивая устройство.
      Заказчик обратился не чтобы сэкономить, а чтобы сделать свое устройство под своим брендом. Не нужен Сименс или Овен. Нужен свой контроллер под конкретные задачи. Разработка в России будет почти всегда дороже чем любое аналогичное серийное устройство. У нас дорогая сборка плат (очень), компоненты с наценкой, даже когда работаешь с дистрибьютером квотируются цены всегда по-разному, плата на 8 слоях по 5 классу в Зеленограде делать отказались, одна логистика сжирает все. Да, разработка дорога, но когда заказчик приходит за разработкой, он не пытается экономить, ему нужно что-то, что не может дать серийное устройство. Свой логотип, свой софт, сертификат на устройство, какие-то специфические требования и т.д.


      1. hooperer
        27.09.2019 19:52

        Не сочтите за назойливость, но интересно на чем сделана программа, которая реализует Технологический процесс ( на чем написана реализация именно Алгоритмов — какой язык/архитектура).
        На самом деле так сразу говорить что ПЛК и ПК совсем разные вещи тоже не совсем корректно. строго говоря существует достаточно большое количество ПЛК, которые продаются с уже прошитой программой, при которой пользователь получает именно интерфейс «ткнул в экран пальцем — поменял уставку/алгоритм/технологический процесс/температуру/настройку регулятора» при этом имея интерфейс загрузки дополнительных алгоритмов именно методом загрузки файлов типового решения.

        Оффтопом в моём понимании (а оно не претендует на Истину) ПЛК как бы большей частью и создаются производителями — для упрощенного создания Типовых Конфигураций для пользователей. Именно ПЛК с типовыми уже загруженными конфигурациями приносят Производителю больше денег чем сами ПЛК. Меньше чем модули ввода-вывода, но однозначно больше ПЛК. При этом с учетом необходимости делать бОльшое количество решений — проще их реализовывать именно на ПЛК ввиду специфики технологических процессов, чем на языках программирования.

        Соответственно и интересно, каким образом создался новый ПК — на чем писался, какая архитектура- крупными мазками.


  1. Ar4uk_EI
    27.09.2019 17:36
    -1

    На каких я зыках пишутся, алгоритмы? Если вы пытались сделать ПЛК тогда языки должны быть стандарта iek61131-3, в АСУ ТП, это так? Или вы просто напихали различных микросхем, написали код на с для измерения, параметров и связи? ПЛК используют на пром. Объектах и работают с ними не айтишники, а асушника или электроники и очень часто приходится, дорабатывать программы, изменять алгоритмы, делать форсы итд, все это позволяет даже дишманский овен, при этом языки программирования должны быть ладдер, fbd, sfc, cfc, CT, ctl, а не с++ и джава, а как это сделано у вас? Так же очень часто на больших объектах используется горячее резервирование плк, да и вопрос как связаться с вашим плк со скады? Есть какой то опсишник? Задумка хорошая но есть куча нюансов, большие компании вбухивают кучу денег для разработки плк и софта под него, как у вас кстати с библиотеками? Понимаете при разработке систем автоматизации перед инженером стоит задача сделать все просто, понятно, с кучей комментов, что бы все хорошо работало и при этом это должно делаться очень быстро, а для этого производители плк и делают свой софт с различными набора и библиотек и различных других фич, к примеру визуальная проверка сети, это удобно. Когда работает к примеру домена и происходит сбой нужно очень быстро понять куда бежать и что делать, на вашем контроллере это все возможно? Или это просто супермикроконтроллер с предустановленными возможностями?


    1. the_bat Автор
      27.09.2019 17:37

      Вы пишете про ПЛК (Программируемый логический контроллер). Я пишу про ПК (Промышленный контроллер).


      1. hooperer
        27.09.2019 17:59

        Да, вопрос терминологии весьма важен. ПЛК и ПК указанные Вами — достаточно разные понятия для возможности их объединения, да.
        Интересно, а на каком языке описывается в данном контроллере программа управления?
        в каком формате хранятся данные?


        1. lingvo
          27.09.2019 23:22

          Да на Си там все, скорей всего. Чего вы ждете от заточенного под конкретную функцию контроллера?


          1. hooperer
            28.09.2019 03:54

            Если честно то ожидал какого-нибудь Lua или python с примерным указанием на прогнозируемое время цикла.
            ПО виду плат — разработка интересная.
            Достаточно редко, но все-таки регулярно можно столкнуться с такими историями в совсем разных местах. От управления чайниками или дизельгенераторами до каких нибудь Бос-ов в историях со спутниками или блоках для Искр 226-х. И почти всегда они восхищают интересными «задумками» и реализациями в полном соответствии с предполагаемым ТЗ.
            Архитектура в части переноса обработки переферии на stm32fх0x с головой на imx6 мне нравиться, сам пишу задания на такую архитектуру периодически.


            1. lingvo
              28.09.2019 19:50

              Если честно то ожидал какого-нибудь Lua или python с примерным указанием на прогнозируемое время цикла.

              Это скорей всего на imx6 крутится


              1. hooperer
                29.09.2019 17:56

                Так это и есть интерес для меня. Что на stm32 считывается, как параметризуется — мне лично не сильно интересно. Ну если только не удивить меня каким-нибудь Интересным namespace внутри stm32, который крутясь в одной задаче семафором с головой параметризуется и выполняется при отсутствии прерываний. И при этом синхронизируется с таким же, но уже на imx6. Интересно же!


  1. Ar4uk_EI
    27.09.2019 18:01

    При всем уважении, я очень много лет в сфере автоматизации и ни разу не слышал про пк как про промышленный контроллер, есть плк, есть пак, есть программируемое реле, есть панельный логический контроллер они просто идус с HMI на борту, есть специализированные контроллеры по типу температурный, но они не пользуются спросом. Я бы не прикапывался к вашему изобретению, но вы сказали что его можно использовать в промышленности, а тут уже извините но есть миллиард требований. Системы автоматизации строятся на данный момент на плк и пак контроллера, к примеру на доменной печи используется до 12 плк с 32мбайтами памяти для ПО, более 10 000 сигналов из которых львиная доля это аналоговые(4-20), так же используются спец. Модули для подключения энкодеров, система верхнего уровня построена на клиент-северной архитектуре с горячим резервированием серверов, по совокупности от 10 до 15 армов с клиентами. Одно из важнейших требований к софту это правка программы в режиме онлайн с нескольких мест одновременно. По поводу дискретки, на данный момент везде используется 24vdc, аналоговые сигналы так же ст андартизиваны, (4-20mA,0-10v, сигналы термо пар и термосопротивлений) при этом для, разных датчиков и модулей используется, разная схема подключения (2,3,4)как для 4-20 так и для термосопротивлений. Я желаю вам удачи в ваших проектах, но пока что из того что я увидел данному девайсу на больших пром. Объектах делать особо нечего, для того что бы он прошёл кучу аттестаций и получил лицензию нужно изучить работу плк различных компаний, а потом уже что то проектировать. Ещё раз удачи во всех начинаниях.


    1. loki82
      27.09.2019 20:25

      Опыт не столь богатый. Но соглашусь, реле на 24 переменки очень странно. Тогда уж использовали бы 5 вольт как обычно на плате распаивают. Маштабирования нет от слова совсем, или это не описано. В том же овне под сельхозку ставь модуля не хочу. Не описана скорость выполнения цикла на нижнем уровне и на верхнем. Может ли нижний уровень выполнять простейшие действия не обращаясь к верхнему. Ну и самое главное цена. Если это 200$ для головы и 100$ для модуля тогда можно рассмотреть. Не понятно как предусмотрено обновление. И на каких языках писать. Есть куча микроконироллеров заточенных по С.


      1. the_bat Автор
        27.09.2019 20:29

        Что рассматривать? Какая цена, какие доллары? Устройство разработано для заказчика, его может производить только он, масштабировать ничего не нужно, все обращения и возможности четко регламентированы в ТЗ, никакой самодеятельности и ничего лишнего. Заказчик захотел 24В переменки — это проблема? Для меня нет, я не буду его уговаривать ставить 5В или 12В реле. Заказчик хотел именно столько датчиков и линий управления, сколько выведено на плате, не больше и не меньше. Если нужно будет добавить новую линию или датчик буден новый контроллер с новыми возможностями.


        1. loki82
          27.09.2019 20:40

          Ответа на другие вопросы нет. Задам вопрос по другому: теперь только вы можете внести изменения в работу ПК?(странная аббревиатура. Всегда считал что это ПЛК). Заранее извиняюсь, но таких поделок я видел много и они вызывают сомнение в пром. применение. А некоторые ещё и опасны для жизни.


          1. lingvo
            27.09.2019 23:20

            Да забудьте вы слово промышленный. Это просто специализированный контроллер для какого-то устройства. От промышленности там пока только то, что это устройство используется в промышленности, а плата стоит в металлическом шкафу.


    1. Siemargl
      27.09.2019 23:35

      хватит писать глупости — полная мешанина, не относящаяся к теме

      здесь маленькая узкозаточенная системка на 50 сигналов.

      вопрос у меня только в том, насколько к ней применим термин «промышленная» — ?? температурный диапазон, виброустойчивость, пылевлагозащита, опторазвязки на >500В по в/в, классы точности, защита от дребезга, ЭМС, итд итп…


  1. onegray
    27.09.2019 22:37

    Мне принципиально очень нравится отделение низкоуровневой логики в контроллере, а высокоуровневая логика для коммуникации и всякие HMI на процессоре с ОС. Тогда контроллер можно условно считать безотказным и возложить на него все критичные функции. А процессор можно и перегружать при сбое без последствий. Но тут уже, конечно, все завит от ПО.


  1. madcatdev
    28.09.2019 00:41

    Решение с аналоговыми датчиками температуры кажется весьма странным. Не проще ли было вместо термисторов, ИОН и аналоговых мультиплексоров использовать 1-Wire термометры, например DS18B20?


    1. the_bat Автор
      28.09.2019 16:08

      Если закоротить линию 1-w то перестанут работать все датчики на линии, а это очень критично. Тоже прописано в ТЗ.


      1. madcatdev
        28.09.2019 19:38

        Можно сделать несколько групп термометров с разными линиями данных. Кстати, а какая длина линий до термодатчиков?


        1. the_bat Автор
          28.09.2019 19:45

          До 100м


          1. madcatdev
            28.09.2019 23:05

            Как решили проблему с влиянием сопротивления линии на измерения? Ну и наводки ведь наверняка есть на такой длине провода (если конечно у вас там оно не экранировано).


            1. the_bat Автор
              28.09.2019 23:52
              +1

              Изначально планировались эталонные датчики (1% резисторы) на концах линий для калибровки каждой перед подключением датчиков. Это вариант пока рабочий, но предварительно проверили на 300м и большой погрешности не увидели. Но думаю что все равно добавим функционал калибровки.


              1. hooperer
                30.09.2019 11:39

                а юстировка не спасает?
                ГОСТ 30804.6.2-2013 и опыт подсказывают что иногда на Производстве (а это не синоним Промышленности?) бывают сильные помехи. в том числе рядом с низковольтным проводом до датчика, 100 метров это много и по пути на стене/через стену может стоять какой-нибудь частотный преобразователь. И он может всю жизнь стоять выключенным, но потом каааак включиться. Аж до засветки неоновых ламп.
                Это я из зависти пишу к тому, что в Вашем случае существенно проще чем с ПЛК реализовать Правильную и Хорошую фильтрацию и юстировку можно как угодно и когда угодно, хоть по канально хоть группами.


                1. lingvo
                  30.09.2019 12:01
                  +1

                  существенно проще чем с ПЛК

                  Не очень понимаю почему. В ПЛК на подключении датчиков температуры уже собаку съели — их там и по 2-х проводной схеме подключают и по 3-х проводной и 4-х проводной даже.
                  И не от хорошей жизни, кстати, а как раз, чтобы защититься от всяких бяк и получить нормальную точность. Рекомендую глянуть, например, доку к вот этому входному терминалу. На стр. 64-71 описано, как лучше к нему подключать датчики температуры.


                  Здесь же максимум — это взять экранированную витую пару, но фильтровать сигнал все равно надо будет жестко. Или у вас 3-х/4-х проводное подключение тоже возможно?


                  1. hooperer
                    30.09.2019 12:52
                    +1

                    Сами Модули ввода-вывода ограничены по функционалу фильтрации.
                    Ограничены как раз зашитыми в них программами.

                    А вариантов фильтрации не так чтобы очень мало, а скорее наоборот.И реализовывать из не так чтобы сложно в представленной парадигме.

                    Одно дело фильтрация напрямую АЦП любым алгоритмом, который подходит под Текущие параметры, а другое дело когда надо фильтровать гораздо медленнее уже пред-фильтрованные значения из модуля.

                    Для примера — натравить в ПК автора этого поста нейронную сеть на все АЦП — дело достаточно простое. Python, numeric, как можно быстрее берёшь выборку из stm32 к примеру сдвиговыми регистрами с максимальной скоростью и получаешь Хороший результат если правильно настроил сеть и модель вообще подходит под текущую задачу фильтрации.
                    И даже есть отдельное ядро для таких задач а настроить это не так чтобы было сильно сложно.

                    С ПЛК всё немного по-другому — данные с модулей прийдут немного позже(если это не бэгхкоф) и это полбеды- они придут уже поканально отфильтрованные. Тем фильтром который есть в настройке конкретного канала. И не из каждого модуля удастся вынуть код АЦП да ещё и потом синхронизировать их по времени. Даже если они придут с меткой времени — распихать их по нейроной сети в одно время — задачка та ещё.

                    Согласен бредовый пример, но или вот выделение помех в юстировочном канале с анализом и по ним изменять фильтрацию и её тип в остальных каналах? задачка на ПК достаточно простая а на ПЛК достаточно сложно.

                    и именно эта парадигма бОльшего варианта возможностей вносит лёгкий налёт белой зависти к индивидуальным решениям.

                    Собственно в такой, специфической парадигме это и проще. Плата на фото и схемы выглядит достойно — для меня это основание полагать, что автор знает и двух проводные и четырёхпроводные подключения термо-сопротивлений и их компенсацию, пока не доказано обратного.


                    1. lingvo
                      30.09.2019 13:01

                      Для примера — натравить в ПК автора этого поста нейронную сеть на все АЦП — дело достаточно простое. Python, numeric, как можно быстрее берёшь выборку из stm32 к примеру сдвиговыми регистрами с максимальной скоростью и получаешь Хороший результат если правильно настроил сеть и модель вообще подходит под текущую задачу фильтрации.
                      И даже есть отдельное ядро для таких задач а настроить это не так чтобы было сильно сложно.

                      Было бы интересно увидеть реальный пример с объяснением чем он будет лучше обыкновенной фильтрации в данной конкретной предметной области — измерение температуры в присутствии помех в реальном времени.


                      А если серьезно: ПЛК — это очень массовый маркет. И если все так радужно, как Вы расписываете, то на рынке должны уже существовать десятки решений для ПЛК на основе "нейронных сетей" или с анализом помех из юстировочного канала. В ПЛК стоят мощные процессоры, сигнал от АЦП можно получать и нефильтрованный и очень быстро — это же легко настраивается. Спрос есть. Где они?


                      1. hooperer
                        30.09.2019 13:46
                        +1

                        они в Будущем.
                        Сейчас в ПЛК мощные процессоры — все ещё редкость.
                        Потребности указываемые выше скорее единичны и редки, а
                        ПЛК развиваются достаточно медленно — ПЛК модернизируются достаточно медленно.
                        И зачастую тянут за собой «шлейф» технических решений прошлого века.

                        За примерами ходить далеко не надо — Дельта с устаревшим к 1996 году стандартом модбаса — не принимающих стандарта хотя бы 2012 года. Или модули ввода-вывода использующие устаревшие на десятилетия АЦП потому, что они уже в потоке на производстве, и в новую разработку их вставить кратно дешевле чем казало бы более дешевые по закупке и новые, лучшие.

                        Фильты кроме того, что я на коленке в плане бреда придумал, бывают ещё и к примеру «с конечной импульсной характеристикой»,
                        «с бесконечной импульсной характеристикой», Можно с Фурье поработать, да чего только нельзя сейчас. С пайтоном или фортраном на imx6 это скорее дело техники чем исследования " как сделать"

                        И, по моему мнению — применить их беря исходных значения АЦП в бОльших количествах — в предлагаемой архитектуре в моём понимании проще в реализации ( по крайней мере с моей колокольни).

                        А с юстировкой по одному каналу вполне себе есть для применения ПЛК.
                        Другое дело что из за указанных причин — ПЛК при модульной структуре не раскрывают в полном объеме потенциал, но как таковые конкретные проекты ПЛК такие есть, юстировку и подстройку по отдельному каналу я видел и динамическую и статическую.


  1. VT100
    28.09.2019 15:00

    Для управления внешними нагрузками обычно используются реле, срабатывающие от подачи переменки 24В. Поэтому на каждую группу подается AC24V, которые коммутируются симисторами BT138-600 через оптронную развязку. Схема представлена ниже. Работает все стабильно.

    Не разглядел на плате снабберные цепи. Что за конденсаторы — керамические, напряжение, типоразмер?


    1. the_bat Автор
      28.09.2019 16:06

      Керамика 0603 50В. Они около симисторов, из-за них не видно.


      1. VT100
        28.09.2019 20:26

        Беря «среднепотолочное» реле на 24 В переменки с мощностью катушки 1,6 ВА (Relpol R4) и загоняя с симулятор — получим выброс на конденсаторе снаббера чуть более 580 В. «Отака ***ня, малята».

        Надо что-то менять… Конденсаторы на плёночные или варистор поставить ( соответствующей мощности, а не 0603)?

        P.S. Совсем без ничего (не считая даже паразитных ёмкостей проводки) самоиндукция превосходит 1 кВ.


        1. lingvo
          28.09.2019 21:55

          А разве симистор не при переходе тока через 0 выключается?


          1. VT100
            28.09.2019 22:02

            Да, только что перепроверил модель с правильным выключением (в нуле тока). Но, всё равно, напряжение на конденсаторе достигает 69 В.


    1. ermakovd
      28.09.2019 17:25

      Опять же современные трёхквадрантные симисторы в снабберах не нуждаются. Извините за снобизм.


  1. a_freeman
    30.09.2019 07:24
    +1

    Ух как процессорный модуль знакомо выглядит :)
    А что через шлейф пустили?


    1. the_bat Автор
      30.09.2019 10:01
      +1

      На шлейфах LVDS, Ethernet — это то, что используется на этой плате. Также есть на шлейфах CSI и HDMI.