DO/DI Nummern Setzten und Abfragen im Programm

  • Hey zusammen,


    kurze Frage bezüglich des setzen und abfragen von Digitalen Signalen: Ich schreibe mir gerade einen Standardbaustein und würde gerne einen DO nicht mit seinem Namen, sondern mit der Nummer ansprechen. Also statt "SetDo do_Beispielausgang,1" würde ich gerne "SetDo 214,1" schreiben können bzw. noch genauer mit einer Variable "SetDo nDoNummer,1".


    Ginge das für Do's und das selbe mit Wait's für DI? Bei Fanuc ist es Standardmäßig so, da die Variablennamen nur die Kommentare sind und bei Kuka könnte man es über die Channel bzw direkt $OUT's machen. Wie siehts bei ABB aus?


    Würde mich über Antworten freuen!

    Noch gestern standen wir vor dem Abgrund, und heute sind wir ein Schritt weiter!

    Einmal editiert, zuletzt von JMPLBL_NoGO ()

  • ANZEIGE
  • Hallo,

    schau mal in der Doku nach "AliasIO". Das könnte dir weiter helfen.


    Gruß Z

    Hey Z750,


    danke für die Antwort. Daran habe ich auch schon gedacht, jedoch erspare ich mir dadurch nicht die Arbeit jedes einzelne EA Signal händisch reinzukopieren.


    Gerade bei EA's die in bestimmten Intervallen kommen (bsp. wenn man alle 16 Signale ein Signal mit einer bestimmten Funktion, jedoch unterschiedlicher Station/Peripherie hat wäre es viel einfacher das mit einer berechneten Zahl zu machen als für alle Signale vorher die Namen einzeln aufzudröseln oder es eben mit Switch Case zu machen...

    Noch gestern standen wir vor dem Abgrund, und heute sind wir ein Schritt weiter!

  • Mach'n Gruppenausgang/Gruppeneingang, sprich den mit ner DNum an und modifiziere/lies diese Bitweise, so hab' ich das schon mal öfter gemacht. Versteht nur anschließend kein Mensch mehr, nicht mal Du selbst ;)


    Grüße,

    Michael

    Hey Micheal,


    danke für die Antwort, so habe ich es auch gelöst, aber das kann doch nicht das es nicht einfacher geht. Gibts hier keine Funktion o.Ä. die direkt auf die Nummer der E/A's zugreifen kann?

    Noch gestern standen wir vor dem Abgrund, und heute sind wir ein Schritt weiter!

  • Hier als Referenz den Fanuc herzunehmen ist kaum sinnvoll. Beim Fanuc werden in der Konfiguration allen Ausgängen, egal von welchem externen Gerät, Bussystem usw. fortlaufende Nummern zugewiesen, jede Nummer gibt es genau ein mal.


    Zum ABB:

    In der Konfiguration fängt auf jedem Device / Bus die Zählung bei 0 an, und jedem dieser E/As wird ein eindeutiger Name zugeordnet, (keine Nummer wie beim Fanuc). Nummern gibt es also nur in der Konfiguration, und da sind sie nur eindeutig im Zusammenhang mit dem entsprechenden Device.

    Wie sollte jetzt die Unterscheidung vom Signal Nr. 0 auf z.Bsp. einem Profinetmodul Nr. 1 und dem Signal Nr. 0 auf einem Profinetmodul Nr. 2 oder einem Modul auf einem Devicenetmodul unterschieden werden?

    Das geht nur über den Namen.

  • Hallo Hermann,


    danke für die Antwort. Nummern für die E/A's gibt es ja bei ABB auch durchnummeriert. Nur eben, wie du schon sagtest, in Kombination mit dem Modul einmalig, jedoch ohne modul mehrmals. Nun hat man doch die Unterscheidung die man braucht, Code technisch wäre z.b: "PnDevice1.Signal.Out(index)" möglich um diesen anzusprechen, jedoch stellt der ABB diese funktion (meines wissens nach) nicht verfügbar...

    ... oder doch?

    Noch gestern standen wir vor dem Abgrund, und heute sind wir ein Schritt weiter!

  • Nein.

    Kann nicht verstehen, warum man sich im Programm mit E/A-Nummern rumschlagen sollte, wenn man doch Namen verwenden kann, die dann auch gleich etwas über die Funktion des Signals verraten. Der einzige Vorteil ist vielleicht, dass der Tippfaulheit des Programmierers Genüge getan wird.

    Der Code wird dadurch ganz bestimmt nicht les- / durchschaubarer. Da ärgere ich mich bei jedem Fanuc-Programm drüber, igittigitt.

  • Für mich persönlich ist ein Label (Signalname) immer besser, da bei einer Routing-Änderung des eigentlichen Signals ich nicht das gesamte Programm durchpflügen muss um es überall zu ändern. Ich brauch dann nur die Signalzuordnung anzupassen und bin fertig.


    Mir ist schon immer nicht ganz klar gewesen warum Konzern wie Daimler so etwas als "Standard" verwenden.

    Ist aus Sicht des Programmierers oder Inbetriebnehmers nicht ganz so logisch.


    Gruß

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

  • Gründe für den Wunsch liegen z.B. im Versuch einer indirekten Adressierung bei sich öfters wiederholenden gleichartigen E/A-Situationen, wie es hier ja auch der Fragesteller erwähnte.

    Sowohl die Konfiguration als auch die Programmierung kann dann recht mühsam werden und unübersichtlich. AliasIO hat dann noch zusätzliche Tücken, wenn man z. B. taskübergreifend arbeiten will, oder wenn man Signalsituationen in einer Struktur von z. B. einem Spannnest virtuell auf ein anderes weitergeben will.

    Gerade wenn man dann so Sachen kennt wie beim KUKA, wo man vielleicht schreiben könnte

    $OUT[(SPANNER_IO_BEGINN+(AktuelleNestNummer*20)+((Produktnummer-1)*4)+SPANNEN_LINKS)]=TRUE

    und dann automatisch immer richtig liegt, egal welchen Wert "AktuelleNestNummer" oder "Produktnummer" gerade haben, findet man den ABB an dieser Stelle eher ermüdend.


    Grüße,

    Michael

  • $OUT[(SPANNER_IO_BEGINN+(AktuelleNestNummer*20)+((Produktnummer-1)*4)+SPANNEN_LINKS)]=TRUE


    Dies finde ich Ermündend aber ist halt Kuka.


    SetGO "Name"


    und dieser GO in den Systemparameter konfigurieren, oder als "num" und dem "GO" zuweisen, kann doch nicht so schwer sein,


    & Kannst auch mit ner Routine schreiben mit nem "/switch1" für ZU oder "/switch2" AUF oder Doppelgreifer "switch/3".... whatever !


    nur Rapid-Programmierung !!!!

  • Habs im endeffekt nun auch so gehandhabt. ist natürlich nur deutlich länger als durch indirekte adressierung.

    Noch gestern standen wir vor dem Abgrund, und heute sind wir ein Schritt weiter!

Hilfe und Support für ABB Roboter Programmierung, Konfiguration, Inbetriebnahme finden Sie hier im ABB Roboter Forum. ABB Rapid Programmierung ist einfach, die Roboterforum Community hilft sehr gerne.

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden