Entwickler-Ecke
Internet / Netzwerk - Kann WAGO 750-841 mit Delphi auslesen aber nicht ändern
einheit141 - Di 22.03.11 13:18
Titel: Kann WAGO 750-841 mit Delphi auslesen aber nicht ändern
Hallo zusammen!
Ich bin eigentlich kompletter SPS Neuling. Wir haben bei uns einen WAGO 750-841, der bei uns Haustechnik steuert. Das ganze System ist von einer Fa. eingebaut und eingerichtet worden. Lediglich die GUI zur Steuerung ist sehr gewöhnungsbedürftig und nicht wirklich auf unsere Bedürfnisse angepasst. Da ich mich mit SPS Programmierung (CoDeSys ist vorhanden) nicht wirklich auskenne, sondern mein Wissen sich eher auf Delphi bezieht, habe ich mich schlau gemacht, wie man eine eigenes Programm mit eigener GUI realisieren kann. Die benötigte MBT.dll von Wago ist auch vorhanden und ich habe die Verbindung zu unserem WAGO Knoten herstellen können. Auch das Auslesen der Momentanzustände funktioniert. Lediglich wenn ich einen Binärwert von 0 auf 1 setzen möchte, funktioniert das nicht. Die Anweisung läuft praktisch ins Leere. Ist das irgendwie eine Frage der Berechtigung zum schreiben auf dem Controller oder eine Konfigurationseinstellung? Wäre schön, wenn mir da jemand helfen könnte, der sich auch etwas mit der Kommunikation Wago <-> Delphi auskennt. Kann euch auch gerne den Quelltext mal posten. Hat jemand von euch sowas schon mal selbst geschrieben?
Grüße einheit141
Rogi - Di 31.05.11 08:25
Hi hier ist die Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
|
procedure TForm1.Setzen(Ausgang:Integer); begin WriteBuffer[0] := 1; If (MBTWriteCoils(hSocket, Ausgang, 1, @WriteBuffer, nil, 0) <> S_OK) then begin Application.MessageBox('Es ist ein Fehler beim WagoI/O aufgetreten !', 'write error', MB_OK); end; end; |
Moderiert von
Martok: Delphi-Tags hinzugefügt
Voxe - So 05.06.11 18:15
Hallo,
eine dumme Frage, welches Betriebssystems des PC's setzt du ein. Meine Erfahrungen mit Win7 sind, das es ein Zufallsprodukt ist. Aussage von Wago, die DLL unterstützt Win7 nicht. Meine Erfahrung, stimmt. Mit XP kein Problem.
Liebe Grüße
jaenicke - So 05.06.11 18:53
Kompatibilitätseinstellungen? XPMode? Geht das alles nicht?
Rogi - Di 07.06.11 16:34
Hallo,
ich hab XP. demnächst will ich mit Win7 zugriff auf WagoI/O programmieren. Und noch was die Ausgang ist eine Konstante und Deklaration sieht so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| const DEFAULT_SERVER_NAME : array[0..15] of Char = '192.168.1.2'; DEFAULT_PORT : Word = 502; DEFAULT_PROTOCOL : Boolean = True; DEFAULT_REQUEST_TIMEOUT : LongWord = 1000; Eingang1: Byte = 0; Eingang2: Byte = 1; Eingang3: Byte = 2; Eingang4: Byte = 3; Eingang5 : Byte = 4; Eingang6 : Byte = 5; Eingang7 : Byte = 6; Eingang8 : Byte = 7; Ausgang1 : Byte = 0; Ausgang2 : Byte = 1; Ausgang3 : Byte = 2; Ausgang4 : Byte = 3; Ausgang5 : Byte = 4; Ausgang6 : Byte = 5; |
Moderiert von
Martok: Delphi-Tags hinzugefügt
Rogi - Mi 08.06.11 15:42
Hi Leute,
unter Win7 funktioniert es auch.
ggeiser - Mo 15.08.11 23:15
Hallo!
Ich versuche mich momentan auch damit, eine WAGO 750-841 mittels Delphi auszulesen bzw. zu beschreiben. Ich scheitere aber leider schon am Auslesen. Bis zum Verbindungsaufbau funktioniert alles wunderbar. Ich kann auch die Schreib- bzw. Lesebefehle aus der mbt.dll ohne Fehlermeldung ausführen. Nur passiert bei den Schreibbefehlen nichts und beim Lesen ändert sich die Variable nicht.
Ich bin leider noch kompletter Anfänger mit der WAGO und wäre daher sehr dankbar, wenn mir jemand ein kurzes und simples Programm zur Verfügung stellen könnte, aus welchem ich den richtigen Einsatz der Befehle aus der mbt.dll ableiten könnte.
Vielen Dank im Voraus!
Rogi - Fr 30.09.11 15:01
Hi,
hier ist die Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| function TForm1.Eingang(AdrEingang:Integer):Boolean; var ReadBuffer : array[0..250] of Byte; begin If (MBTReadCoils(hSocket, MODBUSTCP_TABLE_OUTPUT_COIL,AdrEingang, 1, @ReadBuffer, nil, 0) = S_OK) then begin Case ReadBuffer[0] of 0: Eingang := False; 1: Eingang := True; end; end else begin Application.MessageBox('Es ist ein Fehler beim WagoI/O aufgetreten !', 'write error', MB_OK); end; end; |
Moderiert von
Narses: Delphi-Tags hinzugefügt
BigAl - Di 04.10.11 11:47
Hallo zusammen,
bin gerade etwas verwirrt. Ich nutze auch schon seit ein paar Jahren die WAGO-Module mit Delphi. Das Ganze mach ich auch über die mbt.dll (Modbus). Weiterhin nutze ich die MBT.PAS (Schnittstelle zur DLL) und die MBTObj.pas (objektorientierte Schale zu MBT.pas). Mit Sockets usw. muss ich mich - dank der MBTObj.pas) nicht rumärgern. Die Deklaration von ReadCoils sieht z.B. so aus:
TModBusConnection.ReadCoils(Address, Count: Cardinal; var Value: Boolean): Cardinal;
oder um mehrere Eingänge zu lesen:
TModBusConnection.ReadCoils(Address, Count: Cardinal; var Data: TDynBoolArray): Cardinal;
Das Objekt hat natürlich die gesamte Funktionalität um Werte zu lesen, zu schreiben usw.. Ich nutze neben den digitalen auch die analogen Funktionen. Die analogen Funktionen sind in meiner Applikation momentan aber nur lesend... Habe die in der Vergangenheit aber auch schon geschrieben...
Gruß
Alex
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!