22. Juli 2019, 20:24:22
Roboterforum.de - Die Industrieroboter- Anwender und Experten Community

[gelöst] Eingänge zu Signal verbinden und in Integer umwandeln


normal_post Autor Thema: [gelöst] Eingänge zu Signal verbinden und in Integer umwandeln  (Gelesen 2264 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

20. April 2018, 13:07:04
Gelesen 2264 mal
Offline

newbiemechatronic


Hallo zusammen,
ich habe von einem Kollegen eine Zelle für ein Forschungsprojekt bei uns übernommen. In dieser Zelle wird ein IRB-2400 als Fräsroboter verwendet. Eigentlich funktioniert alles hervorragend. Das Einzige was etwas hinderlich ist, dass der Benutzer über das Handbediengerät den gewünschten Prozess (insgesamt stehen 8 zur Verfügung) auswählen muss und der dann vom Roboter ausgeführt wird.
Meine Aufgabe ist es jetzt ein von uns entwickeltes Datenmodell mit dem Roboter zu verbinden. Künftig soll der Prozess über das Datenmodell übermittelt werden. Dafür würden wir im ersten Schritt die digitalen Eingänge verwenden. Das Problem ist,  das ich aus dem KUKA Bereich komme und bei ABB noch nie mehrere Eingänge zu einem Signal verschaltet habe.
Mein Frage wäre daher, wenn ich vier Eingänge habe, wie muss ich diese verschalten, sodass ich sie wie ein einziges Signal auswerten kann? Eine Folgefrage wäre dann, wie kann ich dann dieses binäre 4-Bit Signal in eine Zahl umwandeln?
Ich bin für alle Vorschläge dankbar und kann gerne auch Teile des Codes zur Verfügung stellen, wenn dies benötigt wird.
lg
Bernhard
« Letzte Änderung: 23. Mai 2018, 08:21:47 von newbiemechatronic »
  • gefällt mir    Danke

Heute um 20:24:22
Antwort #1

Werbung

Gast

20. April 2018, 13:27:50
Antwort #1
Offline

Micky


Hallo,
Du kannst in der ABB Steuerung mehrere Eingangsbits als Gruppeneingang in den Systemparametern deklarieren.
Hierzu wird bei der Signaldeklaration als Signaltyp "GI" ausgewählt und die verwendeten Bits beim Devicemapping angegeben (z.B. "1-4")
Im Rapid-Programm wird der deklarierte Signalname (z.B. IF giCode = 5) direkt verwendet, da er bereits den dezimalen Zahlenwert enthält.
Durch das Ändern der Bit-Reihenfolge beim Deivcemapping kan mann Bit und Byte-Swaps realisieren die später im Programm nicht berücksichtigt werden müssen, da dies bereits die Steuerung übernimmt.
Nähere Information findest Du im Handbuch für die Systemparameter.
Gruß
Micky


  • gefällt mir    Danke
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind. (Albert Einstein)

20. April 2018, 14:44:01
Antwort #2
Offline

Martl


Servus,
du kannst sogar noch weiter gehen.
z.B. Kommazahl  6,73  
den Wert den dir die SPS schicken möchte mal 100 in der SPS
=> von der SPS wird dann der Wert 673 über deinen Gruppeneingang
übermittelt
=> du teilst einfach wieder durch 100.
iEingangszahl = giCode
iBerechwert = (iEingangszahl/100)
oder
z.B. Minuswert -8
=> in der SPS 1000 dazuzählen => 9992 als Endwert
=> 9992 an Roboter über giCode übermitteln
=> im Roboter einfach wieder 1000 abziehen => -8
iEingangszahl = giCode
iBerechwert = (iEingangszahl - 1000)
=> dann brauchst du kein Negierungsbit dazuschalten
Grüße
Martl
  • gefällt mir    Danke

21. April 2018, 10:31:36
Antwort #3
Offline

newbiemechatronic


Hi,
vielen Dank für die Tipps. Bezüglich der Funktion des Gruppeneinganges hätte ich noch fragen. Kann ich das auch in RobotStudio definieren und dann auf den Roboter laden. Zur Erklärung: Ich habe mir ein Backup von der Steuerung gezogen und hab begonnen in dem Backup das Programm zu bearbeiten. Unter Rapid - Konfiguration - I/O hab ich die Signale gefunden und dort das Beckhoff Modul, das wir verwenden. Unter Signale sind die ganzen digitalen inputs bereits angelegt. Dort kann ich den Signaltyp auf Group Input ändern. Was mir aber nicht ganz klar ist, ist was ich jetzt in die Parameter schreiben muss, damit ich mehrere Eingänge von dem Modul zu einem Group Input zusammenfassen kann. 
  • gefällt mir    Danke

23. April 2018, 09:05:22
Antwort #4
Offline

Z750


Hi,
soweit richtig. Entweder bestehendes Signal auf Group Input ändern oder ein neues anlegen und Group Input auswählen.
Dann hast du die Möglichkeit bei Unit Mapping deine Bits anzugeben z.B. 0-15 (Eingang 1-16)
Im Backup Ordner unter SYSPAR findest du die EIO.cfg. Hier werden die IO-Daten abgelegt und man kann sie auch dort bearbeiten wenn man möchte. Dort sieht so ein GI dann so aus:
     
-Name "giSensor" -SignalType "GI" -Unit "BK5250" -UnitMap "0-15"

Gruß Z
  • gefällt mir    Danke

Heute um 20:24:22
Antwort #5

Werbung

Gast

23. April 2018, 12:03:12
Antwort #5
Offline

Programmiersklave


In RS unter "Device Mapping" einen Bereich angeben mit Bindestrich, "13-16" nimmt 13,14,15 und 16. 
In den jüngeren Versionen lässt sich das sogar auf mehrere Bereiche verteilen und wird dann trotzdem korrekt zusammengefasst.

Grüße,
Michael
  • gefällt mir    Danke

23. April 2018, 12:21:27
Antwort #6
Offline

newbiemechatronic


Hi,
vielen Dank für die Tipps. Ich bin gerade dabei alles zu programmieren und zu testen. 
Gruß
Bernhard
  • gefällt mir    Danke

23. April 2018, 16:59:54
Antwort #7
Offline

newbiemechatronic


Hi zusammen,
ich hab jetzt mein Programm um den Gruppeneingang erweitert und auch das Programm soweit angepasst, dass ich den Produktionsprozess durch den Gruppeneingang auswählen kann. Eine Frage hat sich jetzt aber noch bezüglich des Verkabelns noch ergeben. Ich verwende die Eingänge 12 bis 15 für den Gruppeingang. Ich bin mir aber nicht sicher wie das Signal aufgebaut ist. Gehe ich recht in der Annahme, dass der Eingang 12 das Least-Significant Bit ist und 15 das Most-Significant Bit?
Grüße
Bernhard
  • gefällt mir    Danke

24. April 2018, 08:11:40
Antwort #8
Offline

Programmiersklave


Ja. Kleinste Nummer -> Bit 0 (bzw. in Rapid bei den Bit-Operationen genannt Bit 1).

Grüße,
Michael
  • gefällt mir    Danke

Heute um 20:24:22
Antwort #9

Werbung

Gast


Teile per facebook Teile per linkedin Teile per pinterest Teile per reddit Teile per twitter
 

über das Roboterforum

Nutzungsbedingungen Impressum Datenschutzerklärung

Sponsoren des Roboterforums

ROBTEC GmbH