Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 10 von 10

Thema: Call-by-Function (BlOCK_FC/FC) und UC / CC

  1. #1
    Registriert seit
    18.06.2010
    Beiträge
    29
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo an alle Tüftler …

    Vorab, hoffe ich bin irgend wie in der richtigen Ecke?

    1. Also ich habe vor in von Zyklus zu Zyklus ggf. immer einen andern FC im OB1 aufzurufen.So weit ich das nachgelesen habe kann man das mit UC[#mw0] mache für FB/FC’s ohne Parameterübergabe, Quelle: Step7 Crashkurs Extended S. 654. Gibt es eine Möglichkeit doch Parameter zu übergeben?

    Pseudocode:

    Fcnr : mw 0 // ist Global!

    Zyklus 1:
    Beginn OB1:

    Uc [#fcnr] // z. B. FC1
    Beginn FC1:
    L 2
    T # fcnr

    Ende FC1
    Ende OB1

    Zyklus 2:

    Beginn OB1:

    Uc [#fcnr] // FC2
    Beginn FC2:

    L 1
    T # fcnr

    Ende FC2
    Ende OB1


    -----------------------------------------
    -----------------------------------------

    2. Wie sieht es mit dem Übergabe Parameter Block_FC aus?
    Also vor ab Volkers beitrat ist echt Spitze!!!
    http://spsforum.eu/showthread.php?p=77858
    Aber es steht leider nicht drin wie man eine Zeiger für eine FB/FC auf baut…
    Wenn ich das in dem Buch richtig sehe geht’s es so z. B. für den FC1:

    Code:
     LAR1  P##QANY                     //Zeiger ins Adressregister laden  
            L     W#16#10                     //SyntaxID. bei S7 immer 10
            T     LB [AR1,P#0.0]
            L     W#16#17                      //Typ BLOCK_FC = 18// für Block_FB = 17
            T     LB [AR1,P#1.0]
            L     W#16#1                  // Warum 1?        T     LW [AR1,P#2.0]
            L     W#16#0                  // Kein DB        T     LW [AR1,P#4.0]
            L     1
    //     SLD   3 // Um 3 Bit Links schieben?
            T     LD [AR1,P#6.0]
    Dies ist aber dann auch wieder nur ohne Übergabeparameter möglich?
    Kann das jemand so bestätigen?

    Gruß an Alle...
    Zitieren Zitieren Call-by-Function (BlOCK_FC/FC) und UC / CC  

  2. #2
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    aufrufe überspringen?
    wie wäre es mit ner sprungleiste?
    da kannste schön zyklusweise hochzählen und dementsprechend deinen baustein aufrufen

    ...wofür auch immer das gut sein soll...
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  3. #3
    Potenzial ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.06.2010
    Beiträge
    29
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hmm wie meinst das genau mit Überspringen?

    Sofern ich mir das richtig mit der Sprungliste angesehen hab ist die star?
    Ähnlich wie swtih case in C!?
    Und möchte zyklisch hochzählen sondern das Verhalten austauschen!

    Wie sieht es mit 2. aus?

    Zitat Zitat von vierlagig
    aufrufe überspringen?
    wie wäre es mit ner sprungleiste?
    da kannste schön zyklusweise hochzählen und dementsprechend deinen baustein aufrufen

    ...wofür auch immer das gut sein soll...

  4. #4
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    du kannst doch den call überspringen, und beim call kannste doch parameter übergeben und du kannst doch die selbe funktion so oft du willst mit call aufrufen ... was ist daran nicht verständlich?

    ja, es ist wie case...
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  5. #5
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.746
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Zitat Zitat von Potenzial Beitrag anzeigen
    Hallo an alle Tüftler …

    Vorab, hoffe ich bin irgend wie in der richtigen Ecke?

    1. Also ich habe vor in von Zyklus zu Zyklus ggf. immer einen andern FC im OB1 aufzurufen.So weit ich das nachgelesen habe kann man das mit UC[#mw0] mache für FB/FC’s ohne Parameterübergabe, Quelle: Step7 Crashkurs Extended S. 654. Gibt es eine Möglichkeit doch Parameter zu übergeben?

    Pseudocode:

    Fcnr : mw 0 // ist Global!

    Zyklus 1:
    Beginn OB1:

    Uc [#fcnr] // z. B. FC1
    Beginn FC1:
    L 2
    T # fcnr

    Ende FC1
    Ende OB1

    Zyklus 2:

    Beginn OB1:

    Uc [#fcnr] // FC2
    Beginn FC2:

    L 1
    T # fcnr

    Ende FC2
    Ende OB1
    Parameter übergeben könntest du denke Ich wenn du direkt den MC7 Code des bausteines bearbeitest, da der MC7 Code eines UC mit Parameter anderst aussieht als der ohne Parameter.

    Also Ich denke direkt mit S7 Mitteln kannst du das nicht bewerkstelligen, aber vieleicht wenn du deinen Baustein mit einem Hex Editor bearbeitest, oder wenn mein S7 Programmeditor fertig ist.

    Infos gibts hier:
    http://www.sps-forum.de/showthread.php?t=27703
    und hier:
    http://www.sps-forum.de/showthread.php?t=36635
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  6. #6
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.199
    Danke
    926
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Wat für abstruse Ideen man doch so als Anlaß für Eigenwerbung ausnutzen kann...

    Wieso sind wir noch so blöd und schreiben S7-Programme mit so langweiligen
    und die Kreativität behindernden KOP-/FUP-/AWL-/SCL-/CFC- und Graph-Editoren,
    wo direktes Code-Erzeugen mit MC7- oder Hex-Editor doch viiiel aufregender ist?
    Wozu muß ein Maschinenprogramm stabil, berechenbar, lesbar und verstehbar sein?!

    @JK:
    Nur weil Du seit kurzem weißt, wie MC7 aussieht, mußt Du das nicht als Lösung für
    jedes (eigentlich simple) Problem verkaufen oder gar selber glauben, man könnte
    damit alles lösen.
    Der Traum von Potenzial wird sich aber nicht mit MC7 oder einem Hex-Editor lösen
    lassen, selbst wenn der MC7-Editor aus der tollen trial-and-error-Schmiede von
    jfk-solutions stammt.
    Entweder der Code macht (mehr oder weniger sichtbar) eine Fallunterscheidung
    oder es müßte selbst-modifizierender Code sein.

    Zitat Zitat von Jochen Kühner Beitrag anzeigen
    Also Ich denke direkt mit S7 Mitteln kannst du das nicht bewerkstelligen
    Wenn ein Lösungskonzept absolut nicht mit den vorhandenen S7-Mitteln realisierbar
    ist, dann ist das Konzept für eine S7-Steuerung unbrauchbar. Man sollte sich was
    anderes überlegen und nicht auf irgendwelche Wunder-Editoren hoffen.

    Man muß nicht immer alles sonstwie kompliziert denken, es geht doch so einfach:
    Code:
    // Pseudocode
    IF fcnr==1 THEN
      CALL FC1 (p11, p12, p13)
    ELSE IF fcnr==2 THEN
      CALL FC2 (p21)
    ELSE IF fcnr==3 THEN
      CALL FC3 (p31, p32)
    ELSE IF ...
      ...
    ELSE
      CALL FCx ()
    END IF
    
    // Die FC können dann die Nummer des beim nächsten Mal 
    // aufzurufenden FC in fcnr schreiben.
    Zitat Zitat von vierlagig Beitrag anzeigen
    ...wofür auch immer das gut sein soll...
    Würde mich auch interessieren, wofür das sinnvoll und unumgänglich sein soll.

    Gruß
    Harald

  7. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    vierlagig (07.07.2010)

  8. #7
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.746
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Wat für abstruse Ideen man doch so als Anlaß für Eigenwerbung ausnutzen kann...

    Wieso sind wir noch so blöd und schreiben S7-Programme mit so langweiligen
    und die Kreativität behindernden KOP-/FUP-/AWL-/SCL-/CFC- und Graph-Editoren,
    wo direktes Code-Erzeugen mit MC7- oder Hex-Editor doch viiiel aufregender ist?
    Wozu muß ein Maschinenprogramm stabil, berechenbar, lesbar und verstehbar sein?!

    @JK:
    Nur weil Du seit kurzem weißt, wie MC7 aussieht, mußt Du das nicht als Lösung für
    jedes (eigentlich simple) Problem verkaufen oder gar selber glauben, man könnte
    damit alles lösen.
    Der Traum von Potenzial wird sich aber nicht mit MC7 oder einem Hex-Editor lösen
    lassen, selbst wenn der MC7-Editor aus der tollen trial-and-error-Schmiede von
    jfk-solutions stammt.
    Entweder der Code macht (mehr oder weniger sichtbar) eine Fallunterscheidung
    oder es müßte selbst-modifizierender Code sein.


    Wenn ein Lösungskonzept absolut nicht mit den vorhandenen S7-Mitteln realisierbar
    ist, dann ist das Konzept für eine S7-Steuerung unbrauchbar. Man sollte sich was
    anderes überlegen und nicht auf irgendwelche Wunder-Editoren hoffen.

    Man muß nicht immer alles sonstwie kompliziert denken, es geht doch so einfach:
    Code:
    // Pseudocode
    IF fcnr==1 THEN
      CALL FC1 (p11, p12, p13)
    ELSE IF fcnr==2 THEN
      CALL FC2 (p21)
    ELSE IF fcnr==3 THEN
      CALL FC3 (p31, p32)
    ELSE IF ...
      ...
    ELSE
      CALL FCx ()
    END IF
    
    // Die FC können dann die Nummer des beim nächsten Mal 
    // aufzurufenden FC in fcnr schreiben.

    Würde mich auch interessieren, wofür das sinnvoll und unumgänglich sein soll.

    Gruß
    Harald
    War ja nur nee Idee, das man das also Lösung benutzen sollte war ja nicht gedacht.

    Wurde ja auch nicht gefragt wie es mit Call geht (gehe davaon aus das der Threadersteller das weiss), es wurde ja direkt gefragt ob es mit UC möglich ist.
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  9. #8
    Potenzial ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.06.2010
    Beiträge
    29
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Noch mal Hallo an Alle!
    Finde es echt gut und toll der Ihr bisher so viel gepostet habt [ =

    Möchte eure Frage warum ich so was frage auch gerne beantworten! Weis aber jetzt schon das ich dafür die Ohren lang gezogen bekomme bzw. das als Weltfremd bezeichnet wird!
    Und vor ab noch mal ich bin KEIN geborener SPS Programmierer und habe auch nicht viel (naja kaum) Erfahrung und habe mir meine bescheidenen Künste die letzten paar Wochen angelesen.

    Hintergrund ist das ich ein Zustandmodell nicht mit dem S7-Graph Abbilden will. Naja er steht mir auch nicht zur Verfügung!
    Soweit ich das die Funktion des S7-Graph nachvollzogen habe, hier bitte ich ALLE um Korrektur meiner Auffassung die wahrschlichst so nicht richtig ist!
    Also mit dem Graph bilde man ein Zustandsmodell einer Funktion (Maschinen, Anlage…) ab, dies besitzt Trigger, Aktionen und Zustände. Ein Zustand wird nur dann gewechselt wenn der Passende Trigger (Trigger Kombinationen) dies auslösen.

    Nach der Abbildung des gewünschten Zustandmodells wird dies in Step7 Code umgesetzt und entspricht einer Verkettung von UND- und ODER- Bedingungen die dann die entsprechende Zustand auswählen, die entsprechenden Aktionen ausführen und dann die Trigger prüfen und es zu einem evtl. wechsel es Zustands kommt.
    Je komplexer das Zustandmodell um so mehr UND- und ODER Anweisungen!?
    Bei einer Änderung des Modells (Aktionen, Tigger, Zustände) muss dies immer wieder NEU übersetzt werden!?
    Also wie gesagt, hier wird MEIN Fehler liegen das ich das so falsch auf fasse und BITTE um Korrektur!!!

    So weit ich es gelernt habe und meinem jetzigem Empfinden entspricht ist so was kein guter Programmier stiel wenn man so was von Hand abbilden will. Da es fast immer zu Fehler und Änderungen Trigger kommt, d.h. man müsste immer dies unübersichtliche Netzwerk von UNDs und ODERs beherrschen.

    Ich hatte so was schon mal angedeutet im Thread „Schrittkette IN SCL oder mit SPL in AWL“ angedeutet, kann auch sein das ich hier was mit der Schrittkette verwechsel, wie gesagt Klärt mich auf! [ =
    http://www.sps-forum.de/showthread.php?t=36889

    In der Software Technik gibt’s für Hochsprachen ander Möglichkeiten um einen Zustandsgraphen abzubilden außer mit einer unschönen starren IF-ESLE Anweisungskette.

    Dies löst man kurz gesagt das jeder Zustand sie wie oben selber prüft und entscheidet im nach der Abarbeitung sein Aktionen welcher zustand aufgerufen werden soll.
    Ähnlich wie der Pseudocode in der ersten Fragestellung. Für die Jenigen unter euch die sich auch mit Hochsprachen beschäftigen müssen kann man auf „UML Tutorial: Finite State Machines“ von Robert C. Martin verweisen, hier gibt’s mehrer Dokumente und Betrachtungsweisen, die immer Modularer und komplexer werden!
    http://www.objectmentor.com/resource...les/umlfsm.pdf

    Des weitern eine sehr gute Einführung bietet und nahezu ein Standardwerk: „Entwurfsmuster von Kopf bis Fuß (Head First design patterns)“ aus dem O'Reilly Verlag, Kap. 10 Seite 385.
    http://books.google.com/books?id=k4_...page&q&f=false

    Denke Ihr habt dafür echt ander Lösungsstrategien und denkt sicher wo von redet der eigentlich…
    Dies ist gar nicht so in der Strukturierten SPS Welt umzusetzen bzw. das wird anders gemacht (S7-Graph), dies muss ich mir aber als Anfänger gefallen lassen!!!

    Wie schon richtig gesagt hatte:
    Zitat Zitat von PN/DP
    Wenn ein Lösungskonzept absolut nicht mit den vorhandenen S7-Mitteln realisierbar ist, dann ist das Konzept für eine S7-Steuerung unbrauchbar.
    Also Das obrige Lösungskonzept ist zwar mit „UC“ bzw. „CC“ umsetzbar aber ohne Parameterübergabe.


    Noch mal zu meiner zweiten Fragestellung: ist der ANY-FC Zeiger so Richtig gestrickt?


    Danke so weit für eure Stellung nahem,
    euer Potenzial

  10. #9
    Registriert seit
    25.06.2007
    Ort
    Dresden
    Beiträge
    3.930
    Danke
    465
    Erhielt 878 Danke für 634 Beiträge

    Standard

    Zitat Zitat von Jochen Kühner Beitrag anzeigen
    Also Ich denke direkt mit S7 Mitteln kannst du das nicht bewerkstelligen, aber vieleicht wenn du deinen Baustein mit einem Hex Editor bearbeitest, oder wenn mein S7 Programmeditor fertig ist.
    @jk
    Du hast eindeutig zu viel Zeit. Bei einer 50-60 Stundenwoche las
    Programmierer würde ich nen Teufel tun und irgendwelches
    propritäres Zeug programmieren. Wenns ein echtes Produkt werden
    könnte, dann ja. Aber ansonsten sollte man - so vorhanden - lieber
    was mit der Familie machen oder in den Biergarten gehen

    Frank
    Grüße Frank

  11. #10
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.746
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wenn man auf Baustelle ist und nur Betriebsbegleitung macht, und alles Störungsfrei läuft, muss man sich halt beschäftigen...

    Mfg
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren Betriebsbegleitung....  

Ähnliche Themen

  1. Symbolischen Namen für Function verwenden
    Von FrankTheTank im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 09.09.2011, 12:23
  2. Antworten: 7
    Letzter Beitrag: 17.05.2011, 23:18
  3. CoDeSys Visu: Execute Function.
    Von Neals im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 20.01.2011, 07:04
  4. Antworten: 3
    Letzter Beitrag: 07.04.2010, 00:16
  5. call-by-call im ausland
    Von Markus im Forum Stammtisch
    Antworten: 11
    Letzter Beitrag: 16.10.2004, 14:30

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •