Einbinden von Code aus MATLAB/ Simulink-Modellen

Sarah
2011-01-11
2011-01-12
  • Sarah - 2011-01-11

    Hallo alle miteinander,

    ich bin neu (fast gar keine CoDeSys-Erfahrung) und hab gleich eine Frage, bei der ich Eure Hilfe brauch.

    Ich habe mit MATLAB/ Simulink ein Berechnungsprogramm entwickelt, mit dem Simulink PLC Coder (Mathworks Produkt) dieses in strukturierten Text für CoDeSys umsetzen lassen und möchte die resultierende Datei (.exp-Datei) nun in eine CoDeSys-Umgebung mit anderen Modulen einbinden. Importiert ist es schon, war unproblematisch. Dummerweise erwartet das Modul mit dem MATLAB-Programm als ersten Input ein Signal (ähnlich einem Triggersignal), welches die sogenannte Methode angibt (für den ersten Durchlauf soll der Wert 0 das Programm initialisieren, ab den zweiten Durchlauf erfolgt die Berechnung, wenn das Signal den Wert 3 hat).
    Genau an dieser Stelle komme ich nicht weiter, da ich mit CoDeSys wie gesagt auch kaum Erfahrungen habe. Kann mir an dieser Stelle jemand helfen? Ich nehme gern jeden Tipp und jeden Hinweis, Erfahrungsberichte wären super.

    Vielen Dank im voraus und beste Grüße,
    Sarah

     
  • Erik Böhm - 2011-01-11

    Moin
    Ich würde dir ja gerne helfen, wenn ich wüsste was das Problem ist...
    Für mich sieht das so aus, als ob dein Baustein (PRG oder FB oder Funktion ?) eine Input Variable benötigt, die beim 1. Durchlauf 0 ist.
    Das dürfte ja nicht das Problem sein, oder ?
    Diese Variable nach dem 1. Durchlauf auf 3 zu setzen ist ja auch nicht wirklich schwierig.

    Was ist also dein Problem ?

    Gruß
    Erik

     
  • Sarah - 2011-01-12

    Nagut, für einen regelmäßigen Nutzer wahrscheinlich ein Kinderspiel, aber da ich noch nicht sehr viel mit CoDeSys gemacht habe, weiß ich nicht recht, wie ich's angehen soll.
    Die Logik für diesen benötigten Inputgeber hast du schon ganz richtig dargestellt. Wie kann ich das nun am besten/ elegantesten umsetzen? Einen vordefinierten Block in der Library gibt's dazu ja auch nicht.
    Ach so, mein Baustein ist FB.

    Vielen Dank und besten Gruß!
    Sarah

     
  • Erik Böhm - 2011-01-12

    Servus

    Deklarationsteil:

    VAR_INPUT
    iStartTrigger: INT := 0; ( Variable deklarieren und mit NULL vorbelegen. Setzen auf NULL kann auch von ausserhalb geschehen, mit "FB_Name.iStartTrigger := 0;" )
    END_VAR

    Rumpf:

    if iStartTrigger = 0 then
    iStartTrigger := 3;
    end_if

    Gruß
    Erik

     
  • Sarah - 2011-01-12

    Hab vielen Dank, ich werd deinen Vorschlag gleich mal ausprobieren.

     

Log in to post a comment.