Autor Beitrag
einheit141
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Di 22.03.11 13:18 
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
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 31.05.11 08:25 
Hi hier ist die Code:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
{------------------------------------------------------------------------------}
{ Procedure: Ausgang einschalten                                               }
{------------------------------------------------------------------------------}
procedure TForm1.Setzen(Ausgang:Integer); // Ausgang setzen
begin
  WriteBuffer[0] := 1;                 // wenn 1 setzen wenn 0 zurücksetzen

  If (MBTWriteCoils(hSocket, Ausgang, 1, @WriteBuffer, nil0) <> S_OK) then
  begin                                // wenn es nicht geklappt hat Fehlermeldung generieren
     Application.MessageBox('Es ist ein Fehler beim WagoI/O aufgetreten !''write error', MB_OK);
  end;
end;


Moderiert von user profile iconMartok: Delphi-Tags hinzugefügt
Voxe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41

Win XP, Win 7
Delphi 7 prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 05.06.11 18:53 
Kompatibilitätseinstellungen? XPMode? Geht das alles nicht?
Rogi
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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:

ausblenden 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
  { Einstellung WagoI/O System with TCP-IP Protokol }
  DEFAULT_SERVER_NAME     : array[0..15of Char = '192.168.1.2'// ip-adress
  DEFAULT_PORT            : Word = 502;       // modbusport
  
  DEFAULT_PROTOCOL        : Boolean = True;   // True=tcp, False=udp
  DEFAULT_REQUEST_TIMEOUT : LongWord = 1000;  // in ms

  { Engänge difination }
  Eingang1: Byte = 0;          //
  Eingang2: Byte = 1;          // 
  Eingang3: Byte = 2;          // 
  Eingang4: Byte = 3;         // 
  Eingang5 : Byte = 4;          // Reserve
  Eingang6 : Byte = 5;          // Reserve
  Eingang7 : Byte = 6;          // Reserve
  Eingang8 : Byte = 7;          // Reserve

  { Ausgänge difination }
  Ausgang1 : Byte = 0;          // Reserve
  Ausgang2 : Byte = 1;          // Reserve
  Ausgang3 : Byte = 2;          // Reserve
  Ausgang4 : Byte = 3;          // Reserve
  Ausgang5 : Byte = 4;          // Reserve
  Ausgang6 : Byte = 5;          // Reserve


Moderiert von user profile iconMartok: Delphi-Tags hinzugefügt
Rogi
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 08.06.11 15:42 
Hi Leute,

unter Win7 funktioniert es auch.
ggeiser
Hält's aus hier
Beiträge: 1



BeitragVerfasst: 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
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 30.09.11 15:01 
Hi,

hier ist die Code:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
function TForm1.Eingang(AdrEingang:Integer):Boolean; // Eingang lesen
var
  ReadBuffer  : array[0..250of Byte;
begin
  If (MBTReadCoils(hSocket, MODBUSTCP_TABLE_OUTPUT_COIL,AdrEingang, 1, @ReadBuffer, nil0) = S_OK) then
  begin
    Case ReadBuffer[0of
      0: Eingang := False;            // Engang ist nicht gesetzt
      1: Eingang := True;             // Eingang ist gesätzt
    end;
  end else begin                      // wenn es nicht geklappt hat Fehlermeldung generieren
     Application.MessageBox('Es ist ein Fehler beim WagoI/O aufgetreten !''write error', MB_OK);
  end;
end;


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
BigAl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 31

XP, Vista, 7, 2000+ Server
RAD Studio XE / XE2 EP/Prof., C#, MSSQL, HTML, PHP, Step 7...
BeitragVerfasst: 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