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 digitalen und analogen Ein-/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
; #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>
#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
$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
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]
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
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, $AQ2
While 1
_daveInit()
GUISetOnEvent($GUI_EVENT_CLOSE, "_Events")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "_Events")
GUISetOnEvent($GUI_EVENT_RESTORE, "_Events")
GUICtrlSetOnEvent($Connect, "_Connect")
GUICtrlSetOnEvent($Disconnect, "_Disconnect")
If $isStarted = 1 and $Connection = 1 Then
_ReadPLC()
EndIf
WEnd
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _Events() ; hier sind die Events der GUI:
; Fenster Schliessen, Minimieren, Maximieren,
Select
Case @GUI_CtrlId = $GUI_EVENT_CLOSE
Exit
Case @GUI_CtrlId = $GUI_EVENT_MINIMIZE
Case @GUI_CtrlId = $GUI_EVENT_RESTORE
[/autoit] [autoit][/autoit] [autoit]EndSelect
EndFunc
Func _Connect()
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 = 1
ElseIf @error > 0 then
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
EndFunc
Func _Disconnect()
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
EndFunc
Func _ReadPLC()
; Lesen der Siemens-Logo Werte
If $isStarted = 1 and $Connection = 1 Then
[/autoit] [autoit][/autoit] [autoit]; Lesen der VM aus DB 1
For $VM = 0 to 14 step 2
_daveReadBytes($hConnection,$daveDB,1,$VM,2)
$newValue[$VM] = _daveGetU16($hConnection)
Next
; Lesen der Eingangs-Bits 1 - 8
For $IBit = 0 To 7 Step 1
$InputBit[$IBit] = _daveReadBit($hConnection, $daveInputs, 0,0,$IBit)
Next
; Lesen der Ausgangs-Bits 1 - 4
For $OBit = 0 To 3 Step 1
$OutputBit[$OBit] = _daveReadBit($hConnection, $daveOutputs, 0,0,$OBit)
Next
;~ ; Lesen der Analog-Eingänge 1-4
;~ 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
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
If $InputBit[0] = 1 then
GUICtrlSetState($DI1, $GUI_CHECKED)
ElseIf $InputBit[0] = 0 then
GUICtrlSetState($DI1, $GUI_UNCHECKED)
EndIf
If $InputBit[1] = 1 then
GUICtrlSetState($DI2, $GUI_CHECKED)
ElseIf $InputBit[1] = 0 then
GUICtrlSetState($DI2, $GUI_UNCHECKED)
EndIf
If $InputBit[2] = 1 then
GUICtrlSetState($DI3, $GUI_CHECKED)
ElseIf $InputBit[2] = 0 then
GUICtrlSetState($DI3, $GUI_UNCHECKED)
EndIf
If $InputBit[3] = 1 then
GUICtrlSetState($DI4, $GUI_CHECKED)
ElseIf $InputBit[3] = 0 then
GUICtrlSetState($DI4, $GUI_UNCHECKED)
EndIf
If $InputBit[4] = 1 then
GUICtrlSetState($DI5, $GUI_CHECKED)
ElseIf $InputBit[4] = 0 then
GUICtrlSetState($DI5, $GUI_UNCHECKED)
EndIf
If $InputBit[5] = 1 then
GUICtrlSetState($DI6, $GUI_CHECKED)
ElseIf $InputBit[5] = 0 then
GUICtrlSetState($DI6, $GUI_UNCHECKED)
EndIf
If $InputBit[6] = 1 then
GUICtrlSetState($DI7, $GUI_CHECKED)
ElseIf $InputBit[6] = 0 then
GUICtrlSetState($DI7, $GUI_UNCHECKED)
EndIf
If $InputBit[7] = 1 then
GUICtrlSetState($DI8, $GUI_CHECKED)
ElseIf $InputBit[7] = 0 then
GUICtrlSetState($DI8, $GUI_UNCHECKED)
EndIf
; Schreiben der Ausgänge in die GUI
If $OutputBit[0] = 1 then
GUICtrlSetState($DA1, $GUI_CHECKED)
ElseIf $OutputBit[0] = 0 then
GUICtrlSetState($DA1, $GUI_UNCHECKED)
EndIf
If $OutputBit[1] = 1 then
GUICtrlSetState($DA2, $GUI_CHECKED)
ElseIf $OutputBit[1] = 0 then
GUICtrlSetState($DA2, $GUI_UNCHECKED)
EndIf
If $OutputBit[2] = 1 then
GUICtrlSetState($DA3, $GUI_CHECKED)
ElseIf $OutputBit[2] = 0 then
GUICtrlSetState($DA3, $GUI_UNCHECKED)
EndIf
If $OutputBit[3] = 1 then
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