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

Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 30 von 30

Thema: WinCC Flexible 2005 Indirekte Adressierung

  1. #21
    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


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hier mal die 2 benutzten Funktionen:


    Function Get_Data( Datenbaustein , Start )

    Dim offset,temp, bahn

    Select Case Datenbaustein
    Case 100
    bahn="Bahn 4"
    Case 101
    bahn="Bahn 3"
    Case 102
    bahn="Bahn 2"
    Case 103
    bahn="Bahn 1"
    Case 104
    bahn="Bahn 0"
    End Select

    bahn=bahn & " Wagen " & Start
    SetValue SmartTags("txt_bahn_platte"), bahn

    offset=(Start-1)*22
    SetValue SmartTags("Index_DB"), Datenbaustein
    SetValue SmartTags("Index_DW_Nummer"), offset
    SetValue SmartTags("Index_DW_Zugelegt"), offset+2
    SetValue SmartTags("Index_DW_Abgegossen"), offset+10
    SetValue SmartTags("Index_DW_Gewicht"), offset+18
    SetValue SmartTags("Index_DW_Bits"), offset+20
    HmiRuntime.Trace SmartTags("Wagen Nummer Index")
    Get_Ident (SmartTags("Wagen Nummer Index"))
    Get_Data="OK"
    ActivateScreen "Dateneingabe Button", 0

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

    Function Get_Ident( Number )

    Dim objConnection
    Dim objCommand
    Dim objRecordset
    Dim strConnectionString
    Dim strSQL
    Dim lngValue
    Dim lngCount
    Dim nummer

    strConnectionString = "Provider=MSDASQL;DSN=test;UID=;PWD=;"
    strSQL="SELECT Gewichte.Ident, Gewichte.Hersteller FROM Gewichte WHERE (((Gewichte.Nummer)= " & Number & "));"
    HmiRuntime.Trace strSQL
    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.ConnectionString = strConnectionString
    objConnection.Open
    Set objRecordset = CreateObject("ADODB.Recordset")
    Set objCommand = CreateObject("ADODB.Command")
    Set objCommand.ActiveConnection = objConnection
    objCommand.CommandText = strSQL
    Set objRecordset = objCommand.Execute

    If Not objRecordset.EOF Then
    SmartTags("datafound_txt") = objRecordset.Fields.Count
    objRecordset.movefirst
    SmartTags("intern_Ident")= objRecordset.Fields(0).Value
    SmartTags("intern_Hersteller")= objRecordset.Fields(1).Value
    Get_Ident="OK"
    Else
    SmartTags("datafound_txt") = "Datensatz wurde nicht gefunden"
    Get_Ident="Fehler"
    End If
    Set objCommand = Nothing
    objConnection.Close
    Set objRecordset = Nothing
    Set objConnection = Nothing
    Das werde ich mal testen Kai

    pylades

  2. #22
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.710
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    @Kai :
    Damit weißt du dann aber immer noch nicht, wann die Daten aus der SPS in der Visu sind ...

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

    Standard

    Also, ich würde meinen ursprünglichen Vorschlag noch einmal anbieten wollen - falls keine neuen Erkenntnisse vorliegen.

    Schreib doch deinen errechneten Index irgendwo in die SPS und lies ihn über eine andere Variable wieder aus. Wenn du den Wert zurück hast, dann sind für deine anderen Daten die Chancen auch nicht so schlecht.

    An deinem Script würde mir im Augenblick keine Option einfallen. Es nutzt ja lediglich den Weg, auf den Kai allerdings erst gekommen ist. Auf die Idee mit der ind. Adressierung bin ich nicht gekommen ...

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

    Standard

    Hier noch einmal zur Verdeutlichung, was ich machen würde:

    1. Beim Anklicken der Schaltfläche Wagen_1 wird ein Script Wagen_1 aufgerufen.

    2. In dem Script Wagen_1 werden den Variablen Index_DB und Index_DW_Nummer entsprechende Werte zugewiesen.

    3. Die Variable Wagen_Nummer_Index holt sich aus der SPS den entsprechenden Wert.

    4. Die Variable Wagen_Nummer_Index wird auf eine Wertänderung überwacht. Wenn sich die Variablen Index_DB und Index_DW_Nummer ändern, bekommt die Variable Wagen_Nummer_Index einen neuen Wert.

    5. Bei einer Wertänderung der Variablen Wagen_Nummer_Index wird das Script Wagen_Werte_lesen aufgerufen.

    6. In dem Script Wagen_Werte_lesen holt sich WinCC flexible alle Werte aus der SPS (Struktur) und über SQL aus dem Access-DB.

    Gruß Kai
    Angehängte Grafiken Angehängte Grafiken

  5. #25
    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

    Ich werde eure Vorschläge morgen mal testen.

    Und Danke euch beiden

    pylades

  6. #26
    Registriert seit
    12.05.2007
    Beiträge
    416
    Danke
    14
    Erhielt 45 Danke für 40 Beiträge

    Standard

    Hallo.

    Wie ist dein DB aufgebaut? Wenn es eine Struktur ist mit lauter gleichen Variablen kannst du dir den kompletten DB in einem Rutsch holen (ist dann auch nur ein SmartTag). Dann kannst du in der Hmi damit weiterarbeiten...

  7. #27
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.710
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Zitat Zitat von xhasx Beitrag anzeigen
    Hallo.

    Wie ist dein DB aufgebaut? Wenn es eine Struktur ist mit lauter gleichen Variablen kannst du dir den kompletten DB in einem Rutsch holen (ist dann auch nur ein SmartTag). Dann kannst du in der Hmi damit weiterarbeiten...
    Ich glaube, das ist nicht Sinn der Übung ...
    Außerdem lösst das auch nicht das Problem ...

  8. #28
    Registriert seit
    12.05.2007
    Beiträge
    416
    Danke
    14
    Erhielt 45 Danke für 40 Beiträge

    Standard

    Wieso nicht? Das Array holst du dir auf Anforderung. Das Entlastet schon mal deinen Hauptprozess. Und dann weisst du dass deine Daten konsistent sind. Ich hab damit gute Erfahrungen gemacht.

  9. #29
    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

    So,

    gestern kein Bock gehabt zum testen (zu warm)

    Heute mal den Vorschlag von Kai getestet und es sieht bis dato gut aus *freu*

    Schönen Dank euch beiden nochmal

    pylades

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von pylades Beitrag anzeigen
    Heute mal den Vorschlag von Kai getestet und es sieht bis dato gut aus *freu*

    Schönen Dank euch beiden nochmal
    Danke für die Rückmeldung.

    Gruß Kai

Ä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
  •