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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: Ablegen der Ein- und Ausgänge im DB !

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo.

    Möchte mit meiner S7-300 ein Gebäudesteuerung bauen.
    Dabei möchte ich für jede Anwendung z.B. Rollladen eine Funktion erstellen.
    Diese wird nur mit einem DB_index aufgerufen.

    In diesem DB stehen dann die Eingänge(Taster) / Ausgänge / Merker und Timer für diesen Kanal.

    Auf den DB zugreifen ist kein Problem.

    Habe mir das in der Funktion so vorgestellt :

    AUF DB [#DB_index]
    LAR1 P#0.0
    O DBX [AR1,P#0.0]; //Taster
    .....

    Nur habe ich keine Ahnung, wie ich im DB sage, dass dort E 0.0 verwendet wird. Dort gibt es ja nur bool ??

    Hoffe auf Eure Hilfe ...

    Hendrik
    Zitieren Zitieren Ablegen der Ein- und Ausgänge im DB !  

  2. #2
    Registriert seit
    28.09.2005
    Beiträge
    428
    Danke
    118
    Erhielt 91 Danke für 76 Beiträge

    Standard

    Hallo SHendrik,
    ich verstehe nicht ganz was du meinst.

    Die Eingänge bzw. Ausgänge schreibe ich normalerweis mit den und Befehl in den DB:

    U E12.3
    = DB1.DBX.0.0

  3. #3
    Registriert seit
    28.09.2005
    Beiträge
    428
    Danke
    118
    Erhielt 91 Danke für 76 Beiträge

    Standard

    Hallo SHendrik,
    ich verstehe nicht ganz was du meinst.

    Die Eingänge bzw. Ausgänge schreibe ich normalerweis mit den und Befehl in den DB:

    U E12.3
    = DB1.DBX.0.0

  4. #4
    SHendrik ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    20.01.2006
    Beiträge
    29
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Sorry, vielleicht habe ich mich nicht richtig ausgedrückt !

    Ich würde gern die Verweise auf die Hardware Ein und Ausgänge SM321/SM322, die bei mir E0 und A8 sind über eine Funktion beschreiben.

    Die Konfiguration welcher Ein- bzw. Ausgang verwendet wird möchte ich aber im DB machen, um die eine Funktion für alle 10 Rollläden zu verwenden und dann nur die Funktion mit unterschieldichen DB_index 'en aufzurufen.

    Daher sehen meine Abfragen nicht so:

    O E0.0

    sondern so aus

    O DBX [AR1,P#0.0];

    nun muss ich wahrscheinlich den E 0.0 noch im DB als ersten definieren.

    Und genau damit kenne ich mich nicht aus.


    Gruß

    Hendrik

  5. #5
    Registriert seit
    05.01.2006
    Beiträge
    46
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo,

    für die Bitweise Zuordnung habe sind bereits genügt Beispiele vorhanden. Da meistens die E/A häufig hinter einander liegen, würde sich Byte/Word/Dword Umspeicherungen anbieten, dazu paar Beispiele:

    Code:
          L     EB     0
          T     DBB [AR1,P#0.0]
    
          L     EB [MD   100]
          T     DBB [MD   104]
    
    
          L     EW     0
          T     DBW [AR1,P#0.0]
    
          L     EW [MD   100]
          T     DBW [MD   104]
    
    
          L     ED     0
          T     DBD [AR1,P#0.0]
    
          L     ED [MD   100]
          T     DBD [MD   104]
    
    
    
    
          L     PEB    0
          T     DBB [AR1,P#0.0]
    
          L     PEB [MD   100]
          T     DBB [MD   104]
    
    
          L     PEW    0
          T     DBW [AR1,P#0.0]
    
          L     PEW [MD   100]
          T     DBW [MD   104]
    
    
          L     PED    0
          T     DBD [AR1,P#0.0]
    
          L     PED [MD   100]
          T     DBD [MD   104]
    Die PEB/PEW/PED werden für den Peripheriebereich verwendet, die je nach CPU ab 128/256/512 variieren kann, oder vom Programmierer eingestellt werden kann.

    Wenn du noch fragen hast, melde dich einfach.
    Viele Grüße
    Matthias
    SPS .bz
    -----------------
    Rechtschreibfehler wurden absichtlich zur allgemeinen Belustigung hinzugefügt, wer einen findet, darf ihn natürlich behalten ...
    Zitieren Zitieren Indirekte Adressierung  

  6. #6
    SHendrik ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    20.01.2006
    Beiträge
    29
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Sorry, aber ich muss doch nochmal nachfragen.

    Das Ziel ist es ein Programm zur Rollladensteuerung zu schreiben.

    Dabei möchte ich eine Funktion erstellen, die die ganze Funktionalität enthält.

    In dieser sollen aber keine Ein- und Ausgänge direkt programmiert sein.

    Diese sollen im DB sein.

    Somit könnte ich mit mehreren DB's mehrere Rollläden steuern.

    Funktion sollte dabei so sein :

    Im DB steht auf der entsprechenden Stelle ein Verweis auf den Eingang

    Von der Funktion greife ich nur über einen Zeiger auf den DB und damit auf den Eingang zu ...

    Ich möchte nicht erst alle Eingänge abfragen und das Ergebnis in den DB schreiben müssen.

    Ich will nur dort einen Zeiger auf den Eingang und Ausgang hinterlegen.

    Leider habe ich noch sehr wenig Erfahrung mit der SPS, aber in der Microcontroller Welt geht so was.

    Sorry, dass ich nochmal nachfragen ...

    Gruß

    Hendrik

  7. #7
    Registriert seit
    29.01.2005
    Beiträge
    277
    Danke
    4
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo!

    Ich würde Dir dazu raten deine Problemstellung mit einem FB und Instanz-DB zu lösen.
    In diesem FB programmierst Du dann die Funktionalität wie Du sie möchtest, ungefähr so...

    UN #Rolladen unten
    U #Rolladen soll runter
    S #Rolladen runter

    U #Rolladen unten
    R #Rolladen soll runter
    ...

    Wenn Du nun diesen Funktionsbaustein von einem FC aus aufrufst, dann sieht das ungefärh so aus...

    Call FB10; DB10
    #Rolladen unten = E1.0
    #Rolladen soll runter = E1.1
    #Rolladen oben = E1.2
    ...

    Dieses Call FB10... brauchst Du ja sicherlich öfters, einmal für jeden Rolladen... genau so ordnest Du dann ja bei dem Aufruf für jeden Rolladen auch die zugehörigen Endschalter und Befehlsstellen zu...

    Ich hab das aus dem Gedächtnis geschildert, ich hoffe ich hab keinen Fehler eingebaut...

    Viele Grüße, Tobias

  8. #8
    SHendrik ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    20.01.2006
    Beiträge
    29
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo.

    Das kommt schon in die Richtung.
    Wenn ich es richtig verstanden habe, muss ich dann bei jedem Aufruf
    die Eingänge mit übergeben.

    Wenn ich das im DB speichern könnte hätte ich dann eine saubere Trennung zwischen Konfig und Programm ...

    Gruß

    Hendrik

  9. #9
    Registriert seit
    18.12.2005
    Beiträge
    71
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von SHendrik
    Hallo.

    Das kommt schon in die Richtung.
    Wenn ich es richtig verstanden habe, muss ich dann bei jedem Aufruf
    die Eingänge mit übergeben.

    Wenn ich das im DB speichern könnte hätte ich dann eine saubere Trennung zwischen Konfig und Programm ...
    Weder das eine noch das andere hat hier seine Richtigkeit. Grundsätzlich ist das möglich, in einem DB die Bereichszeiger abzulegen, die auf die Peripherie verweisen. Über einen Index spricht man den geplanten Bereich an und kann so die Peripherie lesen und schreiben, was damit der Frage deines Threadaufmachers entspricht.
    Nur hat das einen entscheidenden Nachteil, das man sich damit fast aller Möglichkeiten einer schnellen Fehlersuche beraubt.

    Das ganze in einen FB zu verpacken ist auch nicht das Gelbe vom Ei, aus meiner Sicht ist ein FC völlig ausreichend, und für jeden Rolladen errichtest du eine Instanz dieses FC. Wenn man das richtig codet, kommt dann sogar ganz ohne DB aus.

    Gruß Barnee
    Und der Weg zur Hölle ist mit guten Vorsätzen gepflastert......

  10. #10
    Registriert seit
    25.09.2005
    Ort
    Neuss
    Beiträge
    278
    Danke
    11
    Erhielt 31 Danke für 29 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von lefrog
    Hallo!

    Ich würde Dir dazu raten deine Problemstellung mit einem FB und Instanz-DB zu lösen.
    Das wäre auch meine Empfehlung gewesen!

Ähnliche Themen

  1. Parameterwert in DB ablegen
    Von selly im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 29.03.2010, 15:59
  2. VIPA - Programm ablegen
    Von Lupo im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 28.09.2009, 12:50
  3. Betriebsdaten im DB ablegen.
    Von Chris_AUT im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 05.07.2007, 16:03
  4. String in DB ablegen
    Von SPS_BOB im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 02.05.2007, 14:33
  5. DATE_AND_TIME in db ablegen
    Von volker im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 15.09.2003, 16:33

Lesezeichen

Berechtigungen

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