alles Gute zum Geburtstag und was du dir sonst so wünschst...
Beiträge von Flitzpiepe84
-
-
okay, jetzt macht es "Klick" bei mir
Vielen Dank für Lösung und Erklärung
-
ausprobiert und siehe da, es löst mein Problem wie von selbst. Jetzt ist zwar mein Bug weg, aber ich weiß trotzdem nicht so richtig warum das ohne das Number() nicht korrekt funktioniert hat.
Bitte mal um kurze Erklärung warum ohne diese Formatierug zB. 9.40 plötzlich größer wie 36.00 ist. Beziehungsweise wo ich das nachlesen kann...
-
Ich lasse aus einer csv-Datei mir den Inhalt in ein Array einlesen, dieses splitte ich dann zeilenweise um dann zu ermitteln ob einer dieser Werte größer bzw kleiner als der im vorherigen Array ist.
Funktioniert soweit schon, nur hab ich eine "Spalte" in der csv, wo die Werte von etwas 8,00 bis etwa 40,00 hin und her pendeln. Habe ich beim Max-Wert zB. 24,5 und einer der folgenden Werte ist plötzlich unter 10 dann wird mir dieser kurioserweise plötzlich als Maxwert angezeigt.
Und mein Min-Wert geht nie unter 10,00 obwohl es niedrigere Werte gibtSpoiler anzeigen
[autoit]If $iWert = 0 Then
[/autoit] [autoit][/autoit] [autoit]
for $iW = 1 to 6 Step 1
$temp_Max[$iW] = StringReplace($Splitwert[$iW+2], ",", ".")
$temp_Min[$iW] = StringReplace($Splitwert[$iW+2], ",", ".")
GUICtrlSetData($MaxWert[$iW], $temp_Max[$iW]) ; Setzen des ersten Max-Wertes in die GUI aus dem Logfile ; für Ermittlung von höchsten Wert im Logfile
GUICtrlSetData($MinWert[$iW], $temp_Min[$iW]) ; Setzen des ersten Min-Wertes in die GUI aus dem Logfile ; für Ermittlung von niedrigsten Wert im Logfile
Next
$iWert =1
EndIffor $iW = 1 to 6 Step 1
[/autoit] [autoit][/autoit] [autoit]
$Zwischenwert[$iW] = ($Zwischenwert[$iW] + $SplitWert[$iW+2]) ; Zwischenwert für Mittelwertbildung
If StringReplace($Splitwert[$iW+2], ",", ".") > GUICtrlRead($MaxWert[$iW]) Then ; Ermittelung ob Wert größer wie zuletzt ermittelte höchste Wert
$temp_Max[$iW] = StringReplace($Splitwert[$iW+2], ",", ".")
GUICtrlSetData($MaxWert[$iW], $temp_Max[$iW]) ; Setzen des neuen höchsten Wertes
EndIf
If StringReplace($Splitwert[$iW+2], ",", ".") < GUICtrlRead($MinWert[$iW]) Then ; Ermittelung ob Wert kleiner wie zuletzt ermittelte niedrigste Wert
$temp_Min[$iW] = StringReplace($Splitwert[$iW+2], ",", ".")
GUICtrlSetData($MinWert[$iW], $temp_Min[$iW]) ; Setzen des neuen niedrigsten Wertes
EndIfNext
[/autoit]das ganze läuft dann in einer weiteren Schleife von 0 bis 720
Was hab ich hier übersehen bzw. wo ist der Grund für diese Kuriosität?
Schon mal danke fürs Drüberschauen und Helfen. -
hab es gleich mal geändert und ausprobiert. Und siehe da, es werden beim Aufklappen die jeweiligen Farben angezeigt. Beim Überfahren werden diese aber, wie du schon geschrieben hast, wieder Schwarz.
Gebe ich den Index bzw. den dazu gesetzten Parameter zum gewählten Control aus, dann stimmt aber die Zuordnung, nur das Bild ist schwarz.Edit: So eine Nacht drüber geschlafen, heute nochmal das Script aus der Hilfe angeschaut und den Fehler gefunden. In Zeile 21 war noch ein Paramter-Fehler. Paramter 4 erhielt in der Schleife immer den Wert 0. Dies ist aber falsch, dieser muss gegen $i-1 ersetzt werden, damit beim Überfahren bzw markieren auch das richtige Image angezeigt wird.
Das korrekte Script sieht dann wie folgt aus:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GuiComboBoxEx.au3>
#include <GuiImageList.au3>
#include <GuiConstantsEx.au3>
#include <file.au3>
;~ #include <debugger.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]
Local $hGUI, $hImage, $hCombo, $aBuffer[16], $i$hGUI = GUICreate("ComboBoxEx Create Solid BitMap", 400, 300)
[/autoit] [autoit][/autoit] [autoit]
$hCombo = _GUICtrlComboBoxEx_Create($hGUI, "", 2, 2, 394, 100)
GUISetState()$hImage = _GUIImageList_Create(16, 16, 5, 3)
[/autoit] [autoit][/autoit] [autoit]
_FileReadToArray (@ScriptDir&"\Colour.txt", $aBuffer)
for $i= 1 To $aBuffer[0] Step 1
$Colour = StringSplit ($aBuffer[$i], ";")
_GUIImageList_Add($hImage, _GUICtrlComboBoxEx_CreateSolidBitMap ($hCombo, $Colour[1], 16, 16))
_GUICtrlComboBoxEx_SetImageList($hCombo, $hImage)_GUICtrlComboBoxEx_AddString($hCombo, $Colour[1], $i-1, $i-1)
[/autoit] [autoit][/autoit] [autoit]
NextGUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, "_Events")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "_Events")
GUISetOnEvent($GUI_EVENT_RESTORE, "_Events")Sleep (10)
[/autoit] [autoit][/autoit] [autoit]WEnd
[/autoit] [autoit][/autoit] [autoit]Func _Events() ; hier sind die Events der GUI:
[/autoit] [autoit][/autoit] [autoit]
; Fenster Schliessen, Minimieren, Maximieren,Select
[/autoit] [autoit][/autoit] [autoit]
Case @GUI_CtrlId = $GUI_EVENT_CLOSE
ExitCase @GUI_CtrlId = $GUI_EVENT_MINIMIZE
[/autoit] [autoit][/autoit] [autoit]Case @GUI_CtrlId = $GUI_EVENT_RESTORE
[/autoit] [autoit][/autoit] [autoit]EndSelect
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] -
Ich habe eine Kombobox mit_GUICtrlComboBoxEx_Create erstellt und will über _GUIImageList_Create eine Liste zur Auswahl der gewünschten Farbe erstellen.
Kombobox und Liste funktioniert soweit, nur die Darstellung klappt nicht, alles ist Schwarz. Die Werte werden aber korrekt aus der Datei ausgelesen und auch in der Liste als "Beschriftung" dargestellt.Ich komm irgendwie nicht dahinter woran das jetzt liegt...
Spoiler anzeigen
[autoit]#include <GuiComboBoxEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GuiImageList.au3>
#include <GuiConstantsEx.au3>
#include <file.au3>
;~ #include <debugger.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]
Local $hGUI, $hImage, $hCombo, $aBuffer[16], $i$hGUI = GUICreate("ComboBoxEx Create Solid BitMap", 400, 300)
[/autoit] [autoit][/autoit] [autoit]
$hCombo = _GUICtrlComboBoxEx_Create($hGUI, "", 2, 2, 394, 100)
GUISetState()$hImage = _GUIImageList_Create(16, 16, 5, 3)
[/autoit] [autoit][/autoit] [autoit]
_FileReadToArray (@ScriptDir&"\Colour.txt", $aBuffer)
for $i= 1 To $aBuffer[0] Step 1
$Colour = StringSplit ($aBuffer[$i], ";")
_GUIImageList_Add($hImage, _GUICtrlComboBoxEx_CreateSolidBitMap ($hCombo, $Colour[1], 16, 16))
_GUICtrlComboBoxEx_SetImageList($hCombo, $hImage)_GUICtrlComboBoxEx_AddString($hCombo, $Colour[1], 0, 0)
[/autoit] [autoit][/autoit] [autoit]
NextGUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, "_Events")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "_Events")
GUISetOnEvent($GUI_EVENT_RESTORE, "_Events")Sleep (10)
[/autoit] [autoit][/autoit] [autoit]WEnd
[/autoit] [autoit][/autoit] [autoit]Func _Events() ; hier sind die Events der GUI:
[/autoit] [autoit][/autoit] [autoit]
; Fenster Schliessen, Minimieren, Maximieren,Select
[/autoit] [autoit][/autoit] [autoit]
Case @GUI_CtrlId = $GUI_EVENT_CLOSE
ExitCase @GUI_CtrlId = $GUI_EVENT_MINIMIZE
[/autoit] [autoit][/autoit] [autoit]Case @GUI_CtrlId = $GUI_EVENT_RESTORE
[/autoit] [autoit][/autoit] [autoit]EndSelect
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit]die Textdatei mit den Farbwerten liegt im Anhang.
Vielleicht kann mir ja jemand einen Tip geben oder einen Hinweis, was ich übersehen bzw falsch gemacht habe... Danke schon mal im Vorraus
-
Das Problem konnte ich jetzt nach vielem Hin und Her, Nachlesen sowie Probieren selbst in den Griff kriegen. Ursache war, dass die von GDI+ erzeugte Fläche nur absolut zur ChildGUI angezeigt wurde. Beim Scrollen muss der Bezugspunkt sich aber relativ verhalten. Dazu musste ich die Position der Scrollbar ermitteln und um wieviele Pixel sich der GUI-Inhalt verschoben hat.
-
Ich habe eine GUI in der eine weitere GUI (Child) als "Fenster" mit Scrollbar eingebettet ist. Darin ist mein MultiGraph abgebildet, der mir Logfiles am Ende graphisch wiedergeben soll. Da das Programm auf unterschiedlichen Rechnern und Monitoren laufen wird/soll, benötige ich eine flexible GUI in der Anzeige-Größe. Deshalb hat das Child-GUI die Scrollbar, weil der MultiGraph in der horizontalen Auflösung sonst nicht immer vollständig angezeigt wird. Die Skalierung der GUI funktioniert, aber wenn ich die Scrollbar bewege, dann wandert meine Zeichenfläche vom MultiGraph immer mit, der Rest "unten drunter" (Achsbezeichnung und gezeichnete Achsen) bleiben stehen). Was könnte hier der Fehler sein, bzw wie kann ich das beheben?
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <mod_MultiGraph.au3>
#include <Date.au3>
#include <file.au3>
#include <GUIScrollbars_Ex.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$hGUI= GUICreate("Diagramm-Tool", 1024, 768, -1, -1, BitOR($GUI_SS_DEFAULT_GUI,$WS_MAXIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_MAXIMIZE,$WS_TABSTOP))
[/autoit] [autoit][/autoit] [autoit]
GUISetState (@SW_MAXIMIZE)Local $size = WinGetClientSize($hGUI)
[/autoit] [autoit][/autoit] [autoit];~ Bedien- & Anzeige-Elemente erzeugen
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$OpenLogfile = GUICtrlCreateButton("Logfile öffnen", 8, $size[1]-75, 80, 20)
$PlotLogfile = GUICtrlCreateButton("Logfile plotten", 90, $size[1]-75, 80, 20)
$LabelOpenLogfile = GUICtrlCreateLabel("geöffnetes Logfile:", 8, $size[1]-50, 90, 20, $SS_CENTERIMAGE)
$ViewOpenLogfile= GUICtrlCreateInput("", 100, $size[1]-50, 200, 20, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER))
$LabelZeilenAnzahl = GUICtrlCreateLabel("Logeinträge:", 8, $size[1]-25, 90, 20, $SS_CENTERIMAGE)
$ZeilenAnzahl = GUICtrlCreateInput("0", 100, $size[1]-25, 50, 20, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER))$GUI_Graph = GUICreate("", $size[0]-25, $size[1]-100, 10, 10, $WS_CHILD, $WS_EX_CLIENTEDGE, $hGUI)
[/autoit] [autoit][/autoit] [autoit]
$Label_Graph = GUICtrlCreateLabel("", $size[0]-25, $size[1]-100, 10, 10);~ Scrollbar erzeugen
[/autoit] [autoit][/autoit] [autoit]
_GUIScrollbars_Generate($GUI_Graph, 1575, 700);~ Multigraph erzeugen
[/autoit] [autoit][/autoit] [autoit]
_MG_Graph_entfernen(1)
_MG_Graph_erstellen (1, $GUI_Graph, 50, 25, 1440, 600)
_MG_Graph_optionen_position (1, $GUI_Graph, 50, 25, 1440, 600)_MG_Graph_optionen_allgemein (1, 720, -20, 40, 22.5, 90, 0xFFFFFF, 2)
[/autoit] [autoit][/autoit] [autoit]
_MG_Graph_optionen_Rahmen (1, True, 0x000000, 1)
_MG_Graph_optionen_Hauptgitterlinien (1, 1, 20, 20, 1,0x000000, 190)
_MG_Graph_optionen_Hilfsgitterlinien (1, 1, 10, 10, 1,0x000000, 220)_MG_Graph_optionen_Plottmodus (1, 0, 0, 1, True)
[/autoit] [autoit][/autoit] [autoit]_MG_Graph_Achse_links (1, True, -20, 40, 0, "°C", 0x000000, Default, 8, 70, 0.5)
[/autoit] [autoit][/autoit] [autoit]
_MG_Graph_Achse_rechts (1, True, 22.5, 90.00, 2, " °", 0x000000, Default, 8, 70, 5)
_MG_Graph_Achse_unten (1, True, 0, 24, 2, "Uhrzeit", 0x000000, Default, 8, 27, 2)_MG_Kanal_optionen (1, 1, 1, 1, 0x0044FF, 0)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_MG_Kanal_optionen (1, 2, 1, 1, 0xFF6600, 0)
_MG_Kanal_optionen (1, 3, 1, 2, 0xDAA520, 0)
_MG_Kanal_optionen (1, 4, 1, 1, 0x8B0000, 0)
_MG_Kanal_optionen (1, 5, 1, 1, 0x008000, 0)
_MG_Kanal_optionen (1, 6, 1, 1, 0x6A5ACD, 0)
_MG_Kanal_optionen (1, 7, 1, 3, 0x7FFF00, 0)
_MG_Kanal_optionen (1, 8, 1, 3, 0xFF4500, 0)_MG_Graph_initialisieren(1)
[/autoit] [autoit][/autoit] [autoit]
GUISetState()
GUICtrlSetResizing($GUI_Graph, $GUI_DOCKALL); Zur urprünglichen GUI wechseln
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUISwitch($hGUI)GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]Global $plot = 0
[/autoit] [autoit][/autoit] [autoit]
Global $aBuffer = 0While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, "_Events")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "_Events")
GUISetOnEvent($GUI_EVENT_RESTORE, "_Events")
GUICtrlSetOnEvent($OpenLogfile, "_OpenLogfile")
GUICtrlSetOnEvent($PlotLogfile, "_plot")
_MG_Graph_updaten (1)Sleep (10)
[/autoit] [autoit][/autoit] [autoit]
WEndFunc _Events() ; hier sind die Events der GUI:
[/autoit] [autoit][/autoit] [autoit]
; Fenster Schliessen, Minimieren, Maximieren,Select
[/autoit] [autoit][/autoit] [autoit]
Case @GUI_CtrlId = $GUI_EVENT_CLOSE
ExitCase @GUI_CtrlId = $GUI_EVENT_MINIMIZE
[/autoit] [autoit][/autoit] [autoit]Case @GUI_CtrlId = $GUI_EVENT_RESTORE
[/autoit] [autoit][/autoit] [autoit]EndSelect
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit];~ Öffnen des Logfiles, ermitteln der Zeilenanzahl und Anzeige des gewählten Logfiles
[/autoit] [autoit][/autoit] [autoit]
Func _OpenLogfile()
$Logfile = FileOpenDialog ("Logfile auswählen", @ScriptDir&"\Archiv_Logimat", "(*.csv)", 1 + 4)
If $Logfile = "" Then
MsgBox (0, "Info", "Kein Logfile ausgewählt")
Else
_FileReadToArray ($Logfile, $aBuffer)
EndIf
GUICtrlSetData ($ViewOpenLogfile, $Logfile)
GUICtrlSetData ($ZeilenAnzahl, $aBuffer[0])
EndFunc;~ Zeilenweises Aufsplitten der Werte und anschließendes Plotten in den MultiGraph
[/autoit] [autoit][/autoit] [autoit]
Func _plot()
$SplitWert = StringSplit($aBuffer[2], ";")
_MG_Graph_Clear (1)
for $i = 2 to ($aBuffer[0]) Step 1
$SplitWert = StringSplit($aBuffer[$i], ";")
_MG_Wert_setzen_Y1 (1, 1, StringReplace($Splitwert[3], ",", "."))
_MG_Wert_setzen_Y1 (1, 2, StringReplace($Splitwert[4], ",", "."))
_MG_Wert_setzen_Y1 (1, 3, StringReplace($Splitwert[5], ",", "."))
_MG_Wert_setzen_Y1 (1, 4, StringReplace($Splitwert[6], ",", "."))
_MG_Wert_setzen_Y1 (1, 5, StringReplace($Splitwert[7], ",", "."))
_MG_Wert_setzen_Y1 (1, 6, StringReplace($Splitwert[8], ",", "."))
_MG_Wert_setzen_Y2 (1, 7, StringReplace($Splitwert[9], ",", "."))
_MG_Wert_setzen_Y2 (1, 8, StringReplace($Splitwert[10], ",", "."))
_MG_Graph_plotten (1)
NextEndFunc
[/autoit]das vollständige Script , die benötigten UDF´s und ein paar Logfiles sind im Anhang.
Schon mal recht herzlichen Dank für die Hilfe im Vorraus.
-
Habe ich schon gesehen und auch ausprobiert. Funktionierte aber nicht ohne Anpassung des restlichen (schon vorhandenen) Codes, da war das mit dem StringFormat die einfachere Lösung in dem Falle
-
Danke für den Gedanken-Anstoss das ich nicht immer eine Kommazahl herausbekomme
Und Danke für die Ansätze zur Lösung.Hab es aber jetzt so gelöst, da komme ich ohne großes Rumgebastelt auf genau das was ich will...
[autoit]
[/autoit]
Local $fWertUhrzeit = StringFormat("%." & $iNachkommastellen & "f", ($fWert/60))
Local $fUhrzeitSplit = StringSplit($fWertUhrzeit, ".")
$fUhrzeitStunde = $fUhrzeitSplit[1]
$fUhrzeitMinute = Round($fUhrzeitSplit[2]*0.6)Damit wäre das Thema erledigt. Danke
-
Ich habe folgendes Problem mit dem StringSplit
Ich möchte auf eine Graph-Skala in Zeit einteilen. Einteilung funktioniert schon.
Dabei gebe ich als Zeitspanne 24 Stunden vor. Die lasse ich in einen Dezimalwert umrechnen für die Einteilung der Graphskala. Angezeigt werden soll aber in der GUI das Format hh:mm an der Skala. Soweit so gut.
Lösungsversuch dazu sieht bisher so aus, gibt aber dann für den 2. Wert eine Fehlermeldung im Debugger.
[autoit]
$fWert = 1440 oder kleiner
[/autoit]
Local $fWertUhrzeit = ($fWert/60)
Local $fUhrzeitSplit = StringSplit($fWertUhrzeit, ".")
$fUhrzeitStunde = $fUhrzeitSplit[1]
$fUhrzeitMinute = $fUhrzeitSplit[2]Woran liegt es, dass ich bei $fUhrzeitSplit[2] einen Fehler erhalte?
-
*Script aktualisiert auf v0.3 --> Änderungen siehe oben
-
Die Logo ist in der Lage mehrere TCP/IP-Verbindungen zu akzeptieren. Habe extra in den Einstellungen der Ethernet-Schnittstelle im Logosoft-Comfort nachgeschaut bzw. dies muss sowieso eingestellt werden, wenn ich ein Panel (Display zur Visualierung) anbinden will.
Wenn ich aber parallel zu meinem Programm, die Online-Ansicht in der Logosoft-Comfort einschalte, dann crasht mein Programm wiederum nicht. Und in dem Moment sind 2 Verbindungen an der Logo aktiv. Funktioniert in der Art sogar von ein und dem selben PC. Daher war mein Gedanke, das ich im Script etwas vergessen oder falsch gemacht habe.die Tipps und Anregungen werde ich mit umsetzen, vorallem das _DaveInit() und die Sache mit dem _daveTCPDisconnect() werde ich bereinigen
Ich dachte das mit dem _daveDeInit() muss gemacht werden, damit die .dll wieder freigegeben wird?
Und zu dem Event-Modus muss ich mich erstmal schlau machen und reinlesen, das ist schließlich mein erstes ScriptWie kann man eigentlich von der S7-200 die Analog Ein-/Ausgänge auslesen? In der Readme von libnodave ist das leider nicht dokumentiert. Die entsprechende Memory Area ist aber aufgeführt mit "daveAnaIn" für die S7-200
-
minx
sorry, ich hatte den Spoiler-Button einfach nicht gefunden, ist aber jetzt bereinigt -
Wie kann ich mich mit mehreren Programmen gleichzeitig zu einer
Siemenssteuerung per TCP/IP verbinden, ohne das mir das Programm was
zuletzt lief crasht?
Jedesmal wenn ich mein Programm, welches ich Stück
für Stück erweitere, starte und mit der PLC verbinde, dann crasht auf
dem anderen PC das bisher laufende Programm.Und was muss ich anders machen, damit mir bei einen Verbindungsfehler (zb. fehlende Netzwerk-Verbindung, falsch eingestellte IP, ausgefallene PLC, ...) das Programm in der Statusbar "Verbindugsfehler anzeigt, der Connect-Button wieder auf Status enable und der Button für Disconnect auf disable gestellt wird.
-
Visualisierung für Logo 0BA7 / Ferndiagnose-Tool
Hallo zusammen,
ich arbeite derzeit an einem Projekt für die Visualisierung einer Siemens Logo 0BA7 um verschiedene Werte und die digitalen sowie analogen Ein-/Ausgänge auslesen zu können.
Dabei greife ich auf die UDF libnodave.au3. von "funkey" zurück, welche ich erweitert habe.Ziel ist es in der GUI eine vollausgebaute Logo 0BA7 (24 digital Eingänge, 16 digital Ausgänge, 8 analog Eingänge, 2 analog Ausgänge) schematisch darzustellen und die jeweiligen Module, je nach Ausbau, an- bzw. abzuwählen. Je nachdem was dann ausgelesen werden soll, wird dann per TCP/IP von der Logo abgefragt und in der GUI dargestellt. Schnittstellenprotokoll ist TCP/IP für die S7-200.
Ein Screen zur der bisherigen GUI habe ich angehängt, es fehlt hier aber noch die Möglichkeit zur An-/Abwahl der Zusatz-Module
v0.3 (05.11.2013)
- Script auf Event-Mode umgeschrieben (bessere Performance und Reaktion der Button-Anwahl)
bekannte Bugs:
- es ist bisher nicht möglich zwei Anwendungen im Netzwerk gleichzeitig laufen zu lassen (die zuletzt laufende Anwendung crasht)
- die analogen Ein-/Ausgänge lassen sich momentan nicht lesen (in den Hilfe-Dateien von libnodave gibt es auch keinen sichtbaren Lösungsansatz für die analogen Ein-/Ausgänge der S7-200)v0.2 (nicht veröffentlicht)
- mehrfache Verwendung von _daveInit() entfernt
- Abfrage zum Verbindungsaufbau über @error realisiert
bekannte Bugs:
- es ist bisher nicht möglich zwei Anwendungen im Netzwerk gleichzeitig laufen zu lassen (die zuletzt laufende Anwendung crasht)
- gelegentlich Crash/Freeze wenn Programm keine Logo mit der angebenen IP findet
- die analogen Ein-/Ausgänge lassen sich momentan nicht lesen (in den Hilfe-Dateien von libnodave gibt es auch keinen sichtbaren Lösungsansatz für die analogen Ein-/Ausgänge der S7-200)v0.1
- Connect zur PLC über TCP/IP
- Auslesen des Grundmoduls (alle digitalenund analogenEin-/Ausgänge sowie die in der Logo festgelegten VM´s für die Übertragung über Ethernet)
- Anzeige der Werte in der GUI
bekannte Bugs:
- es ist bisher nicht möglich zwei Anwendungen im Netzwerk gleichzeitig laufen zu lassen (die zuletzt laufende Anwendung crasht)
- gelegentlich Crash/Freeze wenn Programm keine Logo mit der angebenen IP findet
- die analogen Ein-/Ausgänge lassen sich momentan nicht lesen (in den Hilfe-Dateien von libnodave gibt es auch keinen sichtbaren Lösungsansatz für die analogen Ein-/Ausgänge der S7-200)Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
; #INDEX# =======================================================================================================================
; Title .........: GUI für Siemens Logo 0BA7 / Ferndiagnose-Tool
; AutoIt Version : 3.3.8.1
; Language ......: Deutsch
; Description ...: GUI für die Siemens Logo 0BA7
; - ermöglicht die visuelle Ansicht auf die digitalen und analogen Eingäng/Ausgänge sowie die im Logo-Programm festgelegten Werte für die Ethernet-Schnittstelle für eine Visualisierung
; - Verbindung zur PLC erfolgt ausschließlich über TCP/IP über eine frei einstellbare IP-Adresse
; - alle Zusatz-Module lassen sich an- und abwählen, je nachdem was verbaut wurde
; Author(s) .....: Flitzpiepe84
; Source(s) .....: libnodave.au3 (funkey)
; - von Flitzpiepe84 erweitert; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]#include <ButtonConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <libnodave.au3>
#include <debugger.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]#Region ### START Koda GUI section ### Form=g:\gui für 0ba7\gui.kxf
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$Form1 = GUICreate("Visualisierung / Ferndiagnose für 0BA7", 1256, 663, -1, -1)
$Group1 = GUICtrlCreateGroup("Logo 0BA7", 10, 80, 260, 520)
$Group2 = GUICtrlCreateGroup("DI 1-8", 20, 100, 100, 230)
$DI1 = GUICtrlCreateCheckbox("", 76, 124, 17, 17)
$Label3 = GUICtrlCreateLabel("I 1", 36, 124, 16, 17, $SS_CENTERIMAGE)
$DI2 = GUICtrlCreateCheckbox("", 76, 148, 17, 17)
$Label4 = GUICtrlCreateLabel("I 2", 36, 148, 16, 17, $SS_CENTERIMAGE)
$DI3 = GUICtrlCreateCheckbox("", 76, 172, 17, 17)
$Label5 = GUICtrlCreateLabel("I 3", 36, 172, 16, 17, $SS_CENTERIMAGE)
$DI4 = GUICtrlCreateCheckbox("", 76, 196, 17, 17)
$Label6 = GUICtrlCreateLabel("I 4", 36, 196, 16, 17, $SS_CENTERIMAGE)
$DI5 = GUICtrlCreateCheckbox("", 76, 220, 17, 17)
$Label7 = GUICtrlCreateLabel("I 5", 36, 220, 16, 17, $SS_CENTERIMAGE)
$DI6 = GUICtrlCreateCheckbox("", 76, 244, 17, 17)
$Label8 = GUICtrlCreateLabel("I 6", 36, 244, 16, 17, $SS_CENTERIMAGE)
$DI7 = GUICtrlCreateCheckbox("", 76, 268, 17, 17)
$Label9 = GUICtrlCreateLabel("I 7", 36, 268, 16, 17, $SS_CENTERIMAGE)
$DI8 = GUICtrlCreateCheckbox("", 76, 292, 17, 17)
$Label10 = GUICtrlCreateLabel("I 8", 36, 292, 16, 17, $SS_CENTERIMAGE)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group3 = GUICtrlCreateGroup("DA 1-4", 18, 350, 100, 230)
$DA1 = GUICtrlCreateCheckbox("", 74, 374, 17, 17)
$Label27 = GUICtrlCreateLabel("Q 1", 34, 374, 21, 17, $SS_CENTERIMAGE)
$DA2 = GUICtrlCreateCheckbox("", 74, 398, 17, 17)
$Label28 = GUICtrlCreateLabel("Q 2", 34, 398, 21, 17, $SS_CENTERIMAGE)
$DA3 = GUICtrlCreateCheckbox("", 74, 422, 17, 17)
$Label29 = GUICtrlCreateLabel("Q 3", 34, 422, 21, 17, $SS_CENTERIMAGE)
$DA4 = GUICtrlCreateCheckbox("", 74, 446, 17, 17)
$Label30 = GUICtrlCreateLabel("Q 4", 34, 446, 21, 17, $SS_CENTERIMAGE)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group4 = GUICtrlCreateGroup("VM", 130, 260, 130, 320)
$Label47 = GUICtrlCreateLabel("VM 0", 146, 284, 31, 17, $SS_CENTERIMAGE)
$Label48 = GUICtrlCreateLabel("VM 2", 146, 308, 31, 17, $SS_CENTERIMAGE)
$Label49 = GUICtrlCreateLabel("VM 4", 146, 332, 31, 17, $SS_CENTERIMAGE)
$Label50 = GUICtrlCreateLabel("VM 6", 146, 356, 31, 17, $SS_CENTERIMAGE)
$Label51 = GUICtrlCreateLabel("VM 8", 146, 380, 31, 17, $SS_CENTERIMAGE)
$Label52 = GUICtrlCreateLabel("VM 10", 146, 404, 37, 17, $SS_CENTERIMAGE)
$Label53 = GUICtrlCreateLabel("VM 12", 146, 428, 37, 17, $SS_CENTERIMAGE)
$Label54 = GUICtrlCreateLabel("VM 14", 146, 452, 37, 17, $SS_CENTERIMAGE)
$VM0 = GUICtrlCreateInput("0000", 186, 284, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
$VM2 = GUICtrlCreateInput("0000", 186, 308, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
$VM4 = GUICtrlCreateInput("0000", 186, 332, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
$VM6 = GUICtrlCreateInput("0000", 186, 356, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
$VM8 = GUICtrlCreateInput("0000", 186, 380, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
$VM10 = GUICtrlCreateInput("0000", 186, 404, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
$VM12 = GUICtrlCreateInput("0000", 186, 428, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
$VM14 = GUICtrlCreateInput("0000", 186, 452, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group13 = GUICtrlCreateGroup("AI 1-4", 130, 100, 130, 140)
$Label55 = GUICtrlCreateLabel("AI 1", 146, 124, 23, 17, $SS_CENTERIMAGE)
$Label56 = GUICtrlCreateLabel("AI 2", 146, 148, 23, 17, $SS_CENTERIMAGE)
$Label57 = GUICtrlCreateLabel("AI 3", 146, 172, 23, 17, $SS_CENTERIMAGE)
$Label58 = GUICtrlCreateLabel("AI 4", 146, 196, 23, 17, $SS_CENTERIMAGE)
$Input9 = GUICtrlCreateInput("0000", 186, 124, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
$Input10 = GUICtrlCreateInput("0000", 186, 148, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
$Input11 = GUICtrlCreateInput("0000", 186, 172, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
$Input12 = GUICtrlCreateInput("0000", 186, 196, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group8 = GUICtrlCreateGroup("Digital-Erweiterung 1", 285, 80, 220, 520)
$Group5 = GUICtrlCreateGroup("DI 9-16", 295, 100, 100, 230)
$DI9 = GUICtrlCreateCheckbox("", 351, 124, 17, 17)
$Label11 = GUICtrlCreateLabel("I 9", 311, 124, 16, 17, $SS_CENTERIMAGE)
$DI10 = GUICtrlCreateCheckbox("", 351, 148, 17, 17)
$Label12 = GUICtrlCreateLabel("I 10", 311, 148, 22, 17, $SS_CENTERIMAGE)
$DI11 = GUICtrlCreateCheckbox("", 351, 172, 17, 17)
$Label13 = GUICtrlCreateLabel("I 11", 311, 172, 22, 17, $SS_CENTERIMAGE)
$DI12 = GUICtrlCreateCheckbox("", 351, 196, 17, 17)
$Label14 = GUICtrlCreateLabel("I 12", 311, 196, 22, 17, $SS_CENTERIMAGE)
$DI13 = GUICtrlCreateCheckbox("", 351, 220, 17, 17)
$Label15 = GUICtrlCreateLabel("I 13", 311, 220, 22, 17, $SS_CENTERIMAGE)
$DI14 = GUICtrlCreateCheckbox("", 351, 244, 17, 17)
$Label16 = GUICtrlCreateLabel("I 14", 311, 244, 22, 17, $SS_CENTERIMAGE)
$DI15 = GUICtrlCreateCheckbox("", 351, 268, 17, 17)
$Label17 = GUICtrlCreateLabel("I 15", 311, 268, 22, 17, $SS_CENTERIMAGE)
$DI16 = GUICtrlCreateCheckbox("", 351, 292, 17, 17)
$Label18 = GUICtrlCreateLabel("I 16", 311, 292, 22, 17, $SS_CENTERIMAGE)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group6 = GUICtrlCreateGroup("DA 4-8", 295, 350, 100, 230)
$DA5 = GUICtrlCreateCheckbox("", 351, 374, 17, 17)
$Label31 = GUICtrlCreateLabel("Q 5", 311, 374, 21, 17, $SS_CENTERIMAGE)
$DA6 = GUICtrlCreateCheckbox("", 351, 398, 17, 17)
$Label32 = GUICtrlCreateLabel("Q 6", 311, 398, 21, 17, $SS_CENTERIMAGE)
$DA7 = GUICtrlCreateCheckbox("", 351, 422, 17, 17)
$Label33 = GUICtrlCreateLabel("Q 7", 311, 422, 21, 17, $SS_CENTERIMAGE)
$DA8 = GUICtrlCreateCheckbox("", 351, 446, 17, 17)
$Label34 = GUICtrlCreateLabel("Q 8", 311, 446, 21, 17, $SS_CENTERIMAGE)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group7 = GUICtrlCreateGroup("DA 9-12", 397, 350, 100, 230)
$DA9 = GUICtrlCreateCheckbox("", 453, 374, 17, 17)
$Label35 = GUICtrlCreateLabel("Q 9", 413, 374, 21, 17, $SS_CENTERIMAGE)
$DA10 = GUICtrlCreateCheckbox("", 453, 398, 17, 17)
$Label36 = GUICtrlCreateLabel("Q 10", 413, 398, 27, 17, $SS_CENTERIMAGE)
$DA11 = GUICtrlCreateCheckbox("", 453, 422, 17, 17)
$Label37 = GUICtrlCreateLabel("Q 11", 413, 422, 27, 17, $SS_CENTERIMAGE)
$DA12 = GUICtrlCreateCheckbox("", 453, 446, 17, 17)
$Label38 = GUICtrlCreateLabel("Q 12", 413, 446, 27, 17, $SS_CENTERIMAGE)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group9 = GUICtrlCreateGroup("Digital-Erweiterung 2", 520, 80, 230, 521)
$Group10 = GUICtrlCreateGroup("DI 17-24", 528, 100, 96, 230)
$DI17 = GUICtrlCreateCheckbox("", 584, 124, 17, 17)
$Label19 = GUICtrlCreateLabel("I 17", 544, 124, 22, 17, $SS_CENTERIMAGE)
$DI18 = GUICtrlCreateCheckbox("", 584, 148, 17, 17)
$Label20 = GUICtrlCreateLabel("I 18", 544, 148, 22, 17, $SS_CENTERIMAGE)
$DI19 = GUICtrlCreateCheckbox("", 584, 172, 17, 17)
$Label21 = GUICtrlCreateLabel("I 19", 544, 172, 22, 17, $SS_CENTERIMAGE)
$DI20 = GUICtrlCreateCheckbox("", 584, 196, 17, 17)
$Label22 = GUICtrlCreateLabel("I 20", 544, 196, 22, 17, $SS_CENTERIMAGE)
$DI21 = GUICtrlCreateCheckbox("", 584, 220, 17, 17)
$Label23 = GUICtrlCreateLabel("I 21", 544, 220, 22, 17, $SS_CENTERIMAGE)
$DI22 = GUICtrlCreateCheckbox("", 584, 244, 17, 17)
$Label24 = GUICtrlCreateLabel("I 22", 544, 244, 22, 17, $SS_CENTERIMAGE)
$DI23 = GUICtrlCreateCheckbox("", 584, 268, 17, 17)
$Label25 = GUICtrlCreateLabel("I 23", 544, 268, 22, 17, $SS_CENTERIMAGE)
$DI24 = GUICtrlCreateCheckbox("", 584, 292, 17, 17)
$Label26 = GUICtrlCreateLabel("I 24", 544, 292, 22, 17, $SS_CENTERIMAGE)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group11 = GUICtrlCreateGroup("DA 13-16", 528, 350, 100, 231)
$DA13 = GUICtrlCreateCheckbox("", 584, 374, 17, 17)
$Label39 = GUICtrlCreateLabel("Q 13", 544, 374, 27, 17, $SS_CENTERIMAGE)
$DA14 = GUICtrlCreateCheckbox("", 584, 398, 17, 17)
$Label40 = GUICtrlCreateLabel("Q 14", 544, 398, 27, 17, $SS_CENTERIMAGE)
$DA15 = GUICtrlCreateCheckbox("", 584, 422, 17, 17)
$Label41 = GUICtrlCreateLabel("Q 15", 544, 422, 27, 17, $SS_CENTERIMAGE)
$DA16 = GUICtrlCreateCheckbox("", 584, 446, 17, 17)
$Label42 = GUICtrlCreateLabel("Q 16", 544, 446, 27, 17, $SS_CENTERIMAGE)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group12 = GUICtrlCreateGroup("DA 17-24", 640, 350, 100, 233)
$Checkbox41 = GUICtrlCreateCheckbox("", 696, 374, 17, 17)
$Label43 = GUICtrlCreateLabel("NV", 656, 374, 19, 17, $SS_CENTERIMAGE)
$Checkbox42 = GUICtrlCreateCheckbox("", 696, 398, 17, 17)
$Label44 = GUICtrlCreateLabel("NV", 656, 398, 19, 17, $SS_CENTERIMAGE)
$Checkbox43 = GUICtrlCreateCheckbox("", 696, 422, 17, 17)
$Label45 = GUICtrlCreateLabel("NV", 656, 422, 19, 17, $SS_CENTERIMAGE)
$Checkbox44 = GUICtrlCreateCheckbox("", 696, 446, 17, 17)
$Label46 = GUICtrlCreateLabel("NV", 656, 446, 19, 17, $SS_CENTERIMAGE)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group14 = GUICtrlCreateGroup("Analog-Erweiterung 1", 765, 80, 150, 521)
$Group15 = GUICtrlCreateGroup("AI 5-6", 775, 100, 130, 230)
$Label59 = GUICtrlCreateLabel("AI 5", 791, 124, 23, 17, $SS_CENTERIMAGE)
$Label60 = GUICtrlCreateLabel("AI 6", 791, 148, 23, 17, $SS_CENTERIMAGE)
$AI5 = GUICtrlCreateInput("0000", 831, 124, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
$AI6 = GUICtrlCreateInput("0000", 831, 148, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group16 = GUICtrlCreateGroup("Analog-Erweiterung 2", 930, 80, 150, 520)
$Group17 = GUICtrlCreateGroup("AI 7-8", 940, 100, 130, 230)
$Label61 = GUICtrlCreateLabel("AI 7", 956, 124, 23, 17, $SS_CENTERIMAGE)
$Label62 = GUICtrlCreateLabel("AI 8", 956, 148, 23, 17, $SS_CENTERIMAGE)
$AI7 = GUICtrlCreateInput("0000", 996, 124, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
$AI8 = GUICtrlCreateInput("0000", 996, 148, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group18 = GUICtrlCreateGroup("Analog-Erweiterung 3", 1095, 80, 150, 521)
$Group19 = GUICtrlCreateGroup("AA 1-2", 1105, 350, 130, 230)
$Label63 = GUICtrlCreateLabel("AQ 1", 1121, 374, 28, 17, $SS_CENTERIMAGE)
$Label64 = GUICtrlCreateLabel("AQ 2", 1121, 398, 28, 17, $SS_CENTERIMAGE)
$AQ1 = GUICtrlCreateInput("0000", 1161, 374, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
$AQ2 = GUICtrlCreateInput("0000", 1161, 398, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Label1 = GUICtrlCreateLabel("IP-Adresse:", 16, 10, 58, 17, $SS_CENTERIMAGE)
$Label2 = GUICtrlCreateLabel("Port:", 46, 35, 26, 17, $SS_CENTERIMAGE)
$InputIP = GUICtrlCreateInput("192.168.2.177", 78, 10, 95, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER))
$InputPort = GUICtrlCreateInput("102", 78, 35, 35, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER))
$Connect = GUICtrlCreateButton("Connect", 232, 16, 113, 25)
$Disconnect = GUICtrlCreateButton("Disonnect", 360, 16, 113, 25)
$StatusBar1 = _GUICtrlStatusBar_Create($Form1)
_GUICtrlStatusBar_SetMinHeight($StatusBar1, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###;Verwendete Variablen
[/autoit] [autoit][/autoit] [autoit]
Global $isStarted = 0
Global $refresh =750
Global $Connection = 0
$sIPAddress = GUICtrlRead ($InputIP)
$iPort = GUICtrlRead ($InputPort)Global $VM, $newValue[15], $InputBit[24], $OutputBit[16], $InputValue[17], $OutputValue[4]
[/autoit] [autoit][/autoit] [autoit]
Global $iSocket= $iPort,$hInterface,$hConnection, $VM, $newValue, $IBit, $OBit, $IByte, $OByte
Global $ping= Ping($sIPAddress,500)Local $VM1, $VM2, $VM3, $VM4, $VM5, $VM6, $VM8, $VM10, $VM12, $VM14
[/autoit] [autoit][/autoit] [autoit]
Local $I1, $I2, $I3, $I4, $I5, $I6, $I7, $I8, $I9, $I10, $I11, $I12, $I13, $I14, $I15, $I16, $I17, $I18, $I19, $I20, $I21, $I22, $I23, $I24
Local $Q1, $Q2, $Q3, $Q4, $Q5, $Q6, $Q7, $Q8, $Q9, $Q10, $Q11, $Q12, $Q13, $Q14, $Q15, $Q16
Local $AI1, $AI2, $AI3, $AI4, $AI5, $AI6, $AI7, $AI8
Local $AQ1, $AQ2While 1
[/autoit] [autoit][/autoit] [autoit]
_daveInit()
GUISetOnEvent($GUI_EVENT_CLOSE, "_Events")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "_Events")
GUISetOnEvent($GUI_EVENT_RESTORE, "_Events")GUICtrlSetOnEvent($Connect, "_Connect")
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetOnEvent($Disconnect, "_Disconnect")If $isStarted = 1 and $Connection = 1 Then
[/autoit] [autoit][/autoit] [autoit]
_ReadPLC()
EndIfWEnd
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _Events() ; hier sind die Events der GUI:
[/autoit] [autoit][/autoit] [autoit]
; Fenster Schliessen, Minimieren, Maximieren,Select
[/autoit] [autoit][/autoit] [autoit]
Case @GUI_CtrlId = $GUI_EVENT_CLOSE
Exit
Case @GUI_CtrlId = $GUI_EVENT_MINIMIZECase @GUI_CtrlId = $GUI_EVENT_RESTORE
[/autoit] [autoit][/autoit] [autoit]EndSelect
[/autoit] [autoit][/autoit] [autoit]
EndFuncFunc _Connect()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($Connect, $GUI_DISABLE)
GUICtrlSetState($Disconnect, $GUI_ENABLE)
GUICtrlSetState ($InputIP, $GUI_DISABLE)
GUICtrlSetState ($InputPort, $GUI_DISABLE)
_daveTCPConnectLogo0BA7($sIPAddress, $iSocket, $hInterface, $hConnection,0, 0, 1,"Logo")
If @error = 0 Then
GUICtrlSetState($Connect, $GUI_DISABLE)
GUICtrlSetState($Disconnect, $GUI_ENABLE)
GUICtrlSetState ($InputIP, $GUI_DISABLE)
GUICtrlSetState ($InputPort, $GUI_DISABLE)
_GUICtrlStatusBar_SetText ($StatusBar1,"PLC Connected")
$isStarted = 1
$Connection = 1ElseIf @error > 0 then
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($Disconnect, $GUI_DISABLE)
GUICtrlSetState($Connect, $GUI_ENABLE)
GUICtrlSetState ($InputIP, $GUI_ENABLE)
GUICtrlSetState ($InputPort, $GUI_ENABLE)
_GUICtrlStatusBar_SetText ($StatusBar1,"Fehler beim Verbindungsaufbau")
$isStarted = 0
$Connection = 0
EndIf
EndFuncFunc _Disconnect()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($Disconnect, $GUI_DISABLE)
GUICtrlSetState($Connect, $GUI_ENABLE)
GUICtrlSetState ($InputIP, $GUI_ENABLE)
GUICtrlSetState ($InputPort, $GUI_ENABLE)
_daveTCPDisconnect($iSocket,$hInterface,$hConnection)
If @error = 0 Then
GUICtrlSetState($Disconnect, $GUI_DISABLE)
GUICtrlSetState($Connect, $GUI_ENABLE)
GUICtrlSetState ($InputIP, $GUI_ENABLE)
GUICtrlSetState ($InputPort, $GUI_ENABLE)
_GUICtrlStatusBar_SetText ($StatusBar1,"PLC Disconnected")
$Connection = 0
$isStarted = 0
EndIf
EndFuncFunc _ReadPLC()
[/autoit] [autoit][/autoit] [autoit]
; Lesen der Siemens-Logo WerteIf $isStarted = 1 and $Connection = 1 Then
[/autoit] [autoit][/autoit] [autoit]; Lesen der VM aus DB 1
[/autoit] [autoit][/autoit] [autoit]
For $VM = 0 to 14 step 2
_daveReadBytes($hConnection,$daveDB,1,$VM,2)
$newValue[$VM] = _daveGetU16($hConnection)
Next; Lesen der Eingangs-Bits 1 - 8
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
For $IBit = 0 To 7 Step 1
$InputBit[$IBit] = _daveReadBit($hConnection, $daveInputs, 0,0,$IBit)
Next; Lesen der Ausgangs-Bits 1 - 4
[/autoit] [autoit][/autoit] [autoit]
For $OBit = 0 To 3 Step 1
$OutputBit[$OBit] = _daveReadBit($hConnection, $daveOutputs, 0,0,$OBit)
Next;~ ; Lesen der Analog-Eingänge 1-4
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
;~ For $IByte = 0 to 6 Step 2
;~ _daveReadBytes($hConnection,$daveAnaIn,0,$IByte,2)
;~ $InputValue[$IByte] = _daveGetU16($hConnection)
;~ Next; Schreiben der VM-Werte in die GUI
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($VM0, $newValue[0])
GUICtrlSetData($VM2, $newValue[2])
GUICtrlSetData($VM4, $newValue[4])
GUICtrlSetData($VM6, $newValue[6])
GUICtrlSetData($VM8, $newValue[8])
GUICtrlSetData($VM10, $newValue[10])
GUICtrlSetData($VM12, $newValue[12])
GUICtrlSetData($VM14, $newValue[14]); Schreiben der Eingägnge in die GUI
[/autoit] [autoit][/autoit] [autoit]
If $InputBit[0] = 1 then
GUICtrlSetState($DI1, $GUI_CHECKED)
ElseIf $InputBit[0] = 0 then
GUICtrlSetState($DI1, $GUI_UNCHECKED)
EndIfIf $InputBit[1] = 1 then
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($DI2, $GUI_CHECKED)
ElseIf $InputBit[1] = 0 then
GUICtrlSetState($DI2, $GUI_UNCHECKED)
EndIfIf $InputBit[2] = 1 then
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($DI3, $GUI_CHECKED)
ElseIf $InputBit[2] = 0 then
GUICtrlSetState($DI3, $GUI_UNCHECKED)
EndIfIf $InputBit[3] = 1 then
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($DI4, $GUI_CHECKED)
ElseIf $InputBit[3] = 0 then
GUICtrlSetState($DI4, $GUI_UNCHECKED)
EndIfIf $InputBit[4] = 1 then
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($DI5, $GUI_CHECKED)
ElseIf $InputBit[4] = 0 then
GUICtrlSetState($DI5, $GUI_UNCHECKED)
EndIfIf $InputBit[5] = 1 then
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($DI6, $GUI_CHECKED)
ElseIf $InputBit[5] = 0 then
GUICtrlSetState($DI6, $GUI_UNCHECKED)
EndIfIf $InputBit[6] = 1 then
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($DI7, $GUI_CHECKED)
ElseIf $InputBit[6] = 0 then
GUICtrlSetState($DI7, $GUI_UNCHECKED)
EndIfIf $InputBit[7] = 1 then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($DI8, $GUI_CHECKED)
ElseIf $InputBit[7] = 0 then
GUICtrlSetState($DI8, $GUI_UNCHECKED)
EndIf; Schreiben der Ausgänge in die GUI
[/autoit] [autoit][/autoit] [autoit]
If $OutputBit[0] = 1 then
GUICtrlSetState($DA1, $GUI_CHECKED)
ElseIf $OutputBit[0] = 0 then
GUICtrlSetState($DA1, $GUI_UNCHECKED)
EndIfIf $OutputBit[1] = 1 then
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($DA2, $GUI_CHECKED)
ElseIf $OutputBit[1] = 0 then
GUICtrlSetState($DA2, $GUI_UNCHECKED)
EndIfIf $OutputBit[2] = 1 then
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($DA3, $GUI_CHECKED)
ElseIf $OutputBit[2] = 0 then
GUICtrlSetState($DA3, $GUI_UNCHECKED)
EndIfIf $OutputBit[3] = 1 then
[/autoit] [autoit][/autoit] [autoit][/autoit]
GUICtrlSetState($DA4, $GUI_CHECKED)
ElseIf $OutputBit[3] = 0 then
GUICtrlSetState($DA4, $GUI_UNCHECKED)
EndIf
EndIf
EndFuncÜber Hinweise, Anregungen, Bugs und Lösungsvorschläge würde ich mich freuen.
MfG
Christian
-
Hallo zusammen,
ich bin hier zwar schon seit ein paar Tagen angemeldet, aber irgendwie ist es mir bisher entgangen mich einmal vorzustellen.
Das ganze will ich hiermit aber jetzt nachholen...Ich bin der Christian, 28 Jahre alt oder auch jung (jenachdem wie man es sieht ), bin gelernter Mechatroniker und arbeite in einer Betriebs-Instandhaltung.
Meine Interessen liegen in der SPS-Programmierung und Automatisierung. Durch eine betriebliche Sonderaufgaben bin ich zu dem Thema Visualisierung bzw dezentrales Auslesen von PLC´s gekommen und habe mich vorrangig ersteinmal mit WinCC flex beschäftigt und ein wenig mit Movicon. Beides große und leistungsstarke Programme, aber Lizensen und programmtechnische Einschränkungen ließen meinen Blick dann doch weiter als bis zum Tellerrand schauen. Dabei bin ich über einige Opensource-Projekte für PLC-HMI und Scada gestolpert, aber alles irgendwie noch zu unausgereift für eine sinnvolle Verwendung. Doch dann bin ich auf libnodave und damit auch auf AutoIt aufmerksam geworden und habe mich eingehend damit beschäftigt.Mein Projekt nimmt in der Zwischenzeit Form an und ich kann es sogar schon nutzen. Auch wenn noch nicht im vollen Funktions-Umfang wie ich ihn realiseren möchte und soll, aber das kommt alles jetzt nach und nach. Und vorallem das Beste ist, es braucht nur einen Bruchteil der Resourcen wie die Programme der HMI-Editoren von Siemens und Movicon.
Bei meinen bisherigen Fragen bzw Gesprächen mit Mitgliedern hier, wurde mir sehr gut geholfen. Also Klasse Forum hier!!!
-
@ m-obi
so ich hab mich gestern Abend mal etwas in dieses Adlibregister eingelesen, vielleicht werde ich damit meine Visu etwas überarbeiten. Aber ich denke, dass wird wohl etwas dauern bis da was Funktionierendes rauskommt...und wegen vivus seiner .exe werd ich ihm mal ne PN schicken, vielleicht weiß er ja Rat oder hat ne Idee dazu.
Sobald es was Neues gibt, melde ich mich.
Aber falls jemand weitere Vorschläge zur Verbesserung des Scriptes hat, nehme ich diese gern dankend an
-
so dann mal hier das komplette Script, die LogAitDave_V3.0 stammt von "vivus" sowie Großteil des Scriptes für die Visualisierung. Ich habe hier nur ein paar Felder noch eingefügt das Loggen der Werte und die Formatierung analoger Werte
Spoiler anzeigen
[autoit]; FILEINSTALL
[/autoit] [autoit][/autoit] [autoit]
FileInstall(".\libnodave.dll",".\libnodave.dll")
FileInstall(".\LogAitDave_V3.0.exe",".\LogAitDave_V3.0.exe")
FileInstall(".\LAD.ico",".\LAD.ico")
FileInstall(".\Visualisierung.kxf",".\Visualisierung.kxf")#include <ButtonConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>; includes für Softwareverarbeitung
[/autoit] [autoit][/autoit] [autoit]
#include <Constants.au3>
#include <String.au3>
#include <Array.au3>
#include <File.au3>; die UDF für die LogAitDave
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include "LogAitDave_UDF.au3"HotKeySet("{ESC}", "Terminate") ; hier wird ein HOTKEY gesetzt auf die Taste ESC
[/autoit] [autoit][/autoit] [autoit]; hier die Gui in Koda erstellt
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#Region ### START Koda GUI section ### Form=H:\Logimat\Release20130116\Logimat-Visualisierung.kxf
$Form1_1 = GUICreate("Visualisierung für Logimat-Klappensteuerung", @DesktopWidth, @DesktopHeight - 72, 0, 0)
GUISetState (@SW_MAXIMIZE)
$Label1 = GUICtrlCreateLabel("IP", 13, 13, 14, 17)
$imput_ip = GUICtrlCreateInput("192.168.2.177", 13, 33, 98, 21)
$Start = GUICtrlCreateButton("Start", 13, 229, 100, 20)
$Label2 = GUICtrlCreateLabel("Refresh Time", 13, 65, 67, 17)
$imput_refreshT = GUICtrlCreateInput("100", 13, 85, 98, 21)
$Input_1_8 = GUICtrlCreateGroup("Input_1_8", 130, 13, 72, 202)
$CB_I01 = GUICtrlCreateCheckbox("I01", 137, 52, 46, 14)
GUICtrlSetState(-1, $GUI_DISABLE)
$CB_I02 = GUICtrlCreateCheckbox("I02", 137, 72, 46, 13)
GUICtrlSetState(-1, $GUI_DISABLE)
$CB_I03 = GUICtrlCreateCheckbox("I03", 137, 91, 46, 14)
GUICtrlSetState(-1, $GUI_DISABLE)
$CB_I04 = GUICtrlCreateCheckbox("I04", 137, 111, 46, 13)
GUICtrlSetState(-1, $GUI_DISABLE)
$CB_I05 = GUICtrlCreateCheckbox("I05", 137, 130, 46, 14)
GUICtrlSetState(-1, $GUI_DISABLE)
$CB_I06 = GUICtrlCreateCheckbox("I06", 137, 150, 46, 13)
GUICtrlSetState(-1, $GUI_DISABLE)
$CB_I07 = GUICtrlCreateCheckbox("I07", 137, 169, 46, 14)
GUICtrlSetState(-1, $GUI_DISABLE)
$L_I_1_8 = GUICtrlCreateLabel("000", 137, 33, 22, 17)
$CB_I08 = GUICtrlCreateCheckbox("I08", 137, 189, 46, 13)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Merker1_8 = GUICtrlCreateGroup("Merker1_8", 299, 13, 72, 202)
$L_M_1_8 = GUICtrlCreateLabel("000", 306, 33, 22, 17)
$CB_M01 = GUICtrlCreateCheckbox("M01", 306, 52, 52, 14)
$CB_M02 = GUICtrlCreateCheckbox("M02", 306, 72, 52, 13)
$CB_M03 = GUICtrlCreateCheckbox("M03", 306, 91, 52, 14)
$CB_M04 = GUICtrlCreateCheckbox("M04", 306, 111, 52, 13)
$CB_M05 = GUICtrlCreateCheckbox("M05", 306, 130, 52, 14)
$CB_M06 = GUICtrlCreateCheckbox("M06", 306, 150, 52, 13)
$CB_M07 = GUICtrlCreateCheckbox("M07", 306, 169, 52, 14)
$CB_M08 = GUICtrlCreateCheckbox("M08", 306, 189, 52, 13)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Input_9_16 = GUICtrlCreateGroup("Input_9_16", 130, 221, 72, 202)
$CB_I09 = GUICtrlCreateCheckbox("I09", 137, 260, 46, 14)
GUICtrlSetState(-1, $GUI_DISABLE)
$CB_I10 = GUICtrlCreateCheckbox("I10", 137, 280, 46, 13)
GUICtrlSetState(-1, $GUI_DISABLE)
$CB_I11 = GUICtrlCreateCheckbox("I11", 137, 299, 46, 14)
GUICtrlSetState(-1, $GUI_DISABLE)
$CB_I12 = GUICtrlCreateCheckbox("I12", 137, 319, 46, 13)
GUICtrlSetState(-1, $GUI_DISABLE)
$CB_I13 = GUICtrlCreateCheckbox("I13", 137, 338, 46, 14)
GUICtrlSetState(-1, $GUI_DISABLE)
$CB_I14 = GUICtrlCreateCheckbox("I14", 137, 358, 46, 13)
GUICtrlSetState(-1, $GUI_DISABLE)
$CB_I15 = GUICtrlCreateCheckbox("I15", 137, 377, 46, 14)
GUICtrlSetState(-1, $GUI_DISABLE)
$CB_I16 = GUICtrlCreateCheckbox("I16", 137, 397, 46, 13)
GUICtrlSetState(-1, $GUI_DISABLE)
$L_I_9_16 = GUICtrlCreateLabel("000", 137, 241, 22, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Input_17_24 = GUICtrlCreateGroup("Input_17_24", 215, 13, 72, 202)
$CB_I17 = GUICtrlCreateCheckbox("I17", 222, 52, 46, 14)
GUICtrlSetState(-1, $GUI_DISABLE)
$CB_I18 = GUICtrlCreateCheckbox("I18", 222, 72, 46, 13)
GUICtrlSetState(-1, $GUI_DISABLE)
$CB_I19 = GUICtrlCreateCheckbox("I19", 222, 91, 46, 14)
GUICtrlSetState(-1, $GUI_DISABLE)
$CB_I20 = GUICtrlCreateCheckbox("I20", 222, 111, 46, 13)
GUICtrlSetState(-1, $GUI_DISABLE)
$CB_I21 = GUICtrlCreateCheckbox("I21", 222, 130, 39, 14)
GUICtrlSetState(-1, $GUI_DISABLE)
$CB_I22 = GUICtrlCreateCheckbox("I22", 222, 150, 39, 13)
GUICtrlSetState(-1, $GUI_DISABLE)
$CB_I23 = GUICtrlCreateCheckbox("I23", 222, 169, 46, 14)
GUICtrlSetState(-1, $GUI_DISABLE)
$CB_I24 = GUICtrlCreateCheckbox("I24", 222, 189, 46, 13)
GUICtrlSetState(-1, $GUI_DISABLE)
$L_I_17_24 = GUICtrlCreateLabel("000", 222, 33, 22, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Merker_9_16 = GUICtrlCreateGroup("Merker_9_16", 299, 221, 72, 202)
$L_M_9_16 = GUICtrlCreateLabel("000", 306, 241, 22, 17)
$CB_M09 = GUICtrlCreateCheckbox("M09", 306, 260, 52, 14)
$CB_M10 = GUICtrlCreateCheckbox("M10", 306, 280, 52, 13)
$CB_M11 = GUICtrlCreateCheckbox("M11", 306, 299, 52, 14)
$CB_M12 = GUICtrlCreateCheckbox("M12", 306, 319, 46, 13)
$CB_M13 = GUICtrlCreateCheckbox("M13", 306, 338, 46, 14)
$CB_M14 = GUICtrlCreateCheckbox("M14", 306, 358, 46, 13)
$CB_M15 = GUICtrlCreateCheckbox("M15", 306, 377, 46, 14)
$CB_M16 = GUICtrlCreateCheckbox("M16", 306, 397, 46, 13)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Merker_17_24 = GUICtrlCreateGroup("Merker_17_24", 384, 13, 78, 202)
$L_M_17_24 = GUICtrlCreateLabel("000", 391, 33, 22, 17)
$CB_M17 = GUICtrlCreateCheckbox("M17", 391, 52, 52, 14)
$CB_M18 = GUICtrlCreateCheckbox("M18", 391, 72, 52, 13)
$CB_M19 = GUICtrlCreateCheckbox("M19", 391, 91, 52, 14)
$CB_M20 = GUICtrlCreateCheckbox("M20", 391, 111, 46, 13)
$CB_M21 = GUICtrlCreateCheckbox("M21", 391, 130, 52, 14)
$CB_M22 = GUICtrlCreateCheckbox("M22", 391, 150, 46, 13)
$CB_M23 = GUICtrlCreateCheckbox("M23", 391, 169, 46, 14)
$CB_M24 = GUICtrlCreateCheckbox("M24", 391, 189, 46, 13)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Merker_25_32 = GUICtrlCreateGroup("Merker_25_32", 384, 221, 78, 202)
$L_M_25_32 = GUICtrlCreateLabel("000", 391, 241, 22, 17)
$CB_M25 = GUICtrlCreateCheckbox("M25", 391, 260, 46, 14)
$CB_M26 = GUICtrlCreateCheckbox("M26", 391, 280, 46, 13)
$CB_M27 = GUICtrlCreateCheckbox("M27", 391, 299, 46, 14)
$CB_M28 = GUICtrlCreateCheckbox("M28", 391, 319, 46, 13)
$CB_M29 = GUICtrlCreateCheckbox("M29", 391, 338, 46, 14)
$CB_M30 = GUICtrlCreateCheckbox("M30", 391, 358, 46, 13)
$CB_M31 = GUICtrlCreateCheckbox("M31", 391, 377, 46, 14)
$CB_M32 = GUICtrlCreateCheckbox("M32", 391, 397, 46, 13)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Out_1_8 = GUICtrlCreateGroup("Out_1_8", 475, 13, 59, 202)
$L_Q_1_8 = GUICtrlCreateLabel("000", 482, 33, 22, 17)
$CB_Q01 = GUICtrlCreateCheckbox("Q01", 482, 52, 52, 14)
$CB_Q02 = GUICtrlCreateCheckbox("Q02", 482, 72, 52, 13)
$CB_Q03 = GUICtrlCreateCheckbox("Q03", 482, 91, 52, 14)
$CB_Q04 = GUICtrlCreateCheckbox("Q04", 482, 111, 46, 13)
$CB_Q05 = GUICtrlCreateCheckbox("Q05", 482, 130, 46, 14)
$CB_Q06 = GUICtrlCreateCheckbox("Q06", 482, 150, 46, 13)
$CB_Q07 = GUICtrlCreateCheckbox("Q07", 482, 169, 46, 14)
$CB_Q08 = GUICtrlCreateCheckbox("Q08", 482, 189, 46, 13)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Out_9_16 = GUICtrlCreateGroup("Out_9_16", 475, 221, 59, 202)
$L_Q_9_16 = GUICtrlCreateLabel("000", 482, 241, 22, 17)
$CB_Q09 = GUICtrlCreateCheckbox("Q09", 482, 260, 46, 14)
$CB_Q10 = GUICtrlCreateCheckbox("Q10", 482, 280, 46, 13)
$CB_Q11 = GUICtrlCreateCheckbox("Q11", 482, 299, 46, 14)
$CB_Q12 = GUICtrlCreateCheckbox("Q12", 482, 319, 46, 13)
$CB_Q13 = GUICtrlCreateCheckbox("Q13", 482, 338, 46, 14)
$CB_Q14 = GUICtrlCreateCheckbox("Q14", 482, 358, 46, 13)
$CB_Q15 = GUICtrlCreateCheckbox("Q15", 482, 377, 46, 14)
$CB_Q16 = GUICtrlCreateCheckbox("Q16", 482, 397, 46, 13)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Stop = GUICtrlCreateButton("Stop", 13, 253, 100, 20)
$Label3 = GUICtrlCreateLabel("DB->", 13, 117, 28, 17)
$I_DB1 = GUICtrlCreateInput("0", 46, 117, 20, 21)
$Label4 = GUICtrlCreateLabel("=", 72, 117, 10, 17)
$DisplayDB_1 = GUICtrlCreateLabel("00,00", 85, 117, 28, 17)
$Label5 = GUICtrlCreateLabel("DB->", 13, 143, 28, 17)
$I_DB2 = GUICtrlCreateInput("2", 46, 143, 20, 21)
$Label6 = GUICtrlCreateLabel("=", 72, 143, 10, 17)
$Label7 = GUICtrlCreateLabel("DB->", 13, 169, 28, 17)
$I_DB4 = GUICtrlCreateInput("4", 46, 169, 20, 21)
$Label9 = GUICtrlCreateLabel("=", 72, 169, 10, 17)
$DisplayDB_2 = GUICtrlCreateLabel("00,00", 85, 143, 28, 17)
$Label8 = GUICtrlCreateLabel("DB->", 13, 195, 28, 17)
$I_DB6 = GUICtrlCreateInput("6", 46, 195, 20, 21)
$DisplayDB_4 = GUICtrlCreateLabel("00,00", 85, 169, 28, 17)
$Label10 = GUICtrlCreateLabel("=", 72, 195, 10, 17)
$DisplayDB_6 = GUICtrlCreateLabel("00,00", 85, 195, 28, 17)GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]
#EndRegion ### END Koda GUI section ###;############## ENDe der GUI ( des User interfaces ) ###########################
[/autoit] [autoit][/autoit] [autoit];~ ; handler Array's für das setzen der von der Logo intern beschalteten zustände auf das User interface
[/autoit] [autoit][/autoit] [autoit]
Dim $GUI_I1to8_Handler[8]
$GUI_I1to8_Handler[0] = $CB_I01
$GUI_I1to8_Handler[1] = $CB_I02
$GUI_I1to8_Handler[2] = $CB_I03
$GUI_I1to8_Handler[3] = $CB_I04
$GUI_I1to8_Handler[4] = $CB_I05
$GUI_I1to8_Handler[5] = $CB_I06
$GUI_I1to8_Handler[6] = $CB_I07
$GUI_I1to8_Handler[7] = $CB_I08Dim $GUI_I9to16_Handler[8]
[/autoit] [autoit][/autoit] [autoit]
$GUI_I9to16_Handler[0] = $CB_I09
$GUI_I9to16_Handler[1] = $CB_I10
$GUI_I9to16_Handler[2] = $CB_I11
$GUI_I9to16_Handler[3] = $CB_I12
$GUI_I9to16_Handler[4] = $CB_I13
$GUI_I9to16_Handler[5] = $CB_I14
$GUI_I9to16_Handler[6] = $CB_I15
$GUI_I9to16_Handler[7] = $CB_I16Dim $GUI_I17to24_Handler[8]
[/autoit] [autoit][/autoit] [autoit]
$GUI_I17to24_Handler[0] = $CB_I17
$GUI_I17to24_Handler[1] = $CB_I18
$GUI_I17to24_Handler[2] = $CB_I19
$GUI_I17to24_Handler[3] = $CB_I20
$GUI_I17to24_Handler[4] = $CB_I21
$GUI_I17to24_Handler[5] = $CB_I22
$GUI_I17to24_Handler[6] = $CB_I23
$GUI_I17to24_Handler[7] = $CB_I24Dim $GUI_M1to8_Handler[8]
[/autoit] [autoit][/autoit] [autoit]
$GUI_M1to8_Handler[0] = $CB_M01
$GUI_M1to8_Handler[1] = $CB_M02
$GUI_M1to8_Handler[2] = $CB_M03
$GUI_M1to8_Handler[3] = $CB_M04
$GUI_M1to8_Handler[4] = $CB_M05
$GUI_M1to8_Handler[5] = $CB_M06
$GUI_M1to8_Handler[6] = $CB_M07
$GUI_M1to8_Handler[7] = $CB_M08Dim $GUI_M9to16_Handler[8]
[/autoit] [autoit][/autoit] [autoit]
$GUI_M9to16_Handler[0] = $CB_M09
$GUI_M9to16_Handler[1] = $CB_M10
$GUI_M9to16_Handler[2] = $CB_M11
$GUI_M9to16_Handler[3] = $CB_M12
$GUI_M9to16_Handler[4] = $CB_M13
$GUI_M9to16_Handler[5] = $CB_M14
$GUI_M9to16_Handler[6] = $CB_M15
$GUI_M9to16_Handler[7] = $CB_M16Dim $GUI_M17to24_Handler[8]
[/autoit] [autoit][/autoit] [autoit]
$GUI_M17to24_Handler[0] = $CB_M17
$GUI_M17to24_Handler[1] = $CB_M18
$GUI_M17to24_Handler[2] = $CB_M19
$GUI_M17to24_Handler[3] = $CB_M20
$GUI_M17to24_Handler[4] = $CB_M21
$GUI_M17to24_Handler[5] = $CB_M22
$GUI_M17to24_Handler[6] = $CB_M23
$GUI_M17to24_Handler[7] = $CB_M24Dim $GUI_M25to32_Handler[8]
[/autoit] [autoit][/autoit] [autoit]
$GUI_M25to32_Handler[0] = $CB_M25
$GUI_M25to32_Handler[1] = $CB_M26
$GUI_M25to32_Handler[2] = $CB_M27
$GUI_M25to32_Handler[3] = $CB_M28
$GUI_M25to32_Handler[4] = $CB_M29
$GUI_M25to32_Handler[5] = $CB_M30
$GUI_M25to32_Handler[6] = $CB_M31
$GUI_M25to32_Handler[7] = $CB_M32Dim $GUI_Q1to8_Handler[8]
[/autoit] [autoit][/autoit] [autoit]
$GUI_Q1to8_Handler[0] = $CB_Q01
$GUI_Q1to8_Handler[1] = $CB_Q02
$GUI_Q1to8_Handler[2] = $CB_Q03
$GUI_Q1to8_Handler[3] = $CB_Q04
$GUI_Q1to8_Handler[4] = $CB_Q05
$GUI_Q1to8_Handler[5] = $CB_Q06
$GUI_Q1to8_Handler[6] = $CB_Q07
$GUI_Q1to8_Handler[7] = $CB_Q08Dim $GUI_Q9to16_Handler[8]
[/autoit] [autoit][/autoit] [autoit]
$GUI_Q9to16_Handler[0] = $CB_Q09
$GUI_Q9to16_Handler[1] = $CB_Q10
$GUI_Q9to16_Handler[2] = $CB_Q11
$GUI_Q9to16_Handler[3] = $CB_Q12
$GUI_Q9to16_Handler[4] = $CB_Q13
$GUI_Q9to16_Handler[5] = $CB_Q14
$GUI_Q9to16_Handler[6] = $CB_Q15
$GUI_Q9to16_Handler[7] = $CB_Q16;############################### Hier die Main schleife !! ( hier arbeitet das Programm ) ##########################
[/autoit] [autoit][/autoit] [autoit]Global $refresh;
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Global $isStarted = 0 ; variable die speichert, ob start gedrückt wurde
Global $nMsg; ; variable welche den inhalt der Gui Message zwischenspeichert.
Global $call = 1; durchlaufzähler, welcher die abarbeitung verschiedener befehle auf verschiedene durchläufe sortiert,
; Da sonst die Gui träge erscheint. Ein aufruf oder abruf von oder zu der Logo dauert rund 50ms
; pro durchlauf also nur ein aufruf.While 1
[/autoit] [autoit][/autoit] [autoit]
Local $begin = TimerInit() ; initialisierung einer stoppuhr$nMsg = GUIGetMsg() ; Gui Message in zwischenvariable speichern
[/autoit] [autoit][/autoit] [autoit]
Switch $nMsg ; der main case verteiler ;
Case $Start ; wenn Start gedrückt wurde
GUICtrlSetState($Start, $GUI_DISABLE) ; the label is in disable state
GUICtrlSetState($imput_refreshT, $GUI_DISABLE) ; the label is in disable state
GUICtrlSetState($Stop, $GUI_ENABLE) ; the label is in disable state
GUICtrlSetState($imput_ip, $GUI_DISABLE) ; the label is in disable state
GUICtrlSetState($I_DB1, $GUI_DISABLE) ; the label is in disable state
GUICtrlSetState($I_DB2, $GUI_DISABLE) ; the label is in disable state
GUICtrlSetState($I_DB4, $GUI_DISABLE) ; the label is in disable state
GUICtrlSetState($I_DB6, $GUI_DISABLE) ; the label is in disable state; die IP aus der Gui Holen
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_LAD_SetIP(GUICtrlRead($imput_ip))
$refresh = GUICtrlRead($imput_refreshT) ; abspeichern der usereingabe
$isStarted = 1Case $Stop ; wenn stop gedrückt wurde
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($Start, $GUI_ENABLE) ; the label is in disable state
GUICtrlSetState($imput_refreshT, $GUI_ENABLE) ; the label is in disable state
GUICtrlSetState($Stop, $GUI_DISABLE) ; the label is in disable state
GUICtrlSetState($imput_ip, $GUI_ENABLE) ; the label is in disable state
GUICtrlSetState($I_DB1, $GUI_ENABLE) ; the label is in disable state
GUICtrlSetState($I_DB2, $GUI_ENABLE) ; the label is in disable state
GUICtrlSetState($I_DB4, $GUI_ENABLE) ; the label is in disable state
GUICtrlSetState($I_DB6, $GUI_ENABLE) ; the label is in disable stateGUICtrlSetData($imput_refreshT, $refresh)
[/autoit] [autoit][/autoit] [autoit]$isStarted = 0
[/autoit] [autoit][/autoit] [autoit]Case $CB_Q01 ; wenn Checkbox angeklickt wurde
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_LAD_Q_tougle(1);_Q_chance($CB_Q01, 1, GUICtrlRead($CB_Q01))
Case $CB_Q02
_LAD_Q_tougle(2);_Q_chance($CB_Q02, 2)
Case $CB_Q03
_LAD_Q_tougle(3);_Q_chance($CB_Q03, 3)
Case $CB_Q04
_LAD_Q_tougle(4);_Q_chance($CB_Q04, 4)
Case $CB_Q05
_LAD_Q_tougle(5);_Q_chance($CB_Q05, 5)
Case $CB_Q06
_LAD_Q_tougle(6);_Q_chance($CB_Q06, 6)
Case $CB_Q07
_LAD_Q_tougle(7);_Q_chance($CB_Q07, 7)
Case $CB_Q08
_LAD_Q_tougle(8);_Q_chance($CB_Q08,Case $CB_Q09
[/autoit] [autoit][/autoit] [autoit]
_LAD_Q_tougle(9);_Q_chance($CB_Q09, 9)
Case $CB_Q10
_LAD_Q_tougle(10);_Q_chance($CB_Q10, 10)
Case $CB_Q11
_LAD_Q_tougle(11);_Q_chance($CB_Q11, 11)
Case $CB_Q12
_LAD_Q_tougle(12);_Q_chance($CB_Q12, 12)
Case $CB_Q13
_LAD_Q_tougle(13);_Q_chance($CB_Q13, 13)
Case $CB_Q14
_LAD_Q_tougle(14);_Q_chance($CB_Q14, 14)
Case $CB_Q15
_LAD_Q_tougle(15);_Q_chance($CB_Q15, 15)
Case $CB_Q16
_LAD_Q_tougle(16);_Q_chance($CB_Q16, 16)Case $CB_M01
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_LAD_M_tougle(1);_M_chance($CB_M01, 1)
Case $CB_M02
_LAD_M_tougle(2);_M_chance($CB_M02, 2)
Case $CB_M03
_LAD_M_tougle(3);_M_chance($CB_M03, 3)
Case $CB_M04
_LAD_M_tougle(4);_M_chance($CB_M04, 4)
Case $CB_M05
_LAD_M_tougle(5);_M_chance($CB_M05, 5)
Case $CB_M06
_LAD_M_tougle(6);_M_chance($CB_M06, 6)
Case $CB_M07
_LAD_M_tougle(7);_M_chance($CB_M07, 7)
Case $CB_M08
_LAD_M_tougle(8);_M_chance($CB_M08,Case $CB_M09
[/autoit] [autoit][/autoit] [autoit]
_LAD_M_tougle(9);_M_chance($CB_M09, 9)
Case $CB_M10
_LAD_M_tougle(10);_M_chance($CB_M10, 10)
Case $CB_M11
_LAD_M_tougle(11)
Case $CB_M12
_LAD_M_tougle(12)
Case $CB_M13
_LAD_M_tougle(13)
Case $CB_M14
_LAD_M_tougle(14)
Case $CB_M15
_LAD_M_tougle(15)
Case $CB_M16
_LAD_M_tougle(16)Case $CB_M17
[/autoit] [autoit][/autoit] [autoit]
_LAD_M_tougle(17)
Case $CB_M18
_LAD_M_tougle(18)
Case $CB_M19
_LAD_M_tougle(19)
Case $CB_M20
_LAD_M_tougle(20)
Case $CB_M21
_LAD_M_tougle(21)
Case $CB_M22
_LAD_M_tougle(22)
Case $CB_M23
_LAD_M_tougle(23)
Case $CB_M24
_LAD_M_tougle(24)Case $CB_M25
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_LAD_M_tougle(25)
Case $CB_M26
_LAD_M_tougle(26)
Case $CB_M27
_LAD_M_tougle(27)
Case $CB_M28
_LAD_M_tougle(28)
Case $CB_M29
_LAD_M_tougle(29)
Case $CB_M30
_LAD_M_tougle(30)
Case $CB_M31
_LAD_M_tougle(31)
Case $CB_M32
;~ _LAD_M_tougle(32)Case $GUI_EVENT_CLOSE ; wenn auf schließen gedrückt wird
[/autoit] [autoit][/autoit] [autoit]
$isStarted = 0
ExitCase Else ; wenn nichts gedrückt wird
[/autoit] [autoit][/autoit] [autoit]
; Gui Funktionen
Sleep($refresh) ; eine pauseIf $isStarted = 1 Then ; abfragen, ob Start betätigt wurde
[/autoit] [autoit][/autoit] [autoit]; connect !!
[/autoit] [autoit][/autoit] [autoit]; nur ein LOGO call pro GUI aktuialisierung !! sonst wirds zeitkritisch
[/autoit] [autoit][/autoit] [autoit]If $call = 1 Then
[/autoit] [autoit][/autoit] [autoit]
$array = _LAD_ReadAllInputs() ; holt die imput register aus der logo
GUICtrlSetData($L_I_1_8, $array[1])
_CB_Update($GUI_I1to8_Handler, $array[1])
GUICtrlSetData($L_I_9_16, $array[2])
_CB_Update($GUI_I9to16_Handler, $array[2])
GUICtrlSetData($L_I_17_24, $array[3])
_CB_Update($GUI_I17to24_Handler, $array[3])
ElseIf $call = 2 Then
$array = _LAD_ReadAllMerker()
GUICtrlSetData($L_M_1_8, $array[1])
GUICtrlSetData($L_M_9_16, $array[2])
GUICtrlSetData($L_M_17_24, $array[3])
_CB_Update($GUI_M1to8_Handler, $array[1], $GUI_INDETERMINATE)
_CB_Update($GUI_M9to16_Handler, $array[2], $GUI_INDETERMINATE)
_CB_Update($GUI_M17to24_Handler, $array[3], $GUI_INDETERMINATE)
ElseIf $call = 3 Then
_CB_Update($GUI_M25to32_Handler, _LAD_ReadMerkerRegister(4), $GUI_INDETERMINATE)ElseIf $call = 4 Then
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($L_M_25_32, _LAD_ReadMerkerRegister(4))ElseIf $call = 5 Then
[/autoit] [autoit][/autoit] [autoit]
$array = _LAD_ReadAllOutput()
GUICtrlSetData($L_Q_1_8, $array[1])
GUICtrlSetData($L_Q_9_16, $array[2])
_CB_Update($GUI_Q1to8_Handler, $array[1], $GUI_INDETERMINATE)
_CB_Update($GUI_Q9to16_Handler, $array[2], $GUI_INDETERMINATE)ElseIf $call = 6 Then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$newValue = _LAD_ReadWord(GUICtrlRead($I_DB1))
$newValue1 = StringReplace(StringFormat( "%.2f", $newValue /10), ".", ",")
GUICtrlSetData($DisplayDB_1, $newValue1)ElseIf $call = 7 Then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$newValue = _LAD_ReadWord(GUICtrlRead($I_DB2))
$newValue1 = StringReplace(StringFormat( "%.2f", $newValue /10), ".", ",")
GUICtrlSetData($DisplayDB_2, $newValue1)ElseIf $call = 8 Then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$newValue = _LAD_ReadWord(GUICtrlRead($I_DB4))
$newValue1 = StringReplace(StringFormat( "%.2f", $newValue /10), ".", ",")
GUICtrlSetData($DisplayDB_4, $newValue1)ElseIf $call = 9 Then
[/autoit] [autoit][/autoit] [autoit]
$newValue = _LAD_ReadWord(GUICtrlRead($I_DB6))
$newValue1 = StringReplace(StringFormat( "%.2f", $newValue /10), ".", ",")
GUICtrlSetData($DisplayDB_6, $newValue1)Else
[/autoit] [autoit][/autoit] [autoit]
$call = 0 ; hier wird auf 0 initialisiert, weil direkt danach ein +1 kommt !!EndIf
[/autoit] [autoit][/autoit] [autoit]$call = $call + 1
[/autoit] [autoit][/autoit] [autoit]GUICtrlSetData($imput_refreshT, StringFormat("%d", TimerDiff($begin))) ; anzeigen der Stoppuhr in einem speziellen format
[/autoit] [autoit][/autoit] [autoit]
Local $sZuluft = 0, $sMitte = 0, $sHarz = 0, $sSollwert = 0, $sLogFile = 0, $sText = 0
$sZuluft = GUICtrlRead($DisplayDB_1)
$sMitte = GUICtrlRead($DisplayDB_2)
$sHarz = GUICtrlRead($DisplayDB_4)
$sSollwert = GUICtrlRead($DisplayDB_6)
$sLogFile = @ScriptDir & "\" & @YEAR & "-" & @MON & "-" & @MDAY & ".csv"
$sText = @YEAR & "-" & @MON & "-" & @MDAY & ";" & @hour & ":" & @min & ";" & $sZuluft & ";" & $sMitte & ";" & $sHarz & ";" & $sSollwert & @CRLF
If (@min=00 or @min=10 or @min=20 or @min=30 or @min=40 or @min=50) and @sec = 00 Then
FileWrite($sLogFile, $sText)
sleep (1000)
EndIf
Else; disconnect
[/autoit] [autoit][/autoit] [autoit]
; hier passier erstamal gar nix ..
;ToolTip("Disconnect"& _TD($TIMER_1),0,0)EndIf
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]EndSwitch
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]WEnd
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];######################### ENDE der Hauptschleife ###############################################
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];; Funktion um die Gui mit den werten der Logo zu beschreiben.
[/autoit] [autoit][/autoit] [autoit]
;; Parameter 1-> $Conrole_ID_Handler_Array = verlangt ein Array welches den inhalt der Handels auf die entsprechenden Controls hat.
;; Parameter 2-> $value = ein dezimales Value 0-beliebig welches bitweise auf die handels aufgesplittet werden soll
;; Parameter 3-> $checkTo = $GUI_CHECKED = hat einen PRESET bedeutet, dass wenn nichts angegeben wird das Entsprechende handel bei einer aktivierung mit dem Gui parameter CHECKED versetzt wird.
;, ; ansonsten mit dem Value, welcher an dieser stelle mitübergeben wird.
; RETVAL -> Funktion hat keinen Returnvalue sondern beschreibt die Controls direkt über die Globale Handle
Func _CB_Update($Conrole_ID_Handler_Array, $value, $checkTo = $GUI_CHECKED)
; dec to Binary umrechnen
$binary = _DecToBinary($value)
; ein Array erstellen in abhängigkeit der Arraygröße
Dim $DIArray[UBound($Conrole_ID_Handler_Array)];9];die bits dem array übergeben
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To (UBound($DIArray) - 1) Step 1
$DIArray[$i] = StringMid($binary, BinaryLen($binary) - $i, 1)
Next; emptie's mit 0en füllen
[/autoit] [autoit][/autoit] [autoit]
; ist eigentlich total überflüssig , das dies später sowieso überschrieben wird
For $i = 0 To (UBound($DIArray) - 1) Step 1
If Not (($DIArray[$i] = "1") Or ($DIArray[$i] = "0")) Then
$DIArray[$i] = 0
EndIf
Next; den Gui State in das array übertragen
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To (UBound($DIArray) - 1) Step 1
If ($DIArray[$i] = "1") Then
$DIArray[$i] = $checkTo; $GUI_INDETERMINATE
Else
$DIArray[$i] = $GUI_UNCHECKED
EndIfNext
[/autoit] [autoit][/autoit] [autoit]; den Status in die Handles der gui übertragen
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
For $i = 0 To (UBound($DIArray) - 1) Step 1
GUICtrlSetState($Conrole_ID_Handler_Array[$i], $DIArray[$i])
Next
EndFunc ;==>_CB_Update; funktion für hotkey
[/autoit] [autoit][/autoit] [autoit][/autoit]
Func Terminate()
$isStarted = 0
$nMsg = $Stop
;Exit 0
EndFunc ;==>Terminate -
Ohne das komplette Script wird dir hier niemand helfen können, also poste es einfach mal.
(und die Lösung per Modulo war schöner )ausprobiert hab ich das mit dem Modulo.Das Problem war aber irgendwie, dass ich trotzdem innerhalb der Minute mehrere Einträge im Logfile hatte...
Warum nicht AdLibRegister mit 600000 ms?
wenn ich wüßte wie ich das programmiere, dann würd ich mir das vielleicht auch mal anschauen, aber bisher bin ich da noch nicht dahinter gestiegen wie das mit dem AdLibRegister funktioniert ...