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

Ergebnis 1 bis 6 von 6

Thema: Mit LibNoDave eigenes Programm erstellen

  1. #1
    Registriert seit
    28.11.2011
    Beiträge
    6
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen!
    Ich bin neu hier und brauche dringend eure Hilfe!
    Ich sitze gerade an meiner Bachelor-Arbeit und soll mich jetzt noch mit LibNoDave beschäftigen.
    Erst einmal zu den Dingen, die mir zur Verfügung stehen:

    Siemens CPU 313 C
    Siemens CP 343-1 Lean

    An der CPU sind schalter für die Eingänge und LEDs für die Ausgänge angeschlossen. Quasi ein Hardware-PLCSim...
    Nun zu meinem Problem:
    Ich möchte ein Programm schreiben (in C), mit dem ich eine Temperatur überwachen kann. Dazu ist zur Simulation an einem analogen Eingang ein Poti angeschlossen, der die Ist-Temperatur darstellt, die gemessen wird. Nun wird zusätzlich noch eine Soll-Temperatur vorgegeben. Mit einem Programm soll nun mit Hilfe von LibNoDave die Soll- mit der Ist-Temperatur verglichen werden. Übersteigt die Ist-Temperatur die Soll-Temperatur, soll gekühlt werden, also einfach z. B. der Ausgang A124.0 gesetzt werden und bei Unterschreiten der Soll-Temperatur dementsprechend die "Kühlung" ausgehen und eine "Heizung" angehen, also z. B. der Ausgang A124.1.
    Das eigentliche Problem ist, dass ich mich mit LibNoDave überhaupt nicht auskenne und auch mich auch schon tagelang durch alle möglichen Foren gekämpft habe, aber noch immer kein Ergebnis...
    Zu dem, was ich mir gedacht habe: Es gibt ja bei LND im Ordner "win" die Datei testISO_TCP.exe. Mit dieser kann ich auch schon auf die SPS zugreifen. Also die Verbindung steht. Jetzt dachte ich mir, ich könnte diese Datei (bzw. vielmehr die testISO_TCP.c) als Basis nehmen, um die Kommunikation zur SPS aufzubauen und per "Endlosschleife" mit daveReadBits (oder besser daveReadBytes?!?) die Ist-Temperatur abfragen, mit der Soll-Temperatur vergleichen und per If-Abfrage die mit daveWriteBits (oder besser daveWriteBytes?!?) die Merker M0.0 bzw. M0.1 für "kühlen" bzw. "heizen" setzen.
    Wäre ja auch alles noch nicht so schwer. Aber es hängt leider schon an etwas anderem:
    Ich hatte mir dann also gedacht: Ok, nimm dir erst mal Code::Blocks und die die testISO_TCP.c und mache daraus eine ausführbare .exe. Das klappt aber leider schon gar nicht. Hab auch schon die libnodave.dll aus dem win-Ordner zu Code::Blocks kopiert und alles mögliche an Header-Dateien. Leider kommen beim Kompilieren immer die Fehlermeldungen, dass Variablen nicht deklariert sind. Dachte, ich könnte das einfach so Kompilieren, aber da habe ich mich ja definitiv getäuscht.
    Deshalb jetzt meine Fragen an euch:
    Wie gehe ich am Besten daran, ein eigentlich so einfaches Programm mit LND zu realisieren? Was muss ich beachten oder vorher wissen?
    Sorry, dass ich vielleicht blöde Fragen stelle, aber ich bin eigenglich nicht der Programmier-Typ und muss jetzt innerhalb der nächsten 2 Wochen irgendwie ein lauffähiges Programm auf die Beine stellen. Wie gesagt, es ist ja nicht viel und wahrscheinlich auch total simpel, aber mich überfordert es gerade, LND mit einzubeziehen, was aber ja notwendig ist...

    Vielen Dank schonmal im Voraus an euch!
    HoschiD
    Zitieren Zitieren Mit LibNoDave eigenes Programm erstellen  

  2. #2
    HoschiD ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.11.2011
    Beiträge
    6
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Vielleicht sollte ich noch dazu sagen, dass ich mittlerweile etwas weiter bin. Habe jetzt die "nodavesimple.h" durch die "nodave.h" ersetzt und in dieser die Zeilen für ein "eigenes OS / API" auskommentiert. Jetzt bekomme ich immer nur die Fehlermeldungen wegen dem "EXPORTSPEC", das ja bereits in diesem Beitrag http://www.sps-forum.de/archive/index.php/t-10408.html erläutert wird. Da steht ja in der Antwort von Zottel, dass -DBCCWIN und -DDAVE_LITTLE_ENDIAN für Windows angegeben werden muss. Aber wo?! Doch irgendwie / irgendwo im Block "#ifdef BCCWIN.......", oder?! Muss ich da einfach das "OS_KNOWN" ersetzen?!

  3. #3
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Hi,
    am besten ist es die defines dem Compiler mit der Option -D mit auf den Weg zu geben, dann musst du den Quellcode garnicht anfassen.
    Ich habe mal eine Schritt-für-Schritt Anleitung geschrieben wie man ein Testprogramm von der Eingabeaufforderung heraus für den gcc unter Windows übersetzt und zusammenlinkt. Die Pfade musst du natürlich noch entsprechend anpassen:

    http://www.sps-forum.de/showthread.p...944#post250944

    Vom Prinzip her macht make (außer ein paar anderen Sachen) nicht mehr als ebenfalls diese Befehle aufzurufen. Es gibt auch Leute die kopieren sich sowas einfach in eine Batch-Datei zusammen. Bei kleineren Projekten geht das noch, bei größeren ist es schon sinnvoll das make vorher nachschaut was sich überhaupt lohnt neu zu übersetzen.

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

    HoschiD (13.03.2012)

  5. #4
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Zitat Zitat von HoschiD Beitrag anzeigen
    Vielleicht sollte ich noch dazu sagen, dass ich mittlerweile etwas weiter bin. Habe jetzt die "nodavesimple.h" durch die "nodave.h" ersetzt und in dieser die Zeilen für ein "eigenes OS / API" auskommentiert. Jetzt bekomme ich immer nur die Fehlermeldungen wegen dem "EXPORTSPEC", das ja bereits in diesem Beitrag http://www.sps-forum.de/archive/index.php/t-10408.html erläutert wird. Da steht ja in der Antwort von Zottel, dass -DBCCWIN und -DDAVE_LITTLE_ENDIAN für Windows angegeben werden muss. Aber wo?! Doch irgendwie / irgendwo im Block "#ifdef BCCWIN.......", oder?! Muss ich da einfach das "OS_KNOWN" ersetzen?!
    Das sind compilerschalter, welche du setzen musst.

    Ich denke in Codeblocks geht das unter
    Project/Build Options...
    Dann Reiter Compiler Settings, Reiter #defines
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

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

    Standard

    Hallo Thomas, hallo Jochen!
    Schonmal vielen Dank für eure Antworten!
    Zu Jochen's Antwort: Leider kann ich "Build Options" unter Project nicht anklicken...
    @ Thomas: Mit deiner Anleitung hat's super funktioniert! Ich musste zwar erst ein bisschen rum probieren (hatte unter anderem Zugriffsprobleme und musste Code::Blocks nochmal neu installieren), aber dann lief's.
    Vielen Dank euch!
    Geändert von HoschiD (13.03.2012 um 16:53 Uhr)

  7. #6
    HoschiD ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.11.2011
    Beiträge
    6
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    So, ich hab's jetzt geschafft, Merker zu schreiben und zu lesen und damit dann Ausgänge zu schalten. Das hat alles nach ein bisschen Suchen Probieren hervorragend funktioniert!!
    Als nächstes geht es dann daran, einen analogen Ausgang auszulesen, damit ich diesen Wert dann mit einem Soll-Wert vergleichen kann.
    Das mache ich dann über daveReadBytes, richtig?!
    Wenn ich den ausgelesenen Wert dann in eine Variable speichern will, kann ich einfach folgendes schreiben?!:
    solltemp=daveReadBytes(dc,daveAnaIn,0,0,2,NULL);
    Das heißt doch im Endeffekt, dass ich den ersten analogen Eingang lesen möchte, oder?!
    Kann das außerdem sein, dass ich noch irgendetwas mit einem "get..." machen muss?!
    Und kann es sein, dass ich die ausgelesenen Werte irgendwie umwandeln muss?! Das hatte nämlich mal ein Kommillitone von mir erwähnt...
    Und welche Möglichkeiten hätte ich, die ausgelesenen Werte in eine Textdatei schreiben zu lassen?!
    Danke nochmal an alle!!

    Lg HoschiD
    Geändert von HoschiD (13.03.2012 um 16:52 Uhr)

Ähnliche Themen

  1. Jeder Case ein eigenes Programm
    Von Bensen83 im Forum CODESYS und IEC61131
    Antworten: 8
    Letzter Beitrag: 08.09.2011, 13:31
  2. libnodave.dll in eigenes exe-Projekt integrieren
    Von Loep im Forum Hochsprachen - OPC
    Antworten: 6
    Letzter Beitrag: 24.03.2011, 09:40
  3. Keine Verbindung mit libnodave und eigenem Programm
    Von c0nt4ct im Forum Hochsprachen - OPC
    Antworten: 0
    Letzter Beitrag: 01.03.2011, 12:20
  4. Antworten: 18
    Letzter Beitrag: 20.04.2010, 21:48
  5. Antworten: 1
    Letzter Beitrag: 30.01.2005, 18:42

Stichworte

Lesezeichen

Berechtigungen

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