| | | Accelerate Digital Transformation | >> Anmelden und Early Bird Discount sichern! <<, eine Pressemitteilung
|
Autor
|
Thema: Skript angeschlossenes Betriebsmittel ermitteln (508 / mal gelesen)
|
Ex-Mitglied
|
erstellt am: 10. Feb. 2022 08:52 <-- editieren / zitieren -->
Hallo zusammen , Ich möchte gerne eine PLC Liste erstellen, auf der die angeschlossenen Betriebsmittel angezeigt werden. (VBA Programm/Externer Zugriff auf e3) Das funktioniert auch soweit die IO's direkt mit einer Ader beaufschlagt sind. Bei IO's bei denen die Module über einen Zwischenstecker geführt sind werden am Pin jedoch keine Ziele gefunden. Hat jemand von euch eine Idee, wie ich die Verbindung vom IO Pin zum Stecker Pin herstellen kann? Besten Dank für eure Hilfe Sevy
|
K0NFUZIUS Moderator
Beiträge: 271 Registriert: 06.02.2006
|
erstellt am: 10. Feb. 2022 16:52 <-- editieren / zitieren --> Unities abgeben:
Hallo Sevy, ohne das Skript zu sehen ist das immer schwierig. Aber wenn ich Dich richtig verstehe willst Du das gesteckte Objekt (hier dein IO Pin) haben. Das geht mit PinInterface::GetConnectedPinIds() oder wenn Du keine Varianten/Optionen im Projekt verwendest mit PinInterface::GetConnectedPinId() Hoffe das hilft Liebe Grüße Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 11. Feb. 2022 07:08 <-- editieren / zitieren -->
Guten Morgen Jörg Perfekt genau dieser Befehl war 'the missing link' herzlichen Dank für deine schnelle Hilfe! Eine Frage hätte ich noch warum unterscheidet sich der Befehl, wenn ich Varianten und Optionen im Projekt habe? Gibt es irgend ein Buch über die COM? Irgend etwas von einem Anwender für Anwender (so a la Bernd bei Eplan?) Die COM Hilfe habe ich zwar, manchmal sind mir die Beispiele zu abstrakt. Noch einmal herzlichen Dank und ein schönes Weekend, Sevy
|
Ex-Mitglied
|
erstellt am: 11. Feb. 2022 08:04 <-- editieren / zitieren -->
Hier noch der Testcode für alle interessierten. Code: Sub test_liste_alle() Set App = CreateObject("CT.Application") Set Job = App.CreateJobObject Set sym = Job.CreateSymbolObject Set pin = Job.CreatePinObject Set PinDest = Job.CreatePinObject Set dev = Job.CreateDeviceObject Set DevDest = Job.CreateDeviceObject App.ClearOutputWindow symcnt = Job.GetSymbolIds(symids) For i = 1 To symcnt sym.SetId symids(i) App.PutInfo 0, "Sym ID: " & symids(i) & " / ", symids(i) pincnt = sym.GetPinIds(pinids) For j = 1 To pincnt App.PutInfo 0, "Pin ID: " & pinids(j) & " / ", pinids(j) pin.SetNodeId pinids(j) cnt = pin.GetDevicePinIds(pins) 'App.PutInfo 0, "Return of 'pin.GetDevicePindIds': " & cnt & " PINID : " & pinids(j), pinids(j) For k = 1 To cnt App.PutInfo 0, "Node ID: " & pinids(j) & " / ", pinids(j) pin.SetId pins(k) dev.SetId pin.GetId() 'App.PutInfo 0, "Node ID: " & pinids(j) & " / ", pinids(j) App.PutInfo 0, "Pin: " & pin.GetName() & " (" & dev.GetName() & ") PINID : " & pins(k), pins(k) DestPinCount = pin.GetDestinationCount If DestPinCount > 0 Then pin.GetDestinationIds DestPinId PinDest.SetId DestPinId(1) DevDest.SetId DestPinId(1) App.PutInfo 0, "Ziel : " & DevDest.GetAssignment & DevDest.GetLocation & DevDest.GetName & " : " & PinDest.GetName Else If pin.GetConnectedPinIds(x) > 0 Then PinDest.SetId x(1) DevDest.SetId x(1) PinDest.SetNodeId x(1) cnt = PinDest.GetDevicePinIds(pins) For L = 1 To cnt PinDest.SetId pins(L) DevDest.SetId PinDest.GetId() App.PutInfo 0, "Pin: " & PinDest.GetName() & " (" & DevDest.GetName() & ") PINID : " & pins(L), pins(L) If PinDest.GetDestinationCount > 0 Then PinDest.GetDestinationIds DestPinId PinDest.SetId DestPinId(1) DevDest.SetId DestPinId(1) App.PutInfo 0, "Destination: " & DevDest.GetAssignment & DevDest.GetLocation & DevDest.GetName & " : " & PinDest.GetName, PinDest.GetId End If Next End If End If Next Next Next End Sub
|
K0NFUZIUS Moderator
Beiträge: 271 Registriert: 06.02.2006
|
erstellt am: 11. Feb. 2022 08:30 <-- editieren / zitieren --> Unities abgeben:
Hallo Sevy, bei Varianten/Optionen hast Du die Möglichkeit unterschiedliche Anschlusspunkte zu stecken. z.B. O1 -> X1:1 auf X2:1 O2 -> X1:1 auf X3:1 Dann würdest Du vom Anschlusspunkte X1:1 zwei Ids bekommen, wenn beide Optionen aktiv sind. In der Version E3.series 2021 hat sich die COM Hilfe verbessert (neues Design - mehr Beispiel - Bessere Dokumentation von Rückgabewerten ,...) Ein Buch darüber ist mir nicht bekannt.
Liebe Grüße Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|