TIA Profinet Teilnehmer Abmelden Grundsätzliches

Outrider

Level-1
Beiträge
745
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie ist die Vorgehensweise beim An und Abmelden eines Teilnehmers ?

Angenommen ich habe ein Modul, welches spannungslos geschaltet werden soll,die CPU danach aber weiter arbeiten soll.

1. Ich wähle im HMI diese Betriebsart aus (ohne Teilnehmer)
2. Ich schalte das entsprechende Modul Spannungslos, womit die CPU ihren Teilnehmer verliert
3. Muss ich die CPU neu Starten damit sie die Änderung übernimmt ?
4. Ist die CPU danach nur grün wenn der deaktivierte Teilnehmer sauber abgemeldet wurde oder leucht dauernd die SF lampe ?

Ich habe mit D_ACT_DP rumprobiert aber noch nichts hinbekommen, sobald ich das Netzwerkkabel rausziehe geht die CPU in STOP über

Danke für Infos !
 
Zeig mal den Aufruf von D_ACT_DP. Neustarten musst du nix, sobald der Aufruf von SFC12 erfolgreich retour meldet kannst du das Ding abschalten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hab das auch schon gebraucht. Müsste Funktionieren:

Code:
FUNCTION_BLOCK "ProfinetSlaveDeactivate"
VAR_INPUT
  iSlave : HW_DEVICE;
  iDeactivate : Bool;
END_VAR

VAR_OUTPUT
  oSlaveActive : Bool;
  oError : Bool;
END_VAR

VAR
  vInit : Bool;
  vStep : Int;
  vStart : Bool;
  vBusy : Bool;
  vMode : Int;   // 0: Status 1: aktivieren 2: deaktivieren
  vRetval : Word;
END_VAR



CASE #vStep OF
    0:(*Init*)
        IF NOT #vInit OR #oError THEN
            #vStep := 110;
        ELSIF #oSlaveActive <> NOT #iDeactivate THEN
            #vStep := 10;
        END_IF;
        
    10:(*Aktiviere/Deaktiviere Slave*)
        #vStart := true;
        IF #iDeactivate THEN
            #vMode := 2;
        ELSE
            #vMode := 1;
        END_IF;
        #vStep := 20;
        
    20:(*Warte bis Fertig*)
        IF NOT #vBusy THEN
            #vStep := 30;
        END_IF;
        
    30:(*fertig*)
        #oError := #vRetval >= W#16#8000;
        #vStart := FALSE;
        #vStep := 110;
        
    110: (*Status holen*)
        #vStart := true;
        #vMode := 0;
        #vStep := 120;
        
    120:(*Warte bis Fertig*)
        IF NOT #vBusy THEN
            #vStep := 130;
        END_IF;
        
    130:(*fertig*)
        #oSlaveActive := #vRetval = 1;
        #oError := #vRetval >= W#16#8000;
        #vStart := FALSE;
        #vInit := true;
        #vStep := 0;
        
        
END_CASE;

#vRetval := D_ACT_DP(REQ := #vStart, MODE := #vMode, LADDR := #iSlave, BUSY => #vBusy);
 
Ich habe mit D_ACT_DP rumprobiert aber noch nichts hinbekommen
Zeig mal den Code ( PS: Denk dran der Baustein arbeitet azyklisch )

sobald ich das Netzwerkkabel rausziehe geht die CPU in STOP
Was für eine CPU, was für ein Teilnehmer und was für eine Software?

3. Muss ich die CPU neu Starten damit sie die Änderung übernimmt ?
Nein

Ist die CPU danach nur grün wenn der deaktivierte Teilnehmer sauber abgemeldet wurde oder leucht dauernd die SF lampe ?
Wenn er erfolgreich deaktiviert wurde, dann kannst du den Teilnehmer abschalten und es wird kein Busfehler o.ä. kommen.
 
Moin, es läuft !
Danke !
Was mir lediglich auffiel, das beim Neustart der CPU der Teilnehmer wieder aktiv war, so dass ich den Request nochmals anstoße !
 
Zurück
Oben