Sonstiges [SCL] welches "S7_..."-Baustein-/Anschluss-Attribut gegen Parametrierung zur Laufzeit

Flux

Level-1
Beiträge
314
Reaktionspunkte
11
Zuviel Werbung?
-> Hier kostenlos registrieren
[SCL] welches "S7_..."-Baustein-/Anschluss-Attribut gegen Parametrierung zur Laufzeit

Hallo Leutz,

ich möchte gewisse Anschlüsse meines Bausteins als Initialparameter kennzeichnen, d. h. dass sie nur in der Offline-Sicht des CFC-Editors parametrierbar sein dürfen.

Ich habs schon mit S7_param := 'false' versucht, aber dann sind die Anschlüsse nicht mal mehr in der Offline-Sicht des CFC-Editors parametrierbar (Wert-Feld ausgegraut). Dann sind nur noch die Anfangswerte aus der SCL-Quelle wirksam.

FRAGE:
  1. Weiß jemand, welches S7_...-Baustein-/Anschluss-Attribut gegen die Parametrierung zur Laufzeit wirkt?
  2. Kann man mit S7_tasklist := 'OB100' alternativ vielleicht einen Codebereich in der SCL-Quelle definieren, der nur im OB100 ausgeführt wird und die Anschlüsse mit den Werten aus der CFC-Offline-Parametrierung versorgt ?

Bin für alle Vorschläge offen :)

PS: der Baustein wird nicht nach WinCC gemappt
 
Hallo Leutz,

ich möchte gewisse Anschlüsse meines Bausteins als Initialparameter kennzeichnen, d. h. dass sie nur in der Offline-Sicht des CFC-Editors parametrierbar sein dürfen.

Ich habs schon mit S7_param := 'false' versucht, aber dann sind die Anschlüsse nicht mal mehr in der Offline-Sicht des CFC-Editors parametrierbar (Wert-Feld ausgegraut). Dann sind nur noch die Anfangswerte aus der SCL-Quelle wirksam.

FRAGE:
  1. Weiß jemand, welches S7_...-Baustein-/Anschluss-Attribut gegen die Parametrierung zur Laufzeit wirkt?
  2. Kann man mit S7_tasklist := 'OB100' alternativ vielleicht einen Codebereich in der SCL-Quelle definieren, der nur im OB100 ausgeführt wird und die Anschlüsse mit den Werten aus der CFC-Offline-Parametrierung versorgt ?
m.M. nach geht das nicht. In der Step7 Hilfe gibt's ne Liste mit Baustein- und Parameterattributen.

S7_tasklist :='OB100' kennzeichnet die OBs in welchen der Baustein zusätzlich zum normalen Weckalarm automatisch noch eingebaut werden.


Welchen Sinn soll das Ganze haben? Ist doch grad das gute daran, dass man online ändern kann, ohne laden zu müssen.

Als Workaround kannst Du an den betreffenden Bausteineingang z.B. einen Addierer hängen, welcher m.M. nicht online parametriert werden kann...


Gruß.
 
Zuletzt bearbeitet:
S7_tasklist :='OB100' kennzeichnet die OBs in welchen der Baustein zusätzlich zum normalen Weckalarm automatisch noch eingebaut werden.

Das ist klar, die Frage ist, ob man im SCL-Code abfragen kann, ob man gerade im OB100 ausgeführt wird bzw. ob man definieren kann, dass z. B. eine Initialisierungsroutine im OB100 ausgeführt werden soll (ohne einen extra Init-FC anlegen zu müssen).


Welchen Sinn soll das Ganze haben? Ist doch grad das gute daran, dass man online ändern kann, ohne laden zu müssen.

Schutz vor Änderungen (z. B. die Bediener von Kundenseite)


Als Workaround kannst Du an den betreffenden Bausteineingang z.B. einen Addierer hängen, welcher m.M. nicht online parametriert werden kann...

Welchen Baustein meinst du genau ?
 
Das ist klar, die Frage ist, ob man im SCL-Code abfragen kann, ob man gerade im OB100 ausgeführt wird bzw. ob man definieren kann, dass z. B. eine Initialisierungsroutine im OB100 ausgeführt werden soll (ohne einen extra Init-FC anlegen zu müssen).?
Jo, naklar geht das... Aber was nicht geht, ist auf die offline-Werte zuzugreifen.

Code:
VAR_TEMP
TOP_SI: STRUCT
      EV_CLASS  : BYTE;
      EV_NUM    : BYTE;
      PRIORITY  : BYTE;
      NUM       : BYTE;
      TYP2_3    : BYTE;
      TYP1      : BYTE;
      ZI1       : WORD;
      ZI2_3     : DWORD;
END_STRUCT;
START_UP_SI: STRUCT
      EV_CLASS  : BYTE;
      EV_NUM    : BYTE;
      PRIORITY  : BYTE;
      NUM       : BYTE;
      TYP2_3    : BYTE;
      TYP1      : BYTE;
      ZI1       : WORD;
      ZI2_3     : DWORD;
END_STRUCT;
      iRet      : INT;
END_VAR

BEGIN

// START UP =====================================================================
    iRet := SFC6 (TOP_SI:= TOP_SI, START_UP_SI:= START_UP_SI);
    IF (TOP_SI.NUM = 100) THEN
        
        //hier der Code bei Anlauf...
        
        iRet := 0;
    END_IF;
// END STARTUP ==================================================================

Schutz vor Änderungen (z. B. die Bediener von Kundenseite)?

jo, aber der Bediener kann trotzdem offline ändern, übersetzen , laden...

Welchen Baustein meinst du genau ?

naja ADD_R oder ADD_DI irgendeinen FC halt der zu Datentyp passt.

Gruß.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hab noch ne Idee:

nach der IB einfach die Bausteineingänge im CFC unsichtbar schalten... dann ändert auch niemand "aus Versehen"...

oder nen DB an die entsprechenden Eingänge hängen...

oder oder oder ...

Sinn ergibt das für mich aber trotzdem nicht.

Gruß.
 
Zuletzt bearbeitet:
noch ne Idee, "Schreibschutz für Pläne" aktivieren... (Planordner - Objekteigenschaften...) musst Du mal schaun, ob damit auch Online-Änderungen von Bausteineingängen verhindert werden...

So, jetzt sollte aber was für Dich dabei sein ;)

Gruß.
 
oder noch ne Idee: Du setzt das Parameterattribut {S7_param:='false'} und änderst bei der IB den Wert im zugehörigen IDB... müsste eigentlich funktionieren

Gruß.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
oder noch ne Idee: Du setzt das Parameterattribut {S7_param:='false'} und änderst bei der IB den Wert im zugehörigen IDB... müsste eigentlich funktionieren

Gruß.

Wenn ich das Attribut setze und den Aktualwert des Anschlusses in DBParam verbiege, dann erscheint im CFC-Offline trotzdem der alte Wert :/

PS: Geht doch, man muss die Parameteränderung auch runterladen ;)
Merci!

PPS: noch S7_read_back rein. Komischerweise erscheinen die geänderten und runtergeladenen Aktualwerte im CFC-Offline erst nach einem Rücklesen der Parameter.. eigentlich müssten doch die geänderten Werte sofort nach der Änderung auch im CFC-Offline sichtbar sein:confused:
 
Zuletzt bearbeitet:
evtl. speichert da cfc noch was in ner eigenen Datenbank. keine Ahnung. probier es einfach aus. vielleicht nimmt der auch die initialwerte und nicht die aktualwerte im db...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Manche Leute muss man vor sich selbst schützen..

falls Du das wirklich so umsetzt, wird sich der naechste wundern, warum der identische Baustein an einem nicht aenderbaren Eingang unterschiedliche Werte hat... hoffe Du dokumentierst das auch. ich bin eigentlich kein Freund von solchen frickeleien, welche die uebliche cfc Arbeitsweise aushebeln...

gruss
 
Zurück
Oben