Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: UC mit Parameterübergabe

  1. #1
    Registriert seit
    28.08.2007
    Beiträge
    140
    Danke
    17
    Erhielt 13 Danke für 11 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich hab mal wieder ein Problemchen. Ich muss eine Modbus Kommunikation programmieren. Habe alles am Laufen, nur eine Kleinigkeit bereitet mir Kopfschmerzen. Ich habe die ganzen Modbusbausteine geladen. Der ModbusPN FB benutzt intern den FC10 (EQ_String). Ich habe den Baustein mal geöffnet (weiss auch nciht, auf mal war das Schloss weg ) und nach dem Aufruf gesucht. 2 Mal wird er aufgerufen:

    Code:
         UC    FC    10
                P#L 42.0
                P#L 48.0
                P#L 40.2
    Eigentlich kann man ja mit UC keine Parameter übergeben. Die Erstellsprache des Bausteins ist SCL. Er wird aber in AWL geöffnet obwohl ich den SCL Editor auch habe. Das Problem an der Stelle ist, dass ich den Baustein (FC10) mit einer anderen Nummer aufrufen will, da die Nummer in meinem Programm schon vergeben ist. Das kann ich zwar ändern, ist aber mit viel Aufwand verbunden und das Programm wird nachhaltig nicht mehr updatebar sein . Wenn ich nun aber den Aufruf ändere, bekomme ich die Parameter nicht mehr dran. Ich möchte so wenig wie möglich an dem Baustein ändern, da er nicht grad verständlich angezeigt wird und ich das Risiko einen Fehler einzubauen gering halten möchte.
    Hat da jemand ne Idee, das einfach zu lösen? Oder komme ich nicht drum herum, mir Temp. Variablen anzulegen, um den Aufruf per Call zu machen? Also die Daten an den Pointer Adressen direkt zu laden.

    Btw. dies ist der FB102 für Modbus Kommunikation über die interne PN Schnittstelle. Später soll es über eine CP gemacht werden um die Netze zu trennen. Weiß jemand ob dort der FC 10 vielleicht nicht benutzt wird? Habe den FB gerade leider nicht parat.

    Danke wie immer schon im Vorraus.
    Zitieren Zitieren UC mit Parameterübergabe  

  2. #2
    EyeQ ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    28.08.2007
    Beiträge
    140
    Danke
    17
    Erhielt 13 Danke für 11 Beiträge

    Standard

    Ok ich habe nun herausgefunden, dass das mit einem CP ganz anders programmiert wird und dort auch nicht der FC 10 verwendet wird. Somit habe ich ansich kein Problem mehr vorrausgesetzt, der Kunde ist bereit sich einen CP zu kaufen.

    Ich habe ein Demo Projekt von Siemens, generell funktioniert es anscheinend auch dauerhaft, wenn ich das richtig verstanden habe. Allerdings muss der Baustein offiziell lizensiert werden, sprich eine Lizenz von Siemens gekauft werden.

    Dennoch interessiert es mich, wie das mit dem UC und den Parametern zu Stande kommt. Liegt es daran, dass es in SCL programmiert wurde und nach AWL übersetzt wurde? Hatte da neulich schon mal etwas ähnliches mit einer S5 Konvertierung und alternativen Programmeditoren. Ich kann weder eine andere FC Nummer angeben und die Parameter dann übergeben, da diese einfach verschwinden. Noch kann ich die Parameter verändern. Wenn ich versuche den Parameter zu verändern, steht nach verlassen der Zeile wieder der alte Text da. Der Baustein lässt sich auch speichern und der Compiler meldet keine Fehler. Ob ich ihn auch laden kann, kann ich grad leider nicht testen.

    Gruß.

  3. #3
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.752
    Danke
    323
    Erhielt 1.527 Danke für 1.286 Beiträge

    Standard

    Das ganze ist sog. MC7-Code, das sieht nur auf den ersten Blick wie AWL aus,
    tatsächlich ist das aber nochmal eine Stufe Hardwarenäher als AWL.

    Letzten Endes wird jeder Bausteinaufruf so übersetzt, aber das ist im Regelfall natürlich für dich als Anwender nicht sichtbar,
    MC7-Code kann mit Step7 Boardmitteln auch nicht editiert werden.

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  4. Folgender Benutzer sagt Danke zu MSB für den nützlichen Beitrag:

    EyeQ (09.06.2012)

  5. #4
    EyeQ ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    28.08.2007
    Beiträge
    140
    Danke
    17
    Erhielt 13 Danke für 11 Beiträge

    Standard

    Danke. Ich musste feststellen, daß die Bausteine für die Kommunikation über cp andere Bausteine benutzt, die ebenfalls schon vergeben sind (ag_send und ag_recv). Mit der umverdrahten Funktion von step7 kann man anscheinend diese Baustein Nummern ändern. Auch in geschützten Bausteinen. Mal sehen ob das geklappt hat

    Gibt es ne Möglichkeit den code zu editieren? Oder ist das nur siemens vorbehalten? Reine Neugier.

    Gesendet von meinem GT-I9100 mit Tapatalk 2

  6. #5
    Registriert seit
    29.03.2004
    Beiträge
    5.800
    Danke
    144
    Erhielt 1.710 Danke für 1.240 Beiträge

    Standard

    Um das zu ändern müsstest du das ursprüngliche Call-Makro wiederherstellen.
    Bei Funktionen erfolgt die Parameterübergabe immer per Pointer. In deinem Beispiel befindet sich ab Adresse P#L 42.0 ein 6 Byte großer Pointer. Wie groß der Pointer ist hängt vom Datentyp des Parameters ab. Bei elementaren Datentypen <=4 Byte liegt an der Adresse direkt der Wert des Parameters.

    Die etwas seltsam anmutenden Zeilen mit P#x.y bei denen eigentlich nur ein Operand vorhanden ist und die Operation fehlt, habe ich mir so erklärt, dass es ähnlich der Parameterübergabe ist wie man das von C oder Pascal-Programmen her kennt. Dort werden je nach Aufrufkonvention die Funktionsparameter auf den Stack gepusht. Ich denke mit vor den P#x.y immer ein 'push' dazu. Zumindest würde ich es so in der Art umsetzen wenn ich einen MC7 Interpreter programmieren müsste

    Wenn du die Aufrufe also wirklich abändern willst, musst du auch noch den Bereich vor dem UC und auch nach dem letzten P#x.y beachten. Ist zwar nicht unmöglich das zu machen, aber man muss schon genau hinschauen.

  7. #6
    Registriert seit
    29.03.2004
    Beiträge
    5.800
    Danke
    144
    Erhielt 1.710 Danke für 1.240 Beiträge

    Standard

    Hab grad' noch einen Thread zu dem Thema gefunden in dem einige Informationen stehen:
    http://www.sps-forum.de/showthread.p...-Out-Variablen

    Wäre ja interessant zu wissen wo die Zeiger auf die Funktionsparameter abgelegt werden. Der Editor zeigt unter bestimmten Bedingungen im Info-Feld bei einem Funktionsparameter den Text "BLOCK_SDB" an, also ein Systemdatenbaustein.

  8. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    EyeQ (10.06.2012)

  9. #7
    EyeQ ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    28.08.2007
    Beiträge
    140
    Danke
    17
    Erhielt 13 Danke für 11 Beiträge

    Standard

    Danke werde da mal stöbern. Allerdings meinte ich, ob es da einen frei zugänglichen mc7 Editor gibt.

    Gesendet von meinem GT-I9100 mit Tapatalk 2

  10. #8
    Registriert seit
    29.03.2004
    Beiträge
    5.800
    Danke
    144
    Erhielt 1.710 Danke für 1.240 Beiträge

    Standard

    Zitat Zitat von EyeQ Beitrag anzeigen
    Danke werde da mal stöbern. Allerdings meinte ich, ob es da einen frei zugänglichen mc7 Editor gibt.
    Den Baustein in ein separates Projekt kopieren, dann mit einem Hexeditor die subblk.dbt öffnen und nach 0x3d 0x0a suchen, und 0x0a durch gewünschte Nummer ersetzen

    Nein, das einzige was es in der Richtung gibt ist die Toolbox von Jochen Kühner. Aber direkt den MC7 bearbeiten kannst du damit auch nicht, und für den Einsatz an Kundenbausteinen ist das vom Jochen sicher (noch) nicht freigegeben.
    Ich würde da auch nicht mit dem Hexeditor dran rumfummeln. Für Informations- und Testzwecke OK, aber ich weiß nicht was passiert wenn du einen so modifizierten Baustein dann in eine reale SPS schiebst. Denn spätestens beim Übertragen wird eine Bausteinprüfsumme gebildet, und ich habe keine Ahnung ob diese dann noch korrekt berechnet wird.

  11. #9
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.759
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    Den Baustein in ein separates Projekt kopieren, dann mit einem Hexeditor die subblk.dbt öffnen und nach 0x3d 0x0a suchen, und 0x0a durch gewünschte Nummer ersetzen

    Nein, das einzige was es in der Richtung gibt ist die Toolbox von Jochen Kühner. Aber direkt den MC7 bearbeiten kannst du damit auch nicht, und für den Einsatz an Kundenbausteinen ist das vom Jochen sicher (noch) nicht freigegeben.
    Ich würde da auch nicht mit dem Hexeditor dran rumfummeln. Für Informations- und Testzwecke OK, aber ich weiß nicht was passiert wenn du einen so modifizierten Baustein dann in eine reale SPS schiebst. Denn spätestens beim Übertragen wird eine Bausteinprüfsumme gebildet, und ich habe keine Ahnung ob diese dann noch korrekt berechnet wird.
    Wie Zottel schreibt ist das wandeln von AWL zurück zu MC7 leider noch nicht implementiert (nur rudimentär von 2 Byte Befehlen ohne Parameter!). Aber im Moment arbeitet da wohl einer in der Richtung an meiner Lib (http://siemensplctoolboxlib.codeplex...ussions/354898).

    Aber eigendlich stimmt die Wandlung vom Step7 Editor da nicht, es dürft da nicht P#L x.x stehen, sonder P#V x.x da auf die Vorgängerlokaldaten verwiesen wird. (Ok, in dem aufrufenden Baustein sind es die aktuellen, aber Zeiger ist auf die Vorgänger!)
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  12. #10
    Registriert seit
    29.03.2004
    Beiträge
    5.800
    Danke
    144
    Erhielt 1.710 Danke für 1.240 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wie siehts denn mit der Bausteinprüfsumme aus, weißt du wie die gebildet wird?
    Mit dem Step7 Editor kann man diese ja nicht mehr erzeugen lassen, da nicht mehr abspeicherbar.

Ähnliche Themen

  1. FC's mit Parameterübergabe
    Von Gini im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 10.09.2009, 09:39
  2. Parameterübergabe FB <-> HMI
    Von eYe im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 22.03.2009, 11:38
  3. Parameterübergabe an Fremdsteuerung
    Von Deep Blue im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 03.11.2008, 12:44
  4. Parameterübergabe mit CALL FCx
    Von lastweb im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 25.01.2007, 21:43
  5. S7 200: SBR (CALL) mit Parameterübergabe
    Von Willu im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 09.07.2006, 22:45

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •