Wie Spannungssignal auswerten?

Skilppy

Level-1
Beiträge
13
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
schreibe gerade mein erstes Programm mit Twincat (ST) aufgrund einer Projektarbeit.
Zur verfügung habe ich für das eine Teilprogramm einen Lichtsensor, welcher ein Spannungssinal von 0-10V an die Beckhoff-SPS liefert.

Jetzt meine frage, wie kann ich dieses analoge Signal in ein für mich brauchbares digitales Signal umwandeln? (Nur anhand des Programmes, keine zusätzliche Hardware)
Vll. gibt es in ST ja einen A/D-Umwandler????

Danke schonmal im vorraus.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Soweit ich weis, über eine analoge Eingangsklemme.

Werde morgen oder übermorgen nochmal genau gucken auf welchen Baustein der Sensor geht.

Oder kann man sowas garnicht auswerten??
 
Wenn Du es von einer analogen Klemme bekommst hast Du ja ein Word. Dieses müsstest Du dann auf einen für Dich brauchbaren Wert
0-100%

oder

X-Y Lux
(wobei X der Lux-Anfangswert und Y der Lux-Endwert des Sensors wären)

skalieren.

Dafür gibt es in der OSCAT.LIB zum Beispiel den Baustein Scale_D.

Ist in der OSCAT-Doku sehr gut dargelegt.
 
Ui, die OSCAT.LIB habe ich nicht, muss man die extra kaufen?

Habe aber auch eine interesssante Funktion in der Standart-LIB gefunden.

undzwar kann man da

Word in Bool konvertieren

könnte ja dann z.b

9V bzw. 90%=>1
7V bzw. 70%=>0

damit ausgeben.

Aber wie kann ich denn den Wert des Lichtsensors überhaupt in dem Programm aufrufen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
die genannte Bibliothek kannst du unter www.oscat.de herunterladen ...
Das Ding stellt dir eine ganze Menge Funktionen zur Verfügung. Ich würde dir allerdings zunächst empfehlen, die Elementar-Kenntnisse selbst zu erarbeiten.

Wenn du deinen Lichtsensor auswerten willst, so geht das nicht über WORD_TO_BOOL sondern über einen Vergleich. Also z.B. :
Code:
myAction := Wert_Lichtsensor >= 4377 ;
Gruß
LL
 
Du musst eine Eingangsvariable in deinem Programm deklarieren.
z.B. Lichtschranke : Word AT %I* (Der * bedeutet das Twincat selber eine Adresse zuweist)

Dann musst du im Systemmanager deine Analog Klemme einlesen und die Variable Lichtschranke mit dem entsprechenden Eingang verknüpfen. Die neue Zuordnung erzeugen und diese dann auf die SPS laden.

Danach erhält die Variable Lichtschranke automatisch den Spannungswert der an der Klemme anliegt. Meines wissens nach wir der direkt in mV angegeben, ohne das man den noch umrechnen muss.
 
Ah super, danke.

Könnte mir noch einer sagen, wie ich den Vergleichswert schreiben muss?


IF A_LS1>=8 THEN; //Falls Analog_input größer/gleich 8V
E0_B1_1_AJ1_1:=1; //Ausgang 1 zuweisen

Also reicht es wenn ich nur die 8 schreibe oder muss da nochwas bei:confused:
 
von einer Rücksetzbedingung hat er ja nix geschrieben :cool:

meinetwegen auch so:

Code:
IF A_LS1 >= 8 THEN
   E0_B1_AJ1_1:=1;    (oder E0_B1_AJ1_1:=TRUE wenn es ein BOOL ist)
ELSE
   E0_B1_AJ1_1:=0;    (oder E0_B1_AJ1_1:=FALSE wenn es ein BOOL ist)
END_IF
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hehe, ja ging eigentlich erstmal nur darum, das ich weis wie ich das Signal verarbeiten kann;)

Im Endeffekt soll es dann natürlich ein-/ausgehen, muss mir da aber nochmal Gedanken machen, wie ich da eine kleine Hysterese einbaue um den undefinierten Zwischenwert zu überbrücken.:eek:
 
Hi


Ich bin ein Spielverderber. *ROFL*


Code:
IF A_LS1 >= 8 THEN
   E0_B1_AJ1_1:=1;    (oder E0_B1_AJ1_1:=TRUE wenn es ein BOOL ist)
END_IF
 
IF A_LS1 <= 5 THEN
   E0_B1_AJ1_1:=0;    (oder E0_B1_AJ1_1:=FALSE wenn es ein BOOL ist)
END_IF

Ich hoffe, das "kleiner gleich" richtig geschrieben zu haben. :ROFLMAO:


Gruss
 
Code:
IF A_LS1 >= 8 THEN
   E0_B1_AJ1_1:=1;    (oder E0_B1_AJ1_1:=TRUE wenn es ein BOOL ist)
ELSIF A_LS1 <= 5 THEN
   E0_B1_AJ1_1:=0;    (oder E0_B1_AJ1_1:=FALSE wenn es ein BOOL ist)
END_IF

:rolleyes:

Frohes Fest !!!!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke Leute, ihr habt mir sehr geholfen:p

Meine vorerst letzte Frage ist, wie ich einen TOF in ST aufrufen kann. Habe es anhand der Eingabehilfe probiert, allerdings sagt er beim übersetzen immer das es keine Funktion sei :eek:

TOF(IN:=E0_B1_T1_1 , PT:=t#10s , Q=>Merker1 , ET=> );

Habe jetzt schon sehr lange nach etwas gesucht aber nicht gefunden:-|
 
Danke Leute, ihr habt mir sehr geholfen:p

Meine vorerst letzte Frage ist, wie ich einen TOF in ST aufrufen kann. Habe es anhand der Eingabehilfe probiert, allerdings sagt er beim übersetzen immer das es keine Funktion sei :eek:

TOF(IN:=E0_B1_T1_1 , PT:=t#10s , Q=>Merker1 , ET=> );

Habe jetzt schon sehr lange nach etwas gesucht aber nicht gefunden:-|

Hast du die LIB "standard.lib" eingebunden ?
 
Also unter Resourcen habe ich die standart.LIB

Wenn ich den TOF als FB aufrufe funktioniert er auch.

Oder wie muss ich das mit dem einbinden verstehen, muss man den TOF erst deklarieren?
 
Jo, das Problem ist allerdings, dass ich den TOF nicht deklarieren kann, normalerweise fragt er ja immer direkt nach der Deklaration​
 
Zurück
Oben