Voraussetzung
-
Die TIA Portal Openness-Anwendung ist mit dem TIA Portal verbunden.
Siehe Verbindung zum TIA Portal aufbauen -
Ein Projekt ist geöffnet.
Siehe Projekt öffnen
Einleitung
Die TIA Portal Openness-API ordnet Geräte ähnlich der Projektnavigation im TIA Portal an. PNV.
-
Geräte, die dem Projekt direkt untergeordnet sind, werden in der Zusammensetzung "Devices" des Projekts gesammelt angeordnet.
-
Geräte, die sich in Geräteordnern befinden, werden in der Zusammensetzung "Devices" des Ordners gesammelt angeordnet.
|
Hinweis Hierarchie von Hardware-Objekten des Objektmodells Beachten. |
Um die Geräte eines Projekts zu enumerieren, verwenden Sie eine der folgenden Möglichkeiten:
-
Alle Geräte auf erster Ebene enumerieren
-
Alle Geräte in Gruppen oder Untergruppen enumerieren
-
Alle Geräte eines keine Gerätegruppen enthaltenden Projekts enumerieren
-
Alle Geräte ungruppierter Gerätesystemgruppen enumerieren
Beispiele für enumerierbare Geräte:
-
Central station
-
PB-Slave / PN-IO device
-
HMI Device
Programmcode
Ändern Sie folgenden Programmcode, um Geräte auf Stammebene zu enumerieren:
|
private static void EnumerateDevicesInProject(Project project) { DeviceComposition deviceComposition = project.Devices; foreach (Device device in deviceComposition) { // add code here } } |
Ändern Sie den folgenden Programmcode, um auf ein einzelnes Gerät zuzugreifen:
|
private static void AccessSingleDeviceByName(Project project) { DeviceComposition deviceComposition = project.Devices; // The parameter specifies the name of the device Device device = deviceComposition.Find("MyDevice"); } |
Programmcode
Um auf Geräte in einer Gruppe zuzugreifen, müssen Sie zuerst zu der Gruppe und danach zu dem Gerät navigieren.
|
//Enamerate devices in groups or sub-groups private static void EnumerateDevicesInGroups(Project project) { foreach (DeviceUserGroup deviceUserGroup in project.DeviceGroups) { EnumerateDeviceUserGroup(deviceUserGroup); } } private static void EnumerateDeviceUserGroup(DeviceUserGroup deviceUserGroup) { EnumerateDeviceObjects(deviceUserGroup.Devices); foreach (DeviceUserGroup subDeviceUserGroup in deviceUserGroup.Groups) { // recursion EnumerateDeviceUserGroup(subDeviceUserGroup); } } private static void EnumerateDeviceObjects(DeviceComposition deviceComposition) { foreach (Device device in deviceComposition) { // add code here } } |
Programmcode
Ändern Sie folgenden Programmcode, um ein bestimmtes Gerät unter seinem Namen zu finden:
|
private static void FindingSpecificDevice(Project project) { //Find a specific device by name Device plc1 = project.Devices.First(d => d.Name == "Mydevice"); // Work with the device } |
Ändern Sie folgenden Programmcode, um ein bestimmtes Gerät über die Methode "Find" zu finden:
|
private static void FindingSpecificDevice2(Project project) { //Find a specific device via "Find" method Device plc1 = project.Devices.Find("MyDevice"); // Work with the device } |
Programmcode
Ändern Sie folgenden Programmcode, um alle Geräte zu enumerieren, die sich unter einem Projekt befinden, das keine Gerätegruppen enthält:
|
private static void EnumerateDevicesWithNoDeviceGroup(Project project) { foreach (Device device in project.Devices) { // Work with the devices } } |
Programmcode
Ändern Sie folgenden Programmcode, um die in einem Ordner befindlichen Geräte zu enumerieren:
|
private static void EnumerateDeviceLocatedinFolder(Project project) { DeviceUserGroup sortingGroup = project.DeviceGroups.Find ("Sorting"); Device plc1 = sortingGroup.Devices.First(d => d.Name == "MyStationName"); // Work with the device } |
Programmcode
Zum Strukturieren der Projekte wurden dezentrale Geräte in die Gruppe UngroupedDevices eingefügt. Um auf diese Gruppe zuzugreifen, navigieren Sie zuerst zur Gruppe und danach zum Gerät.
Ändern Sie folgenden Programmcode, um die Geräte der nicht gruppierten Gerätesystemgruppen zu enumerieren: