МиниSCADA своими руками

Однажды, мне позвонили и спросили – могу ли я сделать маленькую автоматизацию для канализационной насосной станции (КНС)? Толком ничего не выспросив и положив трубку я стал раздумывать что и как сделать.

Являясь специалистом по SCADA более 10-ти лет, в основном по продуктам томской компании «Элеси», мне сразу пришло в голову использовать какой-нибудь известный пакет типа TraceMode и ему подобным. Однако, встретившись с заказчиком и узнав более подробно, что ему нужно, я решил не использовать готовые пакеты.

Задача была проста: исключить бабушку, сидящую в здании КНС и наблюдающую за периодическим процессом раскачки емкости со сточными водами. Насосами управлял ПЛК фирмы Modicon в составе какого-то российского щита управления. Бабушка требовалась на случай аварии насосов, чтобы сообщить ремонтной бригаде и не допустить перелива емкости. Контроль должен был осуществляться дистанционно, функций управления не требовалось.

Достав документацию по щиту автоматики с радостью обнаружил там описание регистров контроллера с побитовой раскладкой сигналов. Ну, информация есть, дело за малым – реализовать.

Организация связи

Было решено контролировать работу КНС в браузере через интернет. Тут же появилась задача – каким образом передать данные с КНС, находящейся на задворках одного из районов города? Интернет туда не проведешь, да и глупо это, пришлось бы ставить туда компьютер. ПЛК в щите имел интерфейс RS-485 и поддерживал протокол Modbus (что естественно, т.к. этот протокол и был создан фирмой Modicon).
После долгого гугления на глаза попалось вот такое устройство:


CCU-Wireless COM

Устройство представляет из себя GSM удлинитель COM порта, поддерживает RS-232, RS-485 и RS-422 интерфейсы. Предлагает его НПО «Сибсвязь», а кто разрабатывает, я так и не понял. Обошлось оно в 15 тысяч рублей. Дополнительно была приобретена GSM антенна. В прибор установили симку билайн с тарифом «Телеметрия».

Предприятие уже имело веб-сервер (IIS), поэтому дополнительных затрат не потребовалось. На веб-сервер был установлен драйвер com-порта для связи с CCU, прибор настроен и состоялась проверка связи. С драйвером поставляется программа мониторинга порта, поэтому было сразу видно, что прибор связывается с сервером и мы получаем у себя в системе com-порт, как бы физически подключенный к контроллеру. Теперь с ПЛК можно работать напрямую.

Серверная часть

Каким-то образом нужно было передать данные с com-порта в MySQL базу. Имея небольшие навыки в программировании на VB6 и знание Modbus протокола была написана программа, считывающая регистры с ПЛК и записывающая их в текстовый файл. Прямую запись в базу я не сделал исключительно из-за лени и пары неудачных попыток подружить VB6 с MySQL и еще из-за чего-то, уже не помню. Из-за этого пришлось делать костыль, который работает уже 4-й год и не ломается.

Считывать данные с текстового файла было поручено скрипту на PHP, который запускался с помощью nnCron по изменению времени записи файла.

В базе были созданы таблицы алармов, названий событий, их важность и т.д. – все, как у взрослых систем. Считывающий скрипт раскладывает в базу все по битам и посылает смс, если сработало нужное событие.

Клиентская часть

Клиентская часть представляет собой обыкновенный браузер. Подключаемся по нужному адресу и видим такую картинку:



Картинка нарисована в TraceMode и используется в качестве бэкграунда. Активные элементы это блоки div поверх картинки. Информация обновляется каждые 15 секунд, что даже очень часто, т.к. запуск-останов насосов происходит примерно раз в 40 минут.

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

<shittank>
<signals>
<name>pump1_on</name>
<datatimer>2012-10-04 16:09:05</datatimer>
<name_signal>Работа</name_signal>
<type>B</type>
<alarm_text>насос 1 включен</alarm_text>
<priority>1</priority>
<data>0</data>
</signals>
<signals>
<name>pump1_man</name>
<datatimer>2012-10-04 16:09:05</datatimer>
<name_signal>Ручной</name_signal>
<type>B</type>
<alarm_text>насос 1 ручной режим</alarm_text>
<priority>0</priority>
<data>0</data>
</signals>
…
…
</shittank>


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

При отладке системы столкнулся с проблемой кеширования браузером данных, что мне совсем было не нужно. Проблему решил путем добавления в url рандомного значения:
var url = «update.php?=»+Math.random();

Сигнал «нет связи» формируется при отсутствии ответа от ПЛК в течение 20 минут. При этом посылается смс обслуживающему инженеру. Связь может отсутствовать по причине «забыли положить денег на симку» и отсутствия напряжения в здании КНС.

Кнопка «История» открывает окно истории событий.



Кнопка «Сводка» открывает окно сводки запуска насосов.



В процессе эксплуатации выяснилось, что на экран никто не смотрит, поэтому рисовать все эти красивости и реализовывать отображение а-ля настоящая SCADA не было нужды. Все, что делает оператор – это открывает время от времени историю событий и смотрит, какие были аварии, и в конце месяца вносит в отчет данные по наработкам насосов.

Итог:
Решение работает без сбоев уже четвертый год. Бабушка была уволена, современные технологии победили старость.

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

Similar posts

Ads
AdBlock has stolen the banner, but banners are not teeth — they will be back

More

Comments 72

    +12
    Коревой тег <shittank> доставил.
      +3
      Да, между собой КНС-ку называли говнобочкой )
      +1
      Имея небольшие навыки в программировании на VB6 и знание Modbus протокола была написана программа
      Проезжая мимо вокзала с него слетела шляпа.
        –1
        Чукча не писатель, а читатель.
        +12
        Бабушку жалко ;-(
          +5
          Ну почему жалко, вы знаете какая там вонища, хоть емкость и находится за тремя дверьми от бабушки.
            +1
            Был я на КНСках, когда пришлось связью на водоканале заниматься. В основном, там вполне нормальная атмосфера. Хотя парочка воняла действительно жутко, на таких за бабушку можно только порадоваться.

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

            Ну вот… Опять вспомнил… Фубля.
          +4
          Бабушку -то на другую работу хоть перевели? Бабушку жалко.
            0
            nnCron купили?
              0
              Использование не было коммерческим. Делал для друзей.
                0
                Ну вы то может быть. А насосная станция «забесплатно» работает?
                  0
                  Я не задавался этим вопросом, если честно. При возникновении проблем можно перейти на виндосовский шедулер и никого не напрягать. Но сейчас это будет сложно, т.к. я уже не живу в этом городе.
                    0
                    он не умеет отслеживать изменения файлов.
                      0
                      Не умеет, но установить запуск скрипта каждые 10 секунд сможет. Погоды это не сыграет однозначно. В крайнем случае можно дописать программу-читалку для записи данных напрямую в базу и обойтись без этого рудимента.
                        –2
                        можно было вообще все написать на PHP. Правда пришлось бы поискать расширение, если это был Windows.
                          0
                          Это был виндовс. Организовать связь на PHP не получилось, не помню почему. Если у вас получается — поделитесь, как.
                            0
                            Я же написал — нужно искать расширение или библиотеку. В чистом виде PHP под Windows с COM портом нормально работать не будет.
                            Вот нагуглил за 2 минуты www.easyvitools.com/phpserial/index.html например.
                            Правда, при ближайшем рассмотрении оно оказалось платным.
                            На stackoverflow несколько вопросов на эту тему — тоже предлагают разные решения. От самостоятельного создания расширения, до использования напрямую WinAPI функций через w32api_register_function(), ну и ссылки на расширения есть.

                            Но VB ведь тоже с COM портом из коробки не работает удобно, насколько я помню. Ему нужен ActiveX компонент для этого. И компонент этот тоже не бесплатный.
                              0
                              Вот видите, то платно, то сам пиши, то еще что-то. А в VB все прекрасно работает через стандартный mscomm32.ocx
                              Специально достал из закромов исходники и посмотрел, да, стандартным способом:
                              Form1.MSComm1.PortOpen = True
              0
              Очень похожее хочет один местный коллектив водоканальщиков, только хотят еще веб-камеру чтобы воочию видеть уровень говен в танке))
                +4
                Гнать изображение по GSM будет очень накладно :)
                  0
                  Тарифы, типа Билайновского «Телеметрия», как правило, безлимитные.
                  У нас есть решение, в котором промышленные медиаплееры работают на объектах по gsm-3g — они HD-видео-контент себе по этим каналам успешно качают, а тут веб-камера…
                    0
                    А поделитесь, пожалуйста, сколько денег эти тарифы стоят? Реально, не по проспектам. Ну и какие там есть плюшки/проблемы. Очень интересно. У меня сейчас есть производство, раскинутое по трём горам. Пешком из конца в конец 40 минут по пересечённой местности. Как раз подумываю на счёт GSM`овских штучек. Есть радио, кое-где есть оптика. Но всю территорию обеспечить такой связью просто нереально.
                      0
                      Зависит от оператора, кол-ва абонентских устройств в договоре, опыта менеджеров участвующих в переговорах.
                      200-700 руб/мес

                      Не понял для чего вам интернет, каков траффик и т.п., но в случае с нашими клиентами, проблемы в основном заключаются в отсутствии связи или её качестве в конкретных местах установки. Решается доп.антеннами или заменой канала на стационарный. Обновления (кроме принудительносрочных) устройства качают по расписанию ночами.
                      0
                      К сожалению, тариф «Телеметрия» не безлимитный.
                        0
                        Вопрос решаемый. Но в случае с единственным устройством незачем…
                  0
                  Информация обновляется каждые 15 секунд.

                  Каков объем данных в каждом пакете, сколько получается за сутки и как это по деньгам в месяц на выбранном тарифе «Телеметрия»?
                  Часто получается так, что конторы устанавливают автоматику за миллионы, а несколько сотен ежемесячной платы за трафик вытянуть не могут.
                    +2
                    В первом пакете объем примерно пара-тройка килобайт, в последующих 300-400 байт. В месяц набегает примерно 350-400р плюс 1,25р за одну смс, если она была выслана. Это гораздо дешевле, чем содержать бабушку.
                    +2
                    Мсье знает толк в извращениях. Я про VB6 и организацию связи с БД.

                    Уверяю Вас — перейти на C# Вам не составит труда. Это современный вариант VB, только для тех, кто стесняется говорить про VB. Зато потом проблем с работой с БД не будет таких.
                      0
                      Есть еще VB.Net (для тех, кто не стесняется)
                        0
                        Я, конечно, думал над этим, однако, возможность по быстрому написать на том, что я знаю, перевесила необходимость искать визуал студию, изучать синтаксис и т.д. Это заняло бы больше времени. Ну а вообще я с вами согласен, нужно изучать новые технологии :)
                        0
                        Кстати CCU-Wireless COM можно заменить на связку MOXA NPort + Router + GSM/3G Modem должно обойтись дешевле 15 тыс. — долларов 300 навскидку. Возни, правда, больше. Зато можно модем вывести повыше.
                          +2
                          Ну судите сами, одно устройство против трех.
                            0
                            500 долларов против 300
                              0
                              В масштабе предприятия водоканала никакой роли не играет, а надежность страдает.
                                0
                                Можно было бы поставить Cinterion TC65 Terminal ($140) + любой преобразователь RS-232/RS-485 с гальваноразвязкой ($20) или стороннее изделие на базе TC65 уже с RS-485 на борту. На терминал водрузить самописную программу на Java ME в полтора экрана кода, поддерживающую соединение с сервером, склеивающую MODBUS-пакеты и перенаправляющую данные из GPRS в последовательный порт и наоборот.
                                  0
                                  А вот это уже интересная вещь, спасибо за ссылку. Правда у меня аллергия на Java, но это поправимо :)
                                    0
                                    Это хорошая Java, пишется легко и непринужденно :) Соединения и потоки (которые streams, а не threads). Поскольку MODBUS — таумаут-ориентированный протокол, желательна склейка пакетов команд, приходящих по GPRS: пакеты могут приходить частями из-за нерегламентированных задержек в канале.
                                    0
                                    как вариант — можно поставить практически любой современный SOHO роутер. Они поддерживают 3G модемы, имеют на борту USB (чтоб конвертер подключить), многие имеют даже последовательный порт (232 с TTL уровнями).
                                    Соответственно, прошивка типа DD-WRT, VPN и немного Optware, немного собственных трудов и готово.
                                      0
                                      Один из кандидатов — TP-Link TL-MR3020.
                                      Имеет на борту Ethernet, 232 порт с TTL уровнями (решается с помощью Maxim 3232 и пары конденсаторов), USB для 3G модема.

                                      И ещё один вариант — когда контроллер сразу на борту имеет ethernet (или не на борту, а через дополнительный коммуникационный процессор). Это не редкость с современными контроллерами. Это самый лучший вариант: остаётся поставить только 3G роутер, который умеет VPN.

                                      PS забыл ещё один вариант. Новые modicon из 340 семейства имеют даже miniUSB интерфейс.
                              +3
                              Какова дальнейшая судьба бабушки?
                                0
                                Бабушка здорова, кушает компот )
                                0
                                Зачем было роутить сырой поток COM через TCP/IP? Не проще было бы воткнуть на объекте микроконтроллер с GSM модемом, который бы отдавал данные по HTTP уже в виде XML? И дешевле бы вышло.
                                  0
                                  Дайте, пожалуйста, ссылку на готовое решение «микроконтроллер+GSM модем» и чтобы было дешевле.
                                    0
                                    Первое, что в гугле попалось. Наверняка можно найти версии дешевле и на одной плате со всем фаршем, не обязательно arduino.
                                    amperka.ru/collection/Platy/product/Arduino-Uno
                                    amperka.ru/collection/Platy/product/gprs-shield
                                      0
                                      Ну я так и знал. К ардуине еще нужен rs-485 модуль. Потом все это нужно еще запрограммировать. Итого что имеем — изучать ардуину с нуля (для меня), изучать как меж собой взаимодействуют ее модули, как то прилеплять rs-485 интерфейс, программировать неизвестную железку, потратить на все это пару месяцев. В итоге имеем бескорпусную штуку, которая будет эксплуатироваться в помещении со слабым отоплением и слегка агрессивной средой — долго она там проживет? Я как-то привык пользоваться промышленными приборами.
                                      Давайте не будем спорить о надежности, объект не критичный, но по опыту скажу, что на починку CCU я ни разу не выезжал на объект за почти 4 года.
                                      Возникает вопрос — зачем ардуина (или подобное)? Удешевляем железо, удорожаем стоимость разработки. В системе у нас уже есть ПЛК, зачем лепить еще один? С чисто технической точки зрения — привезли один прибор, прикрутили внутри шкафа, подвели два провода Data+ и Data-, подцепили питание и забыли про ее существование. Самое надежное решение — самое простое. Разница в цене 3000 и 15000 ничтожна, другое дело если бы мы рассматривали проект стоимостью в 3млн и 15млн.
                                        0
                                        Я же написал, что это пример. Ну да, придется на худой конец залить эпоксидкой. Запрограммировать не намного сложнее того, что вам и так пришлось написать. Есть SDK, есть туториалы.
                                        И к слову вот, топик — прямо таки ответ на ваш ответ: habrahabr.ru/post/153719/ Готовое решение микроконтроллер + GSM модем, 3000р. Это опять же один пример, таких устройств наверняка вагон на любой вкус.
                                        Скажу по секрету, что CCU — это тоже ПЛК, только уже запрограммированный на одну функцию.
                                        Стоимость — дело масштаба, как вы и написали. Стоимость разработки ПО — разовая, а железки — экземплярная. В вашем случае да, выгоднее минимизировать затраты на разработку.
                                          0
                                          Почитал про TELEOFIS RX108-R RS485. Крутая штука. Сейчас бы сделал на такой.
                                    0
                                    Просто заменить формат данных в существующей системе невыгодно — xml достаточно избыточен.

                                    А вот с использованием микроконтроллера все можно организовать немного иначе — просто раз в месяц присылать сформированный текстовый файл с готовым отчетом, ну и периодически рассылать смс-ки при аварии. Ведь на экран никто и не смотрит — зря потратили время… При отсутствии электропитания бюджетного бесперебойника хватит надолго.
                                      0
                                      Люди хотели красивостей, они их получили. Остальное издержки эксплуатации.
                                    0
                                    А что происходит с данными в то время, когда канал передачи падает?
                                      0
                                      Данные пропадают, естественно. Именно поэтому был сделан аларм на пропадание связи с посылом смс.
                                      0
                                      Тема безопасности АСУТП не раскрыта.
                                        0
                                        Тут ломать нечего :)
                                          0
                                          Т. е. управлящих воздействий нет вообще?
                                            0
                                            Нет, в тексте статьи написано же, что управление не требуется.
                                        0
                                        Порадовало! А я думал, что я такой один маразматик, кто скаду свою пишет, а оказывается есть еще умельцы в русских селеньях! :)
                                        Прикольно было услышать много знакомых брендов, особенно порадовал скриншот, аж сердце екнуло от вида задвижек и насосов, но фраза " в качестве бэкграунда" поставила все на свои места.
                                        А я вот аккурат сейчас сижу уже вторую неделю под Томском, только вчера запустил систему примерно на 3000 точек ввода-вывода на своей скаде, заменив ей ТМ. Так что мне ой как знакомо чувство, когда вот так вот свое запускаешь в работу и оно действительно работает и выполняет свои функции!
                                        Желаю удачи в дальнейших разработках! От себя, могу порекомендовать некоторые готовые решения по библиотекам для реализации протокола ModBus на сайте www.modbus.org, сам оттуда брал nModbus для дот нета. Кстати в ней даже на Java есть реализация.
                                          0
                                          Мне до вашей скады как до китая пешком :) Читал-с :)
                                          Кстати я думал, что Элеси все в Томске подмяло :)
                                            0
                                            Дорогу осилит идущий. Был я в том Китае, довелось там много поработать в 2002-2004, так что не зарекайтесь, ведь судя по профилю мы одногодки! ;)
                                            А насчет Элеси — в Томске может и подмяло, но я тут по другим объектам, более серьезным и крупным, про Элеси на них даже не слышали.
                                              0
                                              Хотел бы я про них тоже не слышать.
                                                0
                                                Приходится много работать на Infinity, или поддерживать то, что сделали на ней они?
                                                  0
                                                  И поддерживать и работать и делать и переделывать и тыкать их носом в их же ошибки. Последнее веселье — установка последней версии инфинити, у которой оказалась утечка памяти, за 14 часов non paged pool в винде сжирался в ноль, все, естественно умирало. Многое могу рассказать, вкратце — я их ненавижу, хотя ребята пусконаладчики в основном грамотные и бодрые, жаль, что им приходится работать с этим г-ном.
                                                    0
                                                    Скажу честно — саму Infinity даже в руках не держал, но как инженер и в некотором роде архитектор систем подобного рода, пробежав по основным разделам описательной части их системы могу вынести такое резюме (поправьте меня, если я буду чертовски нести чушь):
                                                      0
                                                      Ну, где же? )
                                                        0
                                                        1) Сервер ввода-вывода, по сути ядро исполнительной системы, как и сама система — всецело базируется на стандартах ОРС — уже ошибка, сама технология ОРС — развод лохов на бабки за дешевую реализацию якобы стандарта, базирующегося на таких сложных технологиях как COM/DCOM, поддержка и реализация которых на конечных системах требует таких неиии… х познаний и кувырканий с настройками, что внедренец готов иметь в итоге всех разработчиков и их родню вместе взятых по результатам таких кувырканий.
                                                        2) Горячее резервирование — заявленное непревышение 0.01с при «не»определенных протоколах и условиях немного смахивает на бред, тем более, что на уровне серверов управление объектом, где применяется горячее резервирование не выполняется никогда! Я бы голову скручивал разработчику подобного на объекте на уровне, где работает сервер скады.
                                                        3) По трендам и графике — Упор на технологию ActiveX считаю не совсем удачной рекламой продукта. А судя по скриншотам, тренды оставляют желать лучшего. Я видел и интереснее функциональность и визуальную адекватность в других системах, нежели на представленных скриншотах, может будет звучать заносчиво, но «я так тоже могу и даже» лучше уже сейчас.
                                                        4) Вэб роутер — «громкие» цифры ниочем… вообще продукт представлен «ниочем», по крайне мере из описания
                                                        5) Проигрыватель истории — мне интересно, реально кто-то сидит на объектах и проигрывает это? За всю мою практику работы в АСУТП — «разбор полетов» происходит вообще по-другому, и там важны другие представления данных, нежели плеер истории.

                                                        А еще — порадовали функции математической обработки и разработки алгоритмов, если бы у меня, как разработчика, в системе были только эти возможности, я бы всерьез задумался о смене инструмента…

                                                        Извините, если сильно амбициозно, или не в тему, но это результат первого знакомства чисто по описанию, человека, который примерно как и Вы 12 лет в автоматизации…
                                                          0
                                                          1) OPC все же является промышленным стандартом. Подключить инфинити к какому-нибудь SAAB серверу ничего не стоит, все просто. Однако, вы правильно заметили, что настройка этой фигни дело нетривиальное. Пусконаладчики обычно разрешают «все для всех» в секурити, чтобы не разбираться потом, почему все не работает. И обычно оно с нуля все равно не работает, приходится пилить.
                                                          2) Вы немного не поняли про горячее резервирование. У них имеется в виду резервирование серверов, с которых клиенты получают данные и через которые клиенты управляют оборудованием. Сами сервера не несут никакой логики в управлении. Однако, хорошего тут тоже мало. В реальности 0,01 это полная чушь. Эта константа настраивается в инишках сервера, и она означает, что, если один сервер не видит другого в течение определенного времени (по умолчанию 10 сек), то он становится главным. Опишу: работают 2 сервера — основной и резервный. Основной опрашивает оборудование через различные каналы — ethernet, usb (отдельная тема), мэк модемы и пр. Резервный в этот момент слушает ответы от оборудования и запоминает в базу, сам ничего не опрашивает. Вдруг основной сервер падает (зависает процесс инфинити, что прям не редкость). Резерв видит, что основной не отвечает и запускается в режиме основного. Сигналы начинают работать, на картинках все расцвечивается, все норм. Внезапно тут поднимается упавший сервер. Получается, что в системе 2 основных сервера, оба опрашивают оборудование, в итоге данных ни у кого нет. Приходится идти к одному серверу и гасить его, чтобы другой мог работать.
                                                          3) Вот к трендам претензий нет, функциональности хватает, никто и никогда из диспетчеров не просил чего-то невозможного.
                                                          4) Веб роутер — штука, чтобы смотреть в браузере те же картинки, что нарисованы для диспетчера (а нарисованы они в GraphWorx имени Iconics). Штука работает, претензий к ней нет.
                                                          5) Эту вещь не эксплуатировали. Судя по описанию она и не за чем.

                                                          Насчет математики и прочего — сам сервер дает необходимую функциональность, по крайней мере для нас. Но реализация это просто пзц… До этого я работал с венгерской системой D-Mon на QNX. Функционала меньше, но работала она как чугунный мост, ни сбоев, ни глюков.
                                                            0
                                                            Про горяее резервирование — понял, просто описание на сайте «не в кассу». У меня в моей скаде реализовано горячее резервирование серверов с переключением клиентов АРМов оперативного персонала по ним в зависимости от режима, поэтому все что Вы описали мне знакомо. Вот только у себя в системе я сделал функцию арбитража и у меня сервер при старте, если ему задано резервирование (кстати, в проекте он разрабатывается как один узел, ему просто два IP-адреса назначается тех ПК, где они будут запущены) автоматически ищет свой образ в сети, и если его находит, становится Слейвом, поэтому бегать никуда не надо чтобы восстановить справедливость режимов. Поэтому и описанных Вами проблем у меня не наблюдается. Кроме того — в проекте разработчик по параметрам может назначать галочки синхронизации параметра по мастеру и он будет автоматически синхронизировать свое значение в узле с режимом Слейв по значению себя же с узла Мастер по сети, тогда переход из Слейва в Мастер будет максимально безударным. Самое смешное, что все это я сделал на базе стандартного протокола ModBusTCP, пусть и с некоторыми ограничениями для форматов данных. Я еще работаю над некоторыми особенностями горячего резерва, тут большое поле для деятельности, сейчас хочу перенести текущую модель на свой основной сетевой механизм обмена. Но текущий вариант уже работает на объекте, который сейчас запустил — здесь много оборудования по ModBusRTU и ModBusTCP, причем все RTU идет через МОХА (преобразователи интерфейсов RS485-Ethernet), которые очень глючно работают в режиме, когда два мастера инициализируют сами СОМ-порты, пусть даже опрос ведет только один, приходится все время реинициализировать порты, чтобы обмен шел нормально, МОХА в этом плане огорчает. А многое оборудование смежных систем по ModBusTCP вообще капризное до того, что не позволяют даже инициализировать по сети к себе подключение более 1 мастера по протоколу ModBusTCP. Поэтому когда дошло до резервируемых серверов опроса, пришлось такие штуки напридумывать и сделать их штатными для скады, что мозг сломаешь, дошел даже до таких вещей как распределение задач скады между рантаймами в рамках одного ПК с объединением потоков данных, управляемых разработчиком, через методы общей памяти (так называемой SharedMemory). Скажи мне еще весной, что я такие задачи буду самостоятельно решать, да еще и сидя на объекте в кратчайшие сроки — покрутил бы у виска пальцем и отнес бы это к области фантастики рассмеявшись в лицо, ан нет, время показывает, что не до смеха, и приходится придумывать изощренные модели архитектуры, с которой потом простой обыватель мог бы общаться на «ты», не вдаваясь в сложность настроек и архитектурных особенностей. :)
                                                              0
                                                              У нас сейчас одна мысль — лишь бы работало.
                                                              Вот сегодняшние утренние пляски:
                                                              Process file: c:\program files\elesy\infinitysuite\infinityserver\server\InfinityServer.exe
                                                              PID: 2680
                                                              File version: 1.0.1.53
                                                              EXCEPTION_ACCESS_VIOLATION
                                                              The crash dump saved at C:\Documents and Settings\All Users\Application Data\Elesy\Dumps\InfinityServer.exe\InfinityServer.exe__2680__06.10.2012(03.48.44).mdmp.

                                                              Process file: c:\program files\elesy\infinitysuite\infinityserver\server\InfinityServer.exe
                                                              PID: 2680
                                                              File version: 1.0.1.53
                                                              Failed to create the dump file C:\Documents and Settings\All Users\Application Data\Elesy\Dumps\InfinityServer.exe\InfinityServer.exe__2680__06.10.2012(03.48.44).mdmp: 0x80070020.

                                                              Ошибка при обработке полученного кадра: Access violation at address 096067D0 in module 'Miec4Comp.dll'. Read of address 00000001

                                                              Оно даже крэш дамп сохранить не может.
                                                              И такая дребедень целый день, то тюлень позвонит, то олень.

                                                              Вот честное слово плевать на архитектуру и реализацию, пускай сделают, чтобы это нормально работало.
                                                              Как так можно писать такое ПО, что первый залетевший дятел в виде кривого пакета все валит.
                                                            0
                                                            По OPC и DCOM. Вроде есть OPC XML для ухода от этого небезопасного и плтаформозависимого костыля? Или я ошибаюсь?
                                                              0
                                                              Это только в том случае, если софт поддерживает спецификацию OPC UA. Разница между ОРС обычным и OPC UA большая, и общего между ними разве что только три буквы «ОРС» в названии…
                                                0
                                                И как оно, со своей скадой? Я бы побоялся отдавать в продакшен — её ж потом поддерживать придётся…
                                                  0
                                                  Так сейчас система уже встала на коммерческие рельсы как самостоятельный продукт, которым занимается не частное лицо в виде одного меня, а фирма. Недавно на выставке ПТА-2014 впервые представили ее в таком качестве Российскому рынку автоматизации. Уже некоторые компании системные интеграторы работают и делают на ней проекты АСУ ТП. Потихоньку развиваемся.
                                                    0
                                                    То есть, за вас можно только порадоваться :)

                                              Only users with full accounts can post comments. Log in, please.