TIA Sr-Flip Flop springt von 0 auf 1. Warum?

Beiträge
110
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

wir haben ein folgendes Problem mit dem SR-Flip-Flop.
In dem Programm wird zuerst, wenn der Istwert unter dem Unterwert ist, der Eingang S des Flip Flops gesetzt und wenn es die untergrenze erreicht wird der eingang S wieder 0. Wenn der Istwert irgendwann die Obergrenze erreicht, wird der Eingang R1 rücksetzen gesetzt. Das heißt der SR-Flip-Flop geht aus und mein Ofen wird ausgeschaltet. Wenn der Ofen ausgeschaltet ist, unterschreitet der Istwert die Obergrenze und auf dem R1 ist nun keine 1 mehr angelegt sondern eine 0. Nun müsste der SR-Flip-Flop auf der 0 bleiben, aber er aus irgendeinem grund wieder zurück auf 1 gesetzt, obwohl beide eingänge 0 sind. Warum ist das so?

Danke
mfg Trainer
1624616043594.png
 
1. Der Istwert könnte springen, so schnell, dass Du es gar nicht wahrnimmst und TIA schon gar nicht. Baue doch mal eine Verzögerungszeit ein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
nur mal als Idee:
#Merker mehrmals genutzt?
Wenn #Merker eine temp Variable ist, gibt es irgendwelche Überlappungen im Ladespeicher?
Mal einen Zähler an S und R gelegt um Flanken zu erkennen?
 
Hi,
nur mal als Idee:
#Merker mehrmals genutzt?
Wenn #Merker eine temp Variable ist, gibt es irgendwelche Überlappungen im Ladespeicher?
Mal einen Zähler an S und R gelegt um Flanken zu erkennen?
In meinem Programm habe ich dafür nur einmal M10.0 verwendet und das ist keine Temp Variable sondern eine PLC Variable.
1624617300811.png
1. Der Istwert könnte springen, so schnell, dass Du es gar nicht wahrnimmst und TIA schon gar nicht. Baue doch mal eine Verzögerungszeit ein.
Der Istwert kann nicht sofort Springen, weil die Werte Untergrenze und Obergrenze weit genug voneinander entfernt sind.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In meinem Programm habe ich dafür nur einmal M10.0 verwendet
Nur mal am Rande, du verwendest nicht M10.0 sondern M0.1

Kann es sein, dass du das Systemmerkerbyte in der HW-Konfig aktiviert hast ( Taktmerker oder Systemmerkerbyte
auf MB0 )?

Mach doch einmal eine Variablentabelle auf und beobachte mal das MB0
 
Dann den Merker 0.1 mal per Querverweis suchen,

In meinem Programm habe ich dafür nur einmal M10.0 verwendet
Merker 10.0 ( oder 0.1 ) vielleicht nur einmal, vielleicht hast du aber schreibende
Zugriffe auf MB0, MW0, MD0...

Wie gesagt,
Variablentabelle mal anlegen, den Temperaturwert und den Merker dort mal anzeigen lassen...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich würde auch mal nach den Istwert schauen, könnte ein EMV Problem sein.
Wie wird den dein Istwert gemessen?
Was für ein Sensor ist es?
Wie sind die Leitungen verlegt?
Was sind es für Leitungen?
 
Du könntest ja mal ein kurzes Programm schreiben, dass die MIN / MAX Werte
der Temperaturwert wegschreibt. Dann könntest du mal beobachten was das Signal so treibt :)
 
Was bedeutet genau schreibende Zugriffe auf MB0,MW0,MD0 ? Also ich habe diese Merker auch in dem selben Main Programm verwendet
ich würde auch mal nach den Istwert schauen, könnte ein EMV Problem sein.
Wie wird den dein Istwert gemessen?
Was für ein Sensor ist es?
Wie sind die Leitungen verlegt?
Was sind es für Leitungen?
Das ist ein normaler pt 100 und der misst an der Heizung die Temperatur. Es gab bis jetzt aber auch keine Probleme mit der Anzeige der Termperatur, diese war immer korrekt.
Dann den Merker 0.1 mal per Querverweis suchen,


Merker 10.0 ( oder 0.1 ) vielleicht nur einmal, vielleicht hast du aber schreibende
Zugriffe auf MB0, MW0, MD0...

Wie gesagt,
Variablentabelle mal anlegen, den Temperaturwert und den Merker dort mal anzeigen lassen...
Was bedeutet genau schreibende Zugriffe auf MB0,MW0,MD0 ? Also ich habe diese Merker auch in dem selben Main Programm verwendet, aber sie haben eine andere Adresse
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja also an der Analogwertverarbeitung, habe ich MW1 und MD0 im selben Main Programm verwendet. Aber wie kann es sein, dass diese Merker mein M0.1 Merker beeinflussen und wie kann ich das verhindern?
:)

Na wenn du MD0 verwendest, dann beeinflusst du ja auch den M0.1

MD0 ( 32 Bit Doppelwort ) besteht aus den einzelnen M0.0 - M3.7 ( 32 Bits )


Weitere Beispiele:
MD4 ( 32 Bit Doppelwort ) besteht aus den einzelnen M4.0 - M7.7 ( 32 Bits )
MW6 ( 16 Bit Wort ) besteht aus den einzelnen M6.0 - M7.7 ( 16 Bits )
 
....habe ich MW1 und MD0 im selben Main Programm verwendet....
Was natürlich auch so nicht funktionieren kann

MD0 besteht aus MB0, MB1, MB2 und MB3
MW1 besteht aus MB1 und MB2

Kommst du aus der Codesys Ecke?

Warum arbeitest du mit Merkern, nutze doch symbolische Variablen im FB
Dann hast du erstens mal diese Probleme nicht und zweitens wenn sich deine
Programm Strukturen ändern musst du nur dein Programm einmal übersetzen
und alles passt sich der neuen Struktur an...
 
M0.1 ist Teil des MB0, was wiederum Teil des MW0 und des MD0 ist. Die Speicherbereiche überlappen einander, und zwar so:
Code:
|<---------------------------------------------MD0--------------------------------------------->| ...
|<---------------------MW0--------------------->|<---------------------MW2--------------------->| ...
                        |<---------------------MW1--------------------->|<---------------------MW3--------------------->|
|<---------MB0--------->|<---------MB1--------->|<---------MB2--------->|<---------MB3--------->| ...
|.7|.6|.5|.4|.3|.2|.1|.0|.7|.6|.5|.4|.3|.2|.1|.0|.7|.6|.5|.4|.3|.2|.1|.0|.7|.6|.5|.4|.3|.2|.1|.0| ...
Danke @Heinileini für die Vorlage

Harald
 
Ja ich werde mich weiter einarbeitern in diese Merker geschichte und meine Programmier technik verbessern
Du kannst dich da ja einarbeiten aber ich würde jetzt in einem neuen Projekt keine Merker mehr benutzen
sondern Variablen, generiert durch den entsprechenden FB
 
Zurück
Oben