Sonstiges LibnoDave mit PLCSim kommunizieren lassen

HelmiMUC

Level-1
Beiträge
95
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ist es möglich, und falls ja wie, LibnoDave mit PLCSim kommunizieren zu lassen?

Ich habe in der PLCSim ein kleines Projekt geladen, die CPU ist auf run, und ich versuche mittels NoDaveDemo.exe (aus dem Delphi-Ordner) auf die PLCSim zu zugreifen.
Leider ohne Erfolg.

Nutz ich S7Onlinx.dll bekomm ich in dem Kommandozeilen-Fenster die Meldung: "handle -1 error:900".
Nutz ich MPI, dann bekomm ich die Meldung: "setPort : illegal Baudrate: 3"

Was muss ich einstellen, damit die Verbindung geht (falls es überhaupt so geht)?
 
hab es jetzt etwas am Laufen
also NoDaveDemo scheint eine Verbindung zu haben - jedenfalls läuft der Progressbar-Balken

Nur bekomm ich folgenden Fehler:
Error [5]: the desired address is beyond Limit for this PLC

Was aber nicht sein kann - hab testweise MB0 zum auslesen in die Liste eingetragen und das Byte sollte es geben
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
die "NoDaveDemo" ist von der Bedienung etwas seltsam. Wenn du dort den Datenbereich änderst, musst du das mit dem "Accept" Button bestätigen. Ansonsten liest er irgendeine Voreinstellung (16 Bytes aus einem DB1) der bei dir nicht in der SPS vorhanden ist.

Du kannst in Nettoplcsim sehen welche Datenbereiche angefragt werden. Klicke mit der rechten Maustaste auf die Verbindung, und wähle dort dann "Start Monitoring". Dann öffnet sich ein Fenster in dem die angefragten Bereiche angezeigt werden.
So habe ich das auch mit der NoDaveDemo rausgefunden.
 
Ich frage jetzt mal testweise das MB1 ab - so steht es in der Demo-Software und wird auch von Nettoplcsim so erkannt (im Monitor)

Im Monitor steht drin:
Read-Request of 1 item. Item[1]: M1.0 BYTE 1

nur LibnoDave sagt ständig "Error [5]: the desired address is beyond Limit for this PLC"
und in der Liste steht immer 0 als Wert des Bytes, obwohl definitiv Bits gesetzt sind
 
Das ist ein Fehler in der NoDaveDemo. Es sendet wenn Merker angefragt werden eine Datenbausteinnummer 1 mit runter. Normalerweise sollte da eine Null stehen. Das lässt sich in der Demo aber nicht einstellen. Zumindest Plcsim mag es nicht dass eine DB-Nummer angegeben wird wenn ein Nicht-DB-Bereich gelesen wird. Kann sein dass manche CPUs das ignorieren. Zumindest alle anderen Treiber (auch die von Siemens) schreiben immer eine DB-Nummer 0.

Schreib einfach bei deinem eigenen Programm bei den libnodave Funktionen eine 0 in die DB-Nummer, wenn du einen anderen Bereich lesen willst.
 
Ich weiß nicht wie Plcsim oder andere S7-Steuerungen das handhaben.
Ich würde einfach immer bei DB eine Null schreiben. Dann kannst du dir sicher sein dass es immer und überall funktioniert.
 
es gibt ja den Quellcode von der Demo-Version - nur hab ich es mit der noch nicht geschafft überhaupt eine Verbindung aufzubauen
irgendwas ist bei der anders als bei der Version die schon compiliert mit dabei ist

wenn es nämlich ginge, so könnt ich diesen Fehler mit der 0 korrigieren
 
ich glaub ich hab den "Fehler" gefunden.

Ich hab mir noch ein kleines Test-Projekt geschrieben, das leider auch nicht funktionierte.
So wie ich es sehe, scheint in LibnoDave ein Compilerschalter falsch gesetzt zu sein, weil
er nicht in die Win32-Schiene läuft, sondern in die Linux-Schiene. Und dann kann die
Kommunikation mit der DLL nicht funktionieren.

Ich bin noch am Suchen, wieso weshalb warum...
 
weiss jemand wer der Autor der LibnoDave-Komponente ist?
Der Fehler wurde nämlich jetzt gefunden und auch behoben und das möchte ich ihm mitteilen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Verursacher liest hier fleissig mit. ;-)

Aber normal ist es doch, wenn du von sourceforge die Quellen geladen hast, dass auch dort Fehler gemeldet werden.
Und was etwas seltsam ist, ich habe auch verschiedene Anwendung am laufen, auch unter Win$ und es hat bzw es funktioniert.

Schön, dass es funktioniert


bike
 
leider hab ich mich zu früh gefreut
mit der neuen LibnoDave-Version schaff ich keine einzige Verbindung
egal was ich mache und mit welcher Software ich auch immer nutze
 
Was hast du denn überhaupt vor?
Es gibt im Unterordner \win von libnodave noch diverse Kommandozeilenbasierte Testprogramme, für einen Test mit Plcsim/Nettoplcsim wäre das z.B. testISO_TCP.exe.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ja - diese test-Programme kenn ich und damit kann ich auch eine Verbindung testen - die funktioniert
aber wenn ich die Delphi-Komponente nutze, dann geht keine Verbindung
nutz ich die alte, bereits kompilierte, NoDaveDemo.exe von 2011, dann geht's mit der auch
 
Das Problem dass du mit der NoDaveDemo und Plcsim keine Merker lesen kann, liegt aber imho nicht an der Delphi Komponente sondern an der Demo.

Wenn du Delphi hast, kannst du dazu ja mal in der Main.pas eine Anpassung vornehmen.
In der Prozedur TMainForm.Button1Click baust du dir ein case Area ein, und wenn Area nicht DB ist dann setzt die Variable DBNumber auf 0 und nicht auf den Wert von SpinEdit1.Value.

Aber du willst doch sicher nicht den ganzen Tag mit der NoDaveDemo rumspielen, sonder was eigenes programmieren.
 
deine Änderungen sind richtig - die gehen aber erst nachdem man eine Verbindung aufgebaut hat
und genau da liegt das Problem - ich bekomme mit der Komponente keine Verbindung zusammen
beim debuggen hab ich rausbekommen, dass
in der Procedure
DoConnect immer null ist.
Und das wird (indirekt) aus der DLL beschrieben
 
Zurück
Oben