При попытке создать несколько рантаймов и добавить несколько ПЛК-проектов,
System Manager начинает капризничать, брыкаться, а в конце выдает ошибку:
Runtime system is used by another project!
... и это не баг и не фича — это нюанс, который придется обойти.
Проект строится с помощью двух системных программ:
System Manager — конфигуратор ПЛК и
PLC Control в котором непосредственно разрабатывается программа контроллера. В какой-то момент разработки необходимо пробросить между ними мостик и познакомить их, передавать настройки из одной в другую и обратно. Для этого служат файлы с расширением
.tpy, которые делает
PLC Control при сборке (Project → Build) или пересборке (Project → Rebuild all) проекта.
Кроме файлов TPY, также существуют файлы TPA. Их создает System Manager, когда вы добавляете в конфигурацию новый проект или пересканируете уже существующие приекты (Rescan Project...). В эти TPA-файлы System Manager сохраняет конфигурацию переменных ввода/вывода (%I*, %Q*), заменяя звездочки (*) на реальные адреса.
При последующей пересборке проекта, PLC Control увидит файл TPA, созданный ранее System Manager'ом, и добавит в ПЛК-проект конфигурацию переменных, которую впоследствии можно увидеть в Resources → Global Variables → TwinCAT_Configuration.
В файле
TPY находится полная информация о проекте, в том числе информация о рантайме, в котором планируется исполнять ПЛК-программу. К сожалению, невозможно выбрать нужный рантайм вручную, если вы разрабатываете проект без контроллера на столе и рядом с вами. По умолчанию система автоматически подставляет в проект первый рантайм, а затем сама же на это ругается, когда вы пытаетесь добавить второй, третий или четвертый проект в
System Manager: ведь первый рантайм уже занят и нужно выбрать другой?
Чтобы покинуть тупиковую ситуацию, придется вручную отредактировать файл
TPY, а конкретнее поле
<Port> настроек роутинга
<RoutingInfo> проекта
<PlcProjectInfo>. Откройте в любом текстовом редакторе файл с расширением
.tpy:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--This file is created by the TCatPlcCtrl automatically. Manually changes will be overwritten!-->
<PlcProjectInfo xmlns:p="http://www.beckhoff.com/2002/01/TcPlcProjectDesc">
<ProjectInfo>
[...]
</ProjectInfo>
<RoutingInfo>
<AdsInfo>
<NetId>0.0.0.0.0.0</NetId>
<Port>801</Port>
<TargetName>
<![CDATA[Target: Local (192.168.56.1.1.1), Run Time: 1]]>
</TargetName>
</AdsInfo>
</RoutingInfo>
Номера портов жестко фиксированы: 1 — 801; 2 — 811; 3 — 821; 4 — 831. Достаточно заменить номер порта на соответствующий необходимому рантайму, а все остальные упоминания о рантайме можно оставить без изменений: на них система не обращает никакого внимание. Сохраните файл и без проблем добавьте его в конфигурацию
System Manager'а.