übergabe sps INT Wert an Variable für Switch Case

  • Hallo
    Wie der Titel schon sagt möchte ich von der SPS (Ausgangswort, Datentyp Word) einen Integer Wert auf den Roboter Eingang (= ein Eingangswort mit Datentyp Word) übergeben. Nun meine Frage wie kann ich diesen Roboter Eingang mit dem übergebenen Integer wert von der SPS auf eine Variable zuweisen die mein Switch Case steuert?
    Gruß
    Frozen

    Einmal editiert, zuletzt von Frozen1909 ()

  • Schritt für Schritt zum Roboterprofi!
  • Spiral das hab ich schon probiert hat aber nicht geklapt, habe den wert von der sps BCD16 auf dem Roboter Eingang übergeben, die Bits wurden gesetzt.
    @run
    das == bedeutet doch gleichheit/identisch? ist also eine Vergleichsoperation ich möchte den wert direkt auf die Variable schreiben um je nach INT wert das Switch Case 1, 2, 3... aufzurufen
    oder ist in der KRL == eine Variablenzuweisung?

  • Das Beispiel von Spiral muss funktionieren, sonst ist irgendwas anderes faul.
    Man kann sich den Wert der Eingänge auch über 'Anzeige-Variable-Einzeln' live ansehen, dort einfach den Namen 'wert_von_sps' eintragen.
    Meistens ist da high-/lowbyte vertauscht, da muss man dann entweder in der E/A-Verschaltung im Roboter, oder in der SPS vor dem Rausschreiben (per TAW, bei Siemens-SPS) tauschen.

  • Ich würde den wert nicht als BCD übergeben sondern in Integer wandeln und übergeben, dann muss es wie von Spiral aufgezeigt funktionieren!
    Ansonsten, wie Hermann geschrieben hat, liegt es an den vertauschten Bytes welches du dann in der SPS mit TAW vor der Übergabe drehen musst.

  • [size=2]Danke das mit den High und low bit vertauschen hat geklappt.[/size]
    [size=2]Noch ein frage habe ich wie kann die Switch Case variable welche von dem SPS eingang übergeben wird neu Initialisiert werden?[/size]
    [size=2]Der Wert auf dem SPS Eingang wird immer dann aktualisiert wenn der Roboter das Bauteil Platziert hat und soll dan das nächste teile vom Platz zwei holen usw.


    [/size]
    [size=2] [/size][size=2]mein Programm ist so aufgebaut: (BecherNr= die INT Variable welche mit dem SPS Eingangswort beschrieben wird)[/size]



  • Da versagt die Glaskugel.
    Für eine Antwort sollte man wissen wie die Variable BecherNr deklalriert ist.
    Wenn das in etwa so
    Signal BecherNr $in[1] to $in[16]
    sein sollte, dann wird die automatisch aktualisiert. Dann muss man nur darauf achten, dass vor dem Abarbeiten der Instruktion Switch BecherNr die Eingänge den richtigen Wert haben. Da kann man sich recht leicht ein Timingproblem einhandeln, wenn das ganze im Vorlauf durchgeführt wird. Für einen Test vor dem Switch mal ein Wait Sec 1 einfügen. Das stoppt den Vorlauf, und die SPS hat etwas Zeit den Wert neu zu setzen.

  • Die INT Variable am Anfang auf Null setzen, danach in einer repeat UNTIL Schleife abfragen ob ein Wert von der SPS gekommen ist. Wenn UNTIL TRUE, dann das Programm fortsetzen.


    Gesendet von meinem SM-G900F mit Tapatalk

  • Danke für den tip mit repeat, nun ich habe den Fehler gefunden. Die Becher Nummer wurde nur einmal initialisiert da ich sie ganz oben im FOLD USER INI deklariert habe. Nun habe ich das in der Schleife gemacht und davor wie Hermann sagte ein Wait eingebaut nun Funktioniert es. Vielen Dank für eure Hilfe.
    meine Frage noch ob ich die Repeat Schleife auch mit eine EXIT verlassen kann. Bzw. das geht mit 2 Exit Kriterien? Oder sollte ich besser beim LOOP bleiben?



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