Step 7 Flankenmerker in FC's

Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn man nun eine häufiger benötigte Funktion aus einem FC aufrufen will, dann müßte dies nach Deiner Sicht ein FB sein, Multiinstanz würde aber nicht gehen, also müsste man jeder FB-Instanz einen eigenen IDB geben - womöglich nur, um darin einen einzigen Flankenmerker zu speichern....

Harald

Warum geht Multiinstanz nicht?
Den Baustein vernünftig schreiben, dann geht es als Multiinstanz.


bike
 
Eben. Es kommt immer auf die Aufgabe drauf an. Man darf nicht pauschal als unsauber abqualifizieren was man selber eher selten tut. Für fast alles gibt es einen (guten) Grund.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jap das stimmt schon... Ich wollte auch niemanden angreiffen...

Ich bin glaub ich mim moment einfach gefrustet weil ich die Standart aufgeblasene SCL Software fast nicht verstehe...

Vielleicht ist es eben ein Problem kann man so viele Varianten machen...
 
Rufst Du tatsächlich Multiinstanzen in einem FC auf?

Harald

Habe ich nicht geschrieben, dass FB bei Mehrfachverwendung die Wahl ist?
FC nehme ich für Anwendungen die Anlagen bzw Maschinen Spezifisch sind.
Standardfunktionen bekommen einen FB mit IDB und ggF einen globalen FB für Multiinstanz.

@RogerSchw85: Musst du dein SCL Programm wirklich komplett analysieren und alles verstehen, oder musst du nur ergänzen / ändern?
Wenn mir so etwas auf die Füße fällt, nehme ich mir zunächst die Teile, deren Technologie ich kenne.
Damit findet man meist einen Zugang zu den Gedanken der Programmierer.


bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ein FC mehrmals in einem Program aufzurufen finde ich auch unsauber
Hmmm...Naja. :sm25:
Rufst Du tatsächlich Multiinstanzen in einem FC auf
Es soll ja auch Leute gebrn die FBs partout nicht leiden können. Ich hatte mal mit mehrfach aufgerufenen FCs zu tun die bei jedem Aufrauf ein fixes MW hochgezählt haben, daraus dann eine Adresse gebildet haben und, mittels ind. Adressierung, auf Daten in einen "Instanzdatenbaustein" (GlobaL-DB mit fest programmierter Nummer) zugegriffen haben.

Quasi der erste multiinstanzfähige FC am Planeten. Damals (ich im ersten od zweiten Jahr) wusste ich nicht so recht wie ich das finden sollte. Der jenige der es programmiert hatte, hat sich selbst zum Helden erklärt.:sb10:
 
Zuletzt bearbeitet:
Wir wechseln den Roboter und verschieben, respektive müssen die Anlage spiegeln. Den Support der Anlage muss ich auch gewähren und sicherstellen. Also bleibt mir nichts anderes übrig als das Programm zu verstehen...

Bae mit diesen "Standart" Software hab ich einfach Mühe... Der gleiche FB für einen einfach Zylinder oder ein Hub oder Verschiebewagen... Alles mit UDT's... Ich weiss nicht wie ich das erklären soll, aber es werden DB's vor dem aufruf des FB in den instanz DB des FB kopiert... usw... Schauen woe welches bit verwendet wird geht so nicht... und und und
 
Das kommt mir bekannt vor. :rolleyes:
Dem FB wird mit einem Parameter mitgeteilt, was er steuern muss?
Durch die Zahl wird festgelegt, ob zwei oder drei Positionen und so?
Wenn es der Hersteller ist, den ich vermute, dann ist Schwitzen angesagt.


bike

Edit: Ist der Lieferant aus Niedersachsen? MK?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nein nein, aber eine grosse Firma in der Schweiz...

Jap, das System hab ich verstanden, nur ist es extrem mühsam sachen zu ändern und anpassen... Naja wird schon schiefgehen... Im Notfall scheib ich es neu...
 
quote_icon.png
Zitat von RogerSchw85
Ich verstehe nicht wieso man jetzt eine riesen sache mit Flankenmerker schreiben muss, wenn man es bequem in einem FB lösen könnte...


Der TE ging es einfach mal um das Ausloten der Möglichkeiten und ob das irgendeinen Einfluss auf die Performence hat.


Auweia, da habe ich ja mal wieder was angezettelt; wäre ja nun schon das zweite Mal! ;)


Exakt hucki, genau darum ging es mir. Und natürlich war die Frage jetzt nicht ganz ohne Hintergedanken gestellt, sondern es geht auch noch um das Projekt "Rundtakttisch".

Was ich derzeit noch nicht ganz so überblicken kann ist halt, ob ich für die einzelnen Stationen zwingend FB's heranziehen muss, oder ob dafür eben auch FC's ausreichen würden. So wie ich das (auch aus anderen Threads) herauslesen konnte, benötigt ein FB halt um einiges mehr an Performance... und es kommen ja auch noch einige FB's für Servomotoren hinzu!

Ich bin mir auch noch nicht so ganz im klaren darüber, ob bei dem Thema "RTT" Daten existieren, die über den aktuellen Zyklus hinaus gespeichert werden müssen? Normalerweise kann ja jede Station autark arbeiten und nach getaner Arbeit macht sie ihre Einträge im DB (Array[] of UDT). Da müssen dann ja eigentlich keine Daten über den Zyklus hinaus gespeichert werden, oder? Denke das wäre ja dann auch mit die Entscheidung dafür, ob es nicht ohne FB geht.


Lieben Dank für eure Hilfe!

Wird bestimmt ein super Progrämmchen... (naja, die Hoffnung stirbt ja bekanntlich zuletzt!) :p
 
Auweia, da habe ich ja mal wieder was angezettelt; wäre ja nun schon das zweite Mal! ;)

Alles Gut,
viele haben die eigenart ihren Programmierstil als Mittelpunkt der Erde zu betrachten,
da werden auch keine Fragen zu gelassen um seinen eigenen Weg zu finden.
Eine Frage wie deine ist aber gut, seinen eignen Stil mal zu überprüfen, auch wenn
es so manche nicht etragen kann das fragen gestellt werden.

gruß RN
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Auweia, da habe ich ja mal wieder was angezettelt; wäre ja nun schon das zweite Mal! ;)

Paperlapapp wär ja sonst langweilig. Ein Forum soll sich ja nicht wie ein Handbuch lesen, darf also ruhig mal kontrovers sein.

Was ich derzeit noch nicht ganz so überblicken kann ist halt, ob ich für die einzelnen Stationen zwingend FB's heranziehen muss, oder ob dafür eben auch FC's ausreichen würden. So wie ich das (auch aus anderen Threads) herauslesen konnte, benötigt ein FB halt um einiges mehr an Performance... und es kommen ja auch noch einige FB's für Servomotoren hinzu!

Ein FB braucht nicht mehr Leistung wie ein FC. Der Code ist ja ein und derselbe. Das sind rein Kosmetische Sachen im Programm. Beim FC könntest du ja auch händisch einen InstanzDB mitladen. Dann machst du das was das CALL FB, DB für dich macht. Ich halte es für sinnvoll einen FC als eine Funktion zu sehen die dir aus diversen Eingangswerten einen Rückgabewert generiert und zwar im aktuellen Zyklus.

Ich bin mir auch noch nicht so ganz im klaren darüber, ob bei dem Thema "RTT" Daten existieren, die über den aktuellen Zyklus hinaus gespeichert werden müssen? Normalerweise kann ja jede Station autark arbeiten und nach getaner Arbeit macht sie ihre Einträge im DB (Array[] of UDT). Da müssen dann ja eigentlich keine Daten über den Zyklus hinaus gespeichert werden, oder? Denke das wäre ja dann auch mit die Entscheidung dafür, ob es nicht ohne FB geht.

Wenn du Flanken hast, wäre das schon das Erste was du über den Zyklus hinaus speichern musst. Also eigentlich schon ein Fall für einen FB.
Und später aus einem FC ein FB zu machen ist halt umständlich. Da kann man eigentlich gleich auf Nummer sicher und mit einem FB starten. Wenn du nu nichts Zyklusübergreifendes brauchst, lädst du ihn halt solange mit einem DummyIDB. Aber nötig ist das normal nicht.

mfG René
 
Alles Gut,
viele haben die eigenart ihren Programmierstil als Mittelpunkt der Erde zu betrachten,
da werden auch keine Fragen zu gelassen um seinen eigenen Weg zu finden.
Eine Frage wie deine ist aber gut, seinen eignen Stil mal zu überprüfen, auch wenn
es so manche nicht etragen kann das fragen gestellt werden.

gruß RN


Paperlapapp wär ja sonst langweilig. Ein Forum soll sich ja nicht wie ein Handbuch lesen, darf also ruhig mal kontrovers sein. mfG René

Vielen Dank, das beruhigt mich nun doch etwas! Will hier ja nicht zum Unruhestifter werden... ;)

Ein FB braucht nicht mehr Leistung wie ein FC. Der Code ist ja ein und derselbe. Das sind rein Kosmetische Sachen im Programm. Beim FC könntest du ja auch händisch einen InstanzDB mitladen. Dann machst du das was das CALL FB, DB für dich macht. Ich halte es für sinnvoll einen FC als eine Funktion zu sehen die dir aus diversen Eingangswerten einen Rückgabewert generiert und zwar im aktuellen Zyklus. mfG René

Hm, also mein Kenntnisstand (was aber nichts heißen muss) ist halt der, dass ein FB mehr Zykluszeit "verbrät", weil es durch den Zugriff auf den IDB zu höheren "Befehlslaufzeiten" kommt. Darüber hinaus wird ja durch den Einsatz eines FB's auch mehr Speicherplatz benötigt, da ja (normalerweise) auch immer ein IDB notwenig ist. Nun weiß ich natürlich nicht, wie sehr diese beiden Punkte bei den heutigen Steuerungen überhaupt noch ins Gewicht fallen?
 
zu den Thema Zykluszeit und Speicherplatz:
Ist deine CPU so eng ausgewählt ?
Normal sind in der heutigen Zeit die Steuerungen so Leistungsfähig, bei einen
akzeptablen Preis, das man sich über solche Dinge wie Zykliuszeit und Speicherplatz
nicht mehr so viele Gedanken macht. Sondern das Augenmerk mehr auf Lesbarkeit
und Übersichtlichkeit des Programmes setzt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
zu den Thema Zykluszeit und Speicherplatz:
Ist deine CPU so eng ausgewählt ?
Normal sind in der heutigen Zeit die Steuerungen so Leistungsfähig, bei einen
akzeptablen Preis, das man sich über solche Dinge wie Zykliuszeit und Speicherplatz
nicht mehr so viele Gedanken macht. Sondern das Augenmerk mehr auf Lesbarkeit
und Übersichtlichkeit des Programmes setzt.

Das Problem rN bei mir ist einfach, dass mir da Erfahrungswerte fehlen, wie sehr solche Dinge (also mehr Zykluszeit + Speicherplatz durch den Einsatz von FB's) dann später das Programm verlangsamen können... ?

Geplant für das Projekt "RTT" ist eine CPU 315-2 PN/DP; wobei 13 Einzelstationen vorhanden sind. Diesen würde ich nach den Beiträgen in diesem Thread jetzt dann schon lieber je einen FB spendieren. Aber hinzu kommen halt auch noch einige FB's für die Servomotoren. Die ganaue Zahl ist noch nicht ganz bekannt.

Meint ihr, die gewählte CPU kommt damit (gut) zurecht? :confused:
 
Was sagt den bei dir eine Einzelstation aus?
Wie unfangreich ist den eine Einzelstation, so an E/As?
Wieviel Servos könnten es den in Etwa werden?
Wieviel Antriebstechnik hast du sonst noch?
 
Sagen wirs mal so. Mit der alten 315er habe ich schon ganze Gewerke gesteuert, die hatte aber nur 64kb Arbeitsspeicher. Die aktuelle hat mindestens 256kb. Da muss man schon sehr blöd tun die voll zu kriegen.

Ganz zu schweigen dass die neue CPU auch 6 mal schneller ist als die Ursprüngliche.

Trotzdem auch die wird irgenwann voll oder kommt an die Leistungsgrenze. Aber dann wählt man dann lieber die nächst grössere Variante. Ist billiger als ein bis ins letzte optimierte kaum noch lesbare Programm zu schreiben.
Es seidenn man macht 100te gleiche Maschinen mit dieser CPU und ändert an dem Programm nie wieder etwas.

mfG René
 
Zurück
Oben