Aus und Eingänge "bennenen" für's Device Net in der iosys.ini

  • Guten Morgen .


    Ich stehe vor einer neue Aufgabe die Aus und Eingänge für eine EWM Schweißanlage zu "benennen".

    Da ich das aber noch nie gemacht habe , hofe ich das ihr mir helfen könnt.

    In der iosys.ini steh dazu ja Folgendes.

    _____________

    ;Digital Inputs and Outputs:

    ;

    ; Form 1:

    ; {token}{offset}={byte}[,{multip}]

    ;

    ; {token} INB (byte), INW (word), INDW (double word)

    ; OUTB, OUTW, OUTDW

    ; {offset} byte offset of robot IO System (0..m)

    ; {byte} byte offset over all peripheral devices (0..m)

    ; Offset starts with 0 at the first device and

    ; ends with m at the end of the last device.

    ; {multip} creats n dataobjects of {token}

    ; Example:

    ; OUTW4=2,x3

    ; Three words of the periphery, starting at byte 2,

    ; are mapped to the outputs 33-80.

    ;

    ; Form 2:

    ; {token}{offset}={address},{byte}[,{multip}]

    ;

    ; {token} INB, INW, INDW, OUTB, OUTW, OUTDW

    ; {offset} byte offset of robot IO System

    ; {address} address of a peripheral device (0..m)

    ; driver specific information, see descr. below

    ; {byte} byte offset at this peripheral device (0..m)

    ; Offset starts with 0 at the every device

    ; driver specific information, see descr. below

    ; {multip} creats n dataobjects of {token}

    ; Example:

    ; INW4=10,0,x2

    ; Two words of the peripheral device with address 10 and

    ; up from byte 0 are mapped to the inputs 33-80.

    _______________________________________________________________________________________________


    Mein DeviceNet hat eine Mac ID von 63.

    Wenn ich mich an Form 2 halte dann sieht es ja in etwa so aus?!


    ; OUTW??=63,0,??


    Wie kriege ich denn z.b das Startsignal "benannt"?


    Beste Grüße Philipp


    System KRC2 V4.......

    Einmal editiert, zuletzt von Philipp392 ()

  • Schritt für Schritt zum Roboterprofi!
  • Moin Philipp,


    hier ein Beispiel:


    Iosys.ini


    ;EWM

    INB0=5,0,x11 <-- Inbyte 0 fängt bei Eingang 1 am Roboter an, Macadresse ist hier die 5, O Bytes Offset, 11 Byte lang


    ;EWM

    OUTB0=5,0,x10

    ANOUT1=5,4,16,1

    ANOUT2=5,6,16,3

    ANOUT3=5,8,16,3



    Devnet.Ini


    [1]

    ;EWM

    macid=5

    Die Abnahme von GOTO Anweisungen verhält sich reziprok zur Qualität einer Programmierung

  • Und den Namen dazu dann in der $config. dat:

    Code
    Signal ewmstart $out[5] 

    Dann kann man im Programm schreiben

    Code
    ewmstart = true

    Der Vollständigkeit halber dann noch in der E/A Übersicht den Langtext eintragen.

  • Jepp, aber bitte zum Schweißen ein ArcTech Paket verwenden, macht die Sache wesentlich einfacher auch bei programmieren.

    Die Abnahme von GOTO Anweisungen verhält sich reziprok zur Qualität einer Programmierung

  • Ich verstehe das nicht so ganz. Absolutes Neuland für mich.X/

  • Hi Philipp,

    ja, wenn man das zum ersten Mal sieht, könnte man durchdrehen.


    Paar Erklärungen, mehr grundsätzlich:

    In den einzelnen Ini-Dateien für die Busse werden die Parameter der Busse an sich festgelegt. Z. B. bei Dir, wenn Du DeviceNet hast, in der devnet.ini, siehe Martins Beispiel. Da müssen dann die Mac-Ids der Teilnehmer rein, können ja mehrere sein.


    In der iosys.ini werden dann die dadurch zugänglichen physischen Signale auf den Bussen auf logische Bytes in der KRC gemapped. INB, OUTB usw. stehen jeweils für 8 Bit, INW und OUTW für jeweils 16 Bit. Die kleinste Einheit ist ein Byte, also 8 Signale (Bit.) Wenn Du nur die digitalen EA verwendest, macht es keinen Unterschied, ob Du 2 INB nimmst oder 1 INW .


    Die Zählung fängt dort bei 0 an, d. h. OUTB0 mappt auf die ersten 8 Ausgänge, die beim KUKA aber im Ausgangsarray wiederum bei 1 anfangen. Das heisst: $OUT[1] bis $OUT[8]. Links vom "=" steht die logische Zuordnung, rechts steht die physische. Der Job besteht jetzt darin, die physischen Signale auf dem Bus zu finden, deren Bitbreite zu wissen, und dann dort sinnvoll den logischen Signalen zuzuordnen. Das Ärgerliche ist vielleicht, dass die Bitbreite des Busteilnehmers nicht immer offensichtlich ist, es ist immer ein Vielfaches von 8, deshalb der Faktor. Benutzt man "W", dann sind's Vielfache von 16. Manche Koppler schicken z. B. ungefragt noch ein Diagnosebyte mit, das man zwar nicht braucht, aber was auf dem Bus bemerkt wird. Und wenn's nicht stimmt, sagt die KRC: geht nicht.


    Irgendwo im Menü findet man was mit "E/A-Treiber rekonfigurieren", das muss nach jeder Änderung in Obigem einmal gemacht werden.


    Wenn Du dann alles fertig konfiguriert hast und die Signale durchgereicht werden, dann kannst Du mit der "SIGNAL"-Definition (z. B. ) in der $config.dat auch noch optional Namen vergeben, die kann man dann im Programm verwenden. Und die sieht man dann aber immer noch nicht in der E/A-Liste, die man über das Menü aufrufen kann sondern müssen da noch einmal extra eingegeben werden. (Oder bei "Langtexte" exportiert/importiert werden.)


    Grüße,

    Michael

  • Hallo zusammen.

    Das währe Jetzt meine Konfiguration der E/A's.

    [DEVNET]


    ;----MAG-----


    OUTW16=62,0,x11 ;$OUT[129]..[144]



    ;----WIG-----

    OUTW14=63,0,x10 ;$OUT[113]..[128]


    Zeigt natürlich nacher Treiber Fehler.


    Irgendwo stehe ich da noch auf dem Schlauch:(

    Was mache ich falsch?


    Grüße


    Philipp

  • Moin Phillip


    ;----MAG-----


    OUTW16=62,0,x11 ;$OUT[129]..[144] <-- das kann so wohl nicht sein dein Ausgangswort ist doch keine 22 Byte lang sondern nur 2 Byte bzw. 1 Word ergo x1



    ;----WIG-----

    OUTW14=63,0,x10 ;$OUT[113]..[128] <-- hier das selbe

    Die Abnahme von GOTO Anweisungen verhält sich reziprok zur Qualität einer Programmierung

  • Für die Mag alage sind es nach Anleitung 5 Wörter (10Bytes) also ja x5?!

  • So richtig steig ich da leider nicht durch ?(:hilfe:

    Moin ,

    der Martin meint damit, dass Dein erster Adressbereich durch seine Länge den zweiten Adressbereich überlappt.

    Damit erfolgen Doppelzuweisungen auf die Ausgänge, falls das der Treiber überhaupt handeln kann.

    never touch a running system

  • Phillip, sind dir denn die Begriffe Bit, Byte und Word geläufig?


    8Bit=1Byte, 2Byte=1Word

    ...daraus folgt zB.

    Code
    erstes Bit  = erstes Signal  = $IN[1]
    zweites Bit = zweites Signal = $IN[2]
    ...
    achtes Bit  = achtes Signal  = $IN[8] 

    -> ist zusammen ein Byte

    Den Roboter "in seinem Lauf hält weder Ochs noch Esel auf!"

  • Phillip, sind dir denn die Begriffe Bit, Byte und Word geläufig?


    8Bit=1Byte, 2Byte=1Word

    ...daraus folgt zB.

    Code
    erstes Bit  = erstes Signal  = $IN[1]
    zweites Bit = zweites Signal = $IN[2]
    ...
    achtes Bit  = achtes Signal  = $IN[8] 

    -> ist zusammen ein Byte

    es geht so. Aber ich komme immer mehr durcheinander :cry:

  • es geht so. Aber ich komme immer mehr durcheinander :cry:

    Was heißt es geht so? Sag was du kannst und was nicht... wir stehen uns nicht gegenüber und können einfach reden. Schreib bitte ausführlich und klar! Was soll ich denn nach "geht so" antworten?

    Den Roboter "in seinem Lauf hält weder Ochs noch Esel auf!"

  • Was heißt es geht so? Sag was du kannst und was nicht... wir stehen uns nicht gegenüber und können einfach reden. Schreib bitte ausführlich und klar! Was soll ich denn nach "geht so" antworten?

    Ja das stimmt.


    Das Thema Bit,Byte Word und Ein und Ausgänge ist komplettes Neuland für mich. Ich weiss zwar worum es geht beziehungsweise was dort geschen soll. nur umsetzen kann ichs noch nicht.

    Das hat schonmal deutlich Licht ins dunkle gebracht. Nur ich kann es nicht bezüglich auf das Datenprofil von EWM umsetzen. Wenn mir jemand das mal expliziert darauf erklären würde währe das super.

  • Also anhand des Bildes, welches Du angefügt hast stehen 5Word = 10Byte = 80Bit für "Ansteuerdaten" sowie 6Word = 12Byte = 96Bit für "Prozessdaten" zur Verfügung.


    Nach der Form2 in der IOSYS.ini ( {token}{offset}={address},{byte}[,{multip}] ) würde ich erstmal so starten:

    Code
    OUTW0=62,0,x5
    INW0=62,0,x5

    Das bedeutet: (Five words of the peripheral device with address 62 and up from byte 0 are mapped to the outputs 01-81.[Text aus der Erklärung in der IOSYS.ini])

    Fünf Word von dem Teilnehmer mit der Adresse 62 und einem Versatz von 0 starten bei dem Ausgang 01 und "gehen" bis zum Ausgang 81.

    ->Ausgang "01" ergibt sich aus dem "token" plus dessen "offset", hier OUTW0 (Null startet eben auch vorn)

    ->Ausgang "81" ergibt sich aus dem "multip" "x5"-> 5Word = 10Byte = 80Bits (Achtzig Ausgänge enden bei Eins plus Achtzig)

    Gleiches gilt dann auch für die Eingänge. Somit hätten wir die "Ansteuerdaten" abgehandelt...


    Für die "Prozessdaten" sollte das ganze dann folgendermaßen aussehen:

    Code
    OUTW5=63,0,x6
    INW5=63,0,x6

    Sechs Word von dem Teilnehmer mit der Adresse 63 und einem Versatz von 0 starten bei dem Ausgang 82 und "gehen" bis zum Ausgang 178.

    ->Ausgang "82" ergibt sich aus dem "token" plus dessen "offset", hier OUTW5 (Null bis 81 sind belegt durch die vorherige Konfiguration, d.h. das Word5 beginnt eben danach!)

    ->Ausgang "178" ergibt sich aus dem "multip" "x6"-> 6Word = 12Byte = 96Bits (96 Ausgänge enden bei 82 plus 96)


    Sollten sich hier Fehler eingeschlichen haben können die "Cracks" ja noch was dazu schreiben!


    Edith sagt:

    offensichtlich habe ich mich mit den Adressen der/des Teilnehmers vertan. Natürlich mußt du die richtige Adresse an der richtigen Stelle eintragen. Hast du nur einen Teilnehmer mit der Adresse 63 (in der devnet.ini macid=63), dann kannst du das natürlich auch alles in eine Zeile schreiben:

    Code
    OUTW0=63,0,x11
    INW0=63,0,x11

    Dann hättest du jetzt alle Signale von Ausgang 001 bis Ausgang 178 fertig gemapt und kannst sie nun in der config.dat belegen

    Code
    SIGNAL doTestSignal $OUT[1]

    usw...

    Den Roboter "in seinem Lauf hält weder Ochs noch Esel auf!"

    7 Mal editiert, zuletzt von AtoK09 () aus folgendem Grund: sry für das häufige editieren... es ist spät :)

  • Philipp, mir hat es anfangs in der Praxis immer geholfen, die Sache möglichst zu fragmentieren, und jedes besch... Byte oder doch wenigstens die Words einzeln zu betrachten, besonders dann, wenn es kompliziert wird.

    Ich kopiere Dir mal auszugsweise ein Beispiel aus einer realen Anlage hier drunter, vielleicht siehst Du dann, was gemeint ist. Die Kommentare standen übrigens genau so drin.... aber lies erstmal unterhalb des Beispiels weiter.



    Guck mal zuerst auf den letzten Block. Ich hab da Ausgänge, und zwar digital 10 Byte, ab Byte 25. Das ist Ausgang $OUT[201] bis [280]. Die sind auf dem Busgerät ab Byte 8 verfügbar.

    Dann habe ich separat noch 4 weitere Doppelbytes. Das Busgerät schickt die davor, deswegen gehen die von 0 bis 6 auf der rechten Seite, in zweier-Abständen. Die hole ich mir paarweise von den Doppelbytes 50..51, 52..53, 54..55 und 56..57. (Bedient werden die von einer Soft-SPS, die auf dem Kuka läuft, der Robbi selbst hat damit nichts zu schaffen, aber hier rein mussten sie dennoch. Das wären rein technisch die Ausgänge ab $OUT[401] aufwärts, und man kann die Signale sogar sehen, wenn man in der EA-Ansicht dorthin blättert auf dem KCP.)


    Vielleicht kannst Du Dir sinngemäß eine Theorie ableiten, wie das bei den Eingängen läuft, bei denen die rechte Seite mit "10" beginnt, das ist Devnet-Gerät 10.


    Und dann gibt's ganz oben noch einen ganz simplen Block, wo einfach alles blockweise durchgeschossen wird, auf einem sehr hohen Bereich ab $IN/OUT[1105], was Byte 138 entspricht. Aber auf ein anderes Busgerät mit der Adresse 12. 8 Bytes breit, das macht exakt 64 Signale jeweils.


    Hier hatte ich damals immer Doppelbytes verwendet. ... INB (mit "B"), und dann Faktor "x2". Warum nicht Words? Ganz einfach: so konnte ich's besser kapieren. Und die SPS kommt mir ja auch immer mit Bezeichnungen wie "22.7", wo ich dann umrechnen muss: Byte 22, Bit 7, +1 für die Zählung, die bei 1 anfängt, macht 184.

    Und man kann mal eben was rauskommentieren oder verschieben, wenn man das braucht.


    Noch was: in der devnet.ini kann man "debug" einschalten, dann macht er ein Logfile irgendwo hin im Log-Ordner. Das ist zwar nicht sooo hilfreich, aber bringt gelegentlich die Erleuchtung.


    Grüße,

    Michael

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