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

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

Thema: B&R: Umfangr. C-Programm einbinden

  1. #1
    Registriert seit
    16.11.2009
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen

    Ich kenne mich nur sehr wenig mit einer B&R Steuerung bzw. dem B&R Automation Studio aus und bin bei meiner Bachelorarbeit auf ein Problem gestoßen. Und zwar habe ich einen Regler in C-Code vorliegen.
    Dieser besteht aus mehr als 10 *.h und etwa 5 *.c Dateien und insgesamt über 7000 Zeilen Code mit entsprechend vielen Variablen.

    Jetzt würde ich gerne diesen Regler als Funktion oder Funktionsbaustein ins Automation Studio einbinden.

    Die erste und wichtigste Frage: Ist das überhaupt möglich? Denn in diesem C-Code werden wild Variablen und Zeiger deklariert und was ich bisher gesehen habe ist, dass jede Variable im Automation Studio in einer Variablen Liste eingetragen werden muss.

    Also die Steuerungshardware muss das ja können (x86 Prozessor 400Mhz etc.), aber lässt das Studio diese dynamische Speicheradressierung und allokierung zu?
    Sprich: Es ist unmöglich (und unsinnig) alle Variablen die im C-Code benutzt werden händisch in die Steuerung einzutragen. Kann der Code trotzdem eingebunden werden?

    Würde mich über eine Antwort freuen
    Grüße
    Epimetheus
    Zitieren Zitieren B&R: Umfangr. C-Programm einbinden  

  2. #2
    Registriert seit
    19.10.2009
    Beiträge
    194
    Danke
    8
    Erhielt 50 Danke für 44 Beiträge

    Standard

    Hallo Epimetheus,

    Portierung con C-Code ins TwinCAT hab ich schon mal gemacht. In ST kann man fast genauso frei programmieren wie in C, mit Pointern und Speicherzugriffen. Nur dynamische Speicherverwaltung gibt es nicht, aber man kommt auch ohne aus, wenn man muss.

    Ausserdem gibt es für TwinCAT zahlreiche Tool-Librarys mit universellen und spezialisierten Regler-, Filter- und Hilfs-Bausteinen. Sowohl kommerziell (z.B. von Beckhoff) als auch Open Source. Das erlaubt effizientes Programmieren von Reglerstrukturen.

    Soviel zur Info, falls du auf die Idee kommst deine Aufgabe in TwinCAT oder CodeSys zu lösen (wo du schon in dieses Forum gepostet hast).

    Gruß,
    witkatz

  3. #3
    Registriert seit
    10.05.2005
    Beiträge
    1.996
    Danke
    220
    Erhielt 233 Danke für 204 Beiträge

    Standard

    Hi

    Benötigst du "NUR" einen PID-Regler.


    Falls ja, hier mit ST-Quellcode.

    www.oscat.de


    Ich hoffe deine Steuerung kann ST
    Karl

  4. #4
    Epimetheus ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    16.11.2009
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Sorry...wollte eigentlich in "Sonstige Steuerungen" posten. Geht ja um B&R und Automation Studio. TwinCat hab ich noch nie gehört. Mal googlen
    danke

    PS: Sehe schon. Ist für Beckhoff Steuerung...war auch zu erwarten wenn ich ins falsche Forum poste^^
    Mit PID komme ich nicht weiter. Ist ein Fuzzy Regler...
    Geändert von Epimetheus (16.11.2009 um 20:59 Uhr)

  5. #5
    Registriert seit
    03.10.2009
    Beiträge
    62
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Epimetheus Beitrag anzeigen
    Sorry...wollte eigentlich in "Sonstige Steuerungen" posten. Geht ja um B&R und Automation Studio. TwinCat hab ich noch nie gehört. Mal googlen
    danke

    PS: Sehe schon. Ist für Beckhoff Steuerung...war auch zu erwarten wenn ich ins falsche Forum poste^^
    Mit PID komme ich nicht weiter. Ist ein Fuzzy Regler...
    Hallo, hab eine ganz ähnliche Aufgabe. Ich will eine Modbus TCP Bilbiothek, in C geschrieben, in ein Automation Studio Programm einbinden. Ist zwar nicht so groß wie dein Programm, hat ein paar *.c und *.h Dateien und ca. 1000 Zeilen Code, aber es wäre trotzdem toll zu erfahren wie du vorgehst.
    Ich werd mich morgen an die Arbeit machen und werd mich melden, wenn ich was rausfinde!

  6. #6
    Epimetheus ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    16.11.2009
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Super. Werd mich auch melden wenn ich was weiß.

    Wäre praktisch wenn ein Moderator den Thread verschieben könnte...

  7. #7
    Registriert seit
    03.10.2009
    Beiträge
    62
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    So, hab schon das erste Problem!
    In meiner C- Datei werden folgende Dateien includiert:
    #include <sys/socket.h>
    #include <sys/ioctl.h>
    #include <netinet/in.h>
    #include <netinet/ip.h>
    #include <netinet/tcp.h>
    #include <arpa/inet.h>
    Jetzt weiß ich nicht genau wo ich die her bekommen. Ich vermute ja, dass ich die irgendwie durch Bibliotheken aus dem Automation Studio ersetzen muss. Hab da leider noch nicht so viel Ahnung von.

  8. #8
    Epimetheus ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    16.11.2009
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Habe folgendes in der Hilfe gefunden:

    Code:
    Mit den Makros _LOCAL und _GLOBAL können Sie lokale und globale 
    Variablen definieren. Sie müssen jedoch darauf achten, 
    dass diese Variablen als globale C-Variablen deklariert werden, 
    d.h. außerhalb von Funktionen.
    Richtige Definition:
    #include <bur/plc.h>
    int _LOCAL Variable_1;
    int _GLOBAL Variable_2;
    void _CYCLIC test( void )
    {        /* Zyklischer Teil des C-Objektes */}
    Ich lese daraus: Variablen MÜSSEN über die Makros eingebunden werden. Für mich kommt das leider nicht in Frage, da mein Code automatisch von MatLab erzeugt wird. Bei jeder Änderung im Modell wären auch die Änderungen im Code weg. Aber für diejenigen die auch MatLab RTW Code in eine B&R Steuerung einbinden wollen: Es gibt dafür ne Toolbox von B&R. Aus dem Modell wird automatisch ein FUB gebaut. Total praktisch...nur hab ich das leider nicht *argh*

    Grüße

  9. #9
    Registriert seit
    03.10.2009
    Beiträge
    62
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Wie wird das mit den Headerdateien gemacht? Müssen die gegen die von B&R ausgetauscht werden, oder kann ich die einfach von irgendwo in den Projektordner kopieren und dann einbinden?

  10. #10
    Epimetheus ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    16.11.2009
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Du kannst die Header Dateien nehmen, die extern zu deinem TCP Kram gehören. Schau mal in der B&R Hilfe unter Library einfügen nach und da dann nach Funktion oder Funktionsbaustein einfügen. Da sind kleine Beispiele aufgeführt. Zu einem FUB kannst du beliebig viele externe Header Dateien hinzufügen. Aber wie gesagt: In Header Dateien werden häufig auch Variablen deklariert. Aber Variablen müssen anscheinend mit _local oder _global kenntlich gemacht werden.

    Aber ich weiß nicht wie das praktisch aussieht. Vielleicht können die Header gleich bleiben, aber spätestens in der .c Datei, in der sich das Hauptprogramm befindet, musst du die Variablen alle für die B&R Steuerung kenntlich machen und aus den Funktionen rausschreiben und vor die Funktionen setzen. Ich hab das aufgegeben. Programmier das jetzt selber in einer abgespackten Version
    Geändert von Epimetheus (18.11.2009 um 10:36 Uhr)

Ähnliche Themen

  1. FM 357-2 NC-Programm einbinden
    Von The Dude im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 30.05.2011, 09:13
  2. Antworten: 8
    Letzter Beitrag: 09.12.2010, 18:08
  3. C-Obj in ST einbinden?
    Von MarkusB im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 22.06.2010, 23:05
  4. Programm einbinden in WinCC flexible
    Von luker im Forum HMI
    Antworten: 6
    Letzter Beitrag: 20.07.2007, 09:37
  5. Antworten: 0
    Letzter Beitrag: 05.10.2006, 13:56

Lesezeichen

Berechtigungen

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