Step 7 SFB20 "STOP" - Parameter PI_NAME Unklarheiten

Student_AUT

Level-1
Beiträge
5
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute!

Ich möchte für eine Projektarbeit eine CPU remote in Stop versetzen. Hierfür verwende ich den SFB20.
Allerdings habe ich keine Ahnung wie der Name auszusehen hat, auf den der Pointer dieses Parameters(PI_NAME) zeigt.
Hat diesen SFB schonmal jemand benutzt?
Im Internet habe ich leider nichts nützliches gefunden.

Am liebsten wäre mir ein Beispiel.
 
Die Online Hilfe zum SFB20 sagt:
PI_NAME IN_OUT ANY E, A, M, D
Zeiger auf Speicherbereich, in dem der Name des zu stoppenden Programms (ASCII-Code) steht. Dieser Name darf aus maximal 32 Zeichen bestehen.
Bei einem Standardsystem aus der S7-Familie muß er P_PROGRAM sein.
Bei einem H-System sind die folgenden Namen möglich:
· P_PROGRAM: Der Stop-Auftrag gilt für alle CPUs des H-Systems.
· P_PROGR_0: Der Stop-Auftrag gilt für die CPU in Rack 0 des H-Systems.
· P_PROGR_1: Der Stop-Auftrag gilt für die CPU in Rack 1 des H-Systems.
Ich tippe also auf "P_PROGRAM", "P_PROGR_0" oder "P_PROGR_1"
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Onlinehilfe habe ich auch schon gelesen. Da ich kein H-System habe, fallen die beiden letzten Vorschläge raus.
Wie oder mit was ist P_PROGRAM verknüpft, damit die andere CPU weiß was gestopt werden soll?

Für ein funktionierendes Beispiel wäre ich sehr dankbar:)
 
Ich habe diese SFBs noch nicht verwendet, kann daher auch kein Beispiel posten.
In der Onlinhilfe steht aber auch, dass die CPU über die ID ausgewählt wird und diese von STEP7 vergeben wird, vermutlich findest Du die in Netpro unter projektierte Verbindungen..
Ich denke Du musst PI_Name einfach blind auf P_PROGRAM setzen.

Wenn Du die CPU nicht auch remote wieder starten musst, kannst Du in ihr auch auch einfach den SFC46 STP aufrufen.
(Ist mein Lieblings SFC: schnell, fehlerlos und endgültig. Danach macht die CPU immer genau das, was Du wolltest: nichts mehr ;) )
 
Ich habe da schon einige Sachen probiert. Weiß garnet genau, ob diese Möglichkeit auch dabei war. Werde es auf jeden Fall nochmal probieren.

SFC 46 habe ich auch schon ausprobiert. Das mit dem remote starten wäre dann der nächste Schritt gewesen. Darum kann ich mich allerdings erst kümmern, wenn das mit dem remote Stop funktioniert:)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
lege einen DB (z.B. 666) mit einem String an, schreibe in den String P_PROGRAM

übergebe an PI_Name die symbolische Adresse des Strings (z.B. "ProgDB".ProgName)
 
Zuletzt bearbeitet:
Auf den 300er Steuerungen gibt es keinen SFB20. Es gibt etwas ältere Handbücher von Siemens bei denen die unterstützen SFB/SFCs aufgelistet sind. Aber dort fehlen die PN CPUs. Eine IM151-8 PN die in der Liste fehlt unterstützt den Baustein aber auch nicht.
Wenn der Baustein nicht unterstützt wird, sollte eigentlich die SF-LED an deiner CPU leuchten.

Wenn du mit der CPU online verbunden bist, kannst du dir über den Simatic Manager und den Baugruppenzustand der CPU im Fenster "Leistungsdaten" ausgeben lassen, welche Systembausteine deine CPU unterstützt.
 
.
@ VL

Ich kann jetzt leider nicht nachschauen, ob das ein STRING oder nur
der reine ASCII-Code für "P_PROGRAM" sein muss.

Das muss der TE selbst probieren.



@Student

Leider schreibst du nicht, welche HW du verwendest.

Einige der S7-300er unterstützen die SFB 19/20/21 nicht,
weder remote noch lokal. Dies musst du also prüfen.

Ansonsten musst du eine S7-Verbindung in NetPro zwischen deinen
BEIDEN CPU´s anlegen (also auf JEDER der beiden ! )

HW-Konfig mit NetPro auf beide CPU´s laden

Rufe den SFB20 auf einer der beiden CPU´s unter Angabe der
projektierten Verbindungs-ID auf

Probiere aus, ob der reine ASCII-Code für "P_PROGRAM" ausreicht oder ob
du einen STRING anlegen musst (also dann mit Header).

Die verschiedenen ASCII-Code sind fest mit ihrem Inhalt vorgegeben und
dienen nur zur Unterscheidung zwischen den Racks und den CPU´s des mit
der ID adressierten Systems wie bereits im Beitrag #2 zitiert.
Für ein Standardsystem wie deins ist der Inhalt eben "P_PROGRAM"


Dann sollte es gehen.


Viel Erfolg ! ;)
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
.
Gibt es einen bestimmten Baustein in dem ich den SFB20 aufrufen muss?

Ja, den gibt es:

Alle SFBs, die für den Datenaustausch oder für das Programm-Management (AS in STOP oder in RUN setzen) über die projektierten Verbindungen benötigt werden, müssen in den Anlauf-OBs (OB100 bei der S7-300, OB100 und OB101 bei der S7-400) und im zyklischen Betrieb (OB1) aufgerufen werden.
 
Vielen Dank für die zahlreiche Hilfe.

Ich habe heut in den Leistungsdaten nachgeschaut und meine beiden 300er CPU's unterstützen leider keinen SFB20.
Da hätte ich auch mal vorher drauf kommen können dort nachzuschauen. Aber wenn ma das nicht weiß...:(
Zumindest hab ich was dazu gelernt.

Komischerweise bekomme ich aber keine Fehlermeldung in der CPU wenn ich den SFB 20 aufrufen will.
 
Vielen Dank für die zahlreiche Hilfe.

Ich habe heut in den Leistungsdaten nachgeschaut und meine beiden 300er CPU's unterstützen leider keinen SFB20.
Da hätte ich auch mal vorher drauf kommen können dort nachzuschauen. Aber wenn ma das nicht weiß...:(
Zumindest hab ich was dazu gelernt.

Komischerweise bekomme ich aber keine Fehlermeldung in der CPU wenn ich den SFB 20 aufrufen will.

Bekommst du sicher, wenn du im OB 1 schreibst call SFB 20.
Da du ja nur bedingt aufrufst bekommst du keinen Fehler.
Du kannst aber über STP die PLC auch auf Stop bringen, du musst nur die Bedingung von außerhalb triggern.


bike
 
Zurück
Oben