TIA Fischertechnik Farbsensor

JuKeK

Level-1
Beiträge
7
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag,
ICh bin gerade in der Lehre und habe nur geringes Grundwissen zur SPS, mein Ausbilder hat nun die Fischertechnik Lernfabrik 4.0 gekauft und mich ins kalte Wasser geworfen. Da er selbst keine Ahnung vom programmieren hat wende ich mich nun an diesen Forum.
Mein Problem jetzt ist es einen Farbsensor zu realisieren der zwischen weiß, rot, blau unterscheiden kann mit einem 0-9V Signal
Ich sollte das ganze in Fup programmieren und habe gar keine Ahnung wie ich das ganze realisieren soll und bräuchte dringend Starthilfe
1732007913143.png
1732007949626.png1732007913143.png1732007913143.png1732007913143.png
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Sensor ist bereits an der SPS angeschlossen.
Und das Analogsignal kommt an (IW9)? Kannst du mal eine Skizze machen, wie du das angeschlossen hast ( oder ein Foto )?

Wie kommst du auf IW9? Kommt mit etwas komisch vor ( da ungerade ). Kannst du mal einen Screenshot deiner Hardwarekonfig zeige?
 
Ja das Signal kommt an und es wurde auf IW9 verkabelt da mir das so von den Unterlagen von Fischertechnik vorgegeben wurde.
Und hier die Hardwarekonfig
1732014840853.png
 
Ja, dann musst du in deinem FUP-CODE das Eingangswort einlesen und vergleichen ( je auf größer als X und kleiner als Y ). Wenn der Vergleich TRUE ist, dann einen Ausgang schalten. Probiere es einfach mal aus.

da mir das so von den Unterlagen von Fischertechnik vorgegeben wurde.
Verstehe. In der Praxis fängt man üblicherweise mit geraden Adressen an. Ich hätte die AI-Karte jetzt auf z.B. Adresse 8 oder 10 projektiert. Aber gut. Das ist Geschmackssache
 
Word ist 16bit groß, Integer ist auch 16bit groß

Word gibt nur die Speichergröße an, legst du das IW9 mal in eine Beobachtungstabelle und stellst die Anzeige auf dezimal, siehst du es ;)

Int ist ein Zahlenformat.

Einfach bei Datentyp Integer anstatt Word wählen und schon hast du den korrekten Wert ohne dass du wandeln musst
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe das ganze jetzt mithilfe des In_Range Bausteins realisiert.
Und dies funktioniert auch Jedoch habe ich beim weißen Werkstück ein Problem da der Farbsensor mir diesen Wert als negativ Wert darstellt und dieser nicht vom IN_Range verarbeitet werden kann.
Daher meine Frage wie kann ich den negativ wert zu einem Positivwert umwandeln damit ich ihn verarbeiten kann?
1732020885630.png
1732020772021.png
 
Daher meine Frage wie kann ich den negativ wert zu einem Positivwert umwandeln damit ich ihn verarbeiten kann?
Du darfst nicht -300.0 eintragen. Bei einem INT oder DINT gibt es keine Kommastelle. Also z.B. -300 eintragen.

PS:
Wenn da negative Werte kommen, dann stimmt da was nicht. Was liefert dein Sensor für Werte? In deiner Anleitung steht was von 0-9V
Der Wert dürfte nie negativ sein. Entweder du hast falsch angeschlossen oder falsch parametriert ( oder beides ).



1732021402416.png
 
Du kriegst 0..24883 rein, ansonsten bist du nicht im messbaren Bereich.
Wenn du einen normalen Analogeingabebaustein hast musst du dazwichen was reinbekommen.
Drunter oder drüber ist ausserhalb des messbereiches.
Das zum ersten.
Wenn du den normalen Analog eingabe baustein nimmst kannst du das als Bsp. auf 0..100% normieren.
Ausserhalb dieses Rasters hast du meiner Meinung nach keinen gültigen Wert.
Das ist ein bisschen anderst wie die 27648? bei Siemens wo ich kenne.
Ansonsten wäre es eine Geradengleichung die diesen Wertebereich umsetzt in 0..100%.
Drunter und drüber hast du keine Farbe erkannt.

Ich würde an deiner Stelle erst mal eine Exceltabelle erstellen.Wo du in Abhängigkeit von der Hintergrundbeleuchtung und dem Abstand
gültige Werte erzeugst.
Das sind nämlich deine phsysikalischen Vorraussetzungen, um überhaupt was zu messen.Quasi der Defintionsbereich.
Wenn du den Analogeingabebaustein nimmst musst du für 0 und 27648 eben die 0..100% rausbekommen.
Ansonsten eine Geradengleichung programmieren oder eben mit einem Faktor multiplizieren das du auf 100% kommst.

Dann hast du erst mal ein normiertes Signal.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn du den Analogeingabebaustein nimmst musst du für 0 und 27648 eben die 0..100% rausbekommen.
Ansonsten eine Geradengleichung programmieren oder eben mit einem Faktor multiplizieren das du auf 100% kommst.
Das ist nicht Teil der in #1 gestellten Aufgabe ( lass ihn doch erst mal lernen, was er da gerade macht bevor man 2 Schritte weiter geht ).
 
Das mag sein.Aber dann fängt er falsch an.Er muss die Werte physiklisch richtig interpretieren.
Er hat ja auch einen Range wo das funktioniert.Und diese Tabelle würde ich zuerst erstellen.
Und dazu braucht er gültige Werte.Wer viel misst, misst Mist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja aber so ist der Baustein dann halt nicht normiert.Du könntst dann sagen ich gebe 0..90% raus.
Was allerdings verwirrend ist.Also die Geradenfunktion ist klar.
Y=m*x +b. Y=0. und m=dy/dx=100/24883
 
Ja aber so ist der Baustein dann halt nicht normiert.Du könntst dann sagen ich gebe 0..90% raus.
Was allerdings verwirrend ist.Also die Geradenfunktion ist klar.
Y=m*x +b. Y=0. und m=dy/dx=100/24883
Jetzt lasse ihn doch erst einmal anfangen und verstehen.....

Er kennt noch nicht den Unterschied zwischen WORD und INT ist und du kommst hier mit sowas an.
 
Zurück
Oben