Comments 96
Для коммутации датчиков было решено использовать аналоговые мультиплексоры HCF4051 (у них есть задержка на переключение, но для нашей задачи это было не критично). Именно эта серия уже снята с производства
Зачем Вы заложили в проект снятый с производства компонент?
На соответствие каким стандартам устройство проходило испытания?
У нас есть внутренние испытания
Какие параметры проверяли?
Плохо. А требования по ЭМС вам хоть какие-то спустили?
Мы используем 4051/4052 в своих изделиях уже 20 лет. Очень нежная техника — самый часто выходящий из строя элемент по причине ЭМС. После гроз пачками вылетают. Причем защит вокруг них полно понаставили, все равно.
А умирают они хитро — получается, что начинают каналы друг на друга влиять или не полностью отключаться. Причем на стенде может быть все ОК, а на объекте при других температурах… Иногда просто по подозрению выкусываем и ставим новую.
В новой серии отказались от них и слава богу.
Но от гроз защита совсем другая должна быть. Там и разрядники ставить надо. Это отдельная тема. Во время гроз даже драйверы RS485 со всеми классическими защитами по входу только так из строя выходят.
Не помню точно, но вроде там была проблема КМОП технологии тех времен, что напряжения на пинах не должны превышать напряжение на питании на меньшее значение, чем падает на обычном диоде. Т.е. обычные диоды их не защищают, им подавай Шоттки или извращайся.
Спасибо.
Контроллеры вместо мультиплексоров? Жесть какая! Я не завидую тем, кто будет писать для этого всего софт, а потом писать софт для обновления системы, когда найдется баг).
Про входные и выходные линии вообще ничего не понял. В ТЗ есть четкое указание, объединить разъемы в группы…
Что Вы имеете против ST и NXP в одном проекте? Я не вижу хороших процессоров у ST и нет освоенного контроллера от NXP. Криминал? Да ну) я теперь что должен все компоненты одного производителя использовать в проекте? Смешно.
Про Ваш сарказм про модульность мне не очень понятно. Процессорные модули используют все и вся, что в этом такого? Вы хотите чтобы я вместо него поставил микроконтроллер? Нет, спасибо! Может убрать микроконтроллер и оставить толко процессор? А для чего? Описаная модель мне вполне нравится и я намерен ее придерживаться.
И еще, а где Вы вообще видите высоковольтные линии? Тут 24В максимум…
Модульность дает некую гибкость при построении системы и её обслуживании.
Тут 24В максимум…
А симисторы на 600 В тоже 24 В коммутируют?
Модульность имелось ввиду раскладка — один/два ключа+защита это отдельный модуль с гальванически развязанным логическим выходом. И впаян он в основную плату — тогда ремонтопригодность и надежность выше. Плюс достаточно просто складывать различные конфигурации. Я на такие модули еще светодиоды состояния добавляю.
Что касается реле — действительно когда-нибудь выйдет из строя, но его можно поставить в панельку. И симистор без защиты дохнет от маломальского КЗ, и защитить его экономически разумным способом не получится (но его тоже можно поставить в панельку, такую же как и у реле).
Наверное, дело в дешевизне комплектации. Я бы тоже предложил много изменений по схемотехнике, которые бы сделали это изделие и проще и надежнее (хотя бы интеллигентные ключи), но в итоге это будет гораздо дороже, чем то, что сейчас есть на этой плате.
Тут вопрос к аналоговой схемотехнике вообще.
Даже недорогие шунты современные на порядок точнее (да и стабильнее), какой-нибудь ADR50хх посмотрите.
Но тут вопрос, конечно, какая точность нужна. Нужно считать.
Я считаю, что нужно стремиться к максимальному разрешению использованного ADC, ошибка и так набежит от других компонентов системы. А ошибка на ошибку и снова на ошибку — может много получиться.
Отмечу и положительный момент — ни одного электролита на плате не увидел.
Просто для старого оборудования сделали новые мозги. Обычное дело. Заменять собственно оборудование, как правило, на порядок (а то и два) дороже, чем разработать такой вот контроллер на замену ветхозаветным командоаппаратам и пультам с лампочками и тумблерами.
Так проходила плата испытания на ЭМС? Без этого трудно назвать ее промышленным контроллером.
Вопрос — зачем внешний RTC, если в STM32F103 есть встроенные часы?
По плану время должен получить модуль на iMX6. При том, что если с контроллером что-то не так, то время все равно должно быть, так как модуль — главный (если умер модуль, то это крах, если умер микроконтроллер, то модуль должен об этом сообщить, записать в лог и т.д.). На процессоре тоже ест встроенный RTC, но поработав с ним поняли что лучше использовать независимую микросхему.
А, у вас система чисто собирающая? Потому что в управляющих системах зачастую наоборот — контроллер, который управляет оборудованием — главный, а модуль взимодействия с пользователем — это некритичная функция.
Если модуль накроется, то управляющий контроллер может проработать и сам какое-то время, безопасно остановив процесс в нужное время в нужном месте. А наоборот — какой толк от модуля, если основная начинка мертва?
Комментарий пользователя Grey4ip к публикации «Промышленный контроллер. Система сбора данных. АСУ» ожидает вашего одобрения:
Спасибо за статью.
Для управления внешними нагрузками, обычно используются реле, срабатывающие от подачи переменки 24В
Странно, по моему опыту, DO (дискретный выход) ПЛК выдаёт постоянное напряжение около 24V, соответственно используются реле на 24V DC.
Кстати, нет фото промышленного контроллера в корпусе. Как монтируется на дин-рейку?
Корпус разрабатывался сторонней организацией, Крепления на DIN рейку нет. Просто настенный вариант.
Заказчик на своих объектах использует именно реле AC24V.
Скажите этому заказчику, что он немного странный.
Согласно стандарту на ПЛК ГОСТ IEC 61131-2 п.5.1.1.1 (к которому ваш промышленный контроллер должен стремиться, так как все датчики/актуаторы разрабатываются под этот стандарт) переменный ток не рекомендуется использовать для входных/выходных сигналов напряжениями до 100В. В этом случае рекомендуется использовать постоянку. Используя переменку, заказчик рискует оказаться в ситуации, что он не сможет использовать стандартное оборудование.
Используя переменку, заказчик рискует оказаться в ситуации, что он не сможет использовать стандартное оборудование
А чем реле AC24V не стандартное устройство?
А чем реле AC24V не стандартное устройство?
В промышленной автоматизации это не стандартный уровень для переменки. Раньше был, поэтому может быть в сфере заказчика осталась эта традиция, или у него полно таких реле на складе.
достаточно часто в качестве выходных элементов в Автоматизации используют симисторы. В том числе для управления всякими КЗР-ами. с тем чтобы не «толкать» их реле. Соответственно и на 24 вольта переменки и на 220 вольт переменки вполне себе стандартные дискретные выходы. Ну и собственно реле можно спокойно найти на 24 вольта переменки.
Почему то прикинув на пальцах мне кажеться что вместе с разработкой дешевле взять готовые модули ввода-вывода и плк, поместить в такой же металлический шкаф. Тот же beckhoff по размеру готового изделия может быть интересней, а по цене Овен. (а когда кажется, видимо, надо ещё пару раз подумать, чтобы показалось совсем другое).
Ну да это экономика, но как только возникает Пром ПК сразу возникают Языки программирования оного — а это в стандарте МЭК61131-3 стандарт на языки программирования.
Это я к тому, что можно было бы взять, к примеру Masterscada4d положить на Linux на тот же самый imx6D, и иметь визуализацию в браузере, но уже тех.процесса, описанного Стандартным языком описания систем автоматизации. Причем в такой архитектуре — Мозги на Imx6, ввод-вывод на stm32- портирование могло бы быть не таким сложным как создание собственной среды. И кратно дешевле, при объёмах до 100 штук в месяц.
Заказчик обратился не чтобы сэкономить, а чтобы сделать свое устройство под своим брендом. Не нужен Сименс или Овен. Нужен свой контроллер под конкретные задачи. Разработка в России будет почти всегда дороже чем любое аналогичное серийное устройство. У нас дорогая сборка плат (очень), компоненты с наценкой, даже когда работаешь с дистрибьютером квотируются цены всегда по-разному, плата на 8 слоях по 5 классу в Зеленограде делать отказались, одна логистика сжирает все. Да, разработка дорога, но когда заказчик приходит за разработкой, он не пытается экономить, ему нужно что-то, что не может дать серийное устройство. Свой логотип, свой софт, сертификат на устройство, какие-то специфические требования и т.д.
На самом деле так сразу говорить что ПЛК и ПК совсем разные вещи тоже не совсем корректно. строго говоря существует достаточно большое количество ПЛК, которые продаются с уже прошитой программой, при которой пользователь получает именно интерфейс «ткнул в экран пальцем — поменял уставку/алгоритм/технологический процесс/температуру/настройку регулятора» при этом имея интерфейс загрузки дополнительных алгоритмов именно методом загрузки файлов типового решения.
Оффтопом в моём понимании (а оно не претендует на Истину) ПЛК как бы большей частью и создаются производителями — для упрощенного создания Типовых Конфигураций для пользователей. Именно ПЛК с типовыми уже загруженными конфигурациями приносят Производителю больше денег чем сами ПЛК. Меньше чем модули ввода-вывода, но однозначно больше ПЛК. При этом с учетом необходимости делать бОльшое количество решений — проще их реализовывать именно на ПЛК ввиду специфики технологических процессов, чем на языках программирования.
Соответственно и интересно, каким образом создался новый ПК — на чем писался, какая архитектура- крупными мазками.
На каких я зыках пишутся, алгоритмы? Если вы пытались сделать ПЛК тогда языки должны быть стандарта iek61131-3, в АСУ ТП, это так? Или вы просто напихали различных микросхем, написали код на с для измерения, параметров и связи? ПЛК используют на пром. Объектах и работают с ними не айтишники, а асушника или электроники и очень часто приходится, дорабатывать программы, изменять алгоритмы, делать форсы итд, все это позволяет даже дишманский овен, при этом языки программирования должны быть ладдер, fbd, sfc, cfc, CT, ctl, а не с++ и джава, а как это сделано у вас? Так же очень часто на больших объектах используется горячее резервирование плк, да и вопрос как связаться с вашим плк со скады? Есть какой то опсишник? Задумка хорошая но есть куча нюансов, большие компании вбухивают кучу денег для разработки плк и софта под него, как у вас кстати с библиотеками? Понимаете при разработке систем автоматизации перед инженером стоит задача сделать все просто, понятно, с кучей комментов, что бы все хорошо работало и при этом это должно делаться очень быстро, а для этого производители плк и делают свой софт с различными набора и библиотек и различных других фич, к примеру визуальная проверка сети, это удобно. Когда работает к примеру домена и происходит сбой нужно очень быстро понять куда бежать и что делать, на вашем контроллере это все возможно? Или это просто супермикроконтроллер с предустановленными возможностями?
Интересно, а на каком языке описывается в данном контроллере программа управления?
в каком формате хранятся данные?
Да на Си там все, скорей всего. Чего вы ждете от заточенного под конкретную функцию контроллера?
ПО виду плат — разработка интересная.
Достаточно редко, но все-таки регулярно можно столкнуться с такими историями в совсем разных местах. От управления чайниками или дизельгенераторами до каких нибудь Бос-ов в историях со спутниками или блоках для Искр 226-х. И почти всегда они восхищают интересными «задумками» и реализациями в полном соответствии с предполагаемым ТЗ.
Архитектура в части переноса обработки переферии на stm32fх0x с головой на imx6 мне нравиться, сам пишу задания на такую архитектуру периодически.
Если честно то ожидал какого-нибудь Lua или python с примерным указанием на прогнозируемое время цикла.
Это скорей всего на imx6 крутится
При всем уважении, я очень много лет в сфере автоматизации и ни разу не слышал про пк как про промышленный контроллер, есть плк, есть пак, есть программируемое реле, есть панельный логический контроллер они просто идус с HMI на борту, есть специализированные контроллеры по типу температурный, но они не пользуются спросом. Я бы не прикапывался к вашему изобретению, но вы сказали что его можно использовать в промышленности, а тут уже извините но есть миллиард требований. Системы автоматизации строятся на данный момент на плк и пак контроллера, к примеру на доменной печи используется до 12 плк с 32мбайтами памяти для ПО, более 10 000 сигналов из которых львиная доля это аналоговые(4-20), так же используются спец. Модули для подключения энкодеров, система верхнего уровня построена на клиент-северной архитектуре с горячим резервированием серверов, по совокупности от 10 до 15 армов с клиентами. Одно из важнейших требований к софту это правка программы в режиме онлайн с нескольких мест одновременно. По поводу дискретки, на данный момент везде используется 24vdc, аналоговые сигналы так же ст андартизиваны, (4-20mA,0-10v, сигналы термо пар и термосопротивлений) при этом для, разных датчиков и модулей используется, разная схема подключения (2,3,4)как для 4-20 так и для термосопротивлений. Я желаю вам удачи в ваших проектах, но пока что из того что я увидел данному девайсу на больших пром. Объектах делать особо нечего, для того что бы он прошёл кучу аттестаций и получил лицензию нужно изучить работу плк различных компаний, а потом уже что то проектировать. Ещё раз удачи во всех начинаниях.
здесь маленькая узкозаточенная системка на 50 сигналов.
вопрос у меня только в том, насколько к ней применим термин «промышленная» — ?? температурный диапазон, виброустойчивость, пылевлагозащита, опторазвязки на >500В по в/в, классы точности, защита от дребезга, ЭМС, итд итп…
Решение с аналоговыми датчиками температуры кажется весьма странным. Не проще ли было вместо термисторов, ИОН и аналоговых мультиплексоров использовать 1-Wire термометры, например DS18B20?
Можно сделать несколько групп термометров с разными линиями данных. Кстати, а какая длина линий до термодатчиков?
Как решили проблему с влиянием сопротивления линии на измерения? Ну и наводки ведь наверняка есть на такой длине провода (если конечно у вас там оно не экранировано).
ГОСТ 30804.6.2-2013 и опыт подсказывают что иногда на Производстве (а это не синоним Промышленности?) бывают сильные помехи. в том числе рядом с низковольтным проводом до датчика, 100 метров это много и по пути на стене/через стену может стоять какой-нибудь частотный преобразователь. И он может всю жизнь стоять выключенным, но потом каааак включиться. Аж до засветки неоновых ламп.
Это я из зависти пишу к тому, что в Вашем случае существенно проще чем с ПЛК реализовать Правильную и Хорошую фильтрацию и юстировку можно как угодно и когда угодно, хоть по канально хоть группами.
существенно проще чем с ПЛК
Не очень понимаю почему. В ПЛК на подключении датчиков температуры уже собаку съели — их там и по 2-х проводной схеме подключают и по 3-х проводной и 4-х проводной даже.
И не от хорошей жизни, кстати, а как раз, чтобы защититься от всяких бяк и получить нормальную точность. Рекомендую глянуть, например, доку к вот этому входному терминалу. На стр. 64-71 описано, как лучше к нему подключать датчики температуры.
Здесь же максимум — это взять экранированную витую пару, но фильтровать сигнал все равно надо будет жестко. Или у вас 3-х/4-х проводное подключение тоже возможно?
Ограничены как раз зашитыми в них программами.
А вариантов фильтрации не так чтобы очень мало, а скорее наоборот.И реализовывать из не так чтобы сложно в представленной парадигме.
Одно дело фильтрация напрямую АЦП любым алгоритмом, который подходит под Текущие параметры, а другое дело когда надо фильтровать гораздо медленнее уже пред-фильтрованные значения из модуля.
Для примера — натравить в ПК автора этого поста нейронную сеть на все АЦП — дело достаточно простое. Python, numeric, как можно быстрее берёшь выборку из stm32 к примеру сдвиговыми регистрами с максимальной скоростью и получаешь Хороший результат если правильно настроил сеть и модель вообще подходит под текущую задачу фильтрации.
И даже есть отдельное ядро для таких задач а настроить это не так чтобы было сильно сложно.
С ПЛК всё немного по-другому — данные с модулей прийдут немного позже(если это не бэгхкоф) и это полбеды- они придут уже поканально отфильтрованные. Тем фильтром который есть в настройке конкретного канала. И не из каждого модуля удастся вынуть код АЦП да ещё и потом синхронизировать их по времени. Даже если они придут с меткой времени — распихать их по нейроной сети в одно время — задачка та ещё.
Согласен бредовый пример, но или вот выделение помех в юстировочном канале с анализом и по ним изменять фильтрацию и её тип в остальных каналах? задачка на ПК достаточно простая а на ПЛК достаточно сложно.
и именно эта парадигма бОльшего варианта возможностей вносит лёгкий налёт белой зависти к индивидуальным решениям.
Собственно в такой, специфической парадигме это и проще. Плата на фото и схемы выглядит достойно — для меня это основание полагать, что автор знает и двух проводные и четырёхпроводные подключения термо-сопротивлений и их компенсацию, пока не доказано обратного.
Для примера — натравить в ПК автора этого поста нейронную сеть на все АЦП — дело достаточно простое. Python, numeric, как можно быстрее берёшь выборку из stm32 к примеру сдвиговыми регистрами с максимальной скоростью и получаешь Хороший результат если правильно настроил сеть и модель вообще подходит под текущую задачу фильтрации.
И даже есть отдельное ядро для таких задач а настроить это не так чтобы было сильно сложно.
Было бы интересно увидеть реальный пример с объяснением чем он будет лучше обыкновенной фильтрации в данной конкретной предметной области — измерение температуры в присутствии помех в реальном времени.
А если серьезно: ПЛК — это очень массовый маркет. И если все так радужно, как Вы расписываете, то на рынке должны уже существовать десятки решений для ПЛК на основе "нейронных сетей" или с анализом помех из юстировочного канала. В ПЛК стоят мощные процессоры, сигнал от АЦП можно получать и нефильтрованный и очень быстро — это же легко настраивается. Спрос есть. Где они?
Сейчас в ПЛК мощные процессоры — все ещё редкость.
Потребности указываемые выше скорее единичны и редки, а
ПЛК развиваются достаточно медленно — ПЛК модернизируются достаточно медленно.
И зачастую тянут за собой «шлейф» технических решений прошлого века.
За примерами ходить далеко не надо — Дельта с устаревшим к 1996 году стандартом модбаса — не принимающих стандарта хотя бы 2012 года. Или модули ввода-вывода использующие устаревшие на десятилетия АЦП потому, что они уже в потоке на производстве, и в новую разработку их вставить кратно дешевле чем казало бы более дешевые по закупке и новые, лучшие.
Фильты кроме того, что я на коленке в плане бреда придумал, бывают ещё и к примеру «с конечной импульсной характеристикой»,
«с бесконечной импульсной характеристикой», Можно с Фурье поработать, да чего только нельзя сейчас. С пайтоном или фортраном на imx6 это скорее дело техники чем исследования " как сделать"
И, по моему мнению — применить их беря исходных значения АЦП в бОльших количествах — в предлагаемой архитектуре в моём понимании проще в реализации ( по крайней мере с моей колокольни).
А с юстировкой по одному каналу вполне себе есть для применения ПЛК.
Другое дело что из за указанных причин — ПЛК при модульной структуре не раскрывают в полном объеме потенциал, но как таковые конкретные проекты ПЛК такие есть, юстировку и подстройку по отдельному каналу я видел и динамическую и статическую.
Для управления внешними нагрузками обычно используются реле, срабатывающие от подачи переменки 24В. Поэтому на каждую группу подается AC24V, которые коммутируются симисторами BT138-600 через оптронную развязку. Схема представлена ниже. Работает все стабильно.
Не разглядел на плате снабберные цепи. Что за конденсаторы — керамические, напряжение, типоразмер?
Надо что-то менять… Конденсаторы на плёночные или варистор поставить ( соответствующей мощности, а не 0603)?
P.S. Совсем без ничего (не считая даже паразитных ёмкостей проводки) самоиндукция превосходит 1 кВ.
Вы все правильно написали, но мне кажется что дискуссия с автором не получится по той простой причине, что платы на экране не выглядят, как тяп-ляп сделанные прототипы, а вполне себе законченные изделия, которые пришли в эту форму после не первой итерации и не первого общения с заказчиком.
Поэтому все ваши рекомендации автору уже в принципе поздно использовать.
А по поводу "для остальных" — можно пообсуждать, но опять же без привязки к исходным данным конкретного проекта это будет лишено смысла. Даже в данном случае имеют право на жизнь разные концепции в зависимости от исходных данных, которые мы не знаем. И автор выбрал то, что в итоге выбрал.
Ваш подход понятен — но в нем тоже есть множество плюсов и минусов.
Это опытная партия (вторая итерация), в количестве 25 шт для испытаний, по их итогам возможны коррективы для следующей партии.
Естественно, что все то, что выведено на плате (аналоговые датчики, реле от переменки и т.д.), интерфейс меню и web, расположение разъемов и все остальное прописано в ТЗ и согласованно с заказчиком, ничего другого там быть не может, ни DS18B20, ни дисплея 800*600, ни реле на 5В, ни другой графики на дисплее (дизайн сделан на заказ и давно утвержден), ни тем более, Nucleo.
(второй абзац скорее для crustal)
Спасибо за статью! Хотел бы прокомментировать замечания по поводу терминологий и переменам в управлении. Сам занимаюсь пром автоматикой и "Умными домами". Практически везде и всегда сталкивался только с 24В постоянки, но недавно пришлось вникать в тему управления климатом. Рекомендую всем взглянуть на оборудование ОВиК(HVAC). Рабочее напряжение преимущественно переменное 24В, Датчики температуры в основном NTC(в проме Pt100-1000 и термопары), множество параметрических контроллеров(не программируемых, только настраиваемых) для конкретного оборудования(фанкойла, ПВУ, холодильные установки и т.п.). Многие производители выпускают контроллеры без корпуса для установки в изделие. Это тоже промышленные системы, но со своими требованиями и подходами. У некоторых производителей есть отдельные направления для систем управления зданиями(BMS), например у Сименса это Desigo, Delta — Loytec и т.д. и т.п. Так-что не надо ругать автора — заказчик получил то, что ему требовалось, а исполнитель решил задачу наименьшими для него усилиями.
В правильно спроектированной модульной системе делается обычно так, что дорогая электроника, контроллер, который обычно отвечает за управление, отделяется от внешнего мира более дешевыми интерфейсными модулями, которые в принципе имеют право «сгореть» при кривых ручках или серьезных проблемах. Тогда возврат системы в работоспособное состояние возможен путем замены вышедшего из строя интерфейсного модуля (по которому обычно видно, что ему поплохело) а центральный контроллер остается жив.
Это позволяет держать на месте минимальный ЗИП из интерфейсных модулей, а не всю систему, и тем не менее гарантировать быстрое время восстановления без диагностики.
Промышленный контроллер. Система сбора данных. АСУ