Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Delphi - S7 300 - MPI

  1. #1
    Registriert seit
    09.06.2006
    Beiträge
    9
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich möchte in einem MPI Netz von 3 SPS daten abrufen / reinschreiben.

    Bisher benutze ich Prodave (möchte ich auch gerne behalten!) und baue zu jeder Adresse der SPS die Verbindung auf, lese Daten aus und baue die Verbindung wieder ab. Danach Verbindungsaufbau zur nächsten SPS usw. Das fuktioniert so auch tadellos, das Problem liegt darin, das das Programm eine Systemauslastung von 90% aufweist durch diesen ständigen auf und abbau der Verbindung.

    Ich möchte also einmal eine Verbindung zu allen 3 SPS aufbauen und nur zwischen den Verbindungen schalten. Am Ende des Programms Verbindung abbauen. Die Frage ist nun, wie stelle ich das in Delphi an ?

    Vielen Dank, gogl
    Zitieren Zitieren Delphi - S7 300 - MPI  

  2. #2
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.235
    Danke
    634
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Wird hierzu der PC-Adapter oder eine CP 5x1x verwendet? Welche Version von prodave kommt zum Einsatz?
    [Werbung]
    Als Alternative zu prodave kann ich (natürlich ) ACCON-AGlink http://www.deltalogic.de/software/aglink/aglink.htm empfehlen. Dies unterstützt ebenfalls die S7-Online-Schnittstelle und mehrere parallele Verbindungen. Der läste Verbindungsab- und Wiederaufbau kann (außer natürlich im Fehlerfalle) entfallen. Die Rechnerbelastung ist ebenfalls minimal, auch bei mehreren SPSen parallel. Beispiel für Delphi ist enthalten. Zusätzlich bietet AGLink die Möglichkeit der Kommunikation im Hintergrund, die Applikation bleibt somit immer optimal bedienbar.
    [/Werbung]
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  3. #3
    gogl ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.06.2006
    Beiträge
    9
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich benutze den MPI- PC Adapter und benutze Prodave s7 mini version 5.5.

    Wäre gerne an der Lösung mit Prodave interessiert, allein schon aus kostengründen.
    Geändert von gogl (09.06.2006 um 09:31 Uhr)

  4. #4
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.235
    Danke
    634
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Ich vermute, dass dies mit prodave schwierig wird. Soweit ich weiss, wird durch new_ss automatisch die alte Verbindung abgebaut und die neue aufgebaut. In Version 6 ist ein Hinweis auf eine Funktion SetActiveConnection_ex6 enthalten. Diese Funktion ist allerdings sonst nicht dokumentiert. Aber vermutlich geht es genau in diese Richtung. Ich "darf" an Wochenende sowieso etwas mit prodave testen. Schaue mir dann das Ganze und die Auswirkungen bzgl. Kommunikation an und melde mich dann.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  5. #5
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.255
    Danke
    537
    Erhielt 2.705 Danke für 1.954 Beiträge

    Standard

    Ich mache das Gleiche mit 3 SPS und habe keine derartigen Probleme.
    Zum Verbindungsaufbau wird einmal Loadtool() mit den entsprechenden Parametern aufgerufen, danach vor dem Daten lesen jeder SPS new_ss() und read_db() zum Daten holen. Das holen und schreiben von Daten erfolgt in einem eigenen Thread, Delphi-Anwendung hat bei mit inzwischen 'normal_priority_class' (früher 'high_priority_class', muß aber anscheinend nicht sein), derThread hat 'tpHigher'.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  6. #6
    gogl ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.06.2006
    Beiträge
    9
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    wie genau stellst du das an? die funktion new_ss kenne ich aus dem Handbuch, kann sie jedoch nicht anwenden. Ein Beispielcode könnte mir sicher weiterhelfen.

  7. #7
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.235
    Danke
    634
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Und wie erfolgt sonst der Wechsel auf eine andere SPS? Doch nicht etwa über unload_tool/load_tool? Und warum kann die Funktion nicht angewandt werden?
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  8. #8
    gogl ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.06.2006
    Beiträge
    9
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Doch, direkt über unload_tool / load_tool.

  9. #9
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.235
    Danke
    634
    Erhielt 955 Danke für 769 Beiträge

    Standard

    In dem Array mit den Verbindungsparametern einfach alle SPSen eintragen und einen Leereintrag anhängen. Dann mit load_tool starten und danach nur noch mit new_ss nur zwischen den einzelnen SPSen umschalten. Ich hoffe, ich habe mich klar ausgedrückt.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  10. #10
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.255
    Danke
    537
    Erhielt 2.705 Danke für 1.954 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Code:
     
    type
      plcadrtype = record
        adr: Byte;
        SEGMENTID: Byte;
        SLOTNO: Byte;
        RACKNO: Byte;
      end;
     
    BPuf = array[0..1024] of Byte;                            {* Bytepuffer *}
     
    var
      plc_adr_table : array of plcadrtype;
      plc_name:array[0..255] of char;
      plc_res ,plc_amount: longint;
      plc_buffer : array[0..512] of word;
      DBAR: BPuf;
     
    z.Bsp. in OnCreate der Form
     
    Variable SPS-Anzahl
    SetLength(plc_adr_table, SimNInt + 2);                  //benötigt wird Array[1..SimN+1] --> Länge dann SimN + 2 wegen Array[0..SimN+1]
     
    3 SPS --> kann man dann auch fest in Var vereinbaren
    SetLength(plc_adr_table, 4);      
     
    for I := 0 to SimDatenListe.SimN - 1 do //je nach SPS-Anzahl anders
    begin
      plc_adr_table[i].adr := SimDatenListe.SimEintrag[I + 1].MPIRemote; {adresse}
      plc_adr_table[i].SEGMENTID := 0; {segment id}
      plc_adr_table[i].SLOTNO := 2; {slot nr}
      plc_adr_table[i].RACKNO := 0; {rack nr}
    end;
    plc_adr_table[SimDatenListe.SimN].adr := 0;
    strcopy(plc_name,'S7ONLINE');
     
    Bei Aktivierung der Kommunikation
     
    InitPG1Fehler := Load_tool(1,addr(plc_name),addr(plc_adr_table[0]));
     
    Bei Beenden der Kommunikation
     
    InitPG1Fehler := Unload_tool;
     
    Beim Lesen der Daten:
     
    if (SimDatenListe.MPI_Driver = mpiProdave) then
    begin
      //MPI ProDaveS7
      plc_amount := 1024;
      Y[SPS] := new_ss(SPS);
      if Y[SPS] = 0 then
      begin
        Y[SPS] := DB_read(SimDatenListe.SimEintrag[SPS].DBSim,0,plc_amount,DBAR);
        if Y[SPS] = $303 then          //$303 --> DB ist zu kurz
          Y[SPS] := 0;
        if Y[SPS] = 0 then
          DBDat.SPSBuf[SPS] := DBAR;
      end;
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

Ähnliche Themen

  1. Delphi 7
    Von enter im Forum Hochsprachen - OPC
    Antworten: 5
    Letzter Beitrag: 21.05.2007, 06:34
  2. Delphi mit s7-300
    Von schissern im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 15.03.2006, 15:11
  3. Delphi und SPS
    Von sfc46 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 08.12.2004, 10:32
  4. Wago 750-650 mit Delphi und MBT.dll
    Von Anonymous im Forum Feldbusse
    Antworten: 3
    Letzter Beitrag: 22.10.2004, 21:22
  5. Delphi ==> S7-300
    Von Anonymous im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 08.12.2003, 15:12

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •