Skip to content

Commit 1203264

Browse files
feat: update Library V19 (#1)
1 parent d957618 commit 1203264

File tree

18 files changed

+98
-20
lines changed

18 files changed

+98
-20
lines changed

LICENSE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2023 Siemens AG
3+
Copyright (c) 2024 Siemens AG
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
66

README.md

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,29 @@
1-
# UseCaseBasedDoku for the SIMATIC Modular Application Creator **Module Builder**
1+
# Usecases for the SIMATIC Modular Application Creator **Module Builder**
22

33
This repository demonstrates how to use the comfort functions of the Modular Application Creator Module Builder. With those comfort functions the Openness programmer does not need to handle the xml file when e.g. calls in ladder logic should be generated. More information is available under [Modular Application Creator on SIOS](https://support.industry.siemens.com/cs/de/en/view/109762852).
44

5-
## 🚀 Getting started
5+
## 🚀 Getting started Documentation
66

7-
We just updated our [Use Case Based Dokumentation](https://usecasebaseddoku-pma-apc-mac-em-development-c8b2234f1dd10384098.code.siemens.io/html/index.html)!
7+
To see the documentation download html folder and start index.html in your browser.
8+
9+
## Prerequisites
10+
- TIA-Portal 19 installed on Windows PC
11+
- Download the [Modular Application Creator 19.1](https://support.industry.siemens.com/cs/attachments/109762852/Modular_Application_Creator_19.00.01_all_in_one.zip)
12+
- Microsoft Visual Studio with [Modular Application Creator Module Builder](https://support.industry.siemens.com/cs/de/en/view/109762852) installed
13+
14+
## First steps
15+
1. clone this repository in your Visual Studio
16+
1. optional: go to the Properties of your project in Visual Studio --> Debug --> Start external program and select the ModularApplicationCreator.exe
17+
1. Start your solution --> Modular Application Creator should show up
18+
1. Create new Modular Application Creator project
19+
1. Assign Equipment Module: modular-application-creator-use-cases to your PLC
20+
1. Configure your Module under the "Configure modules" tab
21+
1. Click generate under the "Generate" tab
22+
23+
--> your TIA-Portal project is generated
824

925
## 📝 License
1026

11-
Copyright © 2022 [Siemens AG](https://www.siemens.com/).
27+
Copyright © 2024 [Siemens AG](https://www.siemens.com/).
1228

1329
This project is MIT licensed.

SECURITY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ SPDX-License-Identifier: MIT
66

77
# Reporting Security Issues
88

9-
If you believe you have found a security vulnerability in usecasebaseddoku, we encourage you to let us know right away via [email protected]. We will investigate all legitimate reports and do our best to quickly fix the problem.
9+
If you believe you have found a security vulnerability in Modular Application Creator use cases documentation, we encourage you to let us know right away via [email protected]. We will investigate all legitimate reports and do our best to quickly fix the problem.

UseCaseBasedDoku/TiaImports/GeneratedClasses/UseCaseBasedDokuLibrary.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public static string TiaVersion
3333
{
3434
get
3535
{
36-
return "TIA-V18.0";
36+
return "TIA-V19.0";
3737
}
3838
}
3939

UseCaseBasedDoku/TiaImports/ResourceManagement.cs

Lines changed: 58 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,13 @@ namespace UseCaseBasedDoku.TiaImports
2424
{
2525
public class ResourceManagement
2626
{
27-
private List<TiaLibraryInfo> _libraryInfos;
27+
private List<TiaLibraryInfo> m_libraryInfos;
28+
private List<LibraryBase> m_libraries;
2829
private Dictionary<NameAndType, LibraryTypeObject> m_nameAndType2LibraryTypeObject = new Dictionary<NameAndType, LibraryTypeObject>();
30+
private List<TagGroup> m_duplicatedRootTagGroups = new List<TagGroup>();
31+
private List<TypeGroup> m_duplicatedRootTypeGroups = new List<TypeGroup>();
32+
private List<BlockGroup> m_duplicatedRootBlockGroups = new List<BlockGroup>();
33+
private List<WatchTableGroup> m_duplicatedRootWatchTableGroups = new List<WatchTableGroup>();
2934
// List of generated blocks
3035
public Dictionary<object, object> __created_block_list = new Dictionary<object, object>();
3136
public UseCaseBasedDokuLibrary UseCaseBasedDokuLibrary { get; set; }
@@ -155,18 +160,28 @@ public DataBlock CreateInstanceDbWithStandardizedName(LibraryTypeObject function
155160

156161
public List<TiaLibraryInfo> GetLibraryInfos()
157162
{
158-
if (_libraryInfos != null)
163+
if (m_libraryInfos != null)
159164
{
160-
return _libraryInfos;
165+
return m_libraryInfos;
161166
}
162167

163-
_libraryInfos = new List<TiaLibraryInfo>();
168+
m_libraryInfos = new List<TiaLibraryInfo>();
164169

165170
LibraryBase lib = new UseCaseBasedDokuLibrary(false);
166171
var libInfo = new TiaLibraryInfo("UseCaseBasedDokuLibrary", lib.Version);
167-
_libraryInfos.Add(libInfo);
172+
m_libraryInfos.Add(libInfo);
168173

169-
return _libraryInfos;
174+
return m_libraryInfos;
175+
}
176+
177+
public List<LibraryBase> GetLibraries()
178+
{
179+
180+
m_libraries = new List<LibraryBase>();
181+
182+
m_libraries.Add(UseCaseBasedDokuLibrary);
183+
184+
return m_libraries;
170185
}
171186

172187
private void DeleteExistingInstanceGroups(PlcDevice targetDevice, UseCaseBasedDokuEM module)
@@ -303,6 +318,9 @@ private void AddResourcesToTiaProject(TiaTemplateContext tiaTemplateContext, Use
303318
LibraryWatchTablesRootGroup.AddGroup("UseCaseBasedDokuLibrary_WatchTables");
304319

305320

321+
// Populate library types with ModuleBlocksRootGroup for InstanceDB creation
322+
AddRootGroupToLibraryTypes();
323+
306324
// Create tag lists
307325

308326
// Create types
@@ -331,6 +349,26 @@ private void PostGeneration(TiaTemplateContext tiaTemplateContext, UseCaseBasedD
331349

332350
private void FinishGeneration(TiaTemplateContext tiaTemplateContext, UseCaseBasedDokuEM module)
333351
{
352+
foreach (var group in m_duplicatedRootBlockGroups)
353+
{
354+
tiaTemplateContext.EquipmentModuleHierarchyBuilder.RemoveEmptyGroups(group);
355+
}
356+
357+
foreach (var group in m_duplicatedRootTagGroups)
358+
{
359+
tiaTemplateContext.EquipmentModuleHierarchyBuilder.RemoveEmptyGroups(group);
360+
}
361+
362+
foreach (var group in m_duplicatedRootTypeGroups)
363+
{
364+
tiaTemplateContext.EquipmentModuleHierarchyBuilder.RemoveEmptyGroups(group);
365+
}
366+
367+
foreach (var group in m_duplicatedRootWatchTableGroups)
368+
{
369+
tiaTemplateContext.EquipmentModuleHierarchyBuilder.RemoveEmptyGroups(group);
370+
}
371+
334372
tiaTemplateContext.EquipmentModuleHierarchyBuilder.RemoveEmptyGroups(ModuleTagsRootGroup);
335373
tiaTemplateContext.EquipmentModuleHierarchyBuilder.RemoveEmptyGroups(ModuleTypesRootGroup);
336374
tiaTemplateContext.EquipmentModuleHierarchyBuilder.RemoveEmptyGroups(ModuleBlocksRootGroup);
@@ -406,6 +444,20 @@ private void CorrectTheWrapperClasses(TiaTemplateContext tiaTemplateContext)
406444
}
407445
}
408446

447+
private void AddRootGroupToLibraryTypes()
448+
{
449+
foreach (LibraryBase library in GetLibraries())
450+
{
451+
foreach (LibraryTypeObject libraryTypeObject in library.Types.Values)
452+
{
453+
if (libraryTypeObject is ICanCreateInstanceDB canCreateInstanceDbType)
454+
{
455+
canCreateInstanceDbType.InstanceDbTargetFolder = ModuleBlocksRootGroup.Blocks;
456+
}
457+
}
458+
}
459+
}
460+
409461
private class NameAndType
410462
{
411463
public string Name { get; }
Binary file not shown.
Binary file not shown.
Binary file not shown.

UseCaseBasedDoku/TiaImports/UseCaseBasedDokuLibrary/UseCaseBasedDokuLibrary.al18

Lines changed: 5 additions & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)