WinCC – одна из основных частей системы автоматизации SIMATIC, производимых компанией Siemens AG, предназначенная для организации человеко-машинного интерфейса HMI и визуализации различных процессов.
WinCC интегрирована в среду разработки TIA Portal V13, но, как я понял, не для всех семейств контроллеров, или так было не всегда, да ну и черт с ним. Довелось использовать именно эту среду, и, как и у других сред для разработки SCADA-систем, у нее были свои неудобства. Где-то баги, где-то искусственные ограничения, где-то #уй пойми этих немцев “что русскому хорошо, то немцу – смерть”.
Косяки среды разработки:
* (начнем с простого) Editbox ввода имени тега: при переключении типа (Integer/Double/String/Int/HMI_Tag) текст очищается.. Боль!
* неудобное редактирование значений параметров в элементах управления IDE: нужно постоянно делать лишние “подтверждающие” клики, будто кнопки не в фокусе (я вначале думал, блеать, у меня мышка глючит!)
* нельзя запускать задачи в планировщике чаще раза в минуту, и скудный список триггеров (н-р нет При запуске проекта)
* отладчик тегов в режиме симуляции не обновляет значения тегов, измененные логикой (т.е. одностороннее отображение изменений)
* баг в отладчике тегов: список переменных, которые можно добавить для отладки, самопроизвольно урезается, когда переменных больше ~5-10 (проявлялся не всегда)
* спасибо за возможность отладки скриптов в том же Visual studio, но непонятно зачем тогда в коробку запилен родной (неработающий) отладчик? (разбираться не было времени)
* в версии Comfort/Flexible на Alarm нельзя установить триггер типа bool или byte (!), только WORD, в котором указывать “триггерный” номер бита. Т.е. нужно или изначально вытягивать из железяки аварийные флаги в теги типа WORD, или потом делать преобразование типов, если доступа к PLC-проекту нет.
* как оказалось, некоторые системные функции, например SetBitInTag, не работают с динамически подсовываемыми именами тегов (спасибо Murof):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Sub ChangeBit(ByVal TagName, ByVal BitPosition, ByVal Value) ... 'Так не получится: SetBitinTag TagName BitPosition 'И даже так: Dim MyTag Set MyTag = HmiRuntime.SmartTags(TagName) SetBitinTag MyTag BitPosition 'Нужно так: SetBitinTag "Tag_name" BitPosition 'Или так: Dim MyTag Set MyTag = "Tag_name" SetBitinTag MyTag BitPosition ... End Sub |
Поэтому делалось “вручную”:
1 2 3 4 5 6 7 |
Sub ChangeBit(ByVal TagName, ByVal BitPosition, ByVal Value) ... Dim MyTag Set MyTag = HmiRuntime.SmartTags(TagName) MyTag = MyTag Or 2^BitPosition ... End Sub |
* и в целом, возможности функционала прыгают от версии к версии, а последняя в зависимости от железяки, но список возможностей конкретной версии толком нигде не озвучен (форумы наше все)
Понимаю, что свое недовольство можно (нужно) засунуть себе в одно место, т.к. проектами с железом и ПО Siemens должны заниматься прошаренные в этой кухне бородачи, и нехрен лезть, а то убьет, но жизнь же боль!
Достоинства среды разработки:
* лень составлять