IEC60870 Typen vs. Datentypen

Zuviel Werbung?
-> Hier kostenlos registrieren
Aber den Sinn der Diskussion in diesem Thread verstehe ich irgendwie trotzdem nicht.
Naja, das IEC60870 ist halt nicht so ganz selbsterklärend, als ich das einmal gemacht habe, hab ich auch ziemlich gekotzt...

Für mich wären Betriebsstunden auch eher ein Zählwert... und wenn man den dann mit Zeitstempel übertragen will/muss sind das eh 14Byte und da kommts auf 2 Byte mehr oder weniger auch nicht an ;)
 
Zuletzt bearbeitet:
irgendeine Schnittstelle ist, wie im Ausgangspost beschrieben, IEC60870,
daher meine Frage ob man damit überhaupt irgendeinen unsigned Datentypen übertragen kann. Scheinbar nicht... das man die Zahlen trotzdem rüber bekommt ist mir klar. Für bestimmte Werte, wenn nicht sogar viele, ist unsigned halt "richtiger" als signed.

so zum Beispiel in der IEC ein scaled value:
https://infosys.beckhoff.com/conten...5_104/html/TcPlcLibIEC870_5_104_M_ME_NB_1.htm

zum Wertebereich eines "scaled value" konnte ich nicht finden. Lediglich das er zwei Bytes umfasst.

Zum Wertebereich: In der Norm ist der Wertebereich (I16) mit -2^15 bis +2^15-1 angegeben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ah ja, das könnte der Hintergrund der "skalierten Werte" sein.
Dass hiermit FestPunktZahlen gemeint sind. Also als Ganzzahlen dargestellte Zahlen mit einer (vordefinierten) Anzahl NachkommaStellen.
Wenn man so will also ein "Missbrauch" der Ganzzahl-DatenTypen, um dennoch (eine "sparsame" Anzahl) NachkommaStellen zu ermöglichen.
Dann halte ich es aber eher für "schwierig", sich mit 16-Bit zu begnügen. Kommt eben auf den Anwendungszweck an.

Aber den Sinn der Diskussion in diesem Thread verstehe ich irgendwie trotzdem nicht.
Man kann doch ganz einfach die Dimension (Einheit) eines GanzZahlWertes passend wählen. Z.B. cm statt m.
Die Diskussion, ob man die Hälfte der Daten wegwirft, ist irgendwie auch müssig.
Um eine UINT16-Zahl zu einer vorzeichenbehafteten Zahl zu erweitern, benötige ich ein 17tes Bit und nehme stattdessen die nächstbeste verfügbare BitAnzahl 32.
Klar ist das irgendwo eine Verschwendung, aber sie dient doch dazu, an anderer Stelle auf Verschwendungen zu verzichten. Nämlich darauf zu verzichten, spezielle arithmetische Befehle (Addition, Subtrakttion, Multiplikation, Division, Modulo) bzw. VergleichsBefehle für viele DatenTypen - u.a. einen DatenTyp mit z.B. 17-Bit - bereitzustellen.
Wir sollten uns glücklich schätzen, dass dies mit den zur Verfügung stehenden Mitteln möglich bzw. umgehbar ist und nicht tausende von denkbaren DatenTypen mit entsprechenden unterschiedlichen OP-Codes herbeisehnen.
"Wir müssen sparen, koste es, was es wolle" mag an Schnittstellen (noch) sehr interessant sein, aber daran alles Weitere zu orientieren?

Natürlich ist die Diskussion müßig - Für eine Bitmeldung wird ja auch ein Telegramm von 16 Byte (mit 7 Byte Zeitstempel) übertragen.

Das ist halt was vollkommen anderes wie mehrere KB an Nutzdaten von einer S7 in eine andere zu schaufeln...

Diese 2 Normen stecken dahinter:



Die 104 ist die Erweiterung zur 101.
 
Aber den Sinn der Diskussion in diesem Thread verstehe ich irgendwie trotzdem nicht.
...
Die Diskussion, ob man die Hälfte der Daten wegwirft, ist irgendwie auch müssig.
gibt es eine Übersicht die darstellt welche Typen von IEC60870 (1, 11, 13,...) mit welchen Datentypen (Bool, INT, Real, ...) kompatibel sind?
Ich wollte von Anfang an wissen, ob sich die IEC60870 zum Datentypen positioniert oder nicht. Eigentlich eher aus Interesse um es nächstes mal besser zu machen. Für Solche Fragen halte ich das hier für das richtige Forum. Alles andere ist irgendwie offtopic (Feldbus ja/nein, was ist überhaupt ein INT SINT usw.)
Nur für diese Info bin ich dann doch zu geizig 150€ auszugeben.

Zum Wertebereich: In der Norm ist der Wertebereich (I16) mit -2^15 bis +2^15-1 angegeben.
sieht also aus als wenn es eine (reinen) unsigned INT nicht gibt. Damit kann ich Leben ;-) und die Norm scheint da ja auch über Jahre gut genug zu sein und wurde diesbezüglich nicht angepasst

Wie ist dann ein Zählwert definiert (BCR Binary counter reading)?

Außerdem gibt es noch diese Stufenschaltermeldung. Dort funktioniert im Übrigen ein unsigned short INT (0-255). Aber nur in einer Richtung (hoch zur Leittechnik).

aber ich muss trotzdem auch in die offtopic-philosophieren Kerbe springen: ich komme halt aus der Elektrotechnik, da hat man schon immer nur so viel wie nötig verwendet, was dann auch funktionieren soll (verkabelte Logiken). aber hey, vielleicht liege ich damit auf Dauer auch falsch
 
aber ich muss trotzdem auch in die offtopic-philosophieren Kerbe springen: ich komme halt aus der Elektrotechnik, da hat man schon immer nur so viel wie nötig verwendet, was dann auch funktionieren soll (verkabelte Logiken). aber hey, vielleicht liege ich damit auf Dauer auch falsch
Mehr Kabel kosten halt immer mehr Geld. DINT statt INT kostet erstmal nix, erst irgendwann, wenn wegen 100000 DINT ne größere Steuerung notwendig wird.
Aber auch bei Kabeln sind Reserven sind nie verkehrt, weil immer noch billiger, als später das Kabel neu zu ziehen...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
sieht also aus als wenn es eine (reinen) unsigned INT nicht gibt. Damit kann ich Leben ;-) und die Norm scheint da ja auch über Jahre gut genug zu sein und wurde diesbezüglich nicht angepasst
Einen reinen unsigned INT gibt es nicht? Wenn nicht und man benötigt *) ihn, macht man ihn sich. Und schon gibt es ihn.
Inwieweit die eine oder andere SPS einen solchen Typ kennt und verarbeiten kann, ist nicht das Thema.
Man glaubt gar nicht, wie viele Arten und Varianten von Kodierungen schon erdacht wurden. Allein schon, weil wir das DezimalSystem bevorzugen, aber Computer "lieber" im DualSystem arbeiten.
Zum Glück beschränken sich die "gängigen" DatenTypen aber auf eine ganz kleine Anzahl sehr logischer und äusserst praktischer GrundPrinzipien.
Die sollte man kennen. Dann kann man sich damit "austoben".
Schwieriger wird es bei DatenTypen für GleitkommaZahlen. Wie viele der Bits spendiere ich für die Mantisse, wieviele für den Exponenten, oder halte ich mich ganz einfach an eine Norm?
Noch schwieriger wird es bei Texten. Lange Jahre haben wir uns mit 7 bzw. 8 Bit pro Zeichen begnügt. Aber die Globalisierung hat dafür gesorgt, dass nun entweder grundsätzlich 2 Byte pro Zeichen reserviert werden müssen oder aber variable 1 bis 4(?) Byte pro Zeichen.
Eher unangenehm wird es bei DatenTypen zur Darstellung von "Datümern" (ich vermeide hier bewusst den Begriff "Daten") und (Uhr-)Zeiten.
Da gibt es (noch) keine wirkliche Übereinstimmung zwischen verschiedenen Systemen. Und es kommt das Problem hinzu, dass die Bestandteile zwar aussehen wie DezimalZahlen, aber im Zusammenhang doch keine sind. Zu allem Überfluss kommen noch so schreckliche Dinge wie Jahre und Monate mit unterschiedlichen Längen, Wochen, WochenTage und KalenderWochen hinzu ...

Wie ist dann ein Zählwert definiert (BCR Binary counter reading)?
Kommt drauf an. Darauf, wer es wofür und in welchem "Umfeld" definiert.
Würde man heute noch einen Zähler so auslegen, dass er im BCD-Code geladen werden muss und wahlweise im BCD-Code oder als DualZahl ausgelesen werden kann, so wie es bei den S5-Zählern war (womit ich aber nicht behaupten will, dass das mit BCR gemeint ist)?

Außerdem gibt es noch diese Stufenschaltermeldung. Dort funktioniert im Übrigen ein unsigned short INT (0-255). Aber nur in einer Richtung (hoch zur Leittechnik).
Das liegt aber nicht am DatenTyp (unsigned short INT). Die Wirksamkeit in der umgekehrten Richtung scheitert daran, dass der StufenSchalter ein Sensor ist und kein Aktor.

*) :
Ja, Verschwendung bzw. NichtVerschwendung alias Sparsamkeit ist ein Thema. Immernoch, obwohl die Bytes nicht annähernd mehr so teuer sind, wie sie es mal waren und obwohl die ÜbertragungsGeschwindigkeiten nicht annähernd mehr so lähmend langsam sind, wie sie mal es waren und obwohl die Kapazitäten der einzelnen SpeicherMedien nicht annähernd mehr so begrenzt sind, wie sie es mal waren.
 
Außerdem gibt es noch diese Stufenschaltermeldung. Dort funktioniert im Übrigen ein unsigned short INT (0-255). Aber nur in einer Richtung (hoch zur Leittechnik).

Die Stufenstellung ist I7 <–64..+63>, in Bit 8 steht die Info, ob das Betriebsmittel in Zwischenstellung steht oder nicht. Den Datentyp brauchen eigentlich nur die Stromer für ihre Trafos.
 
Zurück
Oben