首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置西门子PLC设备的I/O值?

如何设置西门子PLC设备的I/O值?
EN

Stack Overflow用户
提问于 2021-04-23 06:33:39
回答 2查看 480关注 0票数 2

我正在为.net框架(C#)中的本地网络创建Web。在这种情况下,用户可以从excel导入/导出IO标记,或者将它们设置为静态字符串数组。我已经添加了(Siemens.Engineering.Hmi.dll),但是仍然显示了一个未找到的编译时错误。

我们还连接到TIAPortal,它工作得很好,唯一的障碍是I/O标记、导入/导出或设置静态值和HMISoftware。

  • 项目: Web (.Net框架4.6.1)
  • Tia门户网站: v16.0
  • 许可证类型:试用

如果有人有任何想法或建议,请回复我。会很有见地的。

EN

回答 2

Stack Overflow用户

发布于 2021-06-15 16:43:25

您所遇到的问题是(很可能)您没有将引用的Siemens.Engineering.Hmi.dll的Siemens.Engineering.Hmi.dll属性设置为false。因此,无法找到引用的Siemens.Engineering.Hmi.dll的依赖项。备注:添加Siemens.Engineering.dll作为参考,除了 Siemens.Engineering.Hmi.dll

拥有一个非本地程序集则需要AssemblyResolving。最简单的方法是使用App.config文件。

请参阅西门子有关此主题的网页:support.industry.siemens.com

我看到的第二个问题是标签的访问。如您所知,有HMI标签和PLC标签。可以通过各自的DeviceItems访问它们。这些DeviceItems公开了不同的Services。您可以通过Services方法访问<YourEngineeringObject>.GetService<T>()。在这种情况下,您将需要SoftwareContainer服务。

要熟悉TIA开放的数据模型,请看一下TIA开放探索者

此外,要加深您对使用TIA开放的理解,请参阅SIMATIC门户开放:用于工程工作流自动化的API

票数 1
EN

Stack Overflow用户

发布于 2021-06-26 23:47:44

导入IO标记的解决方案是使用.xml文件

它的优点是可以访问和设置IO标记的属性,例如IO标签的名称、数据类型名称、外部访问性、外部可见性、外部可写性、逻辑地址、tagName、注释。

例如,.xml

代码语言:javascript
复制
<?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,包括ID值。例如,第一个标记ID = 1,第二个标记ID =2.id的值是不可重复的!

例如,.cs

代码语言:javascript
复制
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的情况下。

如果您有任何问题,请与我联系。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67225040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档