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:
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");
154 case TiaGenerationPhases.Build:
157 var opennessCpu = GeneralSupport.GetOpennessDeviceItem(tiaTemplateContext.TiaDevice);
158 _softwareUnit = SoftwareUnits.GetOrCreateSoftwareUnit(
_plcDevice,
"MyUnit",
this,
"Namesapce_example");
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",
210 GenericBlockCreation.CreateFunctionBlockInSoftwareUnit(_softwareUnit,
"MyFb_LAD",
212 GenericBlockCreation.CreateFunctionBlockInSoftwareUnit(_softwareUnit,
"MyFb_SCL", ProgrammingLanguage.SCL,
_plcDevice);
214 var dbFromTypedMasterCopy = IntegrateLibraries.CreateInstanceDataBlock(
this,
215 ResourceManagement.MyFunctionBlock_Typed,
216 $
"{nameof(ResourceManagement.MyFunctionBlock_Typed)}Db", ResourceManagement.ModuleBlocksRootGroup);
218 GenericBlockCreation.CreateFunctionBlock($
"{nameof(ResourceManagement.MyFunctionBlock_Typed)}_FBD",
219 dbFromTypedMasterCopy.Name,
220 ProgrammingLanguage.FBD,
223 var myTagTable = CreateVariables.CreateTagTable(
_plcDevice,
"myTagTable");
224 var mySoftwareUnitTagTable = CreateVariables.CreateTagTable(_softwareUnit,
"mySoftwareUnitTagTable");
226 CreateVariables.CreateTagInTagTable(myTagTable,
"%I",
"187",
"0",
"myTag_0",
"Bool",
"myTagComment");
227 CreateVariables.CreateTagInTagTable(mySoftwareUnitTagTable,
"%I",
"188",
"0",
"myTag_1",
"Bool",
230 if (IsGenerateHardwareChecked)
232 var hmiSoftware = HardwareGeneration.GetOrCreateHMISoftware(opennessTiaPortalProject,
"HMI_1");
233 IntegrateLibraries.GenerateScreenFromMastercopy(hmiSoftware,
234 ResourceManagement.Lib_MAC_use_cases.Lib_Screen_1);
237 provider.CollectAttributes(Attributes);