patx
Level-1
- Beiträge
- 16
- Reaktionspunkte
- 3
-> Hier kostenlos registrieren
Welche SFC "SCALE" verwendest du? Nach meinem Verständnis müsstes du doch die Funktion "NORM-X" verwenden ???
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Vielleicht löscht du noch mal den FC105 (Scale) und ziehst ihn aus der Library in deinen Bausteinordner.
Welche SFC "SCALE" verwendest du? Nach meinem Verständnis müsstes du doch die Funktion "NORM-X" verwenden ???
Ist das vermutlich was selbst gebautes... sicher kein FC105 (da HL, LL nicht einstellbar)....So habe es weiter eingegrenzt und herausgefunden wann die CPU in Stop springt und zwar wenn ich die High und Low limit werte auf 16220.0 und -2700.0 setze.
So wie ich das lese...
Ist das vermutlich was selbst gebautes... sicher kein FC105 (da HL, LL nicht einstellbar)....
@TE: Versuch mal dein Problem zu reduzieren...
Reduzier den Programm mal auf das Minimum was zum Absturz führt. (Vielleicht ist das schon die Analogfunktion alleine)
Das könntest du ja hier einstellen. Zumindest könntest du den Code der Skalierfunktion zeigen die bei Einstellung 16220.0 / -2700.0 zum CPU-Stop führt....
FUNCTION FC 105 : VOID
TITLE =Einlesen Analog Werte
//Skalierung eines Rohwertes
//Rohwert einstellbar 0..32000 (INT)
//Ausgangswert einstellbar 0,0 bis ... (REAL)
//
//OUT = [ ((FLOAT (IN) – K1)/(K2–K1)) * (HI_LIM–LO_LIM)] + LO_LIM
AUTHOR : x2
NAME : Analog
VERSION : 1.1
VAR_INPUT
IN_EW : WORD ; //IN
OG_Rohwert : INT ; //K2 Oberer Wert Rohwert Eingangswort INT
UG_Rohwert : INT ; //K1 Oberer Wert Rohwert Eingangswort INT
OG_Ausgang : REAL ; //HI_LIM Oberer Analogausgangswert REAL
UG_Ausgang : REAL ; //LO_LIM Unterer Analogausgangswert REAL
END_VAR
VAR_OUTPUT
OUT : REAL ; //Ergebniss Ausgangswert REAL
END_VAR
VAR_TEMP
OG_Rohwert_REAL : REAL ;
UG_Rohwert_REAL : REAL ;
K2wenigerK1 : REAL ; //K2 - K1
HI_LIM_LO_LIM : REAL ; //HI LIM - LO LIM
Zwischen_1 : REAL ;
END_VAR
BEGIN
NETWORK
TITLE =Anfang
//OUT = [ ((FLOAT (IN) – K1)/(K2–K1)) * (HI_LIM–LO_LIM)] + LO_LIM
NETWORK
TITLE =Wandelung OG/UG Rohwert in REAL
L #OG_Rohwert;
ITD ; //16bit INT --> 32bit INT
DTR ; //32bit INT --> 32 REAL
T #OG_Rohwert_REAL; //32bit REAL
L #UG_Rohwert;
ITD ; //16bit INT --> 32bit INT
DTR ; //32bit INT --> 32 REAL
T #UG_Rohwert_REAL; //32bit REAL
NETWORK
TITLE =UG Rohwert - OG Rohwert, K2-K1
L #OG_Rohwert_REAL; //32bit REAL
L #UG_Rohwert_REAL; //32bit REAL
-R ;
T #K2wenigerK1;
NETWORK
TITLE =HI_LIM–LO_LIM
L #OG_Ausgang;
L #UG_Ausgang;
-R ;
T #HI_LIM_LO_LIM;
NETWORK
TITLE =Zwischen 1
L #IN_EW; //Input
ITD ; //16bit INT --> 32bit INT
DTR ; //32bit INT --> 32 REAL
L #UG_Rohwert_REAL; // - K1
-R ;
L #K2wenigerK1; // : K2-K1
/R ;
T #Zwischen_1; //= ((FLOAT (IN) – K1)/(K2–K1))
NETWORK
TITLE =OUT
L #Zwischen_1;
L #HI_LIM_LO_LIM; // = [ #Zwischen_1 * (HI_LIM–LO_LIM)]
*R ;
L #UG_Ausgang; // + LO_LIM
+R ;
T #OUT; // = [ ((FLOAT (IN) – K1)/(K2–K1)) * (HI_LIM–LO_LIM)] + LO_LIM
END_FUNCTION
Ah sorry, ich dachte dass du mit dem HighLimits/LowLimits (16220.0 und -2700.0) den Skalierbereich auf der Eingangsseite gemeint hast, der ist ja bei FC105 fest auf 0-27648 bzw. +/-27648.@ All: Es liegt an der SCALE-SFC(FC105).
Die hat sehr wohl ein HI-LIM und ein LOW-LIM für die Skalierung der Variable, ohne das kann man ja auch nicht skalieren
Könntest du das mal als Mini-Projekt hochladen, dann könnte man das eventuell selber auf einer CPU probieren...Die Probleme treten nur bei den zuvor beschriebenen Skalierungswerten auf. Der Code steht auf Seite eins, in der Funktion wird der FC105 gecallt und die Werte entsprechend Übergeben. Ausser einer weiteren Fehlerauswertung wird darin nichts gemacht und daran kann es nicht liegen, da es bei den anderen Analogwertverarbeitungen mit der selben Funktion funktioniert.
Ich reiche ja den Fehlercode des FC105 durch in mein FB dennoch wird kein Fehler angezeigt sondern die CPU springt in STOP.
Wenn du auf den FC105 gehst und dann "F1" drückst, kommt eine rel. ausführliche Hilfe. Darin ist auch die Formel, nach welcher im FC 105 scaliert wird.
Das würde ich mal nachprogrammieren (Kann man eh gut gebrauchen, wenn mal "nicht"-Siemens-Analogwerte scaliert werden sollen, z.B. von einer Beckhoff-Klemme).
Dann sollte es funktionieren oder aber du kommst damit diesem ominösen Fehler auf die Spur.
PS: Hier mal nachgereicht ein etwas älterer Nachbau des FC105, als Quelle:
Code:FUNCTION FC 105 : VOID TITLE =Einlesen Analog Werte //Skalierung eines Rohwertes //Rohwert einstellbar 0..32000 (INT) //Ausgangswert einstellbar 0,0 bis ... (REAL) // //OUT = [ ((FLOAT (IN) – K1)/(K2–K1)) * (HI_LIM–LO_LIM)] + LO_LIM AUTHOR : x2 ...
Ah sorry, ich dachte dass du mit dem HighLimits/LowLimits (16220.0 und -2700.0) den Skalierbereich auf der Eingangsseite gemeint hast, der ist ja bei FC105 fest auf 0-27648 bzw. +/-27648.
Du hast aber ganz normal die Skaliergrenzen für den Ausgangswert gemeint... My Bad.
Könntest du das mal als Mini-Projekt hochladen, dann könnte man das eventuell selber auf einer CPU probieren...
// END ====================================================================================================================================
// Return functionvalue
#analogue_input_converting := #t_av_scale_error_code;
In der Step 7 Pro Programmierleitfaden wird aber geschrieben:"Die Bearbeitung des Programms wird mit dem Ersatzwert "0" fortgesetzt."
CPU S7-1500:
– Bei einem Programmierfehler wechselt die CPU in den Betriebszustand STOP und
schreibt einen Eintrag in den Diagnosepuffer.
– Bei einem Peripheriezugriffsfehler bleibt die CPU im Betriebszustand RUN und schreibt
einen Eintrag in den Diagnosepuffer.
@ All: Mittlerweile verursacht nur noch ein Wert Probleme, ich habe noch eine Fehlerhaft Überlagerte Adressierung gehabt :icon_confused: Habt ihr noch ein Tipp was es sein könnte?
Vielleicht noch eine weitere "Fehlerhaft Überlagerte Adressierung"?Also ich finde das Problem nicht, wieso bei dem einen Analogwert die CPU auf Stop geht.
Ist das wirklich so schwer, den Programmcode des einen FB soweit zu reduzieren, daß er vorzeigbar wird? Vielleicht verschwindet ja auch der Fehler beim Reduzieren - dann schau, was Du entfernt hast.Das Miniprojekt wird schwierig, da viel in dem FB gemacht wird und das ganze Projekt schon etwas umfangreicher ist.
Welche CPU, welche Firmwareversion?Hallo Leute,
ich habe auch diese Ereignis-ID: 16# 02:3500.
Dieses Problem, taucht nur sporadisch auf, d.h die CPU läuft teilweise 5 Monate, danach geht sie auf Stopp. Ich habe bereits die Zykluszeit erhöht, den OB 80 eingefügt und den RE_TRIGR eingefügt. Hatte jemand schonmal so ein ähnliches Problem?
Zeig doch mal den CODE der SchleifeJa ich habe eine WHILE Schleife drinnen, diese wird aber regelmäßig durchlaufen. Ich habe aber das Problem immer erst nach 4-6 Monaten.
Vielleicht wird die Schleife normalerweise nur 10 mal durchlaufen und im Problemfall zigtausend mal? Oder die WHILE-Bedingung bleibt immer erfüllt und die Schleife endet nie? Welche Bedingung hält die Schleife am laufen, was muß passieren damit die Schleife endet?Ja ich habe eine WHILE Schleife drinnen, diese wird aber regelmäßig durchlaufen. Ich habe aber das Problem immer erst nach 4-6 Monaten.
z.B. Daten suchen in einem Speicherbereichfür was braucht man in einer SPS eine WHILE Schleife?
Ja, z.b.z.B. Daten suchen in einem Speicherbereich
Wir verwenden essentielle Cookies, damit diese Website funktioniert, und optionale Cookies, um den Komfort bei der Nutzung zu verbessern.
Siehe weitere Informationen und konfiguriere deine Einstellungen