Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  E3.series
  Script zum Ermitteln der Pinbelegung

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:   Script zum Ermitteln der Pinbelegung (260 mal gelesen)
Thomas6789
Mitglied
CAE-Admin


Sehen Sie sich das Profil von Thomas6789 an!   Senden Sie eine Private Message an Thomas6789  Schreiben Sie einen Gästebucheintrag für Thomas6789

Beiträge: 18
Registriert: 24.10.2018

Zuken E3

erstellt am: 05. Nov. 2019 13:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,
ich bastle gerade an einem Script zum Ermitteln der Pinbelegung an einem bestimmten Bauteil im Projekt.

Hintergrund: Ziel ist es zu erkennen, bei welchen Betriebsmitteln mit den Kennbuchstaben "V" der Anschlusspunkt X9:+ und X9:GND belegt ist, um zu ermitteln ob die DC Versorgung angeschlossen ist oder nicht.

Meine Probleme sind im Moment folgende:

1. Wie kann ich nach dem Kennbuchstaben V suchen? In meinem Code kann ich im Moment nur nach einem BMK suchen z.B. "-V1". Ich möchte aber nach allen Betriebsmitteln suchen, von V1 - V999. Hierzu konnte ich leider nichts finden.

2. Mit dev.GetPinIds kann werden alle Pins ausgegeben. Ich möchte aber nur Pins ausgeben, die auch angeschlossen sind. In der Hilfe habe ich den Befehl GetConnectedPinIds gefunden, der aber leider nicht vom Device Object unterstützt wird. Gibt es da eine Möglichkeit?


Hier der Code:


Code:

Dim Excel: Set Excel = CreateObject("Excel.Application")
Dim Dev: Set Dev  = CreateObject("CT.Device")
Dim Cab: Set Cab  = CreateObject("CT.Device")
Dim Prj: Set Prj  = CreateObject("CT.Job")
Dim App: Set App  = CreateObject("CT.Application")
Dim Pin: Set Pin   = CreateObject("CT.Pin")
Dim Cor: Set Cor  = CreateObject("CT.Pin")
Dim Comp: Set Comp  = CreateObject("CT.Component")

Excel.WorkBooks.Add
Excel.Visible = 1 'Nach diesem Befehl wird Excel sichtbar


'pin.GetConnectedPinIds pinIds
prj.GetAllDeviceIds devIds 'Alle Betriebsmittel in den Kontainer / Array laden
nzeile = 1

For i = 1 to UBound(devIds)
dev.SetId DevIds(i)

if dev.Getname = "-V1" then 'Nur Ausgeben bei Device mit -V1

dev.GetPinIds pinIds

For j = 1 to UBound(pinIds)
pin.SetId pinids(j) 'Setzt den jeweiligen Anschlusspunkt mit der id als aktiven Anschlusspunkt

if pin.GetAttributeValue (".CONNECTOR_NAME") = "X9" and (pin.GetName = "+" or pin.GetName = "GND") then
Excel.Cells(nzeile,2) = pin.GetName 'Ausgabe Anschlusspunktname in Spalte 2
'Excel.Cells(nzeile,3) = pin.GetSignalName 'Ausgabe am Anschlusspunkt anliegendes Signal in Spalte 3
Excel.Cells(nzeile,3) = pin.GetAttributeValue (".CONNECTOR_NAME") 'Ausgabe internes BMK Spalte 4
Excel.Cells(nzeile,4) = "DC Versorgung" 'Ausgabe Hinweis
nzeile = nzeile + 1

end if
Next

end if
nzeile = nzeile + 1
next


Excel.Columns.AutoFit 'Spaltenbreite automatisch anpassen


Set Comp  = Nothing
Set Cor  = Nothing
Set Pin   = Nothing
Set App  = Nothing
Set Prj  = Nothing
Set Cab  = Nothing
Set Dev  = Nothing
Set Excel = Nothing


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

K0NFUZIUS
Moderator



Sehen Sie sich das Profil von K0NFUZIUS an!   Senden Sie eine Private Message an K0NFUZIUS  Schreiben Sie einen Gästebucheintrag für K0NFUZIUS

Beiträge: 228
Registriert: 06.02.2006

erstellt am: 05. Nov. 2019 15:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Thomas6789 10 Unities + Antwort hilfreich

Hallo Thomas,

Nr: 1
Versuche einmal DeviceInterface::SearchAll()
hier kannst Du mit wild strings arbeiten.
* Beliebige Anzahl Zeichen
? Genau ein beliebiges Zeichen

Code:

Set App = CreateObject("CT.Application")
Set Prj = App.CreateJobObject

Set dev = prj.CreateDeviceObject

devcnt = dev.SearchAll( "-V*", "*", "*", devids )
for i = 1 to devcnt
dev.setid devids(i)
app.putInfo 0, devids(i) & ": " & dev.GetName()
next


Nr.2:
Definiere "Angeschlossen" :-)
Mit einem Draht/Ader verbunden:

Code:

pin.GetCoreIds

Mit einer Verbindungslinie angeschlossen:
Jetzt wird's komplizierter. Der Pin kann über Anschlusspunktansichten mehrfach platziert und angeschlossen sein:

Code:

netsegCnt= pin.GetNetSegmentIds( netsegids )
if( netsegCnt = 0 ) Then
' Ich bin nicht angeschlossen
Endif

Next


Lieben Gruß
Jörg

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Thomas6789
Mitglied
CAE-Admin


Sehen Sie sich das Profil von Thomas6789 an!   Senden Sie eine Private Message an Thomas6789  Schreiben Sie einen Gästebucheintrag für Thomas6789

Beiträge: 18
Registriert: 24.10.2018

Zuken E3

erstellt am: 05. Nov. 2019 16:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke für die schnelle Antwort! Also der erste Teil mit Dev.SearchAll funktioniert schonmal.

Mit "Angeschlossen :-)" meinte ich dass mindestens eine Verbindugnslinie an Pin "+" oder Pin "GND" gezeichnet ist. Ein Draht muss nicht zwingend aufgelegt sein. Deshalb wird wohl die zweite Variante mit GetNetSegmentIds die bessere Wahl sein.

Ich habe den folgenden Code in die for-Schleife von devcnt direkt nach der Ausgabe App.putinfo eingefügt:

Code:

netsegCnt= pin.GetNetSegmentIds( netsegids )
  if( netsegCnt = 0 ) Then
  app.putInfo 0, " Ich bin nicht angeschlossen"
  else
  app.putInfo 0, " Ich bin angeschlossen"
End if



Leider scheint das aber nicht wirklich zu funktionieren, es erfolgt immer nur die Ausgabe " Ich bin nicht angeschlossen" obwohl Verbindungen vorhanden sind.

[Diese Nachricht wurde von Thomas6789 am 05. Nov. 2019 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

K0NFUZIUS
Moderator



Sehen Sie sich das Profil von K0NFUZIUS an!   Senden Sie eine Private Message an K0NFUZIUS  Schreiben Sie einen Gästebucheintrag für K0NFUZIUS

Beiträge: 228
Registriert: 06.02.2006

erstellt am: 05. Nov. 2019 17:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Thomas6789 10 Unities + Antwort hilfreich

Ich habe das gerade mal ausprobiert funktioniert bei mir zuverlässig.

Du musst das natürlich unter

Code:

For j = 1 to UBound(pinIds)
pin.SetId pinids(j)
netsegCnt= pin.GetNetSegmentIds( netsegids )
if( netsegCnt = 0 ) Then
app.putInfo 0, " Ich bin nicht angeschlossen"
else
app.putInfo 0, " Ich bin angeschlossen"
End if

einfügen.
Gruß Jörg

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Thomas6789
Mitglied
CAE-Admin


Sehen Sie sich das Profil von Thomas6789 an!   Senden Sie eine Private Message an Thomas6789  Schreiben Sie einen Gästebucheintrag für Thomas6789

Beiträge: 18
Registriert: 24.10.2018

Zuken E3

erstellt am: 06. Nov. 2019 10:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke, hat funktioniert 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2020 CAD.de | Impressum | Datenschutz