Variabler FC-Aufruf mit Parametern

Mangokind

Level-1
Beiträge
73
Reaktionspunkte
9
Zuviel Werbung?
-> Hier kostenlos registrieren
*Step 7

*AWL

ich würde gern bei einem FC-Bausteinaufruf mittels UC parameter übergeben

dass es mglich ist, hab ich mal im siemensforum gelesen, allerdings nur mittels tricksereien, wo man dem UC-aufruf in der quelle die Parameter übergibt, wie bei einem Call (der in der Quelle ja auch als UC übersetzt wird)

das scheint erstmal sinnfrei, weil man ja die Parameter nur dann kennt, wenn man schon weiß, welchen baustein man aufrufen will und in dem fall auch ein call genügt, aber ich hatte da so die fixe idee, die FC-Nummern des Projektes (welches andere Projekte ergänzen soll) in einem DB zu speichern und wenn die FC-Nummern der Bausteine sich ändern, ändert man die Nummer im Array des DBs...

man ruft aber trotzdem an den gleichen stellen den gleichen baustein auf und übergibt die gleichen parameter


wenns da ne einfachere lösung als rumwurschteln in der Quelle gäbe, wäre ich dankbar. Zumal man nach rumfummeln an der Quelle die Bausteine nicht mehr ändern kann, da dieser Teil sonst überschrieben bzw automatisch falsch neugeneriert würde :rolleyes:

ansonsten weiter wie bisher bei jedem einzelnen aufruf von hand die FC-Nummer ändern... würde mich auch nicht umbringen :)
 
würde ich gern, aber ich bin da durch gewisse vorgaben festgelegt ;)

nur mal so zum verständnis: deine vorgaben verbieten es dir symbolisch zu programmieren, also den symbolvorrang einzuschalten aber erlauben es dir sone grütze - sorry - öhm, so unkomfortablen code zu schreiben, wie du ihn oben angedacht hast?

verrückte welt :confused:
 
verrückte welt, ja

DB-Nummern sollen flexibel sein
wäre mit symbolischen Adressen noch möglich

FC-Nummern sollten das eigenlich auch sein, aber naja

die DB-Zuordnung wird erst später festgelegt, wenn entschieden wird, welcher FC wie oft aufgerufen wird und woher dessen Parameter kommen
hängt von der Maschine ab, auf der das programm gerade läuft

die Parameter selbst werden erst irgendwann zur laufzeit des Programms per TP eingegeben (und per Blockmove verteilt)

da wirds schon kniffelig mit symbolischer adressierung :rolleyes:

für schlaue ideen bin ich aber immer offen...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
die einzige "schlaue" Idee, die ich hier habe wäre den Datenblock für die Stationen so auszulegen, dass alle Daten von/für alle Stationen grundsätzlich hineinpassen. Du hast dann immer und für alle Stationen den gleichen Datenblock und bedienst dich in der Station dann nach Bedarf ...

Gruß
LL
 
die verwaltung der DBs ist eigenlich weniger das problem.

das programm läuft auch testweise bereits auf 2 maschinen und funktioniert wie es soll.

es hat sich nur beim einrichten gezeigt, dass unerfreulich viele anpassungen gemacht werden müssen, falls die maschine nach dem pflichtenheft anderer firmen programmiert ist.

das ist teilweise unvermeidlich, teilweise setze ich auch gerade lösungen um. konkret: eine zwischenschicht, die die daten der Maschine so umformuliert, wie das prog sie erwartet
die muss man dann halt für jeden hersteller einmal schreiben und dann läufts auf allen nach dessen standard programmierten maschinen

eine nervige fummelei war jedenfalls das ändern der FC-nummern, wenn deren Pflichtenheft verlangt, dass zusatzbausteine nur nummern im bereich XYZ haben dürfen
bei DB nummern kein problem, weil die nur 1 mal in einem Array geändert werden müssen, aus dem sich die (recht zahlreichen) bausteine des programms dann die nummern holen

hätte ja sein können, es gäbe da möglichkeiten...

ist aber nur ein detail für das mir nichts schlaueres eingefallen ist, als ein-und ausgangsparameter über DBs auszutauschen, was dann UC ermöglicht hätte.


das is mir aber zu fummelig und unübersichtlich

und auch wenn er herr 4L mich für bescheuert hält, ist die aufgabe nicht mit symbolischer adressierung lösbar, zumal sich selbst der Aufbau der DBs zur laufzeit ändern kann/wird (und dann durch prüfsummen/verteilerarrays etc erkannt wird)
 
Zuletzt bearbeitet:
Du kannst aber doch einen Parameter-DB basteln mit
1. FC Nummer
2. Parameter DB für FC
3. gegebenfalls Verweis auf Bereich im DB

Schleife , fertig...oder? ( Hab noch nicht ganz verstanden was du machen willst, könntest ein wenig konkreter werden:confused: )
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du kannst aber doch einen Parameter-DB basteln mit
1. FC Nummer
2. Parameter DB für FC
3. gegebenfalls Verweis auf Bereich im DB

Schleife , fertig...oder? ( Hab noch nicht ganz verstanden was du machen willst, könntest ein wenig konkreter werden:confused: )

ja, kann ich machen. mache ich teilweise auch bisher schon

ist aber nur ein detail für das mir nichts schlaueres eingefallen ist, als ein-und ausgangsparameter über DBs auszutauschen, was dann UC ermöglicht hätte.


vielleicht nochmal die frage ganz präzise:

gib es eine wenig-umständliche OFFIZIELLE möglichkeit, die vorteile von CALL und UC zu verbinden?

Call kann feste FCs und FBs aufrufen und parameter übergeben, UC kann variable FCs/FBs aufrufen , aber keine parameter übergeben

wäre einfach zu schön gewesen, wenn man das fü den fall kombinieren könnte, dass man zwar immer den gleichen FC/FB aufrufen täte, aber nicht vorher weiß, welche nummer er mal haben wird, oder wenn man die FB-Nummer kennt, aber die IDB-nummer sich ändern könnte


ist aber mehr ne frage am rande gewesen. das programm existiert und funktioniert und übermäßig viel ändern möchte ich nicht mehr
 
Zuletzt bearbeitet:
Ja dann wünsche ich euch viel Spaß mit der Wartbarkeit eines Programmes wenn man den IDB indirekt öffnet den Baustein indirekt Nummeriert und dann noch die Parameter des indirekt aufgerufenen FB's über den indirekt geöffneten IDB von aussen übergibt und dort natürlich auch die Adressen des IDB indirekt anspricht.

Kurz gesagt: Man greift auf einen Indirekt Adressierten IDB von aussen zu der einen indirekt aufgerufenen Baustein versorg. *ROFL*
Die Leute vor Ort und deine Nachfolger werden es dir Danken! :p

godi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja dann wünsche ich euch viel Spaß mit der Wartbarkeit eines Programmes wenn man den IDB indirekt öffnet den Baustein indirekt Nummeriert und dann noch die Parameter des indirekt aufgerufenen FB's über den indirekt geöffneten IDB von aussen übergibt und dort natürlich auch die Adressen des IDB indirekt anspricht.

Kurz gesagt: Man greift auf einen Indirekt Adressierten IDB von aussen zu der einen indirekt aufgerufenen Baustein versorg. *ROFL*
Die Leute vor Ort und deine Nachfolger werden es dir Danken! :p

godi

;) so macht man sich unersetzlich!:grin:
 
Zurück
Oben