AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein 'Adressfehler beim Auslesen einer Simatic S7-200'
Thema durchsuchen
Ansicht
Themen-Optionen

'Adressfehler beim Auslesen einer Simatic S7-200'

Ein Thema von schwigi · begonnen am 30. Jul 2007 · letzter Beitrag vom 7. Aug 2007
 
schwigi

Registriert seit: 24. Jul 2007
Ort: Rottweil
10 Beiträge
 
#3

Re: 'Adressfehler beim Auslesen einer Simatic S7-200'

  Alt 2. Aug 2007, 19:30
Hallo,

hier ist der komplette Code:


Delphi-Quellcode:
unit US200;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids;

type
  TFS200 = class(TForm)
    TestGrid: TStringGrid;
    procedure FormActivate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  FS200: TFS200;
  plc_adr_table : array[0..15] of byte;
  plc_name : array[0..255] of char;
  null, max_maschinen, max_buffer, res1,res2,res3 : integer;
  buffer : array[0..50] of byte;
  mzaehler : array[0..25] of word;
const
  max_buffer1 = 10;

implementation

{$R *.dfm}

function Load_tool ( no :Byte;
                     name:{Pointer}PChar;
                     adr:{pointer}PChar):integer;
stdcall;
external 'w95_s7m.dllname 'load_tool';

function as200_vs_field_read ( no :integer;
                     var anz:integer;
                     var buffer):integer;
stdcall;
external 'w95_s7m.dllname 'as200_vs_field_read';

//function as200_ag_zustand ( var buffer):integer;
//stdcall;
//external 'w95_s7m.dll' name 'as200_ag_zustand';

function Unload_tool:integer;
stdcall;
external 'w95_s7m.dllname 'unload_tool';



procedure TFS200.FormActivate(Sender: TObject);
var
  i,j : integer;
  state : char;
begin

   max_maschinen := 10;
   max_buffer := max_maschinen * 2;
   null := 0;

   plc_adr_table[0] := 2; //adresse
   plc_adr_table[1] := 0; //segment id
   plc_adr_table[2] := 2; //rack nr
   plc_adr_table[3] := 0; //slot nr
   plc_adr_table[4] := 0; //adresse
   plc_adr_table[5] := 0; //segment id
   plc_adr_table[6] := 2; //rack nr
   plc_adr_table[7] := 0; //slot nr

   strcopy(plc_name,'S7ONLINE');
   res1 := Load_Tool(1,addr(plc_name),addr(plc_adr_table[0]));
   res2 := as200_vs_field_read(null, max_buffer, buffer );
   res3 := unload_Tool;

   j := 0;

// Die Bytes zu WORDS zusammensetzen
   for i:=0 to max_maschinen do
   begin
      mzaehler[i] := 0;
      mzaehler[i] := buffer[j] shl 8;
      mzaehler[i] := mzaehler[i] + buffer[j+1];
      inc(j);
      inc(j);
   end;

   FS200.Close;
end;

end.
Danke deine Hilfe

Das mit den DELPHI Tags wurde schon erwähnt. Nächstes Mal bitte selber einpflegen. Mfg, Jelly
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz