# Relativ Programmieren unter S7



## markuscps (5 Mai 2010)

Hallo SPSler

welche Strategie verfolgt ihr unter S7, programmiert ihr alles relativ oder auch absolut?

Ich kenne zwei Möglichkeiten relativ zu Programmieren, Symbolisch oder die I/Os in einen Baustein schreiben.
(Der Lösungsweg mit dem DB wird unter dem Weihenstephan / OMAC - Standard verwendet soweit ich weiß)
Kennt ihr weitere/bessere Möglichkeiten und welche Vor und Nachteile bieten diese?  

Danke


----------



## Drutbluck (5 Mai 2010)

Was bedeutet eigentlich in dem Zusammenhang "relativ" und "absolut" programmieren?

Ich stelle mir dabei vor, dass bei "absolut" die Adresse ohne Variable feststeht, z.B.

U  "eingang_xx"
...
L  "db_yy".something

und bei "relativ" zB ein Arrayzugriff erfolgt, also in SCL 

store_ := 0;

FBs und ähnliches sind auch irgendwie "relativ", weil in Wirklichkeit eine Art Anfangsadresse übergeben wird und von da aus die Zugriffsadressen ermittelt werden._


----------



## Blockmove (5 Mai 2010)

Ob du nun symbolisch oder absolut programmierst, ist reine Geschmackssache.
Verwendest du DBs als Abstraktionsschicht, so kann es bei modularen Anlagen (Prozesstechnik, HLK, modulare Serienmaschinen ...) Vorteile bieten. Du kannst quasi objektorientiert arbeiten und hast hohe Wiederverwendbarkeit von Code. Allerdings kann - abhängig von Programmierstil - die Fehlersuche erheblich komplexer sein. 

Gruß
Dieter
FB_Addon_TelNo{ height:15px !important;  white-space: nowrap !important;  background-color: #0ff0ff;}


----------



## Ludewig (12 Mai 2010)

In einer vernünftigen Programmierumgebung definiert der Programmierer Variablen, in der SPS-Welt regelmäßig mit einer exakten Typdefinition.

Um Adressen kümmert sich der Compiler. Ist das jetzt relativ oder absolut?


----------



## jonny_b (12 Mai 2010)

Guten Abend,
vlt hilft hier der Begriff "symbolische" Adressierung statt relativer. 

Z.B:
ist ein FB erstellt bleiben die Symbolbezeichnungen der Variablen, so wie sie sind.
Ist eine Zuordnung zu treffen, also die Adressierung mit der E/A-Ebene, Merker oder Peripherie wird in der Symbol-Tabelle einfach die Absolut-Adresse geändert, bzw. zugeordnet.

 Relativ: erst während der Bearbeitung des Bausteins (zur Laufzeit) wird die Adresse erzeugt, bzw berechnet. (Zeiger, indirekt)

So, ich hoffe das ist nicht zu verwirrend.

MfG
jb


----------



## markuscps (20 Mai 2010)

unter relativ stelle ich mir vor das ich keine Ein oder Ausgaenge in meinem Programm verwende oder ueberhaupt auf globale Daten in einem Baustein verzichte um ihn ein einem anderen Projekt wiederverwenden zu koennen.

In dem OMAC-Standard werden alle Ein und Ausgaenge in einem DB abgelegt, arbeiten viele von euch auf diese Art?
Es gibt sicherlich Vor und Nachteile so zu Programmieren aber in Serienmaschinen halte ich das fuer sinnvoll, vor allem um die Daten in einem BDE-System zu uebergeben, was haltet ihr davon?


----------



## JesperMP (20 Mai 2010)

100 % symbolisch.


----------



## markuscps (20 Mai 2010)

du wuerdest allo nicht mit den DBs arbeiten?

Was sind den Vor und Nachteile beider Systeme?


----------



## JesperMP (20 Mai 2010)

markuscps schrieb:


> du wuerdest allo nicht mit den DBs arbeiten?


???? Ich verwende E, A, und DBs und IDBs. Merker und S5 Timer verwende ich nur als notlösung wenn ich etwas quick-and-dirty zusammenwerfen muss.

Z.B.: Ein Transportband kann ich mittels den Adresse _"Item_213".cmd.start_ starten, und mittels den Adresse _"Item_213".status.run_ kann ich sehen ob es läuft.  Welche DB adressen dahinter liegen interssieren mich nicht.


----------

