Kommunikation VIPA -> KUKA über 1 Byte

olitheis

Level-1
Beiträge
488
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich möchte mit einer VIPA SPS mit einem KUKA "kommunizieren" (nur in Richtung KUKA). Dazu stelle ich jetzt 1 byte Ausgänge von der SPS zur Verfügung (Hardware verdrahtet zum Roboter).
Dazu habe 2 Fragen:

1. Wie kann ich am Einfachsten realisieren, dass eine Zahl von '1-256' BCD Codiert auf das Byte geschrieben wird? Gibt es eine Möglichkeit eine Ganzzahl 8bit in ein byte zu wandeln?

2. Ich habe gesehen, es gibt auf der Seite von sps-concept einen Parity check Baustein für ein Byte. Allerdings ist der Download gesperrt. Vielleicht kann mir ja einer von euch hier weiterhelfen. Ein Parity check wird von der Steuerung verlangt.

Vielen Dank
Oli
 
Ich verstehe zwar nicht ganz, was das Problem ist aber mal Folgendes.

Nimm MW10 schreib die Zahl rein, dann ITB dann hast du im MB10 die Zahl BCD-codiert stehen. Das Byte auf das Ausgangsbyte, fertig.

Was willst du da Parity-Checken??? Oder soll das Seriell übertragen werden? Oder soll noch ein Byte mit der Checksumme folgen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
BCD mit Byte, welches ja 8 Bit sind, geht nur bis 99.
Also Ganzzahl 8 Bit ist ein Byte und hat unsigned den Wertebereich 0 - 256, signed von -128 bis +127. Das ist aber eine Sache, wie das der KUKA auswertet. Da Ihr nur Ausgänge an den Rob, aber keine Eingänge habt, läßt sich keine Handshake-geführte Übetragung aufbauen.

Parity kann man machen, wenn man nur 7 Bit für den Wert und Bit 8 für Parity verwendet, aber dann ist BDC-mäßig nur ein Wert möglich.
 
Zuletzt bearbeitet:
8 bit Ganzzahl in BCD umwandeln

Hallo,
ich möchte über 8 Ausgänge einer VIPA mit einem KUKA "kommunizieren". Mit den 8 bit sollen logischerweise die Ganzzahlen 1-255 übertragen werden können.
1. Im KUKA sind also beispielsweise 20 Programme hinterlegt, die je nach dem in einer bestimmten Reihenfolge angefahren werden sollen. Z.B.: Ein Produkt erfordert die Programme 2-4-7-3-8-3-4 in dieser Reihenfolge. Der KUKA bekommt also von der SPS die Programme BCD Codiert über die 8 Ausgänge vorgegeben, schön der Reihe nach. Also er fäht Prog 2 ab, wenn er damit fertig ist, fährt er 4 ab usw...
Wie kann ich also auf einfachster Weise die Ausgänge ansteuern? Vielleicht hat soga jemand ne Idee, wie ich das mit den Schritten machen kann (Start-P2-P2 fertig-P4-P4 fertig-P7....).
2. ich habe auf der Seite von sps-concept gesehen, dass es dort einen Parity check Baustein gibt. Leider nicht zum Download freigegeben. der Roboter erfordert das auch. Wie kann ich denn den Parity Check und dieses Parity bit realisieren.

Würde mich echt freuen, wenn ihr mir weiterhelfen könnt.
Danke
Oli
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit ein BCD Wert an 8 ausgangen is das max wert kein 255 mar maximal 99

in beilage ein beispiel miet ein INT_BCD umwandlung und ein Pariteid check von de BCD wert.
NW 2 = NW1 aber hier ist die LOOP function gebrauch fur das tellen der bits welche hoch sind.
In dieser beispiel werd das Pariteitsbit gesets bij ONEVEN wenn sie ein EVEN Pariteits bit haben must musten sie
U [AR1,P#1.0]
= #Pariteits_bit

anderen in

UN [AR1,P#1.0]
= #Pariteits_bit
 

Anhänge

  • FC 53 INT -- BCD + Pariteit check.pdf
    7,2 KB · Aufrufe: 27
das kann man imKuka ändern. Ich weiss nicht genau wo in der parameterliste, aber dort wo BCD steht kann man BINARY eintragen!
 
Typ

Hallo,

du kannst in der Variable PGNO_TYPE einstellen ob das Programm als Binärwert, BDC-Wert oder als 1 aus n ausgewertet werden soll.

André
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Noch ein Thread

@olitheis

Wieviele Threads zu dem Thema willst du noch starten.
Die präzisere Formulierung hättest du auch hier anhängen können.
Daher lege ich das Ganze zusammen.
 
Tut mir leid, dass ich zwei Threads angefangen habe. Das ist irgendwie schief gelaufen. Ich hatte das Thema geschrieben und nachher nicht mehr wiedergefunden. Ich dachte, ich hätte vergessen es zu übernehmen. Da habe ich es nochmal geschrieben, sorry.
 
Kein Problem. :cool:
Du kannst im übrigen auf deinen Namen klicken und dann unter Statistiken alle Themen raussuchen, die du gestartet hast sowie auch alle Beiträge von dir.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe das mit der BCD Wandlung so gelöst:
Code:
L     MW     3                    // Programmvorwahl 1-99
ITB                                 // umwandeln in BCD Code
T     AB    13                    // auf Ausgangsbyte schreiben

Paritätsbit:
Code:
CLR                                 // Verkettung auf 0 setzten
X     A     13.0                  // Einzelbits auf XOR
X     A     13.1
X     A     13.2
X     A     13.3
X     A     13.4
X     A     13.5
X     A     13.6
X     A     13.7
=     A     14.0                  // Paritätsbit --> gerade
Ich denke, dass sollte so gehen.

Aber, ich habe da schon die nächste Frage :):

In meinem Fall habe ich 2 Roboter (R1+R2), die sich die Bearbeitung teilen und jeder Roboter kann, sagen wir mal, max. 30 Bearbeitungsschritte ausführen (also eine Liste mit insgesamt 60 Schritten).
So, der Bediener soll jetzt über ein Panel vorgeben können, welche Schritte in welcher Reihenfolge ausgeführt werden können/sollen.
Die eigentliche Bearbeitung des Teils kann max. 10 Schritte beinhalten. Ich dachte mir jetzt, ich erstelle eine Eingabemaske mit 10 Schritten, wo der Bediener die Schritte einträgt.
Es könnte also so aussehen:

Step1 - Nr. 3 (Programm 3-R1)
Step2 - Nr. 24 (Programm 24-R1)
Step3 - Nr. 57 (Programm 57-R2)
Step4 - Nr. 80 (Programm 80-R2
Step5 - Nr. 13 (Programm 13-R1)
Step6 - Nr. 1 (Programm 1-R1)
Step7 - Nr. 99 (Programm 99-R2)
Step8 - Nr. 12 (Programm 12-R1)
Step9 - Nr. 13 (Programm 13-R1)
Step10 - Nr. 14 (Programm 14-R1)

(Programm 1-30 fährt Roboter 1, Programm 31-60 fährt Roboter 2)

Wie realisiere ich das jetzt in Step7? Ich meine, ich habe ja dann verschiedene Ganzzahlen, die ich BCD Codiert auf 2x8 Ausgänge in einer bestimmten Reihenfolge schreiben muss:
-> Die Bearbeitung wird gestartet
-> Roboter 1 startet mit Programm 3 (BCD Code entsprechend auf AB11
-> Roboter 1 meldet Bearbeitung fertig
-> Roboter 1 startet Programm 24 (BCD CODE wieder auf AB11
-> Roboter 1 meldet Bearbeitung fertig
-> Roboter 2 startet Programm 57 (BCD CODE auf AB13
-> Roboter 2 meldet Bearbeitung fertig
-> Roboter 2 startet Programm 80 (BCD CODE wieder auf AB13)
usw. bis alle 10 Schritte abgearbeitet wurden
Wo ich jetzt noch etwas den Knoten im Kopf habe, ist wie ich jetzt nach einander die verschiedenen BCD CODES auf nur einen AB schreiben kann. Also erst die 3 auf AB11, dann die 24 auf AB11, dann die 57 auf AB13 usw.

Wie kann ich das am geschicktesten realisieren?
Einen Schritt nach dem anderen und jeweils die Programmnummer auf die beiden Ausgangsbytes AB11 und AB13 schreiben.

Nochmals vielen Dank
Oli
 
Deine Stichwörter für die Suche hier im Forum wären erst einmal, "Schrittkette" , danach "Sprungleiste". Wenn du die diese Dinge angesehen hast, wirst du schon viel klarer sehen.

Eine Schrittkette tut genau, was du suchst. Sie arbeitet einen Schritt nach dem anderen ab, wobei eine Schrittweiterschaltung immer dann erfolgt, wenn der Schritt seine Arbeit erledigt hat, die Weiterschatbedingungen also erfüllt sind.

Bsp:

1. Starschritt, Initialisierungen von Daten etc.
2. Schritt 1: Zahl X1 in MW, warten daß Robbi fertigmeldet, dann
Weiterschaltung zu Schritt 2
3. Schritt 2: Zahl X2 in MW, warten daß Robbi fertigmeldet, dann
Weiterschaltung zu Schritt 3
...

11. Schritt 10: Zahl X10 in MW, warten daß Robbi fertigmeldet, dann
Weiterschaltung zu Endschritt
12. Ende: Aufräumen und raus aus der Schrittkette

Außerhalb der Schrittkette nimmst du das MW und überträgst es in das Ausgangswort, wie du es ja schon programmiert hast.

PS. Ich würde zumindest noch ein ordentliches Handshake mit dem Robbi einbauen.

Also Startbit von der SPS an Robbi, wenn das AB geschrieben ist, Fertigmeldung vom Robbi, dann SPS Start zurücknehmen, daraufhin muß auch der Robbi seine Fertigmeldung zurücknehmen. Nun kanns wieder losgehen. Evtl. noch eine Betriebsbereitmeldung vom Robbi.
 
Zurück
Oben