В ходе базового курса в системе WinCC OA используются только внутренние системные переменные.
Никаких внешних подключений не предполагается.
Однако студентов базового курса всегда просят в конце обучения продемонстрировать, как считать переменную из «настоящего живого ПЛК».
Поскольку WinCC OA является продуктом Siemens, логично было бы продемонстрировать подключение к контроллеру Siemens и чтение с него нескольких переменных.
В нашем случае мы будем подключаться к ПЛК серии S7-1200. В комплект драйверов WinCC OA входят два типа драйверов для контроллеров Simatic — s7 и s7plus. Разница между ними следующая: s7 предназначен для связи с ПЛК классической серии S7-300/S7-400, а s7plus – для современной линейки S7-1200/S7-1500. Драйвер s7plus указывается отдельно при установке.
Его может не быть в вашей системе, если вы его не устанавливали.
Независимо от того, какой драйвер используется (даже iec104), общие принципы остаются неизменными.
Вам необходимо добавить соответствующий драйвер в консоль.
Далее настройте подключение к устройству и задайте для этого подключения номер добавленного драйвера и активируйте его.
Также необходимо прикрепить конфиг Periphery Address к DPE и произвести настройки, указав правильный адрес переменной.
Сначала вам нужно зарегистрировать драйвер в консоли.
Технически добавление драйвера в систему ничем не отличается от добавления менеджера.
Откройте консоль, нажмите «Добавить нового менеджера».
Выберите драйвер S7plus из списка и в настройках установите «-num 2».
Это связано с тем, что в системе уже есть драйвер номер 1, это Драйвер моделирования, и номер драйвера в системе должен быть уникальным.
Кстати, по словам разработчиков WinCC OA, в реальных проектах драйвер моделирования не используется.
Теперь новый драйвер добавлен в систему и работает.
Теперь добавленный драйвер номер 2 в системе необходимо настроить.
Для этого (например, через меню редактора gedi) необходимо открыть модуль «Управление системой».
Далее откройте Driver S7.
Выберите драйвер S7+
На данный момент в системе нет настроенных соединений.
Чтобы создать соединение с существующим контроллером, нажмите кнопку «Создать».
Здесь необходимо указать имя подключения и метод работы с данными – либо автономный проект, расположенный в подпапке проекта WinCC OA, либо онлайн-соединение с готовым и настроенным ПЛК.
В нашем случае S7-1214 с заполненной конфигурацией и программой лежит на столе рядом с ПК и доступен по протоколу TCP/IP, поэтому мы работаем онлайн.
Указываем номер драйвера, который мы только что добавили и запустили, это номер 2. Имя соединения тогда превратится в системную точку данных, с которой можно будет работать через программный код.
Далее нужно указать тип контроллера, я укажу явно — S7-1200, а также ввести IP-адрес моего ПЛК.
Дополнительно, если вы его еще не настроили, необходимо открыть окно настройки сетевой карты компьютера, нажав кнопку «Установить интерфейс ПК/ПГ».
При нажатии на эту кнопку откроется окно, знакомое всем, кто работал с классическим Step 7 или настраивал запуск операторской системы WinCC 7, TIA Portal WinCC и т.п.
Если вам незнакомо это окно, то вам необходимо чтобы указать сетевую карту, с помощью которой ваш компьютер подключен к вашему ПЛК.
У меня уже давно настроен этот интерфейс, и это окно выглядит так:
Моя сетевая карта присутствует здесь в трёх экземплярах, с окончаниями ISO, TCPIP и TCPIP.Auto. Обычно используется последний вариант — TCPIP.Auto. После внесения настроек связи это окно выглядит следующим образом:
Установите флажок «Установить соединение» и нажмите кнопку «Применить».
Затем WinCC OA тратит несколько секунд на установление соединения.
Если все было сделано правильно, окно будет выглядеть так:
Нажмите «ОК», а затем закройте окно модуля «Управление системой».
Далее необходимо обратиться к тегам контроллера, которые уже прописаны в нем.
Ограничимся двумя дискретными переменными и одной вещественной.
Для работы с точками данных у нас есть модуль para, открываем его.
В нем уже есть несколько готовых типов точек данных — exampleDP_bit и exampleDP_float, и мы ими воспользуемся.
Давайте создадим точку данных MyBlinker типа exampleDP_bit.
Давайте добавим конфигурацию «периферийного адреса» в точку данных.
Выбор типа драйвера SIMATIC S7PLUS
Настройка
Указываем драйвер номер 2. Указываем «направление данных» — Ввод, только чтение.
Укажите тип преобразования — Bool. Представляем метод сбора данных – Polling (непрерывный опрос).
Далее нажмите на кнопку Опрос групп, вам необходимо создать группу для циклического (непрерывного) опроса данных.
В следующем окне нажмите «Создать», задайте имя группы и ее настройки.
Переменные в этой группе будут опрашиваться каждые 100 мс.
По данным справки, быстрее организовать опрос таким способом невозможно; любые значения цикла опроса менее 100 мс будут считаться 100 мс.
Сделайте группу активной и нажмите ОК.
В графе Reference необходимо указать имя переменной в контроллере.
Поскольку у меня настроен и подключен ПЛК, я могу просматривать его теги онлайн.
Нажмите кнопку «Выбор» в верхней части окна.
Откроется окно со всеми «живыми» тегами контроллера, доступными операторской системе.
Я выбираю бинарный тег Clock_1Hz, который меняет свое значение каждую секунду.
Теперь установите флажок «Адрес активен», нажмите «Применить», и вы сможете перейти к исходной конфигурации и посмотреть, изменится ли значение тега в нашей SCADA.
Да, значение тега меняется каждую секунду
Таким же образом мы пропишем в системе бит Эмуляции, расположенный в блоке данных Modes. Действуем по аналогии с предыдущим битом, за исключением «Направления», здесь выставляем режим доступа на чтение и запись.
Все остальные настройки (кроме, конечно, символического имени тега ПЛК) аналогичны.
Теперь значение бита ЛОЖЬ, бит считывается.
Давайте изменим его значение на TRUE в ПЛК.
В модуле para его значение также изменилось
Теперь попробуем изменить его значение на FALSE и посмотреть состояние бита с помощью TIA Portal. Данную операцию невозможно выполнить с помощью п.
Скорее всего, это связано с тем, что переменная опрашивается 10 раз в секунду, в para она обновляется так же быстро, и я просто физически не успеваю вписать в Исходное значение значение FALSE вместо TRUE. Невозможно даже выбрать значение двойным щелчком или кнопками Ctrl+A. Пробуем изменить DPE с помощью кнопок на панели системы оператора.
Для этого я размещаю вверху Главного экрана две кнопки - Включить и Выключить и создаю для них скрипты соответственно.
dpSet("System1:Emulation.:_original._value", 1); И dpSet("System1:Emulation.:_original._value", 0); Теперь попробуем «отключить» тег.
При нажатии кнопки в модуле para значение изменилось на FALSE.
Значение также изменилось в блоке данных контроллера.
Поскольку изменить значение тега можно с помощью скриптов операторского интерфейса, то это означает, что с соединением все в порядке.
Но все же хотелось бы иметь возможность устанавливать значение через пункт. Я рассуждаю следующим образом.
Драйвер принудительно обновляет значение сигнала 10 раз в секунду (время опроса 100 мс).
Драйвер ничего не знает о том, изменилось значение сигнала или нет — он просто опрашивает заданную переменную и отправляет ее менеджеру событий.
EV также не знает, изменился тег или нет, и точно так же передает любое новое значение туда, где для них существует подписка.
100 мс - это очень быстро для человеческой реакции, поэтому в модуле para я просто не успеваю ввести новое значение, оно тут же затирается обновленным из драйвера.
Это означает, что необходимо настроить систему таким образом, чтобы сообщения с новым значением тега отправлялись получателям только тогда, когда значение действительно изменилось.
Для этих целей нужно разместить конфиг Smoothing на DPE. Возвращаемся к модулю para и добавляем конфиг в точку данных.
Его настройки оставляем как есть — сравнивая «старое» значение с «новым».
Не забудьте нажать «Применить».
Заходим в исходный конфиг этой точки данных и наблюдаем, что метка времени тега (типа онлайн, есть оригинал) перестала меняться как сумасшедшая.
Также обращаем ваше внимание на то, что теперь в модуле para можно изменить значение бита, и оно доходит до контроллера.
Теперь напишем реальную переменную, которая находится в ПЛК по адресу Robicon.SCADAmanSP. Для переменной в WinCC OA мы будем использовать готовый тип DP exampleDP_float. Его создание и настройка адреса периферии аналогичны предыдущим настройкам, за исключением очевидных деталей – имени, адреса, типа данных.
Мы установим «направление» как чтение/запись.
На этот раз я не выбирал теги онлайн, а ввел имя символьной переменной непосредственно в поле ввода «Ссылка».
Не забудьте также добавить конфигурацию сглаживания для этого DP.
Сделайте адрес активным и посмотрите исходный конфиг.
Видим, что соединение установлено, значение поступает с ПЛК.
Изменение значения также достигает контроллера.
Наконец, выведем значение этой переменной на мнемосхему FLAPS (не создавайте новую панель ради одной проверки).
Разместим на панели элемент Textfield из палитры.
С помощью мастера на событии Initialization создайте скрипт для отображения значения DPE (Display value)
Отображается значение из ПЛК
Добавим еще один скрипт с помощью мастера, чтобы можно было редактировать значение прямо с экрана оператора.
Для этого нам нужно вызвать мастер по событию Command.
Поменяем значение сигнала от операторской системы
Изменения достигли блока данных
Теги: #Промышленное программирование #scada #siemens #simatic #wincc
-
Нетворкинг Ради Прибыли
19 Oct, 24 -
Не Все Люди Умеют Писать Код
19 Oct, 24 -
История Игрового Рынка, Часть 1
19 Oct, 24