bayernburn
Level-2
- Beiträge
- 38
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Liebes SPS Forum,
ich bin beim Programmieren mit SCl noch ziemlich neu und bei mir ist folgendes Problem aufgetreten.
Ich habe mir eine SCL Quelle (FC) erstellt, die mir verschiedenste Pulse erzeugt. Wenn ich diesen FC alleine im OB1 aufrufe, funktioniert dieser einwandfrei.
Wenn ich jedoch einen weiteren von mir erstellten FC (auch in SCL) im OB1 aufrufe, dann funktioniert mein Pulse FC nicht mehr. Hier ist das Problem, dass mein verlängerter Impuls nicht mehr automatisch neu startet und somit der ganze weitere Verlauf des Programmes stehen bleibt.
Im zweiten FC wird die Kommunikation zw. SPS und Visualisierung realisiert.
Bei uns in der Fa. ist es so, dass alle unsere Standardfunktionen bereits in AWL existent sind und auch zu 100% funktionieren.
Aufgrund des "neuen" TIA Portals und dem Wegfall der AWL Sprache sind wir nun gezwungen, alle Standardfunktionen auf SCL umzustellen, was in anbetracht unserer vielen Standardfunktionen, sehr sehr umfangreich ist.
Ich verwende zum Programmieren der SCL Quellen den SCL Editor V5.3+SP5 und Step7 V5.5.
Als Test-CPU habe ich eine CPU319 laufen.
Hier noch ein Auszug aus dem Programmcode.
Vielen Dank schonmal im Voraus für eure kompetente Unterstützung.
LG
ich bin beim Programmieren mit SCl noch ziemlich neu und bei mir ist folgendes Problem aufgetreten.
Ich habe mir eine SCL Quelle (FC) erstellt, die mir verschiedenste Pulse erzeugt. Wenn ich diesen FC alleine im OB1 aufrufe, funktioniert dieser einwandfrei.
Wenn ich jedoch einen weiteren von mir erstellten FC (auch in SCL) im OB1 aufrufe, dann funktioniert mein Pulse FC nicht mehr. Hier ist das Problem, dass mein verlängerter Impuls nicht mehr automatisch neu startet und somit der ganze weitere Verlauf des Programmes stehen bleibt.
Im zweiten FC wird die Kommunikation zw. SPS und Visualisierung realisiert.
Bei uns in der Fa. ist es so, dass alle unsere Standardfunktionen bereits in AWL existent sind und auch zu 100% funktionieren.
Aufgrund des "neuen" TIA Portals und dem Wegfall der AWL Sprache sind wir nun gezwungen, alle Standardfunktionen auf SCL umzustellen, was in anbetracht unserer vielen Standardfunktionen, sehr sehr umfangreich ist.
Ich verwende zum Programmieren der SCL Quellen den SCL Editor V5.3+SP5 und Step7 V5.5.
Als Test-CPU habe ich eine CPU319 laufen.
Hier noch ein Auszug aus dem Programmcode.
Code:
//Some internal functions:
//for example an output called -SYS_CYCLUSTIME is set and reset (all 256
//cyclus). This is a easy way to measure the cyclustime from the RS-Processor
//at any time.
//There is also a creation from a multible takt (which is used for lamps and
//other time sensitive funktions).
//Also the management for the so called LongTimers is calculated here.
//
//Diverse interne Funktionen:
//zum Beispiel wird ein Blinktakt mit verschiedenen Taktraten erzeugt (wird
//fuer Lampensteuerung oder Zeitschaltuhren benoetigt). Ausserdem wird auf
//einfache Weise die Zykluszeit des RS-Prozessors gemessen und auf einen Ausgang
//geschaltet (nach jeweils 256 Zyklen).
//FC3
FUNCTION "System" : VOID
TITLE ='Internal Actions'
// KNOW_HOW_PROTECT
AUTHOR :Maier
FAMILY :Syst
NAME :General
VERSION :'1.0'
VAR_TEMP
SplitDummy :BYTE; // do not enter any var before !
SplitDummy2:BYTE;
SplitDummy3:BYTE;
BufferB :BYTE;
BufferI :INT;
BufferW :WORD;
tBCD :S5TIME;
tBCD2 :S5TIME;
tBCD_Cnt :WORD;
tBCD_Cnt2 :WORD;
tBCD_Cnt3 :WORD;
tBCD_Cnt4 :WORD;
tBCD_Cnt_B :BYTE;
tBCD_Cnt_B2:BYTE;
tBCD_Cnt_B3:BYTE;
tBCD_Cnt_B4:BYTE;
t_Out :BOOL;
t_Out2 :BOOL;
t_Out3 :BOOL;
Reset_Cnt :BOOL;
Reset_Cnt3 :BOOL;
Reset_Cnt4 :BOOL;
t_Cnt_Out :WORD;
t_Cnt_Out2 :WORD;
t_Cnt_Out3 :WORD;
t_Cnt_Out4 :WORD;
Buffer_I :WORD;
Buffer_I2 :INT;
ATSplitDummy AT SplitDummy : ARRAY[0..7] OF BOOL; // used to split the source and target
ATSplitDummy2 AT SplitDummy2 : ARRAY[0..7] OF BOOL; // used to split the source and target
ATSplitDummy3 AT SplitDummy3 : ARRAY[0..7] OF BOOL; // used to split the source and target
END_VAR
LABEL
SEC;
END_LABEL
BEGIN
tBCD := S_PEXT(
T_NO :=Syst_Time,
S := NOT t_Out,
TV :=T#250ms,
Q := t_Out);
tBCD_Cnt := S_CU(
C_NO := Syst_CountFlash,
CU := t_Out,
R := ATSplitDummy[5],
CV := t_Cnt_Out);
tBCD_Cnt_B := WORD_TO_BYTE(t_Cnt_Out);
SplitDummy := tBCD_Cnt_B;
"Flash_0.5" := ATSplitDummy[0]; // 2 Hz
"Flash_1.0" := ATSplitDummy[1]; // 1 Hz
"Flash_2.0" := ATSplitDummy[2]; // 0.5 Hz
"Flash_4.0" := ATSplitDummy[3]; // 0.25 Hz
"Flash_8.0" := ATSplitDummy[4];
Vielen Dank schonmal im Voraus für eure kompetente Unterstützung.
LG