You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TIA Portal Openness(V16-V18)能否编辑库中PLC UDT并发布新版本?

在TIA Portal Openness 16/17/18中编辑库UDT并发布新版本的可行方案

可以实现编辑库中的用户自定义类型(UDT)并发布带版本控制的新版本,且保持PLC实例与库类型的关联。你之前的操作导致UDT脱离库关联,是因为导出的XML不包含库类型的元数据,导入后会转为本地自定义类型。以下是具体操作流程:

一、直接操作库项目中的UDT(而非从PLC实例导出)

通过Openness API直接加载库项目,而非从PLC的实例化UDT导出XML,这样能保留库类型的关联信息:

  • 加载库项目:
using Siemens.Engineering;
using Siemens.Engineering.Library;
using Siemens.Engineering.SW.Tags;

// 初始化TIA Portal实例
var tiaPortal = new Portal();
// 打开目标库项目(替换为你的库文件路径)
var libraryProject = tiaPortal.Projects.Open(@"C:\Path\To\Your\Library.ap17");
  • 定位到要修改的UDT:
// 通过名称查找库中的UDT
var targetUdt = libraryProject.Find<PlcUserDefinedType>("YourUDTName");

二、修改库UDT的定义

直接对库中的UDT对象进行编辑,比如添加成员、修改数据类型或注释:

// 示例:给UDT添加一个新的Int类型成员
var newMember = new PlcMember(targetUdt)
{
    Name = "NewStatus",
    DataType = "Int",
    Comment = "新增状态标识"
};
targetUdt.Members.Add(newMember);

// 示例:修改现有成员的数据类型
var existingMember = targetUdt.Members.First(m => m.Name == "OldField");
existingMember.DataType = "DInt";

三、发布库的新版本

使用Openness的库发布功能,生成带版本号的新版本库:

// 定义新版本号(比如从1.0升级到1.1)
var newVersion = new Version(1, 1);
// 发布新版本
libraryProject.LibraryManager.PublishNewVersion(newVersion);

// 保存并关闭库项目
libraryProject.Save();
libraryProject.Close();

四、更新PLC项目中的库引用

打开目标PLC项目,更新库引用到新版本,确保UDT实例仍与库关联:

// 打开PLC项目
var plcProject = tiaPortal.Projects.Open(@"C:\Path\To\Your\PLCProject.ap17");
// 查找对应的库引用
var libraryRef = plcProject.LibraryReferences.First(r => r.Name == "YourLibraryName");
// 更新到新版本
libraryRef.UpdateToVersion(newVersion);

// 保存PLC项目,使更新生效
plcProject.Save();

关键注意事项

  • 库项目权限:确保库文件不是只读状态,且未被其他TIA Portal实例锁定,否则无法编辑和发布。
  • UDT兼容性:修改UDT时尽量避免删除已有成员(会导致PLC实例报错),优先采用添加成员、修改注释或调整可选属性的方式,保证向下兼容。
  • 版本号规则:TIA Portal支持主版本号和次版本号的升级,建议遵循语义化版本规则,便于识别版本差异。

内容的提问来源于stack exchange,提问作者Cliff Pennalligen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 09:45:29