S7 1200 Profibusadresse beim CM 1242-5 über ein Panel ändern

manyman25

Level-1
Beiträge
58
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Forum,

mal ne schräge Frage vielleicht hat ja jemand von euch schon mal so etwas gemacht. Ist es möglich die Profibusadresse eines CM 1242-5 (S7-1200) über ein Panel zu ändern? So wie ich das sehe ist es zur Zeit nur möglich in dem ich das PG anstecke und die Adresse über TIA ändere. Oder gibt es noch andere möglichkeiten die Profibusadresse zu ändern ohne das PG anzustecken. Der Hintergrund ist folgender der Kunde nutzt zur Zeit S7 200 und stellt nach und nach auf S7 1200 um. Bei der S7 200 konnte man die Adresse noch an der CPU einstellen das ist aber bei der S7 1200 nicht mehr möglich. Ich brauche eine Möglichkeit die Profibusadressen einfach von außen zu ändern.

Gruß Many
 
Das dürfte dir nicht gelingen.
Wo ist eigentlich das Problem?
Beim Umstellen von S7-200 auf S7-1200 musst du doch eh an den Code ran, da kannst du die Busadresse doch mit konfigurieren.

MfG MK
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist schon klar aber das sind mobile Pumpstationen und diese werden immer mal an anderen Standorten aufgestellt und mit anderen PBadressen versehen, daher wäre es schön wenn man die Profibusadresse ändern kann ohne ohne immer das PG anzustecken.

Gruß Many
 
Hallo,

die mobilen Pumpstationen können an verschiedene Datenkonzentratoren (S7/400) oder in unterschiedliche Probisbussträngen angebunden werden. Deswegen ist es nötig bei Umsetzungen die Profibusadressen zu ändern. Um dir das ein wenig näher zu bringen musst du dir ein rießigen Tagebau vorstellen um und in den Tagebau sind Pumpstationen die das Grundwasser abpumpen damit die Maschienen nicht im Wasser versinken. Wenn der Abbau fortschreitet müssen die Pumpen umgesetzt werden und oft werden sie an andere SPS´en angeschlossen (wie gesagt der Tagebau ist rießig) und dazu muss oft die Profibusadresse geändert werden.

Gruß Many
 
Servus,

auf so etwas wird es wohl hinaus laufen. Das ich die Adresse der mobilen Stationen fest einstelle und dann in die verschiedenen Stänge der Datenkonzentratoren die gleichen Adressen eintrage. Wäre halt nur schöner gewesen wenn man die Adresse über ein Panel oder direkt an der SPS hätte einstellen können.

Gruß Many
 
Riesig hin oder her, ich sehe hier die mobilen Pumpenstationen eher als autark arbeitende Insellösungen.
Welche Daten werden zwischen S7-1200 und S7-400 getauscht?

Auf jeden Fall eine Möglichkeit wäre hinter CM1242-5 einen DP/DP-Koppler zu installieren,
da kannst du auf der S7-400er Seite die DP-Adresse am DIP_Schalter ändern.

MfG
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist richtig die Stationen laufen autark die S7-1200 tauscht mit der S7-400 Betriebs-, Stoer und Analogmeldungen aus. Gleichzeitig ist es auch möglich vom Leitsystem über die verschiedenen S7-400 Befehle und Sollwerte an die Station zu senden. Mit den DP kopler hab ich gar keine Erfahrung. Ich werd es wohl so lösen das die S7-1200 feste Adressen bekommen und halt nur an bestimmten S7-400 Datenkonzentratoren angeschlossen werden können. Zur Not muss der Kunde halt die Adresse mit dem PG ändern ist zwar nicht so Vorteilhaft wie bei der S7-200 aber da kann man wohl nicht allzu viel machen.

Danke für eure Hilfe.

Gruß Many
 
Hallo,

ich stehe gerade von dem gleichen Problem und bin auf der Suche nach einer Lösung hier gelandet. Stellt sich mir die Frage was sich die Entwickler bei Siemens dabei wohl gedacht haben? Warscheinlich gar nix. :evil:.

Scheinbar gibt es nicht mal eine Möglichkeit per Programm herauszufinden ob der Profibus am CM1242-5 angeschlossen ist und der Datenaustausch läuft?

Grüße
Sigi
 
bin auf der Suche nach einer Lösung hier gelandet.
Vielleicht hättest Du Dir bei der Suche noch 20 Sekunden mehr Zeit gönnen sollen...?
Also wenn ich bei Google nach "cm1242-5 profibusadresse ändern" suche, dann geht der erste Link hierher :) und der zweite Link zum Siemens Support
Wie kann ich die PROFIBUS-Adresse des CM 1242-5 aus dem Anwenderprogramm heraus ändern?

Diese Beschreibung findet man übrigens auch in der Betriebsanleitung des CM 1242-5 im Kapitel 4.4, falls man mal einen Blick in das verdammte Handbuch wirft...

Stellt sich mir die Frage was sich die Entwickler bei Siemens dabei wohl gedacht haben? Warscheinlich gar nix. :evil:
Ach, das machen die gedankenlos so, weil die das schon seit 20 Jahren so machen.. doch jetzt haben die sich ja zum Glück der TIA-User erbarmt und auf Zuruf eine Adressänderungsfunktion eingebaut. :)

Scheinbar gibt es nicht mal eine Möglichkeit per Programm herauszufinden ob der Profibus am CM1242-5 angeschlossen ist und der Datenaustausch läuft?
Man könnte mit dem Master ein Lebensbit vereinbaren...

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Harald,

Vielleicht hättest Du Dir bei der Suche noch 20 Sekunden mehr Zeit gönnen sollen...?

Doch den Beitrag im Siemens Support habe ich gefunden und das Handbuch natürlich auch gelesen (in beiden steht ja auch fast wortwörtlich das Gleiche). Ich finde das nur wenig hilfreich.

Jetzt könnte man natürlich noch auf die Idee kommen die Baugruppe auf 126 zu adressieren und die Adresse vom Master zuweisen zu lassen, aber im GSD-File zur Baugruppe steht "Set_Slave_Add_supp = 0". Grandios in Knie geschossen, würde ich sagen!

Man könnte mit dem Master ein Lebensbit vereinbaren...
Harald

So habe ich es im Moment auch gelöst. Wenn die Baugruppe aber einfach einen DIagnosealarm auslösen würde, könnte man ganze einfach im entsprechenden OB abarbeiten und der Keks wäre gegessen.

LG
Sigi
 
Warum findest Du die Anleitung von Siemens nur wenig hilfreich? Funktioniert es nicht, kriegst Du es nicht hin oder wolltest Du was ganz anderes?

Ich kenne das CM 1242-5 nicht, würde aber vermuten, daß ein Alarm-OB ausgelöst wird, wenn man im zyklischen DX das Profibuskabel abzieht. Mal ausprobieren und in die online-Diagnose schauen.

Harald
 
Hallo Harald,

erstmal vielen Dank für Deine Unterstützung, obwohl ich hier mehr oder weniger offen meinen Frust zur Schau gestellt habe (ich gelobe Besseung)! Nach einer ausgeschlafenen Nacht sieht die Welt ja auch erstmal wieder besser aus.

Warum findest Du die Anleitung von Siemens nur wenig hilfreich? Funktioniert es nicht, kriegst Du es nicht hin oder wolltest Du was ganz anderes?

In der Beschreibung ist vom 'SFB53' die Rede. Das macht mich stutzig, weil es Begrifflichkeiten aus der Step7-Classic Welt sind. Geht es in der Beschreibung darum die Adresse vom Master aus zu ändern oder (wie eigentlich gewünscht) die Adresse der lokalen Baugruppe?

Aber gut, nach etwas googeln habe ich herausgefunden, dass 'WRREC' im TIA-Portal gemeint sein wird. Dann geht das nächste Problem los iwe die Parameter des Baustein-Aufrufs versorgt werden müssen? Natürlich ist das meiste selbsterklärend, aber ein paar Fragezeichen bleiben da noch.

Code:
"WRREC_DB"(REQ:=FALSE,
           ID:=16#257,            // so stehts in meiner HW-Config
           INDEX:=8193,            // wie im Support-Beitrag angegeben
           LEN:=0,            // sagt die Online-Hilfe 'ausgeblendet', muss er nun versorgt werden? mit '4'?
           DONE=>_bool_out_,
           BUSY=>_bool_out_,
           ERROR=>_bool_out_,
           STATUS=>_dword_out_,
           RECORD:=_variant_inout_);    // Wäre dann ja eine Variable mit den Datensatz wie im Support-Beitrag angegeben

'REQ', 'DONE', 'BUSY', 'ERROR' und 'STATUS' sind natürlich klar.

Ich kenne das CM 1242-5 nicht, würde aber vermuten, daß ein Alarm-OB ausgelöst wird, wenn man im zyklischen DX das Profibuskabel abzieht. Mal ausprobieren und in die online-Diagnose schauen.

Bei meinen ersten Versuchen hatte ich keine OB82- oder OB86-Aufrufe. Das habe ich aber erstmal nach hinten geschoben, weil ich es im Moment ohnehin über ein Heartbeat-Flag gelöst habe.

Grüße
Sigi
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hmm, das ist natürlich ein böses Foul von Siemens, aber typisch! Heutzutage versuchen die tausende verschiedene Sachen zusammen in ein einziges Handbuch zu quetschen, doch die grundlegenden Refenzangaben fehlen meistens oder sind sogar falsch.
Daß der SFB53 = WRREC ist steht nur ein einziges Mal im S7-1200-Systemhandbuch 2015 (Seite 1277).

Das Ändern der Slave-Adresse per Datensatz 0x2001 muß in der Slave-CPU programmiert werden, also wo das CM1242-5 drinsteckt.

Ja, LEN:=4 muß angegeben werden.

Ich kann es jetzt nicht testen, ich würde den WRREC-Aufruf etwa so schreiben:
Code:
%MD100 := DW#16#0100_01_00 + "DB1".MySlaveaddress ; // Datensatz 0x2001 zusammenstellen

REPEAT                            // Schleife nur, wenn in OB100 aufgerufen!
  "WRREC_DB"(REQ:=TRUE,           // festes TRUE nur in OB100
             ID:=16#257,          // so stehts in meiner HW-Config
             INDEX:=16#2001,      // Datensatz
             LEN:=4,              // Länge des Datensatz 0x2001
             DONE=> ,
             BUSY=> ,
             ERROR=> ,
             STATUS=> ,
             RECORD:= %MD100);
UNTIL "WRREC_DB".BUSY = 0
END_REPEAT;

Wenn der Code im OB100 aufgerufen wird, dann in einer Schleife (Rücksprung) solange bis BUSY=0.
Falls der Datensatz in TEMP zusammengestellt wird, dann jedesmal wieder beschreiben.
Wenn der Code aus OB1 aufgerufen wird, dann eine BOOL-Variable an REQ anlegen, und keine Rücksprung-Schleife.
Wenn nicht funktioniert, dann "WRREC_DB".STATUS beobachten.

Harald
 
So, ich habs nun am Start.

Dieser FC wird zyklisch im OB1 aufgerufen, da 'WRREC' ja asyncron läuft:

Code:
FUNCTION "fc_DPAdrChange" : Void
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
   VAR_INPUT 
      HW_ID : HW_IO;   // Hardware-ID
      New_Adr : USInt;   // new Profibus-DP address
   END_VAR

   VAR_IN_OUT 
      AdrChange_Req : Bool;   // Request flag for 'WRREC'
   END_VAR

   VAR_TEMP 
      AdrChange_Done : Bool;
      AdrChange_Busy : Bool;
      AdrChange_Error : Bool;
      AdrChange_Status : DWord;
      Adr_Change_Record : DWord;
   END_VAR


BEGIN
    // =============================================================================
    //
    // Change Profibus-Address of the CM1242-5
    //
    // =============================================================================
    // Last change: 2015-01-29
    // =============================================================================
    //
    // 2015-01-29 First version
    // 
    // =============================================================================
    
    // ===== create record =========================================================
    // 
    #Adr_Change_Record := 16#01000100;
    #Adr_Change_Record := #Adr_Change_Record OR USINT_TO_BYTE(#New_Adr);
    
    // ===== call SFB53 (WRREC) ====================================================
    // 
    "WRREC_DB"(REQ := #AdrChange_Req,
               ID := #HW_ID,
               INDEX := 8193,
               DONE => #AdrChange_Done,
               BUSY => #AdrChange_Busy,
               ERROR => #AdrChange_Error,
               STATUS => #AdrChange_Status,
               RECORD := #Adr_Change_Record);
    
    // ===== reset request flag on error or if record is send ======================
    // 
    IF (#AdrChange_Done OR #AdrChange_Error) THEN
        #AdrChange_Req := false;
    END_IF;
    
END_FUNCTION

Der Aufruf im OB1 sieht dann so aus:

Code:
// ===== set/change Profibus-DP address ========================================
// 
"fc_DPAdrChange"(HW_ID:=16#101,
                 New_Adr:="db_System".DPAdr,
                 AdrChange_Req:="Req_DPAdrChange");

"Req_DPAdrChange" ist ein Merker. Der wird beim Anlauf im OB100 gesetzt, damit beim Anlauf die richtige Adresse eingestellt wird. Der CM selbst ist in der Hardware-Konfiguration auf Adresse 126 konfiguriert, damit es beim Anlauf keine Adresskonflikte gibt.

Nochmal vielen Dank für Deine Hilfe, Harald!

Grüße
Sigi
 
Zurück
Oben