Excel Code Generator for TIA Portal Openness

Excel Code Generator for TIA Portal Openness 专业教程

本教程基于西门子官方应用示例 109770550,旨在为TIA Portal Openness用户提供一份专业、清晰的Excel代码生成器使用指南。

法律信息 (Legal Information)

应用示例的使用
应用示例通过文本、图形和/或软件模块的形式,展示了多种组件交互的自动化任务解决方案。这些应用示例是西门子股份公司(Siemens AG)和/或其子公司(“Siemens”)提供的一项免费服务。它们不具有约束力,且不保证配置和设备的完整性或功能性。应用示例仅为典型任务提供帮助,不构成客户特定的解决方案。您有责任根据所有适用法规正确、安全地操作产品,包括检查和自定义应用示例以适配您的系统,并确保仅由经过培训的人员使用,以防止财产损失或人身伤害。

免责声明
西门子不承担任何法律责任,包括但不限于应用示例的可用性、完整性和无缺陷性,以及相关信息、配置、性能数据和任何由此造成的损害。此规定不适用于强制性责任的情况,例如根据德国产品责任法,或在故意、重大过失、生命伤害、身体伤害或健康损害、未遵守担保、欺诈性未披露缺陷或违反重大合同义务的情况下。因违反重大合同义务而产生的损害赔偿应限于合同典型的、可预见的损害,除非存在故意或重大过失,或因生命、身体或健康损害而产生责任。

网络安全信息
西门子提供具有工业网络安全功能的产品和解决方案,支持工厂、系统、机器和网络的安全运行。为保护工厂、系统、机器和网络免受网络威胁,必须实施并持续维护一个全面的、最先进的工业网络安全概念。西门子的产品和解决方案仅构成此概念的一部分。客户有责任防止对其工厂、系统、机器和网络的未经授权访问。


1. 引言 (Introduction)

1.1. 功能 (Functionality)

TIA Portal Add-In 允许您通过一个Excel文件,在现有的TIA Portal项目中创建程序块 (blocks)、标签表 (tag tables) 和 PLC data types

Excel Codegenerator Add-In
图 1-1: 上下文菜单中的Excel Codegenerator Add-In

使用此代码生成器,可以在TIA Portal项目中生成以下内容:

  • PLC data types
  • Global data blocks
  • PLC tag tables
  • Program blocks (程序块) 及其 KOP (梯形图) 网络
    • Cyclic organization blocks (OBs)
    • Functions (FCs)
    • Function blocks (FBs)
    • Single-instance data blocks
    • Multi-instances

1.2. 安装 (Installation)

有关如何安装 Add-In 并将其集成到TIA Portal环境中的信息,请参考TIA Portal在线帮助或通用的TIA Add-Ins页面中的“Installation”部分。

1.3. 成功执行的条件 (Conditions for successful execution)

要使用此 Add-In,必须满足以下条件:

  • 用户必须在 Openness group (Openness用户组) 中。
  • 用户需要管理员权限。

1.4. 兼容性 (Compatibility)

Add-In 可用于 TIA Portal V17 及更高版本。

1.5. 系统属性 (System properties)

产品 (Produkt) 版本 (Version)
Visual Studio Version Microsoft Visual Studio Professional 2022
Visual Studio Optionen Visual C#, .NET Desktop Development
.NET Version Microsoft .NET Framework SDK 4.8.1

Add-In 测试环境:

产品 (Produkt) 版本 (Version)
Windows Version Microsoft Windows 10, Version 21H2
TIA Portal Version TIA Portal V17, Update 3
TIA Portal Version TIA Portal V18, Update 1
TIA Portal Version TIA Portal V19
Installierte Software STEP 7 Professional
Installierte Optionen TIA Portal Openness

⚠️ 注意:数据丢失风险 (Data loss)
使用此Add-In可能导致数据丢失,并可能导致生产停机。例如,快照 (snapshots)、起始值 (start values,常量除外)、设定值 (setpoints)、Program_AlarmProDiag设置的文本将会丢失。在转换时未激活的语言编写的注释也将丢失。用户必须在使用Add-In后定期创建数据备份并检查程序的正确性。


2. 操作指南 (Handling)

2.1. 操作 (Operation)

Add-In 有两种启动方式。PLC软件的生成可以从项目导航树中的以下元素触发:

  • 单独选择一个 PLC
  • 单独选择一个程序块文件夹 program block folder
  • 单独选择一个 PLC tags
  • 单独选择一个 PLC data type 文件夹

注意 (NOTE)
如果在子文件夹上执行Add-Indata blocksPLC data types不会在此文件夹中生成,而是在系统文件夹中生成。PLC tags, FBs, FCsOBs 会在子文件夹中生成。

2.2. 生成Excel文件 "Database_automatic_Generation.xlsx"

生成PLC软件所需的Excel文件可以通过 Add-in 上下文菜单中的 “Create Database_automatic_Generation.xslx” 条目创建。此文件总是存储在以下路径:
%ProgramData%\Siemens\Automation\Logfiles\ExcelCodeGenerator

2.3. 通过Excel进行配置和参数分配

2.3.1. 一般信息 (General information)

Add-In 需要提供的Excel文件 Database_automatic_Generation.xlsx 来运行。此文件可以存储在任何位置。它也用于参数化代码生成。各个工作表的顺序可以更改,但工作表的名称或列的排序不能更改。此代码生成器可用于将PLC tags, PLC data types, global data blocksprogram blocks 插入到现有的TIA Portal项目中。

2.3.2. PLC data type

用户自定义的数据类型可以在工作表 PLC_DataTypes 中创建。

新手提示: PLC Data Type 也常被称为UDT (User-Defined Type)。它允许您像打包一样,将多个不同类型的变量(如Bool, Int, Real等)组合成一个自定义的、可重复使用的数据结构。例如,您可以创建一个“电机”UDT,其中包含“启动状态(Bool)”、“运行速度(Int)”、“故障代码(Word)”等变量。

Name PLC-Datatype Name DatatypeName StartValue ExternalAccessible ExternalWritable ExternalVisible Setpoint Comment
Tank lvlAct Dint 4 1 1 1 1 高液位指示
volumeHigh Dint \ 1 0 1 0 低液位指示
volumeLow Dint \ 1 0 1 0

字段说明:

输入字段 (Input field) 说明 (Instruction)
Name PLC data type* 在此列中的一个条目会创建一个新的数据类型,并包含直到此列下一个条目之前的所有元素。
Name* PLC data type中的变量名称。
DatatypeName* 所有TIA基本数据类型。用户自定义的PLC data types需要用双引号括起来,例如 "dataType"
Start Value \ 表示没有起始值。
ExternalAccessible* ¹ 1/0 代表 True/False。如果为 0,则 ExternalWritableExternalVisible 也必须为 0
ExternalWritable* ¹ 1/0 代表 True/False
ExternalVisible* ¹ 1/0 代表 True/False
Setpoint* ² 1/0 代表 True/False
Comment 可以为每个条目提供注释。

所有标有 * 的字段都是必填项。
¹ 1True
² 0False

示例:
上面的表格展示了如何创建一个名为 TankPLC data type。它由三个 Dint 变量 lvlAct, volumeHighvolumeLow 组成。生成后,此 PLC data type 在TIA Portal中如下图所示:

Generated PLC data type in TIA portal
图 2-3: 在TIA Portal中生成的PLC数据类型

2.3.3. PLC tags

所需的输入/输出和标志可以在 TagTables 工作表中创建。

Name TagTable Name DataTypeName LogicalAddress ExternalAccessible ExternalWritable ExternalVisible Comment
TagTable_Plant valveEnable Bool %I0.0 1 0 1 阀门启用指示
tankEnable Bool %I0.1 1 0 1

字段说明:

输入字段 (Input field) 说明 (Instruction)
Name TagTable* 在此列中的一个条目会创建一个新的标签表,并包含直到此列下一个条目之前的所有元素。
Name* 变量的名称。
DataTypeName* 所有TIA基本数据类型。用户自定义的PLC data types需要用双引号括起来,例如 "dataType"
LogicalAddress* TIA Portal中的地址表示法,例如 %I0.0
ExternalAccessible* ¹ 1/0 代表 True/False。如果为 0,则 ExternalWritableExternalVisible 也必须为 0
ExternalWritable* ¹ 1/0 代表 True/False
ExternalVisible* ¹ 1/0 代表 True/False
Comment 可以为每个条目提供注释。

所有标有 * 的字段都是必填项。
¹ 1True

示例:
上面的表格创建了一个名为 TagTable_Plant 的变量表。生成后,此 PLC data type 在TIA Portal中如下图所示:

Generated PLC tag table in TIA Portal
图 2-6: 在TIA Portal中生成的PLC标签表

2.3.4. Data blocks

全局数据块及其内部结构可以在 DataBlocks 工作表中配置。Single instancemulti-instance 数据块不需要配置,因为它们在 ProgramBlocks 工作表中命名时会自动生成。

⚠️ 新手注意:全局DB与实例DB的关键区别

  • 全局DB (Global DB): 在此 DataBlocks 工作表中定义。它们是独立的数据存储区,可以被项目中任何程序块(OB, FC, FB)访问。适合存放全局变量和公共数据。
  • 实例DB (Instance DB): 不在此处定义。当您在 ProgramBlocks 工作表中调用一个 FB (功能块) 时,系统会自动为其生成一个关联的背景数据块(实例DB),用于存储该FB的内部状态和参数。
Name Global DB Number Name DatatypeName StartValue ExternalAccessible ExternalWritable ExternalVisible Setpoint Comment
Db_Tank 1 volumeLvl Int 0 1 1 1 0 罐体液位指示
Error Bool false 1 1 1 0 罐体错误

字段说明:

输入字段 (Input field) 说明 (Instruction)
Name Global DB* 在此列中的一个条目会创建一个新的数据块,并包含直到此列下一个条目之前的所有元素。
Number 数据块的编号。
Name* 变量的名称。
DatatypeName* 所有TIA基本数据类型。用户自定义的PLC data types需要用双引号括起来,例如 "dataType"
StartValue \ 表示没有起始值。PLC data types不允许有起始值。
ExternalAccessible* ¹ 1/0 代表 True/False。如果为 0,则 ExternalWritableExternalVisible 也必须为 0
ExternalWritable* ¹ 1/0 代表 True/False
ExternalVisible* ¹ 1/0 代表 True/False
Setpoint* ² 1/0 代表 True/False
Comment 可以为每个条目提供注释。

所有标有 * 的字段都是必填项。
¹ 1True。 ² 0False

示例:
上面的表格创建了一个名为 Db_Tank 的全局数据块,编号为 DB1,包含两个静态全局变量。生成后,此 PLC data type 在TIA Portal中如下图所示:

Generated data block in TIA Portal
图 2-9: 在TIA Portal中生成的Data Block

2.3.5. Program blocks

程序块的调用结构在 ProgramBlocks 工作表中创建。该表从左侧的顶层 Level 1 开始,右侧是下属的 Level 2, 3, 4。顶层必须至少包含一个 OB,否则生成将失败。如果一个块要调用另一个块,必须在前一个块的 Network Number 列中输入一个数字。

Call structure
图 2-10: 调用结构

💡 新手导读:如何理解调用结构
上图和对应的Excel表格是本工具最核心的部分。让我们把它分解来看,以便理解:

  1. 起点 (Level 1): 程序总是从 Level 1 开始,这里必须是 OB (组织块),比如图中的 OB1 Main。它相当于程序的主入口。
  2. 调用下一层 (Level 2): OB1 内部的程序按网络号顺序执行。
    • MainNetwork number = 1 的位置,它调用了 Level 2Network Number = 1 的块,即 RCVData [FC2]
    • MainNetwork number = 2 的位置,它调用了 Level 2Network Number = 2 的块,即 Line1 [FB6]
  3. 层层深入 (Level 3, 4): 这种调用关系可以一直延续下去。
    • Line1 [FB6] (在Level 2) 内部,又按 Network number 顺序调用了 Level 3 的块。例如,调用了 Tank_FB [FB3]
    • Tank_FB [FB3] (在Level 3) 内部,又可以调用 Level 4 的块,例如 Mtr_FB [FB1]

总结一下:

  • Level (列): 定义了块的调用层级深度。Level 1 是最顶层,Level 2 是被 Level 1 调用的,以此类推。
  • Network Number (行): 将不同Level的块关联起来。Level N 中某一行定义的块,会被 Level N-1Network number 相同的行所调用。

对于 Function Block (FB),其 single data blockmulti-instance 的名称必须在 Instance name 列中输入。如果实例应该是 multi-instance,请在名称前加上 # 号。


配置字段说明与示例

1st Level Organisation blocks (第一层:组织块)

字段说明:

输入字段 (Input field) 说明 (Instruction)
Number* Cyclic OB 的编号。
Name* Cyclic OB 的名称。
Network name 网络的名称。
Network Comment 网络的注释。
Network number* 决定一个块在另一个块的哪个 LAD (梯形图) 网络中被调用。

示例:Level 1 表格 (根据图 2-12)
此表示例根据图 2-10,展示了在 Main (OB1) 中定义的网络调用。

Name Number Network Name Network Comment Network Number
Main 1 RCV Data 1
Line1 2
Line2 3
RCV Data 4

2nd-4th Level program blocks (第二至四层:程序块)

字段说明:

输入字段 (Input field) 说明 (Instruction)
Type* 允许 "FC""FB"
Number¹ FB/FC 的编号。
Name* FB/FC 的名称。
Instance name² 关联实例的名称。对于 multi-instance# + 实例名称;对于 single-instance data block:仅实例名称。
Network name 网络的名称。
Network Comment 网络的注释。
Network number* 决定一个块在另一个块的哪个 LAD 网络中被调用。

所有标有 * 的字段都是必填项。
¹ 如果未输入编号,将自动分配一个。
² 对于 FB 是强制性的。

示例:Level 2 表格 (根据图 2-13)
此表示例展示了被 Level 1 调用的块。

Network Number (from L1) Type Number Name Interface ID Instance Name Network Name Network Comment Network Number (for L3)
1 FC 2 RCVData
2 FB 6 Line 1 Line1 Call Tank first call 1
Call Tank second call 2
3 FB 6 Line 2 Line2 Call Tank first call 1
Call Tank second call 2
4 FC 2 RCVData

示例:Level 3 表格 (根据图 2-14)
此表示例展示了被 Level 2 调用的块。

Network Number (from L2) Type Number Name Interface ID Instance Name Network Name Network Comment Network Number (for L4)
1 FB 3 Tank_FB 3 #Tank_FB_Instance_2
2 FB 3 Tank_FB 3 #Tank_FB_Instance_1 Call Motor first call 1
Call Motor second call 2
Call Valve first call 3
Call Valve second call 4
5
1 FB 3 Tank_FB 3 #Tank_FB_Instance_1
2 FB 3 Tank_FB 3 #Tank_FB_Instance_2

示例:Level 4 表格 (根据图 2-15)
此表示例展示了被 Level 3 调用的块。

Network Number (from L3) Type Number Name Interface ID Instance Name
1 FB 1 Mtr_FB 4 #Mtr_FB_Instance_1
2 FB 1 Mtr_FB 4 #Mtr_FB_Instance_2
3 FB 2 Vlv_FB 5 #Vlv_FB_Instance_1
4 FB 2 Vlv_FB 5 #Vlv_FB_Instance_2
5 FB 4 Msg_Err_FB 6 #Msg_Err_FB_Instance_1

2.3.6. 接口 (Interface for program blocks)

可以为 FBFC 定义接口;这些接口可以根据需要多次使用。如果在一个块被调用时需要建立连接,可以通过 Connection 指定。

ID Interface Type Name Variable Datatype Connection
1 Input LineOn Bool valveEnable
Output Working Bool tankEnable
2 Input LineOn Bool tankEnable
Output Working Bool valveEnable
3 Input TankEnable Bool tankEnable
Output VolumeLvl Int Db_Tank.volumeLvl
Input Error Bool Db_Tank.Error
Input LevelControl "Tank"
4 Input MotorOn Bool tankEnable
5 Input ValveOn Bool valveEnable
6 Output Error Bool Db_Tank.Error

字段说明:

输入字段 (Input field) 说明 (Instruction)
ID* 必须在 Program blocks 工作表的 InterfaceID 下为相应块指定任意数字。
Name Variable* 变量的名称。
Data type* 变量的数据类型。用户自定义的数据类型需用双引号括起来,例如 "Vlv"
Connection 指定要连接的变量,例如 Db_Tank.Error

所有标有 * 的字段都是必填项。

示例:接线 (Wiring)
上表展示了 Interface 工作表的一个片段。这里创建了六个接口,它们被连接到不同的变量。ID为1和2的接口是相同的,但被连接到不同的变量。

Block Call ID Instance Name Network Name Network Comment Network Number
FB 6 1 Line1 Call Tank first call 1
Call Tank second call 2
FB 6 2 Line2 Call Tank first call 1
Call Tank second call 2

图 2-17: 图 2-13 的片段

块 "Line" 在 OB Main 中被调用了两次,但接线方式不同。

Example of wiring
图 2-18: 接线示例


3. 生成 (Generation)

3.1. 常规生成 (General generation)

一旦执行 Add-In,TIA Portal项目将无法操作,直到执行结束。首次在TIA Portal中使用Openness时出现的消息可以用 "Yes, all" 确认。在生成过程中,建议展开项目导航以观察过程。当 "Exclusive access" 结束并且在成功生成后弹出一个窗口时,表示生成结束。

Popup upon successful generation
图 2-19: 成功生成后的弹窗

3.2. 通用说明 (General notes)

Add-In 不能在 software units 内使用。如果块、PLC data types 和标签表已存在于同一文件夹中,Excel代码生成器将用新文件覆盖它们。


4. 故障排除 (Troubleshooting)

关于TIA Add-Ins的常规故障排除,请参阅通用的 "TIA Add-Ins for TIA Portal" 文档。

消息弹窗 (Message pop-up)
如果在 Add-In 运行时发生错误,会显示一个消息弹窗。可以从消息弹窗中获取特定于错误的修正措施。

撤销更改 (Undo changes)
可以通过选择 "Generate program blocks", "Generate data blocks", "Generate Plc data types" 和 "Generate tag tables" 后点击 "Undo" 按钮来撤销更改。

Undoing Changes in TIA Portal
图 3-1: 在TIA Portal中撤销更改


5. 附录 (Appendix)

5.1. 服务与支持 (Service and support)

编号 主题 (Topic)
\1\ Siemens Industry Online Support
https://support.industry.siemens.com
\2\ 本应用示例的条目链接
https://support.industry.siemens.com/cs/ww/en/view/109770550
\3\ SIMATIC 使用脚本自动化项目
https://support.industry.siemens.com/cs/ww/en/view/109755218

5.3. 变更文档 (Change documentation)

版本 (Version) 日期 (Date) 修改 (Modification)
V2.0 11/2021 首次发布版本
posted @ 2026-02-01 15:31  科里布  阅读(5)  评论(0)    收藏  举报