1

因此,我致力于自动化以 XML 表示的 PLC 代码的开发,为此我导出了 FB 块及其网络以查看代码的外观,以便我可以了解 XML 树的概念但是有一个标签调用 <SW.Blocks.CompileUnit ID="DD" CompositionName="CompileUnits"> 并且我无法弄清楚编译器如何分配我尝试查看的值,如果它是 HEX 但我没有看到关系。下一个分配的值是 <SW.Blocks.CompileUnit ID="E6" CompositionName="CompileUnits"> 非常感谢有关此问题的帮助。

4

2 回答 2

1

不要太担心ID!此 XML 文件中的所有 ID 都必须是唯一的。他们不必井井有条或其他什么。因此,当您生成代码时,请使用一个简单的 ID 计数器来确保它们是唯一的,仅此而已。

于 2021-09-03T23:25:07.537 回答
0

编译器根据其自身内部逻辑的智慧分配 CompileUnit ID,这在唯一值得考虑的应用程序中并不重要 - 正如 IchEben正确指出的那样,生成要导入的块。

根据 Siemens 示例 C# 项目“OpennessExcelSwGenerator”中的 xslt 定义,CompileUnit ID 必须是数字(十六进制或十进制),唯一且可能是增量的,SIOS ID 109770550(使用 DeepL 翻译的注释):

<!--Variable "pos" counts the number of networks to get a consecutive unique ID for each network within this document-->
      <xsl:variable name="pos" select="position()"/>
      <!--Variable "pos" used as ID-->
          <SW.Blocks.CompileUnit ID="{$pos}" CompositionName="CompileUnits">
      ...

除此之外,文档很少 - 我自己搜索过几次。如果我遗漏了什么,您可以尝试查看 SIOS: Siemens Industry Support Online

如果您必须知道TIA 编译器如何生成这些 ID,您可以在 SIOS 上提出支持请求。我猜他们会向开发团队提出这个问题,但你可能会因为他们肯定认为你不需要知道的事情而惹恼他们。

于 2021-09-08T09:57:42.093 回答