Tigerente1974
Level-3
- Beiträge
- 1.826
- Reaktionspunkte
- 293
Da der DB fürs Bitmeldeverfahren sowieso nicht optimiert sein darf.
Warum eigentlich so umständlich und ineffizient erst 16 Bit an einen Baustein übergeben (jedes Bit kopieren!) und dann mit Klimmzügen im Baustein die 16 Bit als Word ansprechen und das Word auf <> 0 vergleichen?Für mein Sammelfehlerbit möchte ich natürlich das Wort abfragen. Das geht mit einem absoluten Zugriff.
Ich möchte aber symbolisch zugreifen.
Call "MyFB","ImmerSelbeInstanz"
(In1:="DB1".Bit1,
In2:="DB1".Bit2,
In3:="DB1".Bit3,
...
In16:="DB1".Bit16,
Out => "Sammelfehler")
O "DB1".Bit1
O "DB1".Bit2
O "DB1".Bit3
...
O "DB1".Bit16
= "Sammelfehler"
Warum eigentlich so umständlich und ineffizient erst 16 Bit an einen Baustein übergeben (jedes Bit kopieren!) und dann mit Klimmzügen im Baustein die 16 Bit als Word ansprechen und das Word auf <> 0 vergleichen?
Letztlich gibt es x verschiedene Möglchkeiten und alle haben irgendeinen Nachteil.
Bei mir gibt es auch saubere Störmeldungen im Stations-DB ("StationX".Error.NC3-Fault).
Fürs Panel gibt es dann einen eigenen Stör-FB wo ich die Stationsstörungen der Panel-Störvariable über Slice-Zugriff zuweise.
Ist zwar mehr Tipparbeit, aber unsere Instandhalter kommen gut damit zurecht. Bei einer Störung gibt es eine zentrale Anlaufstelle im Programm und von da geht die Suche weiter.
Bei Neuanlagen verwenden wir eigentlich nur noch ProDiag. Damit entfällt die Bitglauberei.
Gruß
Blockmove
ProDiag geht leider nicht auf BASIC-Panels. Da die Funktionalität der BASIC-Panels für uns ausreicht, setzen wir die auch ein.
Kannst Du das mit dem SLICE-Zugriff in 2-3 Sätzen näher erläutern?
Vielleicht ist das ja der richtige Kniff für mich.
Gruß
Chris
U "StationX".Error.NC3-Fault
= "HMI-DB".Stoer[1].%X5
U "StationX".Error.NC3-Fault
= "HMI-DB".Stoer[1].%X5
= "SMSALARM".SMS[4]
= "MES_Data".PLC_Error[4].%X12
Bei mir ist er optimiert und arbeitet zuverlässig?!
Für Bitmeldungen muß man ja in der HMI Bits aus einem Word oder auch aus einem Array angeben.
Wie gibst du das an?
"HMI-DB".Stoer[1].%X5
Optimiert als mehrere WORDs.Kann ich nicht so ganz verstehen.
Bits werden in optimierten DB als Byte gespeichert, also je Bit ein Byte.
Für Bitmeldungen muß man ja in der HMI Bits aus einem Word oder auch aus einem Array angeben.
Wie gibst du das an?
"HMI-DB".Stoer[1].%X5 ...
hmm, da werd ich doch blöd, wenn ich mir da ständig ausrechnen muss, was jetzt Meldung 735 ist...
hmm, ich will jetzt Meldung 735 im Programm abfragen...
U "DB-Meldungen".Meldung_00735
find ich jetzt einfacher als
U "DB-Meldungen".Stoer[45].%X14
da kann ich gleich schreiben
U DB100.DBX90.6
Stimmt das überhaupt? Fängt das Array bei 0 oder 1 an? Und wo rechnet mir TIA das aus?
Mir erschließt sich die Geschichte grad überhaupt nicht...
Warum nutzt Ihr nicht einfach nichtoptimierte DBs... ?
Gruß.
PS: mit nichtoptimiert meine ich nicht zwangsläufig nichtsymbolisch...
So:
Code:"HMI-DB".Stoer[1].%X5
Das ist aber nicht die Darstellung, wie man in der PLC das BIT in das WORD bekommt, sondern wie das HMI das BIT durch Triggervariable und -bit wieder aus dem optimierten WORD holt. Und diese beiden Angaben dürften bei optimiertem und nicht optimiertem DB ja gleich sein.Ja, wie man an ein Bit in so einem Word kommt ist schon klar. Mit vollsymbolischem Zugriff hat das mal gar nichts zu tun.So:
Code:"HMI-DB".Stoer[1].%X5
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?