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

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

Thema: WinCC Flexible 2005 Indirekte Adressierung

  1. #1
    Registriert seit
    25.08.2006
    Beiträge
    247
    Danke
    36
    Erhielt 64 Danke für 58 Beiträge

    Unglücklich


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo

    ich habe in WinCCFlex folgende Variable deklariert:

    Name: Wagen Nummer Index
    Adressierung: DB [Index_DB] DBW [Index_DW_Nummer]
    DatenTyp: INT
    Erfassungsart: Zyklisch fortlaufend
    Erfassungszyklus: 100 ms

    Bei Klick auf einen Button wird eine Funktion aufgerufen und dieser 2 Parameter übergeben: Function Get_Data( Datenbaustein , Start )

    Auszug aus der Funktion:
    ....
    offset=(Start-1)*22
    SetValue SmartTags("Index_DB"), Datenbaustein
    SetValue SmartTags("Index_DW_Nummer"), offset
    ....

    Anschließend wird per SQL über die oben genannte Variable ein Datensatz aus einer Access-DB gelesen.

    Nun mein Problem:
    Nach Runtime Start und klick auf einen Button (es sind 150) wird der richtige Datensatz gelesen. Beim 1. klick auf einen anderen Button wird wieder der letzte Datensatz gelesen und erst beim 2. klick kommt der richtige.
    Mit "HmiRuntime.Trace Wagen Nummer Index" in der Funktion, ist mir nun aufgefallen das die Variable nach dem 1. klick auf den anderen Button noch nicht aktualisiert wurde. Baue ich nun vor der SQL Abfrage eine Schleife:

    For temp = 1 To 10000000
    Next

    in die Funktion ein, dann klappt alles

    Hat jemand von euch eine Idee wie ich sicherstellen kann das die Variable nach Änderung von "Index_DB" und "Index_DW_Nummer" den zugehörigen Wert aus der SPS gelesen hat?

    Ich hoffe mich einigermaßen verständlich ausgedrückt zu haben

    pylades
    Zitieren Zitieren WinCC Flexible 2005 Indirekte Adressierung  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Hallo,
    werden die gennanten Variablen während der Änderung angezeigt ?
    Welche Zeit hast du für den Erfassungszyklus in Wcc-f hinterlegt ?
    Welche Erfassungsart hast du für die Variable ? "Zyklisch fortlaufend" oder "Zyklisch bei Verwendung" ?

  3. #3
    pylades ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.08.2006
    Beiträge
    247
    Danke
    36
    Erhielt 64 Danke für 58 Beiträge

    Standard

    Hallo Larry Laffer

    werden die gennanten Variablen während der Änderung angezeigt ?
    Die Variablen Index_DB und Index_DW_Nummer werden ausschliesslich im Script verwendet und nirgendwo angezeigt (interne Variablen)

    Die Variable:
    Name: Wagen Nummer Index
    Adressierung: DB [Index_DB] DBW [Index_DW_Nummer]
    DatenTyp: INT
    Erfassungsart: Zyklisch fortlaufend
    Erfassungszyklus: 100 ms

    wird nach Ausführung der SQL Abfrage in einem EA-Feld angezeigt.

    Die anderen beiden Fragen sollten hiermit beantwortet sein.

    pylades


  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Du must berücksichtigen, dass deine Variablen nicht im 100ms Zyklus zur SPS geschrieben werden, sondern Kommunikationszeit + 100ms = warscheinlich ca. 1,1 s. Die sicherste Variante, die mit im Moment so einfällt ist, dass du dieselbe SPS-Variable nochmal unter einem anderen Namen anlegst. Sicher übertragen ist deine Variable wenn :
    Index_DW_Nummer = Index_DW_Nummer_2
    bzw.
    Index_DB = Index_DB_2

    Eine bessere Idee habe ich nicht ... , aber die funktioniert auf jeden Fall ...

  5. #5
    pylades ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.08.2006
    Beiträge
    247
    Danke
    36
    Erhielt 64 Danke für 58 Beiträge

    Standard

    Kannste mir das mal etwas genauer erklären?

    Welche variable nochmal anlegen? Ich hab ja nur eine Variable die mit der s7 kommuniziert.

    Irgendwie steh ich da auf dem Schlauch

    pylades

  6. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Klar, kein Problem ...
    Nehmen wir Index_DW_Nummer. Die verweisst z.B. auf DB10.dbw10.
    Jetzt legst du eine 2. Variable an (Index_DW_Nummer_2) die auf die gleiche Speicherstelle verweisst. Diese Variable liesst du auch "Zyklisch fortlaufend" ein, aber du beschreibst sie nicht. Geschrieben wir nur in die erste Variable. Wenn nun die 2. Variable in deiner Applikation der gleichen Wert hat, wie die erste, dann ist der Wert auf jeden Fall in der SPS angekommen, da die 2. Variable den Wert ja nur von dort erhält ...

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

    Standard

    Zitat Zitat von pylades Beitrag anzeigen
    Anschließend wird per SQL über die oben genannte Variable ein Datensatz aus einer Access-DB gelesen.

    Hat jemand von euch eine Idee wie ich sicherstellen kann das die Variable nach Änderung von "Index_DB" und "Index_DW_Nummer" den zugehörigen Wert aus der SPS gelesen hat?
    Das habe ich noch nicht so richtig verstanden:

    Einmal wird über die Variable Wagen_Nummer_Index ein Wert per SQL aus einem Access-DB gelesen und einmal ein Wert aus der SPS? Wird also zweimal ein Wert gelesen, einmal aus dem Access-DB und einmal aus der SPS?

    Gruß Kai

  8. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Hallo Kai,
    so wie ich es verstanden habe kommt hier das Problem zum tragen, dass eine Variable der Visu, wenn in der Visu geändert, noch lange nicht zur SPS übertragen wurde. Pylades möchte aber genau das sicherstellen ...

  9. #9
    pylades ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.08.2006
    Beiträge
    247
    Danke
    36
    Erhielt 64 Danke für 58 Beiträge

    Standard

    Also irgendwie reden wir aneinander vorbei

    Ich habe nur eine Variable die aus der SPS gelesen wird:

    Name: Wagen Nummer Index
    Adressierung: DB [Index_DB] DBW [Index_DW_Nummer]
    DatenTyp: INT
    Erfassungsart: Zyklisch fortlaufend
    Erfassungszyklus: 100 ms

    Wenn ich nun auf einen der 150 Buttons klicke wird meine Funktion aufgerufen:




    bei diesem Button also Datenbaustein 100 und Start 10

    ...
    offset=(Start-1)*22
    SetValue SmartTags("Index_DB"), Datenbaustein
    SetValue SmartTags("Index_DW_Nummer"), offset
    ...


    Daraus ergibt sich dann:
    Index_DB= 100
    Index_DW_Nummer= (Start-1)*22 = (10-1)*22 = 198

    Das heißt dann für die Variable "Wagen Nummer Index":
    Adressierung: DB [Index_DB] DBW [Index_DW_Nummer]

    DB100.DBW198

    Ich hoffe das es nun etwas verständlicher ist

    pylades

  10. #10
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ... und was sind Index_DB und Index_DW_Nummer ?
    So wie ich das verstehe sind das Variablen, die du an die SPS schickst. Die SPS schickt dir daraufhin den Speicherinhalt, der sich aus dieser Adressierung ergibt ...?

Ähnliche Themen

  1. S7 Indirekte Adressierung
    Von Rommani im Forum Simatic
    Antworten: 18
    Letzter Beitrag: 02.05.2014, 22:05
  2. Antworten: 3
    Letzter Beitrag: 09.09.2011, 14:16
  3. Antworten: 50
    Letzter Beitrag: 01.08.2011, 12:57
  4. WinCC - indirekte Adressierung
    Von georg_demmler im Forum HMI
    Antworten: 3
    Letzter Beitrag: 17.04.2011, 10:11
  5. Indirekte Adressierung mit S5!!
    Von Anonymous im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 20.10.2004, 15:15

Lesezeichen

Berechtigungen

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