DB mit AUF öffnen braucht mann das heute noch?

Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe bis heute noch keine vernünftig programmierte Schrittkette in SCL gesehen.

Für jede Aufgabe gibt es das richtige Werkzeug und das ist auch gut so.


bike

Hallo,

ich hatte mal eine Anwendung mit einem Compiler. Glaube war von Fa. Christ.
Exceel Tabelle in SCL.

Das Ergebniss sah nicht schlecht aus.


Villeicht aber auch nur eine Ausnahme.

Grüße
 
Diese ganze Diskussion könnte man auch mit
"Viele Wege führen nach Rom"
beschreiben!

Wie ich schon bereits geschrieben habe, von direkten Zugriffen auf Instand-DB's halte ich überhaupt nichts, wie jedoch ansonsten die Maschinen / Anlagen automatisiet werden, das muss der Hersteller immer im Einzelfall selbst entscheiden werden. Schließlich muss er das Projekt realisieren und garantieren!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich hatte mal eine Anwendung mit einem Compiler. Glaube war von Fa. Christ.
Exceel Tabelle in SCL.

Das Ergebniss sah nicht schlecht aus.


Villeicht aber auch nur eine Ausnahme.

Grüße

So etwas ähnliches haben wir auch einmal getestet, auch selbst entwickelt, doch an solch einem Konstrukt eine Änderung zu machen ist mehr als schwierig.
Das entstandene Programm war, zumindest bei uns, nicht lesbar ohne den Ausgangsskript.

bike
 
Hallo Winnman,

Warum kommen immer wider diese Befehle: AUF DBxy?
meines Wissens kann ich in Step7 einfach auf den DB zugreifen
zb U DB100.dbx100.0
warumm soll ich zuvor AUF DB 100 stellen?

zu S5 Zeiten war das was anderes.

klärt mich bitte auf.

ich wollte mal wieder zum eigentlichem Thema zurück kommen.


U DB100.DBX 100.0

// äquivalent zu

AUF DB 100
U DBX 100.0

Wenn du U DB100.DBX 100.0 in den Editor schreibst, dann werden eigentlich zwei MC7 Befehle generiert, nämlich AUF DB100 und U DBX 100.0

D.h. es geht gar nicht ohne AUF DB, bzw. bei diesen Befehlen ist "immer" ein AUF DB mit dabei.

Siehe hierzu auch beigefügtes Bild mit einer Hex Ansicht des MC7 Bausteincodes.

Im Übrigen ist S5 und S7 zieimlich verwand, das fängt schon bei der 7070 Kennung am Bausteinanfang an. Natürlich wurde beim MC7 Code noch einiges an Funktionalität dazu gebaut.

mfG. klaly
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Uload des Hexdump hat nicht geklappt, daher hier in textform:

MC7 Code der U DB100.DBX100.0:

Code Befehl
2064 AUF DB 100
0040 0064 U DBX 100.0


MC7 Code der AUF DB100 und U DBX100.0:

Code Befehl
2064 AUF DB 100
0040 0064 U DBX 100.0

beidesmal das gleiche.

mfG. klaly
 
wofür Global-DB? jedenfalls nicht wegen der HMI ...

was spricht dagegen, direkt in der Instanz mit der HMI zuzugreifen? Dass der Zugriff von S7 aus nicht erkennbar ist, ist ein Manko, das sich seitens des Enwicklungssystems abstellen lässt. Oder man macht es eben wie Jochen und ich, also die HMI Variablen als solche kenntlich.

Für den Direktzugriff der HMI in der Instanz spricht, dass dadurch der Rangieraufwand an der Schnittstelle eines Bausteins entfällt. Letztlich bildet diese Vorgehensweise nur ab, dass in der SPS virtuell eine SPS entsteht. Hatte man in der Vergangenheit vielleicht mehrere Steuerungen, die die jeweiligen Teilprozesse kontrollierten, in der ganz klassischen Variante mit Schaltern, Lampen etc. an der EA angeschlossen, so kam irgendwann der Tag, als HMI Geräte (Coros, Protool, Flex) direkt in der SPS auf Speicherbereiche zugriffen, also der Zugriff nicht mehr über physikalische EA erfolgte. Dieser Zustand wird heute nicht mehr in Frage gestellt. Nun lassen wir einmal die SPS in der SPS entstehen. Eine virtuelle SPS eben. Bestehend aus gekapseltem FB und seiner Instanz. Klassisch würde man nun die HMI an die Schnittstelle ankoppeln wollen. Warum aber, wenn man bei einer realen SPS erlaubt, dass die HMI direkt in die internen Daten zugreift, warum aber will man der HMI nicht erlauben, in die Instanz einer virtuell erstellten SPS zuzugreifen?
 
Zur Klärung:

Instanz
ist eine abgeschlossene Einheit

so zumindest in der allgemeine Literatur.
Und so soll es auch sein und bleiben

bike
 
Hallo klaly,

Danke für die Detailinfos.
Das ist doch genau das was ich eigentlich meinte:
Warum soll ich extra Auf. . . schreiben, wenn der Compiler das doch selbst macht?

bin mittlerweile schon ganz schön beeindruckt welche Wellen mein Thread schlägt, immerhin schon 72 Beiträge :)
 
Hallo klaly,

Danke für die Detailinfos.
Das ist doch genau das was ich eigentlich meinte:
Warum soll ich extra Auf. . . schreiben, wenn der Compiler das doch selbst macht?

bin mittlerweile schon ganz schön beeindruckt welche Wellen mein Thread schlägt, immerhin schon 72 Beiträge :)

Du solltest nicht AUF DB schreiben.
Denn im Querverweis erscheint ein Vollzugriff auf einen DBxx.DBXyy.y
bei AUF DB nicht.

Also außer bei PointerOperationen ist es nicht notwendig mit AUF zu arbeiten.

Solch ein Threat entwickelt sich eben ;)

bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
..Warum soll ich extra Auf. . . schreiben, wenn der Compiler das doch selbst macht?..
Wenn du zwanzig mal in einem Baustein vollqualifiziert auf Variablen eines DBs zugreifst, dann wird zwanzig mal "AUF DB" ausgeführt. Öffnest du jedoch einmal den DB am Anfang des Bausteins und greifst anschließend zwanzig mal absolut adressiert auf die Variablen zu, dann wird "AUF DB" nur ein einziges mal ausgeführt. Das ist einer der Gründe, wofür es den AUF-Befehl gibt. Wie schon weiter oben erwähnt wurde, ist diese Art der Sparsamkeit bei den heutigen CPUs nicht mehr relevant.

Ein weiterer Grund ist wahrscheinlich die Konvertierbarkeit von Step5 zu Step7.


btw:
Zu meinen Grundprinzipien gehört es, NICHT auf Instanzdaten von außen zu zu greifen. An meinen Grundprinzipien muß sich aber niemand orientieren ;-) .
 
Also so bald symbolisch Programmiert wird hat man immer ein Vollqualifizierten Zugriff.
Und alles andere ist Murks.
Wenn ich ein AUF DB ohne folgende indirekte Adressierung oder Schleife sehe, könnte ich :sb5:
Sprich folgendes geht bei Step 7 absolut nicht:
Code:
// [COLOR=red][B]!!! Verboten !!![/B][/COLOR] [COLOR=seagreen](persönliche Meinung)[/COLOR]
AUF DBx
L DW0
T DW2
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ein weiterer Grund ist wahrscheinlich die Konvertierbarkeit von Step5 zu Step7.
da bin ich mir sogar sehr sicher ...

btw:
Zu meinen Grundprinzipien gehört es, NICHT auf Instanzdaten von außen zu zu greifen. An meinen Grundprinzipien muß sich aber niemand orientieren ;-) .
OK, vielleicht sollte ich die hohen Ansprüche an mich selbst ebenfalls nicht an andere stellen ...
Und trotzdem empfinde ich den Zugriff der HMI auf die Instanz nicht als Zugriff von außen. Und ich komme mit einem Minimum an Globaldaten aus, so dass sich der Bedarf an Global-DB erübrigt (theoretisch könnten die von mir verwendeten Globaldaten in dem übergeordneten Koordinationsbaustein gehalten werden).
 
Zurück
Oben