TIA D_ACT_DP Aktivieren/deaktivieren PN Busteilnehmer

Zuviel Werbung?
-> Hier kostenlos registrieren
Der Diagnosepuffer sieht folgender maßen aus:
Anhang anzeigen 38722
"Nicht akzeptierter Unterschied zwischen Soll/Ist-Konfiguration"
Ist in den CPU-Eigenschaften/Anlauf der "Anlauf der CPU bei Unterschieden" eingestellt?


Wenn ich die beiden FU aus der config lösche, dann funzt es wunderbar.
:confused: Wie kann das Deaktivieren eines gar nicht projektierten Teilnehmers "wunderbar funzen"??


Ich habe das D_ACT_DP im OB1 reingetan siehe Bild. Ich habe es mit First Scan verknüpft damit das Req nicht ständig 1 ist. Ich habe es mit und ohne positive Flanke probiert.
Nochmal: die Hilfe zum D_ACT_DP sagt daß die Anweisung mehrere Durchläufe durch den Zykluskontrollpunkt benötigt. Den REQ auf den FirstScan zu begrenzen ist also ziemlich sinnfrei - ist das zu kompliziert mit FirstScan eine SR-Box für ein Ausführungsbit zu setzen und mit NOT BUSY wieder zurückzusetzen?

Harald
 
jetzt gehts

@Harald
Mit "wunderbar funzen" meinte ich das die SPS startet.
Mit dem first scan: Ich nahm an, dass das Req-Signal nur kurz an sein müsste und nicht die ganze Zeit. Deshalb habe ich es so gemacht. Aber ich setze auch gern eine SR-Box. Damit habe ich kein Problem.

Ich werds heut vormittag mal testen. - Siehe da, mit dem RS-Box funzt es jetzt auch. Vielen Dank
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe dafür einen Baustein mit einer kleinen Schrittkette
die dann das REQ Signal anstehen lässt bis der Befehl erfolgreich war oder nach einer Zeitüberschreitung die Sache abbricht.
Je nach Auswahl kann der Teilnehmer dann Aktiviert oder Deaktiviert werden.

Gruß

Jens
 
Hat schon jemand optionale Teilnehmer zusammen mit IRT konfiguriert? Habe heute Versuche gemacht mit dem Befehl ReconfigIOSystem auf einer S7-1508S-F. Es handelt sich um einen Datenlogger im IRT-Netz, der mal da ist und mal nicht.
Mein Problem im ersten Anlauf war, daß dazu ja auch die Topologie angepaßt werden muß. Hab das auch in dem Array entsprechend konfiguriert, aber dann kommt ein Fehler, der darauf hindeutet, daß ich die Topologie nicht ändern kann, weil die Ports fest verschaltet sind.
Verschalte ich sie nicht und sage "über Anwenderprogramm konfiguriert", kann ich die HWConfig nicht übersetzen, weil die Topologie für IRT fehlt.
Ich glaube, da beißt sich die Katze gerade in den Schwanz. Oder muß man da bei IRT anders rangehen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Oberchefe,
danke, kannte ich noch nicht.
Aber irgendwie hilft mir das nicht wirklich weiter. Denn wenn ich Topologie projektiere, bekomme ich beim Umparametrieren einen Fehler, weil sie projektiert ist und der Port nicht frei neu verschaltet werden kann. Projektiere ich sie nicht, kann ich nicht übersetzen.
 
Neue Woche, neues Glück:
Bei IRT darf/braucht keine Portkonfiguration geändert werden.
Es werden einfach nur die optinalen Geräte aktiviert/deaktiviert, ohne die Verschaltung zu ändern.
Tatsächlich ändert sich die Topologie, aber anscheinend wird das bei IRT im Hintergrund automatisch gehandelt.

Nachtrag, offizielle Antwort von Siemens:
Bei IRT müssen sie alles dem System überlassen.
Sie dürfen ein optionales des Devices im IRT-Strang haben, freie Wahl der Topologie ist jedoch nicht möglich.
Die Ports müssen sie nicht manuell einstellen, fehlt ein Device im IRT-Strang (optionales Device nicht aktiviert) wird davon ausgegangen dass die beiden Nachbarn direkt verbunden werden.
Da sie In der Port Verschaltung nicht frei sind müssen sie diese auch nicht angeben.
 
Zuletzt bearbeitet:
Hallo zusammen,

da es in diesem Thema speziell um D_ACT_DP als Funktion geht habe ich eine kurze Frage:
Als FUP funktioniert der Baustein scheinbar anstandslos.
In SCL kriege ich eine Fehlermeldung, je nach dem was ich mache:
Nehme ich RET_VAL dazu (wie in FUP) dann "Anzahl der an die Funktion [...] übergebenen Parameter abweichend" und "Formalparameter 'RET_VAL' ist ungültig".
Lasse ich RET_VAL weg beschwert sich die Syntax mit "Die Funktion gibt einen Wert zurück".

Was zum Teufel mache ich falsch? Kann mir hier jemand (auf die Sprünge) helfen?

Danke!
Felix
 
Zuletzt bearbeitet:
Ich muss eine sps mehre IM Module deaktivieren die aber schon projektiert sind, die erst in der Zukunft die dezentrale pereferie nach und nach angeschlossen werden. Ich mochte die Hardware aber nicht ständig stoppen und neuladen weil es dauerhaft laufen soll.
Reicht da der OB rack Station damit die sps nicht in den stop geht? Tia 15.1 S7 1515.

Können die 10 d_act_dp Bausteine gleichzeit requested werden? Oder muss ich die nacheinander aufrufen wie bei modbus real in einer schritkette?
 
Ich würde immer schauen das ich das nacheinander mache. Das ist ja eh nur zu machen wenn du änderst, das macht man ja nicht alle 5 Sekunden.
Die Chance ist aber hoch das was von deinem code nicht läuft und du dann eh laden musst, außer du kannst entsprechend Reserven vorsehen in Funktionsbausteinen und und Datenbausteinen.
 
Ich muss eine sps mehre IM Module deaktivieren die aber schon projektiert sind, die erst in der Zukunft die dezentrale pereferie nach und nach angeschlossen werden. Ich mochte die Hardware aber nicht ständig stoppen und neuladen weil es dauerhaft laufen soll.
Reicht da der OB rack Station damit die sps nicht in den stop geht? Tia 15.1 S7 1515.

Können die 10 d_act_dp Bausteine gleichzeit requested werden? Oder muss ich die nacheinander aufrufen wie bei modbus real in einer schritkette?
Eine 1500 geht beim Ausfall eines PN-Teilnehmers generell nicht in STOP. Es blinkt halt die Fehler-LED.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich mache es immer so:

//Inaktive Busteilnehmer ausblenden
#_retval := D_ACT_DP(REQ := TRUE,
MODE := 0, //0=Abfrage des aktuellen Teilnehmerstatus
LADDR := "654", //HWIO von Teilnehmer A
BUSY => #_hvar1);

#_retval := D_ACT_DP(REQ := (#_retval = 1), //wenn Status aktiv, setze auf inaktiv
MODE := 2, //2=Teilnehmer inaktiv setzen
LADDR := "654", //HWIO von Teilnehmer A
BUSY => #_hvar1);

#_retval := D_ACT_DP(REQ := TRUE,
MODE := 0, //0=Abfrage des aktuellen Teilnehmerstatus
LADDR := "646", //HWIO von Teilnehmer B
BUSY => #_hvar1);

#_retval := D_ACT_DP(REQ := (#_retval = 1), //wenn Status aktiv, setze auf inaktiv
MODE := 2, //2=Teilnehmer inaktiv setzen
LADDR := "646", //HWIO von Teilnehmer B
BUSY => #_hvar1);

Das ganze geht natürlich auch zum aktiv setzen.
 
Zurück
Oben