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.

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

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

Сделайте это до компиляции и загрузки. Если блоки уже скомпилированы без этой настройки, после её включения потребуется Software (rebuild all).
3. Настройте ПЛК и OPC UA
Следующие настройки предназначены для нашего учебного стенда: подключение без шифрования и без учётной записи. Настройки доступа к действующему промышленному ПЛК определяются отдельно.
Доступ к ПЛК
Откройте свойства CPU → Protection & Security → Access control и выберите Disable access control.

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

На этом снимке показан адрес до настройки сети. В этой главе ПЛК имеет адрес 192.168.1.3, поэтому подключаться будем к opc.tcp://192.168.1.3:4840.
В OPC UA → Server → Security → Secure channel включите No security. Уже выбранную политику Basic256Sha256 — Sign & Encrypt можно оставить: клиент нашего примера использует None.

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

Адреса виртуального ПЛК
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 |
| Основной шлюз | Пусто |

В TIA откройте свойства ПЛК → PROFINET interface [X1] → Ethernet addresses:
| Параметр ПЛК | Значение |
|---|---|
| IP address | 192.168.1.3 |
| Subnet mask | 255.255.255.0 |
| Use router | Выключено |

У адаптера Windows и ПЛК разные адреса в одной подсети. Если 192.168.1.0/24 уже используется другой сетью вашего компьютера, выберите свободную подсеть и согласованно замените адреса адаптера, ПЛК и endpoint клиента. В дальнейшем используем показанные адреса.
4. Импортируйте исходники и создайте блоки
В дереве ПЛК откройте External source files → Add new external file. Выберите все SCL-файлы из папки Siemens распакованного результата MetaGen.

На снимке исходники собраны в папке с именем 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 уже находятся вызовы проектной логики, обработки 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. Экземпляр появится в нижней части панели. После создания поля для нового экземпляра могут быть пустыми — адрес работающего экземпляра показан в его строке.

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

В окне Extended download to device:
- Выберите Type of the PG/PC interface → PN/IE.
- Укажите PG/PC interface → Siemens PLCSIM Virtual Ethernet Adapter.
- Нажмите Start search.
- Выделите найденный ПЛК
192.168.1.3и нажмите Load.

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

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

Теперь программу выполняет виртуальный Siemens CPU. Следующий шаг — проверить, что внешний клиент видит её данные.
8. Проверьте OPC UA через UaExpert
Откройте PowerShell и проверьте порт OPC UA:
Test-NetConnection 192.168.1.3 -Port 4840
Ожидаемый результат — TcpTestSucceeded : True. Затем запустите UaExpert, чтобы проверить чтение тегов.
В дереве UaExpert нажмите ПКМ по Servers → Add.

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

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

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

В 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 |

Это настройки, которые мы задали в MetaPlatform. Они прошли через генерацию SCL, импорт и загрузку в Siemens и теперь доступны внешнему клиенту.
Таким же способом можно добавить входы из Signals и результаты из View. При исходных входах 20 и 25, поправках 2 и -1.5 и выключенной ручной подстановке ожидаются результаты 22 и 23.5.
9. Экспортируйте адреса тегов
В TIA откройте свойства ПЛК → OPC UA → Server → Export.
- Включите Export array elements as separate nodes.
- Нажмите Export OPC UA XML file.
- Сохраните файл. В нашем проходе TIA создала
Project1.PLC_1.OPCUA.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 → |
BadCertificateUntrusted в UaExpert |
Примите сертификат своего ПЛК в окне Certificate Validation |
| Подключение есть, но нужных тегов нет | Проверьте, что загружена программа из текущего результата генерации и в ней есть Signals, Conf и View |
Что дальше
Программа работает в PLCSIM, UaExpert читает настройки, XML с адресами тегов сохранён. Перейдите к импорту XML в MetaPlatform и генерации артефактов.
Подробности настроек симуляции: руководство Siemens S7-PLCSIM Advanced V8.0.