Analog Input

Drehstuhlpilot

Level-2
Beiträge
14
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
Ich stehe hier gerad ein bisschen auf dem Schlauch.

Ich habe einen Sensor mit 4-20mA an einem AI von der Klemme 750-496
Nun habe ich Folgende Probleme:

Der Baustein FuAI erwartet ein WORD und ich bekomme den messwert der klemme ja schon in INT übermittelt wie bekomme ich die einheit auf WORD umgestellt oder erfolgt die Skalierung mit IO Check auf der Klemme direkt ?
- Wenn ich den Baustein FuAI in einem PRG aufrufe bekomme ich die Meldung das ein Wort erwartet wird.
- Wenn ich den Baustein FuAI in einem Funktionsbaustein einfüge bekomem ich keine Fehlermeldung.

Wo liegt denn hier mein Fehler?
 
Hallo Drehstuhlpilot,

du musst den Wert, den du von der Klemme bekommst, vor dem Aufruf des FuAI-Bausteins von INT in WORD umwandeln. Der FuAI erwartet als Eingang (uiAnalogInput) nämlich ein WORD, also einen vorzeichenlosen 16-Bit-Wert.
Wichtig ist dabei: Ein Problem würde auftreten, wenn der INT-Wert negativ wäre, denn das ergibt dann als WORD einen sehr großen Wert (wegen der Bitdarstellung).
Aber: Bei einem 4–20 mA-Signal sollte das nicht passieren, weil der kleinste Wert über die Klemme ohnehin > 0 ist.

Also: einfache Typumwandlung reicht in diesem Fall völlig aus.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Kurzschluss,
vielen dank ich bin davon ausgegen das ich etwas in der Karte umstellen muss um das Word zu bekommen. auf die Idee mir TO_WORD bin ich natürlich nicht gekommen.

Bei der Skalarierung ist es ja nun so das dir Karte mir ja nur den bereich von 4-20mA weiter gibt das würd bedeuten wenn ich den füllstand in % haben möchte muss ich den Baustein ja so beschreiben wie im Bild ?
FuAI.png
Edit:
ich bekomme bei dem FB nun diese Fehler muss ich noch etwas beachten?
FuAI Fehler.png
 
Zuletzt bearbeitet:
Versuch mal Folgendes:
Du bekommst von der Klemme einen INT-Wert.
Wandle diesen explizit in WORD um und übergib die umgewandelte Variable an den FuAI-Baustein. Beispiel:
Was passiert mit deinen Fehlermeldungen, wenn du es so machst?
  • Verschwinden sie?
  • Oder bleibt z. B. eine Typinkompatibilität bestehen?
  • Kommt eventuell ein neuer Fehler?
 
Mir ist jetzt folgendes aufgefallen. wenn ich den FB Programiere und lass es Übersetzen ist alles ok
Sobald ich den FB in meinem PRG Aufrufe bekomme ich die Fehlermeldungen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da ist irgendeine Variable vom Typ Real. Vermutlich der Ausgang (rTanklevel) passt nicht zum FB Ausgangstyp, da fehlt also auch ne Konvertierung.
FUAi musst Du in der Deklaration mal checken auf Mehrdeutigkeiten.

"Unbekannter Typ .... kann nicht in Real konvertiert werden"

Da stimmt was nicht in der Deklaration der Instanz von FUAI.
 
Zuletzt bearbeitet:
Laut der Beschreibung von Wago soll der ausgang ein Typ Real sein oder welche muss ich hier einstellen ?
was meinst du mit Mehrdeutigkheiten?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die internen Variabelen nur im Projekt und die Ein und ausgänge gehen direkt über das Globale Mapping
und den FB Für die Umrechnung habe ich jetzt mal so erstellt.

FuAi Variablen.png
 
Zuletzt bearbeitet:
POU habe ich nun in POU_TankLevel Geändert und die Fehlermeldungen sind die Gleichen
oder meisnt du den Baustein FuAI ? wenn ich de ändere ist der bastein leer
 
Habe keine Steuerung zu Hause. Aber in der Simulation hat es funktioniert oder du schickst mir mal deinen Code zum testen.


FUNCTION_BLOCK Wandlung_Prozent
VAR_INPUT
INTEingang: INT;
END_VAR
VAR_OUTPUT
R_Messwert: REAL;
END_VAR
VAR
R_Wandlung_EIngang: WORD;
END_VAR
----------------------------------------
R_Wandlung_EIngang:= TO_WORD( INTEingang);
R_Messwert:= WagoAppBuildingHVAC.FuAI(wAI:= R_Wandlung_EIngang, rMin:=0 , rMax:=100 );
 
Ich bin jetzt grad nicht daheim.
Aber wenn du dein FB nun im PLC PRG aufrufst funktioniert es dann immer noch denn da hatte ich dann ja die fehler.
 
Im Hauptprogramm (PRG) wurde der entsprechende Funktionsbaustein instanziiert und aufgerufen. Zur Weiterverarbeitung des Ergebnisses wurde der Ausgang des Bausteins mit einer globalen Ausgangsvariablen verbunden.

Der Eingang des Funktionsbausteins wurde mit dem aktuellen Messwert eines analogen Eingangs verbunden. Dieser Messwert stammt direkt von einer angeschlossenen Eingangskarte.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe es gestern abend noch schnell getestet und als es wieder nicht funktionirt hatte habe ich ein komplett neues Projetk erstellt und siehe da ich bekomme keine Fehlermeldungen mehr.
Irgend was ist mit meinem Alten Projekt nicht in Ordnung gewesen.
Hattet ihr das schon einmal ?
 
Zurück
Oben