Turbohesse
Level-2
- Beiträge
- 58
- Reaktionspunkte
- 1
-> Hier kostenlos registrieren
Hallo,
ich versuche gerade erfolglos die Fehlerdaten aus einer UPS1600 zu lesen. Diese ist per Profinet mit der CPU verbunden. Das HMI Faceplate etc. läuft - Alarme kommen an, ich würde die Alarme aber auch gerne an ein Leitsystem weiterleiten.Dazu müsste ich diese Bitweise Filtern. Und das bekomme ich aktuell nicht hin. Mein erster Versuch geht in diese Richtung:
Ich kenne bisher die Bytes nicht (daher fortlaufend) - habe mir aber sagen lassen, diese seien >=255 auszuwerten. Die Bytes sollen in der Doku stehen. Da komme ich aber irgendwie nicht weiter mit. Daher ist hier erstmal eine Sackgasse. Meine Struktur in der SPS hat letztlich folgendes zu bieten:
Viel mehr ist es dann wohl nicht was ich bekommen kann... Hat jemand von euch eine Idee oder ggf. schon die Lösung parat wie man die Meldungen Bitweise empfangen kann?
Danke für's lesen bis hierher und eure Bemühungen. =)
ich versuche gerade erfolglos die Fehlerdaten aus einer UPS1600 zu lesen. Diese ist per Profinet mit der CPU verbunden. Das HMI Faceplate etc. läuft - Alarme kommen an, ich würde die Alarme aber auch gerne an ein Leitsystem weiterleiten.Dazu müsste ich diese Bitweise Filtern. Und das bekomme ich aktuell nicht hin. Mein erster Versuch geht in diese Richtung:
Code:
"LUPS1600_Fehler_DB"(ADR:=259, Störung_Ladestand=>"07_DB_Meldungen".USV.Störung_Ladestand,
Störung_Netzausfall=>"07_DB_Meldungen".USV.Störung_Netzausfall,
Störung_Akkubetrieb_aktiv=>"07_DB_Meldungen".USV.Störung_Akkubetrieb_aktiv,
Störung_Akku_nicht_Bereit=>"07_DB_Meldungen".USV.Störung_Akku_nicht_Bereit,
Störung_Akku_nicht_geladen=>"07_DB_Meldungen".USV.Störung_Akku_nicht_geladen,
Störung_Akku_muss_getauscht_werden=>"07_DB_Meldungen".USV.Störung_Akku_muss_getauscht_werden,
Störung_Keine_Verbindung_zu_Akku=>"07_DB_Meldungen".USV.Störung_Keine_Verbindung_zu_Akku);
IF (PEEK_BYTE(area := 16#81, dbNumber := 0, byteOffset := #ADR)) >= 255 THEN
#Störung_Netzausfall := TRUE;
ELSE
#Störung_Netzausfall := FALSE;
END_IF;
IF (PEEK_BYTE(area := 16#81, dbNumber := 0, byteOffset := #ADR+1)) >= 255 THEN
#Störung_Akkubetrieb_aktiv := TRUE;
ELSE
#Störung_Akkubetrieb_aktiv := FALSE;
END_IF;
usw....
Ich kenne bisher die Bytes nicht (daher fortlaufend) - habe mir aber sagen lassen, diese seien >=255 auszuwerten. Die Bytes sollen in der Doku stehen. Da komme ich aber irgendwie nicht weiter mit. Daher ist hier erstmal eine Sackgasse. Meine Struktur in der SPS hat letztlich folgendes zu bieten:
Code:
orderNumberserialNumber
deviceName
versionNumber
batteryCapacity
endOfChargeVolt
chargeCur
maxOutCur
inputVolt
inputCur
outputVolt
loadCur
measuredChargeCur
batteryVolt
outputCur
chargeVolt
bufferMode
readyForBuffering
batteryChargeLevel
totCalcBatCap
totCalcBatHealth
bufferTime
bufferThreshold
bufferingAllowed
commandID
parameter1
parameter2
deviceHwRevision
deviceSwRevision1
deviceSwRevision2
deviceSwRevision3
Viel mehr ist es dann wohl nicht was ich bekommen kann... Hat jemand von euch eine Idee oder ggf. schon die Lösung parat wie man die Meldungen Bitweise empfangen kann?
Danke für's lesen bis hierher und eure Bemühungen. =)