Problem beim Baustein Hochladen in Simatic 5.4

mac_hawk

Level-1
Beiträge
23
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

Kurz: Problem beim Hochladen eines OB's.

Ich verwende eine Siemens ET200S CPU mit Simatic 5.4 Programmiersoftware.

Ich wollte schauen wie lang meine CPU zum ausführen meines Programms braucht und habe dafür eine einfache Struktur aufgebaut:

Code:
      CALL  "READ_CLK"
       RET_VAL:="f1"
       CDT    :=#DT3
      NOP   0


---



Beg:  L     "Int_temp"
      L     1
      +I    
      T     "Int_temp"
      NOP   0


---
//eigentlicher programm code....
---

    L     "Int_temp"
      L     999
      <I    
      SPB   Beg

---


  CALL  "READ_CLK"
       RET_VAL:="f2"
       CDT    :=#DT4
      NOP   0

Einfach soll es folgendes machen:
- CPU Zeit auslesen Anfang

- Sprungmarke festlegen
- Zähl variable Int bei jedem Durchlauf um 1 erhöhen

- Programm ablaufen lassen

- Prüfen ob 1000 Durchläufe

- Wenn ja, CPU Zeit auslesen Ende
- Wenn nein, Sprung zur Sprungmarke

DT3/DT4 sind Tempöräre Variablen weil ich in der Symboltabelle keinen Datentyp Date_and_Time hinbekommen hab..

Wenn ich nun hochladen will bekomme ich eine Fehlermeldung das der Baustein nicht übertragen werden kann..Frage ist nun , wieso nicht? Hab ich da nen Fehler drin?

Vllt sieht jemand ja nen Fehler und kann mir helfen, ist vllt nur ne kleinigkeit...


Frohe Ostern schonmal ;)

MfG
Hawk

PS: gibts nen besseren, leichteren weg die Programmlaufzeit in ms rauszubekommen? Hab was von nem Systembaustein gelesen(SFC 78?), wollte den probieren aber der brachte nur CPU stop,..vermute der wird nicht unterstützt oder so ..
 
Hi,

die Systemzeit kann mit dem Baustein SFC64 "TIME_TCK" gelesen werden.

Welcher OB?
Was steht in der Fehlermeldung die angezeigt wird?
Was steht im Rest vom Programm?

Gruss Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Alternativ zum SFC64:
Die Lokalvariable des OB1 (OB1_Prev_Cycle).

Wenn der Baustein nicht übertragen werden kann:
- Operandenbereiche verwendet, die von der CPU nicht unterstützt werden
- Systemfunktionen verwendet die nicht unterstützt werden
Solltest du alles mit dem Baugruppenzustand "Leistungsdaten" rausfinden.

Mfg
Manuel
 
Wenn ich nun hochladen will bekomme ich eine Fehlermeldung das der Baustein nicht übertragen werden kann..Frage ist nun , wieso nicht?
Die INT-Variablen "f1", "f2" und/oder "Int_temp" liegen wohl auf zu hohen Merker-Adressen, die die CPU nicht hat.

Weiterer Fehler:
Das Programm 1000 mal im selben OB1-Zyklus ablaufen zu lassen wird höchstwahrscheinlich zu STOP der CPU wegen
Zykluszeit-Überschreitung führen.
"SPB Beg" ist ein Rückwärts-Sprung. Es muß aber zum Ende des OB1-Zyklus gesprungen werden.

DT3/DT4 sind Tempöräre Variablen weil ich in der Symboltabelle keinen Datentyp Date_and_Time hinbekommen hab..
Lege zumindest die Date_and_Time-Variable, die den Start-Zeitpunkt der Messung enthält, in einen DB.

Alternative Zeit-Ermittlung statt SFC1 "READ_CLK":
  • #OB1_PREV_CYCLE in jedem Meß-Zyklus addieren ergibt sofort die Meßzeit in ms (eventuell mit Rundungsfehlern)
  • #OB1_DATE_TIME bei Meß-Start in einen DB kopieren und bei Meß-Ende mit FC34 "SB_DT_DT" die Zeit-Differenz
    DB.StartTime - #OB1_DATE_TIME berechnen ergibt die Zeit-Differenz in ms
    (den FC34 "SB_DT_DT" gibt es in Standard Library > IEC Function Blocks)

@dalbi
SFC64 "TIME_TCK" hat bei S7-300-CPUs nur eine Auflösung von 10ms

[...] wollte den probieren aber der brachte nur CPU stop,..vermute der wird nicht unterstützt oder so ..
Nicht "vermuten"! Für sowas gibt es den CPU-Diagnosepuffer, wo genau drin steht, warum die CPU in STOP gegangen ist.
Zielsystem > Baugruppenzustand > Diagnosepuffer

Gruß
Harald
 
Zurück
Oben