[ S7-200 ] libnodave mit CP 243-1

caret

Level-1
Beiträge
82
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hardware: S7-200 mit 224XP CPU und 256kB EEPROM
Software: libnodave-java-0.1 mit Sun 1.6 SDK

Wenn ich versuche mittels
dc.readBytes(Nodave.DB, 1, 2200, 180, null);
180 Bytes ab VB2000 zu lesen bekomme ich die folgende Fehlermeldung:

--- 8< ---------------------------------------------------------

enter TCP.Exchange
send packet 03,00,00,1f,02,f0,80,32,01,00,00,00,00,00,0e,00,00,04,01,12,0a,10,0
2,00,01,00,01,84,00,4b,60,
Interface.write 03,00,00,1f,02,f0,80,32,01,00,00,00,00,00,0e,00,00,04,01,12,0a,1
0,02,00,01,00,01,84,00,4b,60,
Interface.read
got 4bytes
Interface.read
got 189bytes
PDU header 04,01,ff,04,05,a0,07,08,19,06,
PDU header 04,01,ff,04,05,a0,07,08,19,06,
plen: 1800 dlen: 6406
Parameter 1d,2e,00,00,01,07,08,19,06,1d,2f,00,00,02,07,08,19,06,1d,30,00,00,03,0

... eine ganze Menge HexWerte ...

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2048
at libnodave.Nodave.dump(Nodave.java:186)
at libnodave.PDU.dump(PDU.java:206)
at libnodave.PDU.setupReceivedPDU(PDU.java:317)
at libnodave.S7Connection.readBytes(S7Connection.java:192)
at MyTest.run(MyTest.java:140)
at MyTest.main(MyTest.java:203)

--- 8< ---------------------------------------------------------

Frage: Woran liegt das? Wenn ich weniger als 100 Byte einlese funktioniert der Aufruf nämlich einwandfrei. Weiss da jemand Rat? In der Doku steht wohl, dass die max. Anzahl einzulesender Bytes von der PDU Größe abhängt. Normalerweise liegt die aber bei 240 Byte (ca. 220 Byte ohne Header). Das sollte also kein Problem sein. Oder hat die S7-200 mit 224XP CPU eine kleinere PDU Größe. readBytes liefert übrigends als Fehlercode 0 zurück (= alles o.k.).

Frage: Ich hab mit dem 256KB EEPROM und dem Rezepturassistenten ein eigenes DataLog implementiert. Zum auswerten übertrage ich die kompletten 256kB per libnodave an den PC. Rechnen wir mal mit 220 Byte PDU Größe, dann macht das 256*1024/220= ca. 1200 readBytes Aufrufe. Da der Rezepturassistent auch nur max. 212 Byte pro Rezept akzeptiert bin ich gezwungen Blockweise aus dem EEPROM in die SPS zu lesen und dann Blockweise per libnodave an den PC übertragen. Da fallen also noch ein paar Synchronisationsaufrufe an. Meine Tests ergaben im BEST CASE ca. 15 Min. für die 256 kB. Das lässt sich nicht irgendwie beschleunigen, oder? Mit Beschleunigung meine ich eine drastische Beschleunigung, z.B. auf 15 Sek. oder so.

Frage: Mit dem Ethernet-Assistenten von MicroWin lässt sich ja das CP 243-1 Modul konfigurieren. Dort gibt es auch die Möglichkeit IP/Gateway per BOOTP zu beziehen. Heute gängige Router machen aber nur DHCP und kein BOOTP. Weiss jemand ob das CP 243-1 Modul irgendwie mit einem DHCP-Server laufen tut? DHCP soll ja angeblich zu BOOTP abwärtskompatibel sein. Aber irgendwie funktioniert das bei mir nicht.
 
Zuletzt bearbeitet:
Zurück
Oben