Добър ден, скъпи читатели на тази статия. Пиша това в формат на преглед
Небольшо предупреждениеИскам да предупредя, че ако веднага сте разбрали за какво става въпрос от заглавието, съветвам първата точка (всъщност, ПЛК-ядро) да я замените с нещо от ценовата категория на стъпка нагоре.
Никаква икономия на пари не струва толкова нерви, субективно.
За тези, които не се плашат от малко посивяване и амплитуда на нервен тик, по-късно ще опиша подробно как се създаде това технологично чудо. В настоящата статия обаче кратък анализ на проекта с определена доза критичност.
Зареждане. Поставяне на задача
Собствено, работя в конструкторско бюро, и тестваме оборудване за автоматизация за интеграция в нашите заводи "под ключ". Нормално на склад пристигна оборудване ОВЕН и от него беше решено да се събере изпитателен стенд:
- ПЛК110[M02]-MS4 (изпълнителна среда MasterSCADA 4D)
- Панел оператор СП307
- Модул универсален за въвеждане на аналогови сигнали МВ110-224.2А
- Модул за въвеждане на сигнали от тензодатчици МВ110-4ТД
- Електроизмерителен модул МВ110-220.3М
Структура на системата беше избрана с разграничаване на мрежите по предназначение:
- Modbus RTU на база RS-485 — комуникация ПЛК с подчинени устройства (модули, честотни преобразуватели, интелигентни датчици, HMI панел СП307), ПЛК-мастера на мрежата.
- Modbus TCP на база Ethernet — Комуникация между различни ПЛК и с OPC-сервер
- ПК-сървър OPC и SCADA-системи заедно служат като шлюз между две различни мрежи (Корпоративна LAN на предприятието и Modbus TCP мрежа на контролери (два мрежови адаптера с маршрутизиране на данни стандартни средства на Windows))
- Корпоративният LAN има изход в интернет чрез прокси-сервер
Структурата на системата в общ вид е представена на изображението по-долу:
![ОВЕН ПЛК110[M02]-MS4, HMI, OPC и SCADA, или колко количество Ромашков чай е необходимо на човек. Част 1](/wp-content/uploads/2019/10/18cb2554a35fbb11111a78572d0f2bf9.png)
Заложен функционал
- Събиране и прехвърляне на данни от ПЛК на OPC-сервер
- Локално управление и мониторинг чрез HMI панела
- Управление и мониторинг от SCADA чрез OPC-сервер
- Управление от всякакъв ПК в LAN на предприятието и през интернет с помощта на SCADA клиент
- Свързване на мобилни OPC монитори през LAN и интернет
- Разбира се, архивиране и генериране на отчети
Не изглежда, че нещо е пропуснато. Има общо описание на системата, а сега, собствено, по темата (начините за отстраняване ще бъдат описани в статии с реализиране на всеки елемент):
Възникнали затруднения
1. Документация за ПЛК
Бета-тестът на обявения PLC на ядрото MasterSCADA 4D беше обозначен от производителя през 2012 година. Независимо от впечатляващия срок на съществуване на концепцията, всичко, което разработчикът има през 2019 г., е ръководство за програмиране на 28 (!) страници, на които полезната информация е почти незначителна, като скрийншотовете в ръководството са от MasterSCADA 3D, което е доста забавно, като се има предвид, че интерфейсът е сменен.
Също така активно се поддържа от трима адепти и мениджър по продажбите темата на форума в 20 топика.
2. Архитектура на PLC-модулите
Това е отделна тема за обсъждане. Накратко: PLC комуникира с модулите като с устройства Modbus RTU slave, които предварително трябва да се конфигурират с утилита, свързвайки всеки отделно към компютър чрез преобразувател RS-485.
Умните дяди, разбира се, вероятно могат да го направят без преобразувател чрез PLC, свързвайки модулите последователно в мрежа и записвайки необходимите регистри, но такова умение идва с опит и огромно количество опити и грешки.
За разработчика, който за първи път вижда такава архитектура, не е много потребителски приятелска.
Също така всички аналогови модули обичат да се повредят по неизвестни причини, взимайки със себе си цялата RS-485 мрежа в Терра Инкогнита, но за това също искам да разкажа отделно, само по себе си като цяла епопея, разбира се. Проблемът, между другото, съществува от около 10 години, производителят се шегува. „Трябва да признаем, шаблоните ни не се получиха“, но това е единственият интерфейс за комуникация с модулите, и хората, напълно сериозно, отдавна описват своите реализации на Modbus RTU.
Междувременно, лайковият чай свършваше... Слънцето залязваше
3. IDE MasterSCADA
Няма да говорим за графични инструменти, не съм тествал много, но ще кажа веднага, че не ми хареса.
Говорим за реализиране на обмен на данни и езиците на стандарта IEC:
Физическите входове и изходи на контролера не са глобални променливи и не могат да бъдат достъпни от всяка част на програмата, чрез написване на псевдоним, например „DI1“. Всяка програма трябва да изтегля това ръчно, там се формира локална променлива, която наследява или предава стойност. Тоест, самата същност на PLC, в моята представа, малко е загубена: устройството трябва да опрости програмирането на логиката на работа на физическите канали до нивото „Ако вход DI1 сработи — Включваме изход DO1“, а изглежда така «Вход DI1 — Променлива LI1 — Променлива LO1-Изход DO1», също така, поради незнанието на този принцип, IDE може да даде прекрасно предупреждение „Преобразуването Boolean-Boolean е невъзможно“ (вероятно единият от тях е указател, но особено в редакцията на създателите, изглежда по-гармонично).
Библиотеките на езиците ST, FBD, SFC са достатъчно обширни и предлагат избор за удобство при програмирането, но тези компоненти не са функции, а класове, в които са вградени методи, а за повечето от тях липсва документация с описание на функционалността и типовете данни. Настоятелността ме отведе в библиотеките на ядрото CodeSys, откъдето са взети всички тези функции, а тяхната документация помогна.
4. Обмен с панела СП307
Доста интересно събитие за тези, които нямат друга работа за две-три дни.
Стандартното тестване на GUI (HMI или SCADA) за мен е да направя 6 проби:
- Четене на дискретен сигнал
- Запис на дискретен сигнал
- Четене на цяло число
- Запис на цяло число
- Четене на действително число
- Запис на действително число
Съответно, рисувам на екрана 6 компонента-премитиви и всеки от тях по ред проверявам
Обменът е абсолютно същият като с модулите, но от отделен порт на PLC RS-232/485 и, изглежда, е по-стабилен. Понеже HMI е роб, записвах в него при промяна, а четях с polling на 500ms, за да не пропусна действията на оператора.
Първите 4 точки бяха изпълнени отлично, но 5 и 6 предизвикаха проблеми.
Изпращаме данни от тип Single Float, показваме ги на екрана и виждаме, че данните не са тези, въпреки че всички настройки за изход (Float, размерност 1 регистър и други) са правилни. Няма да е вярно да се каже, че подобен случай не е описан в документацията, но опитайте да намерите къде и в коя част, това е забавно от страната на.
След истеричното преглеждане на всички настройки, касаещи самите данни и тяхното изпращане, пишем до техническата поддръжка, отговорът е средно 5-6 календарни дни, работим според стандартния скрипт на техническата поддръжка „Проверете дали захранването е включено — проверете версията на софтуера — моля, изчакайте още една седмица — започваме да разследваме сами“.
Като уточнение, решението дойде чрез поставянето на една отметка на абсолютно неадекватно място с абсолютно неадекватно наименование.
В функционалността на екрана не е заложен вход за аналогов сигнал от формата „Бегунок“, може да се впише само в текстовото поле с цифри. Това е просто възхитително, или натискаме бутоните «±» и скриптът сам се справя, или въвеждаме цифра от клавиатурата, за мекото управление на някакво задвижване забравяме.
Няма да претоварвам статията, затова ще опиша проблемите с горното ниво в част 2.
В обобщение, искам да подчертая, че имах достатъчно свобода и много време, за да разреша тези проблеми, които на пръв поглед изглеждат смешни, но предизвикват много болка у пострадалия. В условията на ограничени срокове, срещането с такива проблеми е критично.
P.S.: Всички тези тези са субективни и са само опит да предупредя неподготвените, а не да дискриминирам производителите, моля, отнесете се към тази статия именно от тази гледна точка.
Втората част вече е тук:
Източник: habr.com
