LibNoDave-UDF zur Kommunikation mit Simatic SPS

  • Welche Libs nutzt du denn noch?

    Und was muss ich bei einer S7-1200 alles vorbereiten für die Kommunikation?

  • Ah...ja von deiner DLL hab ich bei SPS-Forum gelesen (heiße dort ja Mobi).

    Welche von den 4 Möglichkeiten ist denn die beste?

  • Ich hatte nur gedacht weil du schon TCPConnect und MPIConnect gemacht hast. Aber inzwischen hab ich gelesen, dass das sowieso mit USB-PPI nicht geht. Habs jetzt mal schon probiert mit der 1200er, das funktioniert super. Hoffe, dass du noch die UDF weiter supportest.

  • Wie kann ich denn einen DB auslesen von einem Zähler (CTU)?

    Und dies beschreibt nur die ersten beiden Ausgänge vom Byte 1. Wieso?

    [autoit]

    $Buffer = DllStructCreate("BYTE buf[1]")
    $pBuffer = DllStructGetPtr($Buffer)
    _LibNoDave_Put8($pBuffer, 255)
    _LibNoDave_WriteBytes($hConnection, $LNDAVE_OUTPUTS, 0, 1, 1, $Buffer)

    [/autoit]
  • Hallo.
    Anbei mal die aktuellste LibNoDave-UDF, die ich finden konnte.

    Zitat von m-obi

    Wie kann ich denn einen DB auslesen von einem Zähler (CTU)?


    Du willst aktuelle Zählerwerte auslesen?
    Das sollte mit _daveReadBytes() und _DaveGetCounterValue() gehen.

    Zu zweitens. Keine Ahnung. Ich setze normalerweise keine Ausgänge, wenn dann Merker, die dann die Ausgänge setzen. Abe könnte es sein, dass die Ausgänge bereits im Programm verwendet wurden, dann werden sie natürlich von der SPS wieder überschrieben.

    P.S.: Hast du alle Funktionen umbenannt??

  • Ich hab mir extra einen Bereich ausgewählt, welcher nicht verwendet wird.

    Jap hab ich. Ich hab mir mal die Frechheit genommen und die UDF so umgeschrieben, dass sie "ordentlich" aussieht.
    Auch die Konstanten und Variablen.

  • Hallo
    super habe's hin bekommen.

    Könntest du mir noch sagen wie ich eine Variable schreibe ?
    Ich möchte über Ping abfragen ob mein Handy im Heimnetzwerk angemeldet ist. Wenn dies der fall ist möchte ich in einem DB einen Bit setzen.

  • Hallo

    da ich in AutoIT noch Anfänger bin wäre mir sehr geholfen wenn mir jemand erklären
    könnte was ich zu einer Libnodave TCP Verbindung benötige.

    Wie wurde das Script über TCP aussehen?

    Das Demo Programm funktioniert bei mir, allerdings versteh ich im Script fast nichts.

  • Hallo
    Der code mit dem kompletten byte schreiben funktioniert bei mir.
    ich durch die zahl 32 könnte ich zb m22.5 einschalten .
    nur beim ausschalten schaltet er immer das ganze byte könnte ich das reduzieren auf den einzelenen merker?
    bzw nur das Bit schalten und die anderen in ruhe lassen :)

    LG

  • Hallo und guten Morgen!
    Ich habe für meine selbstgebaute Heizungsanlage eine Steuerung auf Basis einer Siemens LGOG! OBA7 (mit Ethernet) und dazu eine Visualisierung auf AutoIt.
    Soweit funktioniert alles seeehr geil. Werte werden angezeigt, Schaltzustände werden angezeigt.

    Über die LibNoDave UDF werden alle 0,5 sek zyklisch einige Register (Merker und DWord´s) von der LOGO! gelesen.
    ABER (und jetzt zum Problem) :
    Ich kann die AutoIt-Anwendung nicht ewig offen lassen, weil Windows sagt: " Ey kollege, die Anwendung frisst soo hammer viel Speicher, entweder beendest Du die jetzt oder Du stirbst".

    Dann hab ich mich mir den Speicherbedarf von dem AutoIt-Task mal angesehen uns tatsächlich: mit jedem Zyklus in dem Daten von Logo! nach AutoIt geschaufelt werden, wächst der Speicherbedarf um ein paar Hundert Kilobyte.

    Dann habe ich mal einen 3-Zeiler geschrieben in dem NUR von der LOGO! gelesen wird, um Fehler in meinem Skript auszuschließen - gleiches Symptom.
    Hat jemand eine Idee?Visualisierung.jpg

    ... wasweisichdennschon...

    Einmal editiert, zuletzt von Chrischn (18. April 2015 um 12:47)

  • [quote='Kanashius','https://autoit.de/index.php/Thread/23507-LibNoDave-UDF-zur-Kommunikation-mit-Simatic-SPS/?postID=664383#post664383']

    Dieses bischen reicht schon. Da wird nichts von mir gespeichert...

    ... wasweisichdennschon...

  • Naja, mit deinem Script kann hier niemand etwas anfangen, wichtige wäre, die FUNKTION, welche du aufrufst zu posten, also _LAD_ReadWord()

    Generell ist es sinnvoll, alle nicht zu AutoIt gehörenden UDF´s mit anzuhängen!