TIA TIA optimierte Bauteine : kein Pointer ?

heisch

Level-2
Beiträge
94
Reaktionspunkte
36
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Kollegen,

Verunsichert stelle ich Euch also die Frage:
Gibt es bei "optimierten" Bausteinen tatsächlich keinen Pointer, den man verhältnismäßg schnell ( = nix mit VARIANT) intern auseinandernehmen und weiterverarbeiten kann ?



Hintergrund:
Aktuell betrifft es den Störmeldemechanismus mit den 3 Blöcken
Störvariable ( AG -> OP )
Störung lesen ( WinCC-Notation für Schreiben ins AG) und
Störung Schreiben ( WinCC-Notation für Quittierung lesen aus AG)

Ach ja, und weil die WinCCFlex-Truppe seit Anbeginn der Zeit nicht zur Kenntnis nimmt, das eine S7 im Datenbaustein BITS haben kann
und jetzt ab TIA den Typ WORD sogar erzwingt, noch einen weiteren DB, der dann für Intern aus Bits besteht, die dokumentiert sind.

Ich neige ausserdem zu Programmen, bei der die XREF möglichst alles erfasst.
Entsprechend gibt es "classisch" bei meinem Störmelde-FC ( 8 Meldungen, 1 Byte ) also einen Pointer auf das Byte der Störvariablen,
woraus ich die Adressen für die anderen 3 Blocks ableite.
( An Hand der Störnummer in Diplay kommen ich dann über den DB (-> Byte-Adresse und XREF ) recht schnell zu Ursache.

Wenn ich das richtig verstanden habe, geht das alles nicht mehr und es wäre am einfachsten (schnellsten), jetzt nur noch die Byte-Nummer
als Konstante zu übergeben. .. wobei wir dann wieder beim KY-Parameter für DB,DW wären, einer der größten Dummheiten
bei den STD-FBs der S5.
(Wer schon mal ein Programm in Betried setzen sollte, das ein Kollege geschrieben hat, der zu dieser "eleganten" Art der Prametrierung
neigte, weiss was ich meine. )


Ich habe zwar schon ein paar S5-Anlagen zu TIA umgebaut, fange aber erst jetzt an, mich mit den Microprozessorsteuerungen 1200 und 1500
näher zu beschäftigen ( habe Diabetes und darf mich nicht aufregen :-).


Gruss Werner
 
Variablen in "optimierten" Bausteinen haben keine öffentliche Adresse. Deshalb kann man auch keine Pointer drauf setzen, die man "auseinandernehmen" könnte.

Gerade für die Bitmeldungen gibt es allerdings keinen vernünftigen Grund, die in optimierte DB zu legen (es sei denn, das Erschweren der Kommunikation und Kopieren nur für Zugriffs-Klimmzüge wird als "vernünftig" angesehen). DB mit Standard-Zugriff und die SPS arbeitet bitweise und das HMI arbeitet wordweise auf den Meldungs-Speicherbereich ist m.M. voll OK.

Ich neige ausserdem zu Programmen, bei der die XREF möglichst alles erfasst.
Entsprechend gibt es "classisch" bei meinem Störmelde-FC ( 8 Meldungen, 1 Byte ) also einen Pointer auf das Byte der Störvariablen,
woraus ich die Adressen für die anderen 3 Blocks ableite.
Das ist allerdings ein Widerspruch...

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Thema Störmeldungen ist so langsam leidig.
Für übergeordnete Systeme (MES) brauche ich Bitadressen.
Bei der 1500 ist aber Programmalarm interessant.
Ausserdem gibt es auch noch PDIAG.
Klasse Siemens ... konsistente Entwicklung
 
@ PN/DP
Mit dem "Widerspruch" hast Du recht, ist natürlich nicht vollständig per XREF tu erreichen.

Worum es mit geht, ist, per XREF einen Hinweis zu erhalten woher etwas kommt und wohin es geht.
in diesem Zusammenhang:
Per Störmeldenummer auf den Display: -> NR ( ggf. erfahre ich auch das Bit aus der OP-Projetierung)
oder
ich schaue in dem Bit-DB ( DB 92) wo die Störnummer sitzt -> z.B DBB 12
Die XREF zeigt mir dann, wo DB92.DBB 12 benutzt ist.


Zum Hauptthema: Optimiert -> Zukunft.
Wir haben also eine Programmiersprache, die keine Pointer kennt. In einem hardware-nahen Umfeld,
bei der Reaktionszeit eine Rolle spielt. Toll.

Vermutete Ursache:
Das Hauptproblem bei Siemens heisst Kromme und der hat seinen Frisör damit beauftragt, eine SPS zu entwerfen.
Der hat die Industrie-Schauspieler-Gilde bei Siemens beauftragt.

( Ich hatte letztes Jahr das zweifelhafte Vergnügen, bei einem eskalierten Fall mit so einem zu Tun zu haben.
Der war aus der Entwicklung !! .. Dr xxx . Ich habe tatsächlich nach dem gegoogelt, weil ich einen Dr (BWL) vermutet habe,
die Fragen die er gestellt hat, waren, technisch betrachtet, einfach zu dumm.
Nee, der war Dr-Ing !! Tolll !
)

Bei der Präsentation von TIA V11 in Mannheim wurde als Entwicklungsziele 2 Sachen versprochen:
1. Funktionalität, 2. Funktionalität und 3. .... Funktionalität

Bekommen haben wir
1. Ignoranz gegenüber der Aufgabenstellung 2. Inkompetenz und 3. ..... Ein Ergonomie-Amoklauf.


Für mich als Freiberufler stellt sich natürlich die Frage, wie ich meinem Kunden klar mache
weshalb ich bei dem tollen Zeug ( lt. Siemens) jetzt doppelt so lange brauche als mit den "Alten".
Der fragt sich natürlich: "Der Kerl ist über 60, kommt er mit der neuen Technik nicht klar ?"


Gruss Werner
 
@Heisch

Naja Segen und Fluch ...
Ich steh nun wirklich vielen Dingen sehr kritisch gegenüber und viel hat Siemens auch schlichtweg vermurkst, aber:
Schau dir mal bitte bei der S7-1500 ProgramAlarm an.
Wenn man die Funktion richtig einsetzt, dann brauchst du gar keine XREF mehr bei Störungen.
Du kannst nämlich Baustein und Netzwerk der Störung auf dem Panel anzeigen lassen.
Dazu gibt es auch noch interessante weitere Möglichkeiten bei der Verwendung.
Also zumindest hier ist nicht alles schlecht.
Zu den Pointern:
TIA bietet nun auch bei KOP/FUP Zugriff auf Array-Elemente. Zusammen mit den Sichten (Views) und SCL-Netzwerken bei V14 braucht man deutlich weniger Zeiger als früher.
Nur heißt das oft in der Praxis, dass man seine lieb gewonnen Programmier-Gewohnheiten und Bausteine oft in den Müll werfen muss.

Gruß
Blockmove
 
Zuviel Werbung?
-> Hier kostenlos registrieren
TIA bietet nun auch bei KOP/FUP Zugriff auf Array-Elemente. Zusammen mit den Sichten (Views) und SCL-Netzwerken bei V14 braucht man deutlich weniger Zeiger als früher.
Nur, die AT-Sichten gibt es nur für nicht-optimierte Bausteine.
Das ist einer von die Gründen dafür das ich ausschliesslich mit nicht-optimierte Bausteine arbeitet.
 
für einen schnellen Zugriff bzw. Typwandlung von Bits->Word bei optimierten Bausteinen empfiehlt sich die "Gather" und "Scatter" Funktion.

Die Störbits müssen aber als boolisches Array angelegt werden. Seit V14 SP1 lässt sich auch für jedes Arrayelement einzeln kommentieren (Rockwell läßt grüßen).
 
Zurück
Oben