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

Seite 4 von 4 ErsteErste ... 234
Ergebnis 31 bis 39 von 39

Thema: ständig neue werte aus DB auf den ausgang legen

  1. #31
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.709
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ... damit das Ganze immer nur einmal pro Zeit-Intervall und nicht pro SPS-Zyklus ausgeführt wird. Das Zeit-Intervall kommt hier von deinem Timer. Wäre die Anweisung :
    Code:
    UN Zeit_abgelaufen
    SPB Ende
    nicht da, dann würde das in jedem Zyklus der SPS passieren (also alle ca. 10 ms). Das wäre dann ja ein bißchen schnell oder ...

  2. #32
    McPaul ist offline Benutzer
    Themenstarter
    Registriert seit
    11.12.2007
    Beiträge
    32
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ...stimmt! ... ich danke dir vielmals für deine mühe und zeit!
    werde es jetzt in ruhe testen und zum funktionieren bringen!

    Gruß McPaul

  3. #33
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.709
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Gern geschehen ...
    Aber, by the Way ... was ist der Sinn des Ganzen ?

  4. #34
    McPaul ist offline Benutzer
    Themenstarter
    Registriert seit
    11.12.2007
    Beiträge
    32
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ich habe 64 Ausgänge und alle Ausgänge sollen eine bestimmes Bitmuster abfahren (bzw. Relais ansteuern) Bitmuster steht in einem DB.
    Den Datenbaustein habe ich in C/C++ erstellt mit 64 bis ca. 16000 bits (Bitfolge 10110011..usw.) und in eine Textdatei als AWL-Quelle geschrieben und in Step 7 übersetzt. Die Bitfolge enthält ein bestimmtes Schaltmuster für die Relais. Die Relais schalten Widerstände und Spulen in einem Niedespannungsnetzmodell. Diese sollen Verbraucher darstellen.
    Ich generiere Zufalls "1" und "0" um unvorhergesehene Zustände in einem Netz zu simulieren.

    ...........so die kurze fassung!

    grup mcpaul

  5. #35
    McPaul ist offline Benutzer
    Themenstarter
    Registriert seit
    11.12.2007
    Beiträge
    32
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo LL,

    das Programm funktioniert gut, nur dass bei der ersten Schleife nicht die Werte mit der Adresse 0.0 sondern erst 4.0 geholt werden.
    Die nächten Schleifen wiederum fängen bei 0.0 an, nur die erste halt nicht!
    Woran liegt das? Ansonsten läuft es prima!!

    AUF DB 10
    UN Zeit_abgelaufen
    SPB Ende

    L Index // Index erhöhen
    L 4
    +I
    T Index

    L Index // vergleichen ob max erreicht
    L 480
    <I
    SPB _001

    L 0 // wenn ja, dann wieder von vorn
    T Index

    _001: L Index
    SLD 3
    L AR1

    L DBW [AR1,P#0.0] // Wort [Index] holen
    T AW 0
    L DBW [AR1,P#2.0] // Wort [Index +2] holen
    T AW 2

    Ende: nop 0
    // und Neustart der Zeit


    gruß McPaul

  6. #36
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Zitat Zitat von McPaul Beitrag anzeigen
    das Programm funktioniert gut, nur dass bei der ersten Schleife nicht die Werte mit der Adresse 0.0 sondern erst 4.0 geholt werden.
    Die nächten Schleifen wiederum fängen bei 0.0 an, nur die erste halt nicht!
    Du musst die Reihenfolge im Programmcode etwas ändern:

    AUF DB 10
    UN Zeit_abgelaufen
    SPB Ende

    L Index
    SLD 3
    L AR1

    L DBW [AR1,P#0.0] // Wort [Index] holen
    T AW 0
    L DBW [AR1,P#2.0] // Wort [Index +2] holen
    T AW 2

    L Index // Index erhöhen
    L 4
    +I
    T Index

    L Index // vergleichen ob max erreicht
    L 480
    <I
    SPB Ende

    L 0 // wenn ja, dann wieder von vorn
    T Index

    Ende: nop 0
    // und Neustart der Zeit

    Gruß Kai

  7. #37
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.811
    Danke
    1.230
    Erhielt 1.101 Danke für 527 Beiträge

    Standard

    hier noch ein vorschlag.
    einziger unterschied liegt in "SLD 5" anstatt SLD 3"


    // -->- Adrresse incrementieren

    u takt // 10s takt, den kannste selber erzeugen?
    spbn CNT1
    L Adresse
    L 1
    + I
    T Adresse
    CNT1: nop 0


    // -->- grenzwerte

    ...

    // -->- DW ausgeben

    L Adresse
    ITD
    SLD 5 // SLD 3 = Anpassung an Byteadressierung; SLD 2 = 2x2=4 --> Anpassug DW-Adresse
    LAR1

    ...
    "Es ist weit besser, große Dinge zu wagen, ruhmreiche Triumphe zu erringen, auch wenn es manchmal bedeutet, Niederlagen einzustecken, als sich zu den Krämerseelen zu gesellen, die weder große Freude noch großen Schmerz empfinden, weil sie im grauen Zwielicht leben, das weder Sieg noch Niederlage kennt." Theodore Roosevelt - President of the United States (1901-1909)

  8. #38
    McPaul ist offline Benutzer
    Themenstarter
    Registriert seit
    11.12.2007
    Beiträge
    32
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Vielen Dank für die tollen Vorschläge!
    Ich habe mal den Vorschlag von Kai ausprobiert und es funktioniert super!
    Leider befasse ich mich mit Pointern erst seit zwei Tagen und meine Kenntnisse sind eher dürftig. Deinen Vorschlag Markus werde ich aber auch noch studieren. Danke dafür!!!

    Gruß McPaul

  9. #39
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.709
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ... auf jeden Fall richtig ...
    nicht zu viele Schritte auf einmal ...

Ähnliche Themen

  1. CodeSys Verschiedene INT Werte in einen Ausgang schieben
    Von c-teg74 im Forum CODESYS und IEC61131
    Antworten: 9
    Letzter Beitrag: 08.08.2011, 07:22
  2. Antworten: 1
    Letzter Beitrag: 02.01.2011, 14:20
  3. GND auf PE legen
    Von MrLeeh im Forum Elektronik
    Antworten: 9
    Letzter Beitrag: 16.05.2010, 19:43
  4. DB initialisieren und neue werte schreiben
    Von sb9674 im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 01.12.2009, 12:15
  5. 2 versch. werte an einem analogen ausgang mit der ps3
    Von Anonymous im Forum Sonstige Steuerungen
    Antworten: 4
    Letzter Beitrag: 01.08.2004, 19:54

Lesezeichen

Berechtigungen

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