Voraussetzung
-
Die TIA Portal Openness-Anwendung ist mit dem TIA Portal verbunden. Weitere Informationen zu Verbindungen finden Sie im Benutzerhandbuch zum TIA Portal.
-
Erstellen oder Verwenden von bereits vorhandenen Bildregeln
-
Ein TIA Portal-Projekt mit als Standardbildregeltabelle genannter Bildregeltabelle, Kopiervorlagen von Bildern, Bildobjekten, Programmbausteinen und Bildbausteintypen ist vorhanden.
Lesen und Schreiben von Programmbausteineigenschaften
Fall 1: Betrachten wir das Lesen des Programmbausteinattributs einer Bildregel. Diese können projektiert werden von:
-
PLC-Baustein
-
Bibliothekstyp
-
Kopiervorlage der Bibliothek
Der folgende Code zeigt, wie das Programmbausteinattribut der Bildregel aus der PLC gelesen wird:
if (sivarc != null)
{
ScreenRule screenRule = sivarc.ScreenRules.Tables.Find("Default screen rule table").Rules.Find("ScreenRule")
ISivarcProgramBlockSource programblock = screenRule?.ProgramBlock;
if (programBlock ! = null)
{
CodeBlock plcBlock = programBlock as CodeBlock;
Console.WriteLine ("Screen Rule program block: " + plcBlock?.Name);
}
}
-
Wenn Sie den Programmbausteinwert aus dem Bibliothekstyp lesen, stellen Sie sicher, dass Sie
programBlockinLibraryTypetypisierenLibraryType libraryType = programBlock as LibraryType -
Wenn Sie den Programmbausteinwert aus der Kopiervorlage der Bibliothek lesen, stellen Sie sicher, dass Sie
programBlockin MasterCopy typisierenMasterCopy masterCopy = programBlock as MasterCopy
Fall 2: Betrachten wir das Schreiben des Programmbausteinattributs einer Bildregel. Sie können den Wert für einen Programmbaustein aus Folgendem schreiben
-
PLC-Baustein
-
Bibliothekstyp
-
Kopiervorlage der Bibliothek
Der folgende Code zeigt, wie das Programmbausteinattribut der Bildregel aus der PLC geschrieben wird:
if (sivarc != null)
{
ScreenRule screenRule = sivarc.ScreenRules.Tables.Find("Default screen rule table").Rules.Find("ScreenRule")'
Device dev = myProject.Devices.Find("S71500/ET200MP station_1");
softwareContainer softwareContainer = null
var firstorDefault = dev.DeviceItems.FirstorDefault(name => name.Name.Equals("PLC_1"));
if (firstorDefault != null)
SoftwareContainer = firstorDefault.GetService<SoftwareContainer>();
if (softwareContainer ! =null)
{
Software softTarget = softwareContainer.Software;
PLCSoftware plcSoftware = (PLCSoftware) softTarget;
var userBlocks = plcSoftware.BlockGroup.Blocks;
screenRule.ProgramBlock=userBlocks.Find ("Block_2") as CodeBlock;
}
}
-
Wenn Sie den Programmbausteinwert aus dem Bibliothekstyp schreiben:
screenRule.ProgramBlock = project.ProjectLibrary.TypeFolder.Types.Find ("Block_Type");
-
Wenn Sie den Programmbausteinwert aus der Kopiervorlage der Bibliothek schreiben:
screenRule.ProgramBlock = project.ProjectLibrary.MasterCopyFolder.MasterCopies.Find ("Block_2");
|
Hinweis
|
Lesen und Schreiben der Eigenschaft ScreenObjectLibraryItem einer Bildregel
Fall 1: Betrachten wir das Lesen des Attributwertes ScreenObjectLibraryItem einer Bildregel. Sie können den Wert für ein Bibliothekselement des Bildobjekts aus der Kopiervorlage wie folgt lesen:
if (sivarc != null)
{
ScreenRule screenRule = sivarc.ScreenRules.Tables.Find("Default screen rule table").Rules.Find("ScreenRule")
ISivarcLibaryItem screenObjectMasterCopy = screenRule?.ScreenObjectLibraryItem;
if (screenObjectMasterCopy ! = null)
{
MasterCopy masterCopy= screenObjectMasterCopy as MasterCopy;
Console.WriteLine ("Screen object master copy name: " + masterCopy?.Name);
}
}
-
Wenn Sie das Bildobjekt aus dem Bibliothekstyp lesen, stellen Sie sicher, dass Sie
screenObjectMasterCopyinLibraryTypetypisierenLibraryTypem libraryType = screenObjectMasterCopy as LibraryType;
Fall 2: Betrachten wir das Schreiben des Attributwertes ScreenObjectLibraryItem einer Bildregel. Sie können den Wert aus der Bibliothek wie folgt schreiben:
if (sivarc != null)
{
ScreenRule screenRule = sivarc.ScreenRules.Tables.Find("Default screen rule table").Rules.Find("ScreenRule");
screenRule.ScreenObjectLibraryItem = project.ProjectLibrary.MasterCopyFolder.MasterCopies.Find ("Button_Lib");
}
|
Hinweis
|
-
Wenn Sie den Bildobjektwert aus dem Bibliothekstyp schreiben:
screenRule.ScreenObjectLibraryItem=project.ProjectLibrary.TypeFolder.Types.Find ("Faceplate_Type");
|
Hinweis Auf andere Attribute des Kopierregel-Bibliotheksobjekts ( |
Lesen und Schreiben der Bild-Master-Eigenschaft einer Bildregel
Fall 1: Betrachten wir das Lesen des Attributwertes LibraryScreen einer Bildregel. Sie können den Wert für ein Bibliothekselement des Bildes aus der Kopiervorlage wie folgt lesen:
if (sivarc != null)
{
ScreenRule screenRule = sivarc.ScreenRules.Tables.Find("Default screen rule table").Rules.Find("ScreenRule")
ISivarcLibaryMasterCopy screenLibraryMasterCopy = screenRule?.LibraryScreen;
if (screenLibraryMasterCopy ! = null)
{
MasterCopy masterCopy= screenLibraryMasterCopy as MasterCopy;
Console.WriteLine ("Screen master copy name: " + mastercopy?.Name);
}
}
Fall 2: Betrachten wir das Schreiben des Attributwertes LibraryScreen einer Bildregel. Sie können den Wert für die Kopiervorlage des Bildes der Bildregel aus der Kopiervorlage der Bibliothek wie folgt schreiben:
if (sivarc != null)
{
ScreenRule screenRule = sivarc.ScreenRules.Tables.Find("Default screen rule table").Rules.Find("ScreenRule");
screenRule.LibraryScreen = project.ProjectLibrary.MasterCopyFolder.MasterCopies.Find (Screen_lib");
}
|
Hinweis
|
Das Attribut LibraryScreen wird genutzt, um Kopiervorlage und Typ eines Bilds zu lesen und zu bearbeiten. Mit dem LibraryScreen-Attribut können Sie in der Spalte Master copy/ Type of screen entweder nach der Kopiervorlage oder nach dem Typ suchen. Folgender Code zeigt die Navigation unter project > project Library > Typefolder> with name "<<screen_type>>". Das LibraryScreen-Attribut wird dem Wert des Bildtyps zugewiesen:
|
Sivarc sivarc = project.GetService<Sivarc>(); if (sivarc != null) { ScreenRules screenRuleEditor = sivarc.ScreenRules; if (screenRuleEditor != null) { ScreenRuleComposition screenRuleComposition = if (screenRuleComposition != null && screenRuleComposition.Count > 0) { ScreenRule scRule = screenRuleComposition.Find("Screen rule"); if (scRule != null) { Console.WriteLine((scRule.LibraryScreen as MasterCopy)?.Name); scRule.LibraryScreen = project.ProjectLibrary.TypeFolder.Types.Find("Screen_Type"); Console.WriteLine((scRule.LibraryScreen as LibraryType)?.Name); } } } } |