From c82d8a03799b27835b296fc27351f8cb1dd75e86 Mon Sep 17 00:00:00 2001 From: Sven Knoerzer Date: Wed, 2 Apr 2025 15:32:07 +0200 Subject: [PATCH 1/2] refs #234 Support plc messages xlsx export --- .../Step7ProjectV19Tia.cs | 34 +++++++++++++++++++ .../Projectfiles/Project.cs | 4 +++ TiaGitHandler/Program.cs | 5 +-- 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/DotNetSiemensPLCToolBoxLibrary.TIAV19/Step7ProjectV19Tia.cs b/DotNetSiemensPLCToolBoxLibrary.TIAV19/Step7ProjectV19Tia.cs index 6aa34a11..0cbbd83f 100644 --- a/DotNetSiemensPLCToolBoxLibrary.TIAV19/Step7ProjectV19Tia.cs +++ b/DotNetSiemensPLCToolBoxLibrary.TIAV19/Step7ProjectV19Tia.cs @@ -21,6 +21,7 @@ using Siemens.Engineering.SW.WatchAndForceTables; using DotNetSiemensPLCToolBoxLibrary.Projectfiles.TIA.Openness; using Siemens.Engineering.SW.Alarm; +using Siemens.Engineering.SW.Alarm.TextLists; namespace DotNetSiemensPLCToolBoxLibrary.Projectfiles.V19 { @@ -855,6 +856,39 @@ public override void ExportTextlists(ProjectFolder folder, string exportPath) } } + public override void ExportAlarmTexts(ProjectFolder folder, string exportPath) + { + foreach (var d in tiapProject.Devices) + { + if (d.TypeIdentifier != null && (d.TypeIdentifier.EndsWith(".S71500") || d.TypeIdentifier.EndsWith("ET200SP_OC"))) + { + foreach (DeviceItem deviceItem in d.DeviceItems) + { + var parent = deviceItem.Parent; + var target = ((IEngineeringServiceProvider)deviceItem).GetService(); + if (target != null && target.Software is PlcSoftware) + { + var plcSoftware = (PlcSoftware)target.Software; + var plcAarmTextsProvider = plcSoftware.GetService(); + var plcAlarmTextsName = "PLC-Meldetexte"; + var filePath = Path.Combine(exportPath, folder.Name, deviceItem.Name.Replace("-", ""), "plcalarms", plcAlarmTextsName) + ".xlsx"; + var fileInfo = new FileInfo(filePath); + List cultureInfos = new List(); + + var directory = Path.GetDirectoryName(filePath); + if (!Directory.Exists(directory)) + { + Directory.CreateDirectory(directory); + } + + PlcAlarmTextXlsxResult result = plcAarmTextsProvider.ExportInstanceTextsToXlsx( fileInfo, cultureInfos, PlcAlarmTextXlsxExportOption.None); + var logFilePath = (FileInfo)result.LogFilePath; + } + } + } + } + } + internal void OpenViaOpennessDlls(Credentials credentials) { for (int i = 0; i < 10; i++) diff --git a/LibNoDaveConnectionLibrary/Projectfiles/Project.cs b/LibNoDaveConnectionLibrary/Projectfiles/Project.cs index a91804cb..54d24774 100644 --- a/LibNoDaveConnectionLibrary/Projectfiles/Project.cs +++ b/LibNoDaveConnectionLibrary/Projectfiles/Project.cs @@ -60,5 +60,9 @@ public virtual void ExportTextlists(ProjectFolder folder, string exportPath) { } + public virtual void ExportAlarmTexts(ProjectFolder folder, string exportPath) + { + } + } } diff --git a/TiaGitHandler/Program.cs b/TiaGitHandler/Program.cs index d3c2d9b5..ca0657a3 100644 --- a/TiaGitHandler/Program.cs +++ b/TiaGitHandler/Program.cs @@ -213,8 +213,9 @@ static void Main(string[] args) Console.WriteLine("Exporting to Folder: " + exportPath); Console.WriteLine(); List skippedBlocksList = new List(); - ParseFolder(prj.ProjectStructure, exportPath, skippedBlocksList); - prj.ExportTextlists(prj.ProjectStructure, exportPath); + //ParseFolder(prj.ProjectStructure, exportPath, skippedBlocksList); + //prj.ExportTextlists(prj.ProjectStructure, exportPath); + prj.ExportAlarmTexts(prj.ProjectStructure, exportPath); var xlsxFiles = Directory.GetFiles(exportPath, "*.xlsx", SearchOption.AllDirectories); foreach (var xlsxFile in xlsxFiles.Where(x => x.Contains("plcalarmtextlistgroup"))) From fbff4a6097a8c2cc6c7fcee622894d34337af40e Mon Sep 17 00:00:00 2001 From: Sven Knoerzer Date: Tue, 17 Mar 2026 13:04:09 +0100 Subject: [PATCH 2/2] Restore original export path without out parent --- TiaGitHandler/Program.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TiaGitHandler/Program.cs b/TiaGitHandler/Program.cs index 551faabf..2bc85692 100644 --- a/TiaGitHandler/Program.cs +++ b/TiaGitHandler/Program.cs @@ -164,7 +164,7 @@ static void Main(string[] args) prj = Projects.AttachProject(ver); exportPath = Path.GetDirectoryName(prj.ProjectFile); - exportPath = Path.GetFullPath(Path.Combine(exportPath, "..\\out\\Export")); + exportPath = Path.GetFullPath(Path.Combine(exportPath, "..\\Export")); } else {