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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 28

Thema: Frage bezüglich OB1

  1. #1
    Registriert seit
    12.11.2008
    Beiträge
    65
    Danke
    43
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Der OB1 birgt noch immer einige Rätsel für mich. Soweit ich jetzt weiss kann man ja von ihm aus die Haupstbausteine aufrufen. Ist es möglich dann folgendes in den OB1 zu schreiben:

    Code:
    UN E 0.0 //Notaus nicht gedrückt
    CC FB3 //Aufruf des Bausteins "Testbereit"
    //Letzte Anweisung von FB3 ist die Zahl 4 in MD100 zu transferieren
     
    UN E 0.0 //Notaus nicht gedrückt
    U(
    L MD100
    L 4
    ==I) //und Zahl in MD100 lautet 4
    CC FB4
    //Letzte Anweisung von FB4 ist die Zahl 5 in MD100 zu transferieren
     
    UN E 0.0 //Notaus nicht gedrückt
    U(
    L MD100
    L 5
    ==I) //und Zahl in MD100 lautet 5
    CC FB5
    Würde das so klappen, oder sollte ich doch besser mit einer Sprungleiste hier arbeiten oder bin ich total auf dem Holzweg?

    Die aufgerufenen Bausteine selbst haben an sich keine Eingangsparameter, nur Bedingungen, und höchsten zwei Ausgaben in Form von MDs
    Zitieren Zitieren Frage bezüglich OB1  

  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

    Zitat Zitat von DerPraktikant Beitrag anzeigen
    und höchsten zwei Ausgaben in Form von MDs
    ist der satz den ich nicht so ganz verstehe ...
    wenn du die bausteine mit CC aufrufst kannst du keine parameter übergeben, auch STAT-variablen werden mangels zugewiesenen IDB nicht funktionieren, wenn deine mit CC aufgerufenen FBs allerdings nur mit globaldaten arbeiten, funktioniert das gut.

    also: hast du eine schnittstelle definiert - dann geht das nicht. (mal die möglichkeit der IDB-übergabe über AR2 ausgeschlossen)

    ansonsten ist es so möglich, wie du es gepostet hast. der ablauf des OB1 ist sequentiel (und zyklisch) d.h. der mit 4 beschriebene wert aus FB3 ist nach abarbeitung dessen, global verfügbar.

    [edit] warum benutzt du zum speichern einer INT-zahl ein doppelwort? die passt doch bequem in ein MW ... <- ich hatte dich bereits darauf hingewiesen, dass es sauberer ist zahlenformate eindeutig zu benutzen. d.h. wenn du mit dem MD100 arbeiten möchtest solltest du auch mit ==D auf L#4 bzw. L#5 vergleichen bzw. diese zahlen dann auch im MD100 ablegen. [/edit]
    Geändert von vierlagig (11.12.2008 um 07:42 Uhr)
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  3. #3
    Registriert seit
    12.11.2008
    Beiträge
    65
    Danke
    43
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ja also zunächst einmal hätten zwei Bausteine die Aufgabe Kräfte zu messen und diese sollten dann irgendwo abgespeichert sein, damit man sie am Ende des Tests auf einem TP anzeigen lassen kann.

    Vielleicht sollte der Bausteinaufruf dann eher so erfolgen, z.B.:

    Code:
     
    UN E 0.0
    U(
    L MW100
    L 3
    ==I)
    CALL FB3
      IN     := PEW 6 //hatte vergessen dass ich doch einen analogen Input habe
      OUT1 := MD0
      OUT2 := MD4
    Die folgende Frage ist vermutlich zwar selbstverstädnlich, aber ich wil sichergehen: Die IN und OUT Angaben muss ich ja dann im entsprechenden Baustein auch in der Umgebung/Schnittstelle Leiste eintragen nehme ich an? Und als was?

    IN über PEW 6 ist ein analoges Eingangssignal eines Kraftsensors, mit Spannung zwischen 0...10V.
    Die beiden OUT wären dann die von einem FC105 umgewandelten Werte von dem analogen Eingangssignal welche dann in den MD0 und MD4 abgespeichert bleiben sollten bis zur Anzeige am TP.

    Gerade fällt mit auch ein dass ich anstelle von MDs für diese Werte an sich auch MWs nehmen könnte da beide Werte ganze Zahlen zwischen 0...20.000 darstellen sollen, oder?

    So das waren wieder mal viele nette Anfängerfragen um euch den Morgen zu versüssen

  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

    1. wenn du einen CALL bedingen willst, mußt du ihn umspringen.
    2. der IN ist als WORD zu deklarieren
    3. die beiden OUT als INT oder DINT oder REAL (ich bin mir immer noch nicht so ganz im klaren, welche werte du an deinem kraftmessbock als gleitkomma und welche als ganzzahl verarbeitet werden sollen

    4. die ausbildungsunterlage liegt dir vor?

    [edit]
    5. wenn du einen FB mit CALL aufrufst ist eine IDB zu übergeben (ausnahmen bilden hier multiinstanzen)
    [/edit]
    Geändert von vierlagig (11.12.2008 um 09:00 Uhr)
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  5. #5
    Registriert seit
    12.11.2008
    Beiträge
    65
    Danke
    43
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich nehme mir mal die Freiheit Deinen Text auseinander zu pflücken und Punkt für Punkt zu antworten

    1. Verstehe, dann müsste es in etwa so aussehen:
    Code:
    UN E 0.0
    U(
    L MW100
    L 3
    ==I)
    SPBN ENDE
    CALL FB3
      IN     := PEW 6 
      OUT1 := MD0
      OUT2 := MD4
    SPA ENDE
     
    ENDE: NOP 0
    2. Danke

    3. Also rein (IN) kommt wie gesagt ein analoger Wert in Form einer Spannung zwischen 0 und 10V, welche am Ende (OUT) als eine ganze Zahl zwischen 0 und 20000 dargestellt werden soll.

    In einem anderen Thread wurde mir ans Herz gelegt den IN, der ja auch der IN für den FC105 ist, zwischen LO_LIM:=0.000000e+000 und HI_LIM:=2.000000e+004 zu begrenzen, so dass ich davon ausgehe dass ich ihn als Realwert eingeben sollte? Oder dienen diese Werte nur dazu der CPU mitzuteilen dass 0V=0.000000e+000 entsprechen und 10V=2.000000e+004, und die Deklaration des Eingangs kann eine andere sein?

    Was die OUTs betrifft, sollten diese nur als ganze Zahlen zwischen 0 und 20000 dargestellt werden auf dem TP, da die Anwendung recht grob ist und ein Komma die Arbeiter nur unnötig verwirren würde. Eine Toleranz von +/- 200 ist dabei kein Problem.

    Wenn ich das ganze Konzept mit dem Dualzahlensystem richtig verstanden habe, brauche ich mindestens 14 Bit um bis 20000 zu kommen. Das sind also dann mindestens 4 Byte, mit anderen Worten, es muss dann ein MD sein um die OUT-Werte abzuspeichern, oder?

    4. Ja, hab ich

  6. #6
    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

    zu 1.
    edit-punkt 5 nicht übersehen
    zu 3.
    der FC105 gibt dir einen REALwert aus, diesen müßtest du ggf. mit RND in eine ganzzahl wandeln um sie dann als INT augeben zu können
    der wertebereich von INT umfasst -32768 .. +32767
    dafür sind 16bit notwendig. 1 byte hat 8bit, also sind 16bit zwei byte, zusammengefasst ein WORD
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  7. #7
    Registriert seit
    12.11.2008
    Beiträge
    65
    Danke
    43
    Erhielt 0 Danke für 0 Beiträge

    Standard

    So langsam gehts glaub ich

    Code:
    UN E 0.0
    U(
    L MW100
    L 3
    ==I)
    SPBN ENDE
    CALL FB3
      IN     := PEW 6 
      OUT1 := MD4
      OUT2 := MD8
    L DB3.MD4
    RND+
    T MD12
    L DB3.MD8
    RND+
    T MD16
    SPA ENDE
     
    ENDE: NOP 0
    So, ich bin mir jetzt nur noch nicht ganz sicher was die Adressierung des DB3 betrifft. Und ist die Bezeichnung MD4 resp MD8 global oder bezieht sie sich nur auf den FB, resp DB. So dass man die Bezeichnungen MD4 resp MD8 noch im Rest des Programms verwenden kann. Z.B. so:

    Code:
    UN E 0.0
    U(
    L MW100
    L 3
    ==I)
    SPBN ENDE
    CALL FB3
      IN     := PEW 6 
      OUT1 := MD4
      OUT2 := MD8
    L DB3.MD4
    RND+
    T MD4
    L DB3.MD8
    RND+
    T MD8
    SPA ENDE
     
    UN E 0.0
    U(
    L MW100
    L 4
    ==I)
    SPBN ENDE
    CALL FB3
      IN     := PEW 6 
      OUT1 := MD4
      OUT2 := MD8
    L DB3.MD4
    RND+
    T MD12
    L DB3.MD8
    RND+
    T MD16
    SPA ENDE
     
     
    ENDE: NOP 0
    Oder muss man noch etwas extra berücksichtigen wenn man einen FB ein zweites Mal adressiert?

  8. #8
    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

    Zitat Zitat von DerPraktikant Beitrag anzeigen
    So langsam gehts glaub ich
    "ich glaube nicht, tim!"

    wo fangen wir jetzt an ... ich kopier einfach mal deinen code und versuch ihn in ordnung zu bringen

    Code:
    *
    UN E 0.0
    U(
    L MW100
    L 3
    ==I)
    SPBN ENDE
    CALL FB3, DB3    //instanz-DB zum FB3 angeben
      IN     := PEW 6 
      OUT1 := MD4
      OUT2 := MD8
    // FLASCH: L DB3.MD4
    L MD4
    RND+
    T MD12
    // FALSCH: L DB3.MD8
    L MD8
    RND+
    T MD16
    SPA ENDE
     
    ENDE: NOP 0
    1. ein element eines globalen-datenbausteins wird wie folgt adressiert

    Code:
    *
          U     DB1.DBX    0.0              //bit
          L     DB1.DBB    0                //byte
          L     DB1.DBW    0                //word
          L     DB1.DBD    0                //dword
    2. elemente eines instanz-datenbausteins (und ich möchte anmahnen solche zugriffe wenn nur irgend möglich zu vermeiden werden wie folgt adressiert:

    Code:
    *
          AUF   DI     1                    //IDB öffnen, da ein qualifizierter zugriff auf IDBs nicht möglich ist
          U     DIX    0.0                  //bit
          L     DIB    0                    //byte
          L     DIW    0                    //word
          L     DID    0                    //dword
    3. ich weiß nicht so recht, was du vorhattest, aber wenn du ohne globalen DB auskommst, kannst du sehr wohl mit dem merkerbereich (wie in meiner korrektur) arbeiten. wenn du einen globalen DB nutzen möchtest, so solltest du die entsprechenden elemente da auch ablegen:

    Code:
    *
    CALL FB3, DB3
      IN     := PEW 6 
      OUT1 := DBxy.DBDu
      OUT2 := DBxy.DBDv
    diese kannst du dann im folgenden so verwenden.

    man sollte halt nur wissen, was man will! alles klar? alles klar!
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  9. #9
    Registriert seit
    18.01.2008
    Beiträge
    40
    Danke
    7
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Du hast immer noch keine IDB übergeben! Außderem brauchst du das PEW 6 nicht mehr, wenn du es einmal mit dem FC 105 aus der aus Bauteinbibliothek bearbeitet hast.

    CALL FC 105
    IN :=PEW6
    HI_LIM :=2.000000e+004
    LO_LIM :=0.000000e+000
    BIPOLAR:=FALSE
    RET_VAL:=MW1
    OUT :=MD12

    Jetzt hast du im MD 12 deinen normierten Wert, der zwischen 0.0 und 20000.0 liegt.

    Als nächstes deine FB Aufrufe:

    UN E 0.0
    U(
    L MW100
    L 3
    ==I)
    SPBN ENDE
    CALL FB3 ,DB 3
    IN := MD 12 ->Hier kannst du also mit dem MD 12 weiter arbeiten!
    OUT1 := Mw4
    OUT2 := Mw8

    ENDE: nop 0

    Die Wandlung deiner Outs in eine Ganzzahl würde ich direkt im FB machen, und nicht erst ausserhalb.

    Mist, da war ich zu langsam!
    Geändert von schoeneberg (11.12.2008 um 10:19 Uhr) Grund: Zu langsam

  10. #10
    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


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von schoeneberg Beitrag anzeigen
    Mist, da war ich zu langsam!
    nich schlimm, deine hinweise haben ja erweiternden und struktur bezogenen charakter. ich finde sie wichtig und richtig. auch wenn es mir zu müßig ist, dass programm in seiner struktur anzuzweifeln - was, wenn ich alle code-schnipsel die DerPraktikant in den letzten tagen so brachte zusammennehme, aber auf jeden fall notwendig wäre. aber auf meine frage hier, nach der struktur, bekam ich keine antwort und ich renne keinem hinter her
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

Ähnliche Themen

  1. Posmo A: 2 Fragen bezüglich MDI
    Von volu im Forum Antriebstechnik
    Antworten: 4
    Letzter Beitrag: 08.08.2011, 17:00
  2. Was ist erlaubt bezüglich Sicherheit
    Von Outrider im Forum Maschinensicherheit - Normen und Richtlinien
    Antworten: 2
    Letzter Beitrag: 21.08.2010, 10:47
  3. Allgemeine fragen bezüglich S7
    Von Kraft im Forum Simatic
    Antworten: 24
    Letzter Beitrag: 15.07.2007, 17:02
  4. Anfängerfrage bezüglich mitsubishi alpha sps
    Von tobias.s im Forum Sonstige Steuerungen
    Antworten: 4
    Letzter Beitrag: 31.03.2006, 23:27
  5. Antworten: 2
    Letzter Beitrag: 09.08.2003, 21:24

Lesezeichen

Berechtigungen

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