III. Целевой ПЛК
Перенос программы и подключение Runtime

13. TIA Portal / PLCSIM Advanced — загрузка программы и XML OPC UA

В предыдущих главах программа работала в MetaCore. Теперь загрузим тот же учебный алгоритм в виртуальный Siemens S7-1500, проверим доступ к настройкам и получим XML с адресами тегов.

В этой главе используем TIA Portal V21, S7-PLCSIM Advanced V8.0 и CPU 1513-1 PN. Дополнительная библиотека MetaLib не нужна.

Где Что работает
MetaPlatform Генерация программы из таблиц и шаблона
TIA Portal Создание блоков, компиляция и загрузка
PLCSIM Advanced Выполнение программы виртуального ПЛК
UaExpert Проверка подключения и чтения тегов OPC UA

Дальше эти же теги будут использовать MetaLab, MetaView или ваша HMI/SCADA. MetaCore для выполнения этой программы уже не требуется: её выполняет PLCSIM Advanced.

1. Подготовьте исходники для Siemens

Продолжайте проект из предыдущих глав. Выберите целевую платформу Siemens TIA Portal. До генерации учтите, что глобальная таблица Signals станет блоком данных: в Siemens к её полям обращаются через имя DB.

В компоненте Correction внесите изменения:

Где Что указать
Data, строка global для |Input| Area = Signals; Tag оставьте |Input|
Template, вход вызова COffset in_fValue := Signals.|Input|
MV Export, параметр ChannelCard.inputTag View.Signals_|Input|
ML Export, параметр InputSine.tag Оставьте |Input|: сценарий использует короткое логическое имя

Area не переписывает ваш ST-код. Поэтому обращение в шаблоне меняем явно. В исходнике COffset для Siemens отделите объявления переменных от тела блока строкой BEGIN: она стоит после последнего END_VAR, перед первым оператором алгоритма.

В меню MetaView → Действия снимите галочки профилей визуализации. На этом этапе готовим программу ПЛК; привязки MetaView Runtime подготовим в главе 16, а профили HMI — в главе 17.

Выполните генерацию и сохраните полученный результат MetaGen. Распакуйте MetaGenArtifact.zip: SCL-файлы находятся в папке Siemens. Это исходники вашего проекта, которые будем импортировать в TIA.

После генерации проверьте имена:

Назначение Первый канал Второй канал
Исходное измерение Signals.fRaw1 Signals.fRaw2
Поправка Conf.Offset_1 Conf.Offset_2
Результат View.Correct_1_Inst_out_fValue View.Correct_2_Inst_out_fValue

2. Создайте проект и разрешите симуляцию

Создайте проект TIA Portal и добавьте CPU 1513-1 PN. В мастере PLC security settings снимите флажок Protect confidential PLC configuration data.

Добавление ПЛК: флажок Protect confidential PLC configuration data снят

Затем откройте свойства самого проекта: ПКМ по верхней строке Project1 → Properties.

Открытие свойств проекта Project1

На вкладке Protection включите Support simulation during block compilation и нажмите OK.

Поддержка симуляции включена до компиляции блоков

Сделайте это до компиляции и загрузки. Если блоки уже скомпилированы без этой настройки, после её включения потребуется Software (rebuild all).

3. Настройте ПЛК и OPC UA

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

Доступ к ПЛК

Откройте свойства CPU → Protection & Security → Access control и выберите Disable access control.

Disable access control в свойствах учебного ПЛК

Сервер OPC UA

Перейдите в OPC UA → Server → General и включите Activate OPC UA server.

Включение OPC UA сервера

На этом снимке показан адрес до настройки сети. В этой главе ПЛК имеет адрес 192.168.1.3, поэтому подключаться будем к opc.tcp://192.168.1.3:4840.

В OPC UA → Server → Security → Secure channel включите No security. Уже выбранную политику Basic256Sha256 — Sign & Encrypt можно оставить: клиент нашего примера использует None.

Политика No security включена

В Runtime licenses → OPC UA выберите соответствующий тип лицензии в поле Type of purchased license. Значение на снимке относится к показанному стенду.

Выбор соответствующего типа лицензии OPC UA

Адреса виртуального ПЛК

PLCSIM Advanced создаёт в Windows Siemens PLCSIM Virtual Ethernet Adapter. Через него локальные приложения подключаются к виртуальному ПЛК по TCP/IP.

Откройте сетевые подключения Windows, найдите этот адаптер и в свойствах IP версии 4 (TCP/IPv4) задайте:

Параметр адаптера Windows Значение
IP-адрес 192.168.1.1
Маска 255.255.255.0
Основной шлюз Пусто

IPv4 Siemens PLCSIM Virtual Ethernet Adapter: 192.168.1.1, маска 255.255.255.0, без шлюза

В TIA откройте свойства ПЛК → PROFINET interface [X1] → Ethernet addresses:

Параметр ПЛК Значение
IP address 192.168.1.3
Subnet mask 255.255.255.0
Use router Выключено

Адрес виртуального ПЛК 192.168.1.3, Use router выключен

У адаптера Windows и ПЛК разные адреса в одной подсети. Если 192.168.1.0/24 уже используется другой сетью вашего компьютера, выберите свободную подсеть и согласованно замените адреса адаптера, ПЛК и endpoint клиента. В дальнейшем используем показанные адреса.

4. Импортируйте исходники и создайте блоки

В дереве ПЛК откройте External source files → Add new external file. Выберите все SCL-файлы из папки Siemens распакованного результата MetaGen.

Выбор отдельных SCL-файлов для импорта

На снимке исходники собраны в папке с именем individual. В вашем результате генерации выберите папку Siemens; импортируются сами SCL-файлы.

Выделите добавленные исходники и выполните Generate blocks from source.

Создание блоков из импортированных исходников

В Program blocks появятся COffset, Correction, _MetaGenMain, Alarms, makeView, блоки данных Signals, Conf, View и экземплярные DB.

5. Вызовите программу из Main

Откройте Main [OB1]. Перетащите блок _MetaGenMain в первую сеть и создайте для него экземплярный DB. В нашем примере он называется _MetaGenMain_DB.

Вызов должен выполняться в каждом цикле. На снимке перед блоком нет разрешающих контактов.

Циклический вызов _MetaGenMain из Main OB1

Внутри _MetaGenMain уже находятся вызовы проектной логики, обработки Alarms и обновления View. Повторять их отдельно в OB1 не требуется. Номера FB и DB TIA назначает в вашем проекте; они могут отличаться от снимка.

Выполните ПКМ по Program blocks → Compile → Software (rebuild all).

Полная компиляция программы

При сообщении cannot be simulated вернитесь к настройке Support simulation during block compilation, затем повторите полную компиляцию.

6. Запустите экземпляр PLCSIM Advanced

В панели PLCSIM выберите TCP/IP Single Adapter. В поле TCP/IP communication with укажите <Local>.

Заполните параметры перед нажатием Start:

Поле Значение
Instance name Например, Demo_Project_OPCUA
IP address [X1] 192.168.1.3
Subnet mask 255.255.255.0
Default gateway Пусто
PLC family S7-1500

Нажмите Start. Экземпляр появится в нижней части панели. После создания поля для нового экземпляра могут быть пустыми — адрес работающего экземпляра показан в его строке.

Создан экземпляр PLCSIM с адресом 192.168.1.3

7. Загрузите программу и переведите ПЛК в RUN

В TIA выполните ПКМ по ПЛК → Download to device → Hardware and software (only changes). Так в ПЛК попадут и программа, и настройки оборудования, включая OPC UA.

Загрузка аппаратной конфигурации и программы

В окне Extended download to device:

  1. Выберите Type of the PG/PC interface → PN/IE.
  2. Укажите PG/PC interface → Siemens PLCSIM Virtual Ethernet Adapter.
  3. Нажмите Start search.
  4. Выделите найденный ПЛК 192.168.1.3 и нажмите Load.

Поиск виртуального ПЛК через Siemens PLCSIM Virtual Ethernet Adapter

Завершите загрузку. В окне Load results выберите Start module и нажмите Finish.

Успешная загрузка и выбор Start module

В панели PLCSIM индикатор RUN станет зелёным.

Виртуальный ПЛК запущен

Теперь программу выполняет виртуальный Siemens CPU. Следующий шаг — проверить, что внешний клиент видит её данные.

8. Проверьте OPC UA через UaExpert

Откройте PowerShell и проверьте порт OPC UA:

powershell
Test-NetConnection 192.168.1.3 -Port 4840

Ожидаемый результат — TcpTestSucceeded : True. Затем запустите UaExpert, чтобы проверить чтение тегов.

В дереве UaExpert нажмите ПКМ по Servers → Add.

Добавление сервера в UaExpert

На вкладке Advanced заполните:

Поле Значение
Configuration Name Например, PLCSIM
Endpoint Url opc.tcp://192.168.1.3:4840
Security Policy None
Message Security Mode None
Authentication Settings Anonymous

Параметры подключения UaExpert к нашему ПЛК

Нажмите OK, затем ПКМ по добавленному серверу → Connect.

Подключение к серверу PLCSIM

При первом подключении UaExpert может показать BadCertificateUntrusted. Для сертификата вашего учебного ПЛК нажмите Trust Server Certificate, затем Continue. Если нужно принять его только до конца текущего сеанса, используйте Accept the server certificate temporarily for this session → Continue, как на снимке.

Принятие сертификата своего учебного ПЛК в UaExpert

В Address Space раскройте Objects → DeviceSet → PLC_1 → DataBlocksGlobal → Conf. Перетащите Offset_1 и Offset_2 в Data Access View.

Тег Значение в нашем проходе Statuscode
Conf.Offset_1 2 Good
Conf.Offset_2 -1.5 Good

UaExpert читает обе поправки со статусом Good

Это настройки, которые мы задали в MetaPlatform. Они прошли через генерацию SCL, импорт и загрузку в Siemens и теперь доступны внешнему клиенту.

Таким же способом можно добавить входы из Signals и результаты из View. При исходных входах 20 и 25, поправках 2 и -1.5 и выключенной ручной подстановке ожидаются результаты 22 и 23.5.

9. Экспортируйте адреса тегов

В TIA откройте свойства ПЛК → OPC UA → Server → Export.

  1. Включите Export array elements as separate nodes.
  2. Нажмите Export OPC UA XML file.
  3. Сохраните файл. В нашем проходе TIA создала Project1.PLC_1.OPCUA.xml.

Экспорт OPC UA XML с отдельными узлами для элементов массивов

XML описывает адреса и типы доступных тегов. Он не заменяет программу ПЛК и не является записью текущих значений. После изменения состава публикуемых тегов сформируйте его заново из актуального проекта.

Например, в полученном XML есть такие соответствия:

Тег программы Адрес OPC UA в этом экспорте
Signals.fRaw1 ns=3;s="Signals"."fRaw1"
Conf.Offset_1 ns=3;s="Conf"."Offset_1"
View.Correct_1_Inst_out_fValue ns=3;s="View"."Correct_1_Inst_out_fValue"

Вручную переписывать эти адреса для каждого канала не нужно. XML будет источником привязок при подготовке MetaLab, MetaView и артефактов HMI. В другом проекте адреса могут отличаться, поэтому используйте его собственный экспорт.

Экспортируйте исходные глобальные теги вместе с Conf и View

В нашем примере XML содержит Signals, Conf и View. У каждого блока своё назначение:

Что публикуем Для чего
Signals.fRaw1, Signals.fRaw2 MetaLab подаёт измерения в исходные переменные, которые читает алгоритм
Conf.Offset_1, Conf.Offset_2 Чтение и изменение поправок
View.Signals_fRaw1, View.Signals_fRaw2 MetaView показывает копии входных измерений
Остальные поля View Результаты, состояния, ручные задания и команды

Экспорта одной ветки View недостаточно: визуализация получит копии измерений, а у MetaLab не будет адресов исходных входов. makeView обновляет копии каждый цикл; подавать имитацию нужно в Signals.

Если что-то не получилось

Что видим Что проверить
Main [OB1] cannot be simulated В свойствах проекта включена поддержка симуляции; после изменения выполнено Software (rebuild all)
TIA не находит ПЛК Экземпляр PLCSIM запущен; IP совпадает; в TIA выбран Siemens PLCSIM Virtual Ethernet Adapter
ПЛК остаётся в STOP После загрузки выбран Start module; при отказе запуска проверьте диагностику CPU
Подключение к порту 4840 не проходит ПЛК запущен, OPC UA включён и настройки загружены; выбран TCP/IP Single Adapter → ; Siemens-адаптер и ПЛК имеют разные IP в одной подсети
BadCertificateUntrusted в UaExpert Примите сертификат своего ПЛК в окне Certificate Validation
Подключение есть, но нужных тегов нет Проверьте, что загружена программа из текущего результата генерации и в ней есть Signals, Conf и View

Что дальше

Программа работает в PLCSIM, UaExpert читает настройки, XML с адресами тегов сохранён. Перейдите к импорту XML в MetaPlatform и генерации артефактов.

Подробности настроек симуляции: руководство Siemens S7-PLCSIM Advanced V8.0.

← Итог и финальный проект14. CODESYS 3.5 →