21public class MAC_use_casesEM : BaseMAC_use_casesEM
28 private ISoftwareUnit _softwareUnit;
34 public MAC_use_casesEM()
65 public ModuleEdge ModuleStart
67 get => TopLevelEM ?
new ModuleEdge() : null;
71 public HardwareGenerationExcelBasedViewModel HardwareGenerationExcelBasedViewModel {
get;
set; } =
new();
78 public bool IsGenerateHardwareChecked {
get;
set; } =
false;
89 public string NameOfMyFb {
get;
set; } =
"MyFunctionBlock";
98 public string NameAndType
100 get => NamingConventions.CreateModuleNameAndTypeForEM(
"MAC_use_cases",
this);
103 public override bool GenerateTiaPortal(TiaTemplateContext tiaTemplateContext,
string generationPhaseName)
105 switch (generationPhaseName)
107 case TiaGenerationPhases.Init:
108 _plcDevice = GetPlcDevice(tiaTemplateContext);
115 ResourceManagement.Generate(tiaTemplateContext,
this, generationPhaseName);
117 foreach (var module
in ControlModules)
119 if (module is ITiaGenerateable tiaGen)
121 tiaGen.GenerateTiaPortal(tiaTemplateContext, generationPhaseName);
125 var opennessTiaPortalProject = GeneralSupport.GetOpennessProject(tiaTemplateContext.TiaProject);
127 switch (generationPhaseName)
129 case TiaGenerationPhases.Init:
131 if (!
string.IsNullOrWhiteSpace(HardwareGenerationExcelBasedViewModel.ImportSource))
133 HardwareGenerationExcelBased.CreateNewDevicesFromExcelSheet(
this, opennessTiaPortalProject,
134 HardwareGenerationExcelBasedViewModel.ImportSource);
137 if (!IsGenerateHardwareChecked)
143 var s120 = HardwareGeneration.GenerateS120(
this,
"S120MACTest",
"S120DeviceTest",
144 "this drive is generated with MAC");
146 var s210 = HardwareGeneration.GenerateS210(
this,
"S210MACTest",
"S210DeviceTest",
147 "this drive is generated with MAC");
148 var subnet1 = HardwareGeneration.GetOrCreateSubnet(SubnetsManager,
"PN/IE_1");
150 HardwareGeneration.ConnectDriveToSubnet(s120, subnet1,
this);
151 HardwareGeneration.ConnectDriveToSubnet(s210, subnet1,
this);
154 case TiaGenerationPhases.Build:
157 var opennessCpu = GeneralSupport.GetOpennessDeviceItem(tiaTemplateContext.TiaDevice);
158 _softwareUnit = SoftwareUnits.GetOrCreateSoftwareUnit(
_plcDevice,
"MyUnit",
this);
161 MyTo.ConfigureTO(
MyTo.TechnologicalObject,
this);
163 GeneralSupport.LogMessage(LogTypes.GenerationInfo,
"Generate technology objects",
this);
165 TechnologyObjectClass.CreateTOs(
_plcDevice,
this);
167 IntegrateLibraries.CreateInstanceDB_via_XmlInstDB(
this, ResourceManagement.MyFunctionBlock,
168 "CreatedDbFromMasterCopy_XmlInstDB", ResourceManagement.ModuleBlocksRootGroup,
_plcDevice);
170 var myDataBlockGlobal =
171 GenericBlockCreation.GenerateGlobalDataBlock(
"MyDataBlock_Global",
_plcDevice,
this);
173 GenericBlockCreation.SetDefaultValue(myDataBlockGlobal.Name,
"myParameterName", TIATYPE.INT,
"99",
176 GenericBlockCreation.GenerateMultiInstanceFB(
_plcDevice,
177 tiaTemplateContext.TiaProject.GetEditingLanguage(),
this);
179 var dbFromMasterCopy = IntegrateLibraries.CreateInstanceDataBlock(
this,
180 ResourceManagement.MyFunctionBlock,
181 $
"{nameof(ResourceManagement.MyFunctionBlock)}Db", ResourceManagement.ModuleBlocksRootGroup);
183 GenericBlockCreation.GenerateOB_Main(dbFromMasterCopy.Name,
this,
184 tiaTemplateContext.TiaProject.GetEditingLanguage(),
_plcDevice);
186 GenericBlockCreation.GenerateOBWithMultipleCalls(
"myOB", 10,
187 tiaTemplateContext.TiaProject.GetEditingLanguage(),
_plcDevice,
this);
189 GenericBlockCreation.CreateFunctionBlock($
"{NameOfMyFb}_FBD", dbFromMasterCopy.Name,
190 ProgrammingLanguage.FBD,
192 GenericBlockCreation.CreateFunctionBlock($
"{NameOfMyFb}_LAD", dbFromMasterCopy.Name,
193 ProgrammingLanguage.LAD,
195 GenericBlockCreation.CreateFunctionBlock($
"{NameOfMyFb}_SCL", dbFromMasterCopy.Name,
196 ProgrammingLanguage.SCL,
199 var dbFromFailSafeFbMasterCopy = IntegrateLibraries.CreateInstanceDataBlock(
this,
200 ResourceManagement.MyFunctionBlock_FailSafe,
201 $
"{nameof(ResourceManagement.MyFunctionBlock_FailSafe)}Db",
202 ResourceManagement.ModuleBlocksRootGroup);
204 GenericBlockCreation.CreateFailSafeFunctionBlock($
"{NameOfMyFailSafeFb}_F_LAD",
205 dbFromFailSafeFbMasterCopy.Name,
206 ProgrammingLanguage.F_LAD,
208 GenericBlockCreation.CreateFunctionBlockInSoftwareUnit(_softwareUnit,
"MyFb_FBD",
209 ProgrammingLanguage.FBD);
211 var dbFromTypedMasterCopy = IntegrateLibraries.CreateInstanceDataBlock(
this,
212 ResourceManagement.MyFunctionBlock_Typed,
213 $
"{nameof(ResourceManagement.MyFunctionBlock_Typed)}Db", ResourceManagement.ModuleBlocksRootGroup);
215 GenericBlockCreation.CreateFunctionBlock($
"{nameof(ResourceManagement.MyFunctionBlock_Typed)}_FBD",
216 dbFromTypedMasterCopy.Name,
217 ProgrammingLanguage.FBD,
220 var myTagTable = CreateVariables.CreateTagTable(
_plcDevice,
"myTagTable");
221 var mySoftwareUnitTagTable = CreateVariables.CreateTagTable(_softwareUnit,
"mySoftwareUnitTagTable");
223 CreateVariables.CreateTagInTagTable(myTagTable,
"%I",
"187",
"0",
"myTag_0",
"Bool",
"myTagComment");
224 CreateVariables.CreateTagInTagTable(mySoftwareUnitTagTable,
"%I",
"188",
"0",
"myTag_1",
"Bool",
227 if (IsGenerateHardwareChecked)
229 var hmiSoftware = HardwareGeneration.GetOrCreateHMISoftware(opennessTiaPortalProject,
"HMI_1");
230 IntegrateLibraries.GenerateScreenFromMastercopy(hmiSoftware,
231 ResourceManagement.Lib_MAC_use_cases.Lib_Screen_1);
234 provider.CollectAttributes(Attributes);