
Комментарии 48
У нас нет какой-то принципиальной позиции по Vendor Lock.
Если будет требование от заказчика, выпустим устройства с протоколом Modbus RTU. Но тогда придётся подготовить документацию по регистрам, иначе в этом не будет особого смысла.
Мы можем интегрировать в систему устройства сторонних производителей с любым протоколом или разработать собственные специальные устройства под нужды заказчика. Мы всё это можем сделать, но нам должен быть интересен этот процесс в финансовом плане.
Также и с нашими устройствами или SCADA. В принципе можно опубликовать все исходники, но без документации и сообщества для поддержки разработчиков это не имеет практического смысла.
И сейчас такое время, очень много кто хочет поучаствовать в импортозамещении, ничего фактически не делая. Не хотелось бы чтобы наши разработки выдали за свои и оформили патент и прочее, что в итоге мы сами своими разработками пользоваться не сможем.
В итоге перед тем как что-то выложить в открытый доступ, нужно понимать зачем и кому это нужно, юридически всё оформить, подготовить документацию и прочее. Но если появится партнёр, который готов это профинансировать, чтобы создать какую-то открытую экосистему, то мы не будем против.
Среди прочего уважуха за то, что назвали систему по русски.
Алексей не долго думая выдал, как назвать: «Мы же по специальности ВМКСС заканчивали, а у нас первые буквы фамилий, как раз совпали». Так же у нас на кафедре вещали про историю нашей НПО Автоматики, что произвело сильное впечатление))
Справедливости ради, Дела ради надо назвать ВМК "Микроклимат", тогда уже название будет продавать.
У нас же универсальная система. Можем что угодно на её базе автоматизировать. Можем и новое устройство под нужды заказчика сделать.
Чем руководствовался разработчик шкафа ( вторая картинка сверху) когда размещал клеммники на уровне пола? Если гномы будут обслуживать шкаф, может быть им и удобно. Но и у гномов возникнет вопрос, как обслуживать оборудование вверху шкафа))).
По ТЗ от заказчика, наш шкаф должен был быть установлен на уже имеющийся постамент с кабель-каналом в котором уже проложены все силовые кабели до оборудования. Т.е. старый шкаф сняли, наш поставили.
Размер шкафа получился и так большим, на сколько я помню, считали экономику, и шкаф следующего размера был сильно дороже. В любом случае, это всё согласуется с заказчиком и все расходы за его счёт. Заказчик хотел минимальную цену и даже своими силами проводил монтаж и подключение шкафа. Там снизу и пластина с нормальными сальниками была, в которую без проблем бы все кабели зашли.
На фото я ростом 182 см стою рядом со шкафом, там внизу кабель канал высотой примерно 50 см + ещё постамент около 30 см. Я думаю у монтажников вообще никаких проблем не возникло.


Спасибо за ответ к третьей картинке. Но вопрос косался вот к этой картинке.
Что-то по бренду сайт сходу не загуглился.
Что с ценами по сравнению с тем же Wirenboard (наиболее очевидный конкурент на первый взгляд)? ПО опенсорсное или закрытое (vendor lock-in так себе перспектива)?
Немного смущают открытые платы в шкафу. Я понимаю, что лучшие практики - чтобы всё было герметично закрыто, сверкало и блестело, как на выставочных фото :) Но на практике может случиться и слой пылищи, и брызги откуда-нибудь и прочие безобразия. Оформить в корпуса на DIN-рейку ведь не так уж сложно/дорого?
А сайта нет пока)) Проекты находим по сарафанному радио.
Мы делаем проект под ключ, т.е. собираем готовый шкаф с электрооборудованием и нашей автоматикой.
Вообще, обычно наши платы в шкафах закрываются прозрачным пластиковым кожухом (вся DIN рейка с нашими платами). Просто после написания статьи выяснилось, что у нас очень мало фотографий наших шкафов и устройств, так сказать что нашли - на объектах и монтаже не до красивых фото.
Немного смущают открытые платы в шкафу.
На смом деле оочень смущали открытые платы в шкафу. Однако, за всё время эксплуатации ни одна плата в щитах не сдохла. Нам почему-то казалось их будут долбить отвертками и т.д., но нет.
Новейшие ревизии плат мы начали делать с элементной базой на обратной стороне, а на лицевой только разъёмы и всеразличные пояснения шелкованием. Более того, когда все элементы на обратной стороне очень удобно плашмя «макать» плату в лак УР-231, разьёмы при этом не заливает.
vendor lock в чистом виде.
Вы ещё не видели настоящего vendor lock))
На примере популярных систем автоматизации овощехранилищ (Немцы и Голландцы):
Оборудование, в том числе моторы и даже электрооборудование в щите, со своим встроенным контроллером и шиной данных. Т.е. вообще всё своё уникальное, нет стандартных контакторов и тепловых реле, каждый мотор также подключается на шину данных (похоже в них установлены датчики температуры и ещё какая-то электроника). Если у вас что-то выйдет из строя, можно поменять только на оборудование от производителя.
Поменять настройки программы можно только путём ввода временного кода, с коротким периодом действия в несколько минут, код можно получить только от техподдержки производителя при наличии оплаченного договора сопровождения.
Когда система эксплуатируется больше 3-5 лет и в ней что-то выходит из строя, они говорят что система старая и не поддерживается, у нас есть новая, надо просто купить новую)))
У нас стандартное электрооборудование, все настройки в программе можно поменять в интерфейсе без обращения к нам, также мы поддерживаем все наши системы, неважно сколько им лет.
Если у вас что-то выйдет из строя, можно поменять только на оборудование от производителя
а у Вас не так :)
также мы поддерживаем все наши системы, неважно сколько им лет
причем бесплатно :)
Понятно дело если производитель не ушел в туман и не начал загибать цены (а он ведь монополист) это все вполне работает и не вызывает больших проблем.
Но даже в таком случае это может вызвать проблемы у локального специалиста (заканчивая "А тебе на.. деньги тогда платят, починяй", "Перегорели все транзисторы - так покупай же свои транзисторы!")
Но тут еще задачи наверное более узкие и специфичные. В большой промке когда задача прям типовая, да штатный КИПовец может сам дописать программу на iec языке (а этих-ваших-си-шарпах он не понимает - полно прям таких коментов в профильных темах), и вообще обидно, когда "нельзя просто так взять и.. " заменить ПЛК от прозводителя А на ПЛК от производителя Б
Всё относительно, мы сравнительно недавно узнали про настоящий «vendor clock»: оказывается, чтобы поставлять картофан производителю чипсов «Lay's» необходимо установить голландскую систему хранения (автоматика и исполнительные устройства) - Tolsma. У неё, кстати, платы тоже в открытом виде в щитах, более того каждый двигатель сидит на CAN-шине с каким-то своим протоколом. Стоимость такой системы просто ахригалактическая. Можно подумать с такой системой сто процентов получаешь сбыт, но нет. История в Кочневском в Свердл. области. это абсолютно не подтвердила.
Вот это я понимаю «vendor clock».
Ваша компания развивается по пути, которым прошли уже десятки команд. Аппаратные и программные решения, полагаю, имеют множество аналогов. В чём ваша фишка и преимущества?
фишка в том что конкуренты не смогут это легко починить а только переделать все
Возможно, мы говорим о разных уровнях объектов и не о том порядке стоимости внедрения.
На объектах нашего уровня конкуренты - это по сути специалисты одиночки. Даже если они используют широко распространённые контроллеры, они не отдают заказчику исходники программы. Т.е. внести какие-то исправления невозможно. Максимум другой подрядчик сможет залить своё ПО на имеющийся контроллер. Но обычно, за восстановление работоспособности чужой системы подрядчики берут больше денег, чем за установку своей системы и железа, которую они обычно используют.
В чём наше преимущество?
В соотношении цены и качества. Внимание к мелочам. Да, это звучит банально, но сейчас приведу конкретные аргументы.
SCADA
Полнофункциональный доступ через интернет с теми же возможностями управления как на экране на объекте.
Информативный интерфейс (тема следующей статьи). Быстро взглянув на экран, легко понять текущее состояние системы, нормально ли работает оборудование.
Скриншоты интерфейса в статье сделаны с реального объекта – у других часто всё красиво только в презентациях, а на объекте «вырвиглазный» пёстрый интерфейс, собранный из совершенно неподходящих компонентов, часто даже с опечатками в текстовых надписях, ошибках в единицах измерения и т.д.
Синхронизация изменившихся значений и состояния элементов интерфейса на экране в браузере у всех клиентов в течении 1 секунды.
Высокая скорость опроса устройств и реакции системы. Обычно мы настраиваем опрос значений со всех устройств каждую секунду. Можем делать это ещё быстрее или наоборот медленнее. Если отсоединить кабель от устройства, то через 2 секунды на экране отобразится статус потери связи. Если подсоединить кабель обратно, то в течение 1 секунды этот статус будет замещён на значения, полученные с устройства. Опять же, у других систем на реальных объектах, так далеко не у всех. У кого-то данные просто зависают в интерфейсе, у кого-то не отрабатывается восстановление связи.
Реализованы адекватные алгоритмы управления. Пример: лично видели на объекте, как под управлением другой системы, уличный клапан размером 3х2 метра находился в постоянном движении, то открывается, то закрывается, пытаясь регулировать поток уличного воздуха – очень похоже, что реализовано управление стандартным PID алгоритмом напрямую. Это приводило к быстрому износу механических частей.
У нас реализован программный алгоритм подбора необходимого положения клапана, в виде небольших шагов по 2%, после выполнения шага есть задержка в несколько минут, чтобы оценить изменение температуры (конечно, если температура выйдет за установленные пределы, то клапан закроется без этой задержки).
Роутер в щите настроен таким образом, что при потере связи с внешней сетью интернет, он начинает искать Wi-Fi точку с определённым именем поблизости и когда находит её, автоматически подключается. Т.е. можно подойти к щиту с телефоном, где настроена точка доступа и раздать интернет системе, чтобы удалённые клиенты могли подключиться через интернет.
Устройства
Используем недорогие и точные цифровые датчики SHT30 и DS18B20, не требующие периодической калибровки и обладающие хорошей помехоустойчивостью. У заказчиков тоже были опасения по поводу точности этих датчиков, сравнивали с поверенными. Отзывы только положительные, с аналоговыми «промышленными» датчиками заказчики намучались.
Мы сами разрабатываем все устройства, поэтому можем интегрировать в систему любое оборудование без каких-либо ограничений. Если скорости SCADA будет недостаточно для управления оборудованием, то функционал по управлению оборудованием в режиме реального времени может быть реализован в прошивке нашего устройства, а SCADA система использоваться для отображения состояния и выдачи команд управления.
Планируете ли масштабировать свой бизнес? Если да, то будете развиваться как компания-интегратор или как разработчик?
Очень хотим масштабироваться. Роль, как интегратор-разработчик позволяет добиться очень высокого финансового КПД.
Синхронизация изменившихся значений и состояния элементов интерфейса на экране в браузере у всех клиентов в течении 1 секунды.
Расскажите пжлста как синхронизируете время у всех клиентов.
Задачу синхронизации данных в интерфейсе между клиентами выполняет фреймворк ASP.NET Core Blazor Server - при подключении клиента (браузера) к серверу (сервис UI) устанавливается подключение WebSocket (SignalR), по нему в бинарном виде передаются все данные. Он сам отслеживает пропажу связи с сервером, пытается переподключиться и т.д. Сервис UI отделён от сервиса ядра, взаимодействие между сервисами через TcpListener/TcpClient.
На самом деле мне не очень нравится использовать Blazor, есть идея переписать на свою связку клиента на JavaScript и сервиса UI, где бы клиент сам периодически опрашивал сервер, есть ли какие-то изменения в данных на отображаемый в текущий момент странице. Можно и тот-же WebSocket использовать для уведомлений от сервера. Т.к. HTML шаблонизатор страниц на беке, то легко реализовать алгоритм, когда бек ведёт список значений отправленных клиенту для отображения и отслеживает изменения, т.е. собирает список изменённых значений, что бы при первом запросе от клиента отправить их ему. Т.к. сервис UI всегда знает какие данные отображаются на клиенте, клиенту не нужно даже перечислять в запросе требуемый список значений (тегов). Но сейчас всё отлично работает на Blazor, поэтому это просто интересная идея на подумать.
Больше интересует не задача синхронизации данных, а задача синхронизации времени у сервера и клиентов. Т.к. время на сервере может быть одно, у диспетчера другое, а у начальника - третье (расхождение может достигать несколько минут). В результате может произойти так, что событие на сервере произошло, а у клиента ещё не свершилось.
с учетом того что тут обычная малинка с обычным линуксом которая умеет синхронизироваться с мировыми серверами времени, как минимум. на машинах у диспетчера и начальница тоже такое должно быть настроено. у нормального сисадмина есть и своей локальный сервер времени.
так же приемником точного времени может быть gps . Бывают специализированные источники точного времени сразу с приемником, в промышленном исполнении, на din рейке, хоть на aliexpress продаются. Ну и самодельные.
тогда "несколько минут" какое то небывалое событие.
Верно, используется время операционной системы. При настройке указываем часовой пояс, дальше операционка сама следит за временем.
А Вы уверены, что ОС следит. Возьмите свой мобильник и сравните на своем компе время. У меня разница 2 секунды. А у Вас?
хех внезапно не так то сраззу еще оказалось вообще увидеть (отображение) секунды
значит не настроено. на компе например - когда время получается только при перезагрузке, а сервер и иногда ПК перезагружается редко . ну или сервер времени деградировал, как то помню было такое что штатный сервер времени в винде не отвечал
а новомодные смарт-часы очень сильно зависят от часов в смартфоне , без него они убегают и на минуты, а то и вообще время теряют
У нас Микротики раздают по DHCP локальный NTP-сервант.

Малины и апельсины ходят на него периодический. Щиты, где есть «ИБП» аптайм около годовой, и ничего не уползло по времени.
Сами микропы синкаются с русскими NTP'шками.
на машинах у диспетчера и начальница тоже такое должно быть настроено
На Бога надейся, да сам не плошай!
Синхронизации часов между устройствами нет - это нам пока не нужно. На устройствах нет часов текущего времени. В протоколе предусмотрена передача времени значения от устройств, но в этом ещё ни разу не было необходимости.
Ядро одно, оно выполняет все команды от пользователей и обработку полученных данных. При получении каких-либо значений, ядро назначает свою метку времени (текущее время операционной системы).
Допустим, пользователь в браузере нажимает кнопку "Вкл", от клиента через сервис UI ядру отправляется команда установить значенияе тега с таким-то ID в "1", ядро при получении команды, проверяет можно ли её выполнить (проверка на соответствие типов данных, ограничений на диапазон, вызывает функцию проверки значений тега если она задана) и задаёт тегу требуемого состояния оборудования значение "1", при этом назначает значению текущее время операционной системы.
Очень классная реализация! Железо выбранно относительно простое соответственно надёжное, если нет необходимости применения сертифицированных устройств, то комплекс получися что надо
У нас нет какой-то принципиальной позиции по Vendor Lock.
Если будет требование от заказчика, выпустим устройства с протоколом Modbus RTU. Но тогда придётся подготовить документацию по регистрам, иначе в этом не будет особого смысла.
Мы можем интегрировать в систему устройства сторонних производителей с любым протоколом или разработать собственные специальные устройства под нужды заказчика. Мы всё это можем сделать, но нам должен быть интересен этот процесс в финансовом плане.
Также и с нашими устройствами или SCADA. В принципе можно опубликовать все исходники, но без документации и сообщества для поддержки разработчиков это не имеет практического смысла.
И сейчас такое время, очень много кто хочет поучаствовать в импортозамещении, ничего фактически не делая. Не хотелось бы чтобы наши разработки выдали за свои и оформили патент и прочее, что в итоге мы сами своими разработками пользоваться не сможем.
В итоге перед тем как что-то выложить в открытый доступ, нужно понимать зачем и кому это нужно, юридически всё оформить, подготовить документацию и прочее. Но если появится партнёр, который готов это профинансировать, чтобы создать какую-то открытую экосистему, то мы не будем против.
я еще поразглядывал архитектуру и без Modbus межблочный rs485 выглядит чуточку излишним, как бы и ладно, но можно ведь сразу прям wch на плату и все через обычный ethernet. главное чтобы прошивка wch стабильно работала (а есть еще wizenet и ). кстати сколь я помню есть похожие модули которые умеют стразу протокол modbus
У нас устройства друг за другом цепочкой соединяются, т.е. у каждого устройства есть входной и выходной разъёмы для шины RS-485.
Вот фото цепочки устройств на шине RS-485:

С Ethernet так не получится - либо прямо на платах придётся мини коммутатор (switch) распаивать, либо ставить коммутатор отдельно и от него звездой подключать все устройства, а это огромный перерасход витой пары.
Ещё у Ethernet по витой паре ограничение на длину кабеля 100 метров, для овощехранилищ вообще не подходит - они имеют большую площадь.
Если нужен Ethernet, то такую архитектуру можно собрать на имеющихся у нас устройствах - просто перед каждым устройством (плата датчика, реле и т.д.) поставить шлюз Ethernet-RS485, т.е. за этим шлюзом будет только одно устройство.
Ещё одни изобретатели кривеньких велосипедиков (
И это не SCADA, это хардкодная программа.
Общая проблема подобных проектов - через 5 лет разорились или уволился студент главный программист или схемотехних. Или сгорел жёсткий диск со всеми (как правило секретными) разработками.
И новая статья - как мы поменяли Г, на П, от другого стартапа =)
Из этого может вырасти нормальный промышленный продукт, но не быстро и с соответствующими шансами
И это не SCADA, это хардкодная программа.
С чего вы это взяли? Потому что я привёл код для формирования оборудования объекта? Это отдельный проект, который просто подготавливает список всех необходимых тегов для объекта и сохраняет в файл модели JSON.
Аналогично описываются точки доступа для сбора данных (шлюзы), UI и вся остальная модель объекта.
Можно самому конечно тысячи тегов в JSON создавать копипастом, но мне как-то удобнее объектный подход с билдерами оборудования и всех нужных для него тегов.
Да, функции обработки для разного оборудования, пока не компилируются на лету при запуске, как планировалось, но это только из-за Native AOT компиляции в машинный код. Если компилировать проект стандартно в IL код, никаких проблем с компиляцией функций на C# на лету не будет, я так уже делал.

Вот, у меня даже TODO соответствующий в коде есть. Тут связывается уникальное название функции, которое задаётся у тега, с делегатом (ссылкой на функцию).
Есть заготовка для реализации MQTT, но пока нет заказчика, которому это было бы нужно.
MQTT занятая вещица. Например можно интегрировать Вашу SCADA c сетью беспроводного интернета вещей (LoRaWAN, NB-IoT). Это позволит размещать датчики на больших площадях без затрат на организацию проводной инфраструктуры. Одна базовая станция LoRaWAN покрывает площадь в радиусе до 15 км (700+ кв км) позволяет подключить к себе сотни датчков и стоит при этом не дороже смартфона.
Молодцы! Для экономики страны полезное дело делаете!
Как мы овощехранилище автоматизировали, разработали свою SCADA и железо. Часть 1: Вводная