Как установить значения ввода / вывода в устройстве ПЛК siemens?

Я создаю веб-API для локальной сети на платформе .net(C#). В этом случае пользователь может импортировать / экспортировать теги ввода-вывода из Excel или устанавливать их как статический массив строк. Я добавил (Siemens.Engineering.Hmi.dll), но все же он показывает ошибку времени компиляции не найдена.

Мы также подключились к TIAPortal, и он работает хорошо, единственными препятствиями являются импорт / экспорт тегов ввода-вывода или установка статических значений и HMISoftware.

  • Проект: веб-API(.Net Framework 4.6.1)

  • Портал Tia: v16.0

  • Тип лицензии: пробная

Пожалуйста, верните меня, если у кого-то есть идея или предложение. Было бы очень полезно.

2 ответа

Проблема, с которой вы столкнулись, заключается в том, что (скорее всего) вы не установили copy localсвойство Siemens.Engineering.Hmi.dll, на которое имеется ссылка, равным false. Таким образом, зависимости указанного Siemens.Engineering.Hmi.dll не могут быть найдены. В качестве примечания: добавьте Siemens.Engineering.dll в качестве ссылки помимо Siemens.Engineering.Hmi.dll

Тогда для нелокальной сборки требуется AssemblyResolving. Самый простой способ сделать это - использовать файл App.config.

См. Эту тему на странице Siemens: support.industry.siemens.com

Вторая проблема, которую я вижу, - это доступ к тегам. Как вы наверняка знаете, существуют теги HMI и теги PLC. Доступ к ним возможен через соответствующий. Эти DeviceItemsвыставляйте разные. Вы можете получить доступ к Services сквозь <YourEngineeringObject>.GetService<T>()метод. В этом случае вам понадобится SoftwareContainer услуга.

Чтобы ознакомиться с моделью данных TIA Openness, ознакомьтесь с TIA Openness Explorer.

Кроме того, для более глубокого понимания работы с TIA Openness, пожалуйста, обратитесь к SIMATIC TIA Portal Openness: API для автоматизации инженерных рабочих процессов.

Решение, которое я импортирую теги ввода-вывода, - использовать файлы .xml.

Его преимущество заключается в том, что он может получать доступ и устанавливать свойства тегов ввода-вывода, такие как имя тега ввода-вывода, тип данных, имя внешнего, внешний доступ, внешний вид, внешний доступ, логический адрес, имя тега, комментарий.

Например .xml

      <?xml version="1.0" encoding="utf-8"?>
<Document>
  <Engineering version="V16" />
  <SW.Tags.PlcTagTable ID="0">
    <AttributeList>
      <Name>IO Table</Name>
    </AttributeList>
    <ObjectList>
      <SW.Tags.PlcTag ID="1" CompositionName="Tags">
        <AttributeList>
          <DataTypeName>Bool</DataTypeName>
          <ExternalAccessible>true</ExternalAccessible>
          <ExternalVisible>true</ExternalVisible>
          <ExternalWritable>true</ExternalWritable>
          <LogicalAddress>%I0.0</LogicalAddress>
          <Name>Tag</Name>
        </AttributeList>
        <ObjectList>
          <MultilingualText ID="2" CompositionName="Comment">
            <ObjectList>
              <MultilingualTextItem ID="3" CompositionName="Items">
                <AttributeList>
                  <Culture>en-US</Culture>
                  <Text>Tag</Text>
                </AttributeList>
              </MultilingualTextItem>
            </ObjectList>
          </MultilingualText>
        </ObjectList>
      </SW.Tags.PlcTag>   
    </ObjectList>
  </SW.Tags.PlcTagTable>
</Document>

Вам нужно только изменить атрибут тегов в XML, включая значение идентификатора. Например, первый идентификатор тега = 1, а второй идентификатор тега = 2. Значение идентификатора не может повторяться!

Например .cs

      var fileInfo = new FileInfo(@"IO MAP.xml");

SoftwareContainer softwareContainer = Project.Devices[0].DeviceItems[1].GetService<SoftwareContainer>();
Software softwareBase = softwareContainer.Software;
PlcSoftware plcSoftware = softwareBase as PlcSoftware;
PlcTagTableGroup PlcTagTableGroup = plcSoftware.TagTableGroup;

PlcTagTableGroup.TagTables.Import(fileInfo, ImportOptions.Override);

Вам нужно только изменить цель SoftwareContainer, которая зависит от модели ПЛК, которую вы используете, в случае s7-1516.

Если у вас есть какие-либо вопросы, пожалуйста, свяжитесь со мной.

Другие вопросы по тегам