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

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

Thema: preprozessor direktiven auf B&R

  1. #1
    Registriert seit
    26.03.2007
    Beiträge
    67
    Danke
    6
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo nochmal,

    ich hab jetzt probiert, in meinem C- Code auf einem B&R PP41 preprozessor- direktiven einzubauen aber leider mag das der Kompiler nicht,
    weiß jemand wie ich das machen kann, dass nur bestimmter Code compiliert wird?
    Ich möchte eben nur den if- zweig oder den else- Zweig kompilieren:
    (sg4 == 1) ? anzahl = rxbuffer[5] + rxbuffer[4]*256 : memcpy(&start, rxbuffer[4], 2);

    Vielen Dank!!

    lg
    Hannes
    Zitieren Zitieren preprozessor direktiven auf B&R  

  2. #2
    Registriert seit
    28.04.2005
    Beiträge
    206
    Danke
    22
    Erhielt 17 Danke für 14 Beiträge

    Standard

    Der C-Compiler unterstützt soweit ich weiß keine preprocessor-options. Mach doch einfach über ein #define (das unterstützen die komischerweise) eine Variable die du je nachdem Umänderst.

    Dann compiliert er zwar beides, aber arbeitet nur den einen Strang ab.

    MFG

    Markus
    Geändert von da_kine (18.06.2007 um 13:57 Uhr)

  3. #3
    Registriert seit
    22.03.2007
    Ort
    Niederlande
    Beiträge
    45
    Danke
    3
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Hallo Hannes,
    schau Dir mal meine Antwort an in 'B&R SG3 auf SG4'
    (http://www.sps-forum.de/showthread.php?t=13993&page=2).
    Der Kompiler kompilert den source code der im task steht, mehr nicht.
    Wir wollen doch wohl nicht in WINDOWS Traeumen denken, oder ????
    Sonst holst Du Dir all den Mist in ein Runtime System den Du von
    Windoof kennst. Moechtest Du das auf einer Maschine oder Einheit
    wo es villeicht auch noch um die Sicherheit des Bedieners geht.
    Zitat Bill Gates:
    "es wird niemals ein Betriebssytem geben das mehr als 640 KB Speicher noetig hat"
    Der dachte auch kompilieren ist sooo einfach *grins.
    Ich denke nicht. Also versuche sauber zu denken. Alles was der
    Kompiler vermurksen kann tut er auch. Eigene Erfahrungen....
    Schau Dir mal die Lib Funktionen an. Dann kommst Du darauf wie
    einfach das Problem zu loesen ist.
    Alles ist (un)moeglich, letztendlich bist Du selbst der (un)Faktor
    Zitieren Zitieren Re:  

  4. #4
    Hannes ist offline Benutzer
    Themenstarter
    Registriert seit
    26.03.2007
    Beiträge
    67
    Danke
    6
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat >Schau Dir mal die Lib Funktionen an. Dann kommst Du darauf wie
    einfach das Problem zu loesen ist.<

    Was meinst du damit? kannd ir da nicht ganz folgen und ich dnek mir auch, wenn Preprozessor- Direktiven unterstützt werden, dass dient ja auch dem Platz sparen, da das abzuarbeitende Programm kleiner wird und man mehrere Programme auf einer SPS laufen lassen kann.

    lg

  5. #5
    Registriert seit
    22.03.2007
    Ort
    Niederlande
    Beiträge
    45
    Danke
    3
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Hallo Hannes,

    Zitat Zitat von Hannes Beitrag anzeigen
    wenn Preprozessor- Direktiven unterstützt werden, dass dient ja auch dem Platz sparen, da das abzuarbeitende Programm kleiner wird und man mehrere Programme auf einer SPS laufen lassen kann.

    lg
    Definitiv NEIN. Die CPU PP220 hat genung Performance um damit eine ganze Raumstation zu steueren. Gewusst wie und mit welchen Bordmitteln.

    switch (step) sagt Dir etwas.
    Ok dann frage mit Hilfe der Lib die TargetType ab (sg3 oder sg4)
    zwei mal
    if target_type == sg3
    {
    blabla source code
    }
    else if target_type == sg4
    {
    blabla source code
    }

    Der blabla source code ist der fuer Dein sg4 oder sg3 System.
    Innerhalb dieses codes arbeitest Du mit switch Anweisung.

    Das ganze Programm, besser der ganze task sollte keine 10K gross
    sein, incl. aller Abfragen und der Kontrolle.

    Gruss,

    Mike
    Alles ist (un)moeglich, letztendlich bist Du selbst der (un)Faktor
    Zitieren Zitieren Re:  

  6. Folgender Benutzer sagt Danke zu mike_nl für den nützlichen Beitrag:

    Hannes (18.06.2007)

  7. #6
    Hannes ist offline Benutzer
    Themenstarter
    Registriert seit
    26.03.2007
    Beiträge
    67
    Danke
    6
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Ja, so hab ichs jetzt eh gemacht, ich wollte halt nur Platz sparen mit den Direktiven aber es ist so auch ok,

    Vielen Dank für deine Tipps!!!!

    lg
    Hannes

  8. #7
    Registriert seit
    22.03.2007
    Ort
    Niederlande
    Beiträge
    45
    Danke
    3
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Hallo Hannes,

    kein Problem, gern geschehen.....

    Gruss,

    Mike
    Alles ist (un)moeglich, letztendlich bist Du selbst der (un)Faktor
    Zitieren Zitieren Re:  

  9. #8
    Hannes ist offline Benutzer
    Themenstarter
    Registriert seit
    26.03.2007
    Beiträge
    67
    Danke
    6
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo nochmal,

    ich muss euch bzw. auch mich korrigieren,
    PreprozesseoDirektiven sind auf der B&R SPS definitiv möglich mit

    #ifdef
    #else
    #endif

    Mein Problem war, dass ich #endif vergessen habe.

    Also Preprozessor verwenden, dann werden die Programme deutlich kleiner, ich habs schon ausprobiert

    lg

  10. #9
    Registriert seit
    29.07.2005
    Ort
    Salzburg
    Beiträge
    113
    Danke
    2
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Hallo Hannes,
    natürlich werden PrePro-Anweisungen unterstützt, im Hintergrund verrichtet niemand anderer als ein stinknormaler GNU Compiler seine Arbeit (zumindestens bei C-Sourcen).

    Also Preprozessor verwenden, dann werden die Programme deutlich kleiner, ich habs schon ausprobiert.
    Das kommt auf den Anwendungsfall an, #ifdef #else #endif setze ich mittlerweile recht selten ein (ausgenommen in Headerfiles). Früher benutzte ich sie für meine Libraries. Damals hatte ich ein gemeinsames Projekt für beide Zielplattformen. Da mit der Zeit dies aber ziemlich unübersichtlich wurde (mit kräftiger Hilfe von B&R ), trennte ich diese auf (mittlerweile gibts ja ne dritte Zielplattform namens SGC ). Gemeinsamer Code kommt in eine gemeinsame Datei, plattformabhängiger jeweils in eine eigene.

    Betreff der Grösse von Programmen
    a) mach ich mir keinen Kopf da ich erst einmal bei einer CP470 (so ziemlich die schwachbrüstigste CPU von B&R) in Bedrängnis gekommen bin.
    b) werfe ich eher,wenn überhaupt, auf die Ausführungszeit ein Auge (Stichwort Profiler)

    Das einzige Argument das mir, betreff der Grösse, im Moment einfällt wäre die Downloadzeit wenn ich seriell mit der CPU verbunden bin.

    Obwohl ich mir jetzt nicht ganz sicher bin ob dir das bei deinem Vorhaben helfen kann, aber hast du schon mal die Schemas näher betrachtet? Ich hatte mal ein Projekt bei dem ich diese recht nützlich einsetzen konnte.

    Grüsse, harrylask

  11. #10
    Hannes ist offline Benutzer
    Themenstarter
    Registriert seit
    26.03.2007
    Beiträge
    67
    Danke
    6
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Was meinst Du jetzt genau mit Schemas??

    lg
    Hannes

Ähnliche Themen

  1. Themen zum Preprozessor
    Von Barnee im Forum Hochsprachen - OPC
    Antworten: 12
    Letzter Beitrag: 08.02.2006, 06:52

Lesezeichen

Berechtigungen

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