TIA DB Göße herausfinden

subvexus

Level-1
Beiträge
29
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo Zusammen,

ich bin dabei von SimaticManeger auf TIA umzusteigen, und stelle fest dass in Datenbausteinen nicht mehr wie gewohnt der Adressoffset angezeigt wird. Kann auch keine zusätzliche Spalte, die das anzeigt einblenden.
Z.B. für diesen Fall:
MB_DATA_ADDR:=40001,
MB_DATA_LEN:=8,
MB_DATA_PTR:= "Kommunikation_Empfangen".Datenblock1,
um die Länge anzugeben, konnte man sich im SimaticManeger die Länge abgucken.

Gibt es im SCL möglichkeiten die Größe zu bestimmen, wie "sizeof" ?
Ich bin hier echt am Verzweifeln. Komme ursprünglich aus der Codesys-Welt und muss mir oft an den Kopf fassen, womit man hier kämpfen muss.
Ich möchte ja niemandem zu Nahe treten, ich arbeite ja selbst mit Siemens (muss), aber das ist doch kein Tool für Programmierer.
Wie auch immer, vielleicht versteht mich ja der ein oder andere Leidensgenosse.

Kann mir jemand helfen?
 
Hallo "Leidensgenosse", Deine Leidensgrenze ist wohl sehr nieder!? Offenbar hast Du ein S7-1x System, und die Bausteine optimiert angelegt. Einfach unter Eigenschaften die Optimierung deaktivieren (wenn Du V12 hast) ansonsten z.B. neu anlegen. (denn anderen Weg will ich Dir ersparen) Schon hast Du einen Baustein wie Du in von S7-300 kennst. Mich würde interessieren welches tolle Codesys Tool Du verwendest, ich für meinen Teil habe dort meinen persönlich noch akzeptierbaren hohen Level bzgl. Leidensgrenze längst erreicht. Beste Grüße
 
Zuviel Werbung?
-> Hier kostenlos registrieren
:ROFLMAO: arbeite sonst mit TwinCat. Ich finde da hat man alle Freiheiten in der Programmierung, grade wenns ums Datenhandling geht.
Boolshe Sachen sind vielleicht mit S7.. komfortabler zu projektieren.
Hier habe ich eine 1200 mit TIA V12, hast du genau richtig erkannt! Danke für den Tip, Offset wird jetzt angezeigt.
Würde gern auch den anderen Weg kennenlernen..( bloß keine Scheue ;) ) gibt es den die möglichkeit die Größe zu ermitteln?
 
:gibt es den die möglichkeit die Größe zu ermitteln?
Rechte Maustaste auf DB, Eigenschaften --> Übersetzung
Ich finde zum Datenhandling eigentlich nicht viel Unterschied zu TwinCAT, das ist wohl auch der Grund warum ich mich als totaler Siemens Neuling relativ schnell mit dem TIAP angefreundet habe. Ich bin sozusagen bei TIAP Mann der ersten Stunde, mit einer Supportunterstützung seitens Siemens, wie ich sie von nirgendwo kenne. S5 hingegen verwehre ich mich beharrlich seit meiner Schulzeit...
Der andere Weg: Baustein rechte Maustaste --> als Text kopieren --> Text in eine Textdatei schreiben --> Eigenschaft für { S7_Optimized_Access := 'FALSE' } auf TRUE stellen, danach Datei speichern mit Endung *.scl, den alten Baustein löschen --> Externe Quellen *.scl einlesen --> Baustein(e) generieren --> FERTIG
Bei V12 geht es direkt im Editor unter Bausteineigenschaften.

PS: Derzeit portiere ich meterlangen TwinCAT-Code ins TIAP, bisher eigentlich ohne gröbere Probleme bzw. Zeitaufwand. (wohl weil ich zu 90% SCL verwende..)
Bei einem "guten" Programmierstiel sollte die Plattform der SPS möglichst neutral sein, sonst verkaufst Du Dich mit der Zeit mit Kopf und Haar und bist total abhängig... (von wem auch immer)
Das versuche ich seit geraumer Zeit zu realisieren.
Grüße
 
Ich versuche ja das ganze Objektiv zu sehen. Ich will nicht das eine loben, das andere schlecht machen. Es sind einfach direkte Vergleiche von 2 Systemen. Und für komplizierte Programmieraufgaben ist TwinCat einfach geeigneter.
Mit der Möglichkeit die Größe zu ermitteln, meinte ich z.B. eine Funktion, die es erlaubt zur Laufzeit die größe einer Struktur oder einer Variable zu ermitteln. Damit wollte ich einen Kommunikationsbaustein ModBusTCP schreiben der Modular für unterschiedliche Strukturen geeignet wäre. Einfach beschalten, den Rest macht er selbst, Größen ermittelt, zum Senden fragmentieren.. - die komplette Kommunikation automatisiert. Geht leider nicht!
Dank Dir weis ich wie man sich den Offset im DB anschaut. DANKE! Und dann muss für jeden Kommunikations-DB eine eigene Kommunikation programmieret werden - händisch!!! Und wen sich die Größe der DBs irgendwann ändert, sollte man nicht vergessen das Programm anzupassen. Es ist einfach nicht die Programmierweise, die ich bevorzuge.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich sehe das ganze auch sehr objektiv, und deshalb tut es mir im Herzen weh, dass TIAP dauernd so schlecht gemacht wird. Zumindest habe ich dort das Gefühl, das hinter dem Ganzen ein Großes Ganzes steht, ein System - aber egal.
Wenn ich Deine Anforderung für die MB Kommunikation sehe, glaube ich dass Du das (neue) System falsch einschätzt bzw. unterschätzt. Modbus ist mein täglich Brot und da geht auf bei S einiges.
Stichwort Größenermittlung: Bausteinübergabe als Pointer auf ANY, und dann den Pointer zerstückeln. Codesys macht das eigentlich nicht anders. Ich für meinen Teil arbeite kaum mit DB's, sondern immer mit FB-Instanzen und zugehörigen Instanz-DB's bzw. Multiinstanzen. Sehe auch hier keinen großen Unterschied zu Codesys, ansonsten hätte ich mit meiner momentanen Portiertätigkeit ein ziemliches Problem. :D
Zudem ja jetzt genauso ein Compiler den Code erzeugt, und kein was ich für nativer S7 Code erzeugt wird. (zumindest bei den 1x Systemen)
Wenn Du TIAP verwendest, löse dich von der Classic Denkweise, dann tust Du Dir viel leichter.
Genug der "Besserwisserei", schönen Abend.
(schön, wenn doch vielleicht ein Bisschen helfen konnte)
 
Bei der 1200 sieht es mit zeiger- oder zeigerähnlichen Datentypen wirklich schlecht aus. Es gibt zwar jetzt einen Datentyp Variant der wohl vom Prinzip her für ähnliche Einsatzzwecke zu gebrauchen wäre. Nur hat Siemens sich überlegt dass dieser Datentyp vom Anwender nur an Systemfunktionen weitergeleitet werden kann. Selber auswerten kann man da nichts, zumindest bin ich noch nicht dahintergekommen.

Es gibt ja noch etliche weitere integrierte Datentypen (z.B. VREF), die man als Programmierer alle nur weiterleiten, aber nichts selber damit anfangen kann. Nichts anfangen kann man auch mit der Dokumentation zu diesen Datentypen. Dass man Variant als Programmierer selber überhaupt nicht benutzen kann, findet man auch nur durch Versuch und Irrtum heraus.

Das ist das einzige was konsistent ist bei TIAP: die durchgängige bescheidene Qualität, vom Design und Performance der Oberfläche über die Umsetzung der Programmiersprache bis hin zur Dokumentation.
 
Hilft hier nicht der Datentype DB_Any? Ist ab S7-1200 V2 drin. Es muss aber der Baustein im nicht optimierten Modus laufen. Zudem ist dieser Zugriff bei der S7-1500 nicht bei den L Datentypen wie LWord , LInt und co möglich, da diese nur Symbolisch Adressiert werden können.
 
Zurück
Oben