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

Ergebnis 1 bis 9 von 9

Thema: PRODAVE

  1. #1
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,
    ich habe im Moment Problem mit dem PRODAVE.
    Alle Beispiele auf dem Handbuch ist in C geschrieben sogar auch die Grundparametrierung. Ich benutze ein RS232 PC-Adapter Kabel, wie kann ich meine Daten aus DB lesen??mit Hilfe der PRODAVE und unter Access anwendung.

    Das habe ich geschrieben :

    Option Compare Database

    Dim dbno As Long, dwno As Long, amount As Long
    Dim buffer(50) As Integer
    Dim plc_adr_table As String

    Private Sub Befehl0_Click()

    res = load_tool(1, "S7ONLINE", plc_adr_table)
    res = new_ss(1)

    res = db_read(10, 0, 1, buffer(0))
    res = unload_tool

    End Sub

    wie kann ich mit Visual Basic parametrieren???

    Besten Dank
    Zitieren Zitieren Gelöst: PRODAVE  

  2. "Hallo,
    Ich habe schon mit Excel-VBA Daten aus einem DB gelesen.

    Vielleicht hilft dir der Ausschnitt aus meinem Code weiter.
    Code:
    Option Private Module
    Option Explicit
    
    Type UDT_SPS_Adresse
        MPI_Nr As Byte
        Segment_ID As Byte
        Steckplatz_Nr As Byte
        Rack_Nr As Byte
    End Type
    
    ' Prodave Funktionen deklarieren
    Declare Function load_tool Lib "w95_s7.dll" (ByVal Nr As Byte, ByVal dev As String, adr As UDT_SPS_Adresse) As Long
    Declare Function d_field_read Lib "w95_s7.dll" (ByVal B_dbno As Long, ByVal B_dwno As Long, ByVal B_amount As Long, buffer As Byte) As Long
    Declare Function unload_tool Lib "w95_s7.dll" () As Long
    Declare Sub gp_to_float Lib "komfort.dll" (gp As Byte, s As Single)
    Declare Function testbit Lib "komfort.dll" (ByVal Bytewert As Byte, ByVal Bit_Nr As Integer) As Boolean
    Sub Daten_von_SPS_via_MPI_lesen()
    ' ******************************************************************************
    ' Daten aus der SPS lesen und als Aktualwerte in Register schreiben (7.7.2003)
    ' 1. Prüfen ob es sich beim Register um einen DB handelt.
    ' 2. Prüfen ob die DB-Nr.vorhanden ist.
    ' 3. Erste und Letzte Zeile bestimmen.
    ' 4. Prüfen ob ungültige absolute Adressen vorhanden sind.
    ' 5. Länge in Byte des gesammten DBs bestimmen
    ' 6. Abfrage der MPI und Steckplatz Nummer
    ' 7. Daten aus SPS lesen und in Array speichern
    ' 8. Schleife über alle Zeilen
    '    8.1 Datentyp ermitteln
    '    8.2 Daten umwandeln
    '    8.3 Anfangswert mit Aktualwert vergleichen
    '    8.4 Farbe bestimmen
    '    8.5 Schlüsselwort bestimmen
    '    8.6 Wert in Zelle schreiben
    ' 9. Meldung, wenn alle Aktualwerte gleich sind wie die Anfangswerte
    ' ******************************************************************************
    
    Dim DB_Nr As Integer
    Dim DBB_Nr As Long
    Dim Anzahl_Byte As Long
    Dim Byte_Adr As Long
    Dim Bit_Adr As Integer
    
    Dim SPS_Adresse(1) As UDT_SPS_Adresse
    Dim Puffer() As Byte
    
     
        ' Auswahldialog für die MPI-Schnittstelle
        frmMPI_Daten.Show
    
        ' Prüfen ob der Dialog abgebrochen wurde
        If frmMPI_Daten.ComboBox_Steckplatz.Value = "" Then
            ' Dialog wird aus dem Speicher wieder gelöscht
            Unload frmMPI_Daten
            Exit Sub
        End If
        
        ' Parameter für aktuelle Schnittstelle zur SPS
        SPS_Adresse(0).MPI_Nr = frmMPI_Daten.ComboBox_MPI_Nr.Value
        SPS_Adresse(0).Segment_ID = 0
        SPS_Adresse(0).Steckplatz_Nr = frmMPI_Daten.ComboBox_Steckplatz.Value
        SPS_Adresse(0).Rack_Nr = 0
        SPS_Adresse(1).MPI_Nr = 0
        
        ' Auswahldialog MPI-Schnittstelle wird aus dem Speicher gelöscht
        Unload frmMPI_Daten
        
         
        ' Schnittstelle zur SPS öffnen und ev.Fehler ausgeben
        On Error GoTo MPI_Fehler:
        If Not AG_Error(load_tool(1, "S7ONLINE", SPS_Adresse(0))) Then
        On Error GoTo 0
            
            Application.StatusBar = "Daten werden aus der SPS gelesen!"
            
            ' Datenbaustein-Nr. und Anzahl Byte bestimmen, die aus der SPS gelesen werden
            DB_Nr = Bausteindaten_lesen(Col_BausteinNr)
            DBB_Nr = 0
            Anzahl_Byte = Byte_Nr_aus_Adresse(ActiveSheet.Cells(Zeile_Ende + 1, Col_Adresse))
            
            ' Das Array wird vor dem lesen aus der SPS angepasst
            ReDim Puffer(Anzahl_Byte - 1)
            
            ' Datenbaustein wird byteweise aus SPS lesen und ev.Fehler ausgeben
            On Error GoTo DB_Nr_Fehler:
            If Not AG_Error(d_field_read(DB_Nr, DBB_Nr, Anzahl_Byte, Puffer(0))) Then
            On Error GoTo 0
                
                 
        
        Application.StatusBar = "Schnittstelle zur SPS wird geschlossen!"
        
        ' Schnittstelle zur SPS wieder schliessen und ev.Fehler ausgeben
        AG_Error (unload_tool())
        
        Application.StatusBar = "Daten wurde aus der SPS gelesen!"
        
        Exit Sub
    
    ' Fehlerroutinen
    ' --------------
    
    MPI_Fehler:
            
        ' Fehlermeldung Prodave ist nicht installiert
        MsgBox "Aktualwerte können nur aus der SPS gelesen werden, wenn" & Chr(13) & _
               "der Siemens Treiber ""Prodave"" oder ""Prodave-Mini"" installiert ist!", vbCritical, "MPI Kommunikationsfehler"
        
        Exit Sub
    
    DB_Nr_Fehler:
            
        ' Fehlermeldung DB-Nr ungültig
        MsgBox "DB-Nr. konnte nicht gelesen werden", vbCritical, "MPI Kommunikationsfehler"
    
        ' Schnittstelle zur SPS wieder schliessen und ev.Fehler ausgeben
        AG_Error (unload_tool())
        
    End Sub
    
    Function AG_Error(e_Error_Code As Integer) As Boolean
    '***************************************************************
    ' Prüfen ob bei der Kommunikation mit der SPS-Schnittstelle
    ' über MPI ein Fehler aufgetretten ist.
    ' Es werden nur die Fehlermeldungen im Klartext ausgegeben,
    ' welche beim lesen eines DBs auftretten können.
    ' -> Fehlerauswertung noch nicht fertig (30.06.2003)
    '***************************************************************
    Dim Fehlertext As String
    
        ' Prüfen ob ein Fehler aufgetretten ist
        If e_Error_Code = 0 Then
            AG_Error = False
        Else
            AG_Error = True
            
            Select Case Hex(e_Error_Code)
                Case "203"
                    Fehlertext = "PRODAVE schon initialisiert!" & Chr(13) & _
                                 "-> PC/PG neu starten"
                Case "303"
                    Fehlertext = "Bausteingrenze überschritten, Anzahl korrigieren!" & Chr(13) & _
                                 "Zu viele Daten wurden versucht aus der SPS zu lesen"
                Case "336"
                    Fehlertext = "keine Verbindung"
                Case "4002"
                    Fehlertext = "Verbindung zur SPS konnte nicht aufgebaut werden"
                Case Else
                    Fehlertext = "Allgemeiner Kommunikationsfehler" & Chr(13) & Chr(13) & _
                                 "Fehlercode mit Beschreibung bitte an ""glarnerm@solnet.ch"""
            End Select
            
            ' Fehlermeldung ausgeben
            MsgBox "Fehlercode: Hex " & Hex(e_Error_Code) & Chr(13) & Chr(13) & _
                   Fehlertext, vbCritical, "MPI Kommunikationsfehler"
        
        End If
    
    End Function
    "


  3. #2
    Registriert seit
    19.06.2003
    Beiträge
    197
    Danke
    10
    Erhielt 17 Danke für 13 Beiträge

    Standard

    Hallo,
    Ich habe schon mit Excel-VBA Daten aus einem DB gelesen.

    Vielleicht hilft dir der Ausschnitt aus meinem Code weiter.
    Code:
    Option Private Module
    Option Explicit
    
    Type UDT_SPS_Adresse
        MPI_Nr As Byte
        Segment_ID As Byte
        Steckplatz_Nr As Byte
        Rack_Nr As Byte
    End Type
    
    ' Prodave Funktionen deklarieren
    Declare Function load_tool Lib "w95_s7.dll" (ByVal Nr As Byte, ByVal dev As String, adr As UDT_SPS_Adresse) As Long
    Declare Function d_field_read Lib "w95_s7.dll" (ByVal B_dbno As Long, ByVal B_dwno As Long, ByVal B_amount As Long, buffer As Byte) As Long
    Declare Function unload_tool Lib "w95_s7.dll" () As Long
    Declare Sub gp_to_float Lib "komfort.dll" (gp As Byte, s As Single)
    Declare Function testbit Lib "komfort.dll" (ByVal Bytewert As Byte, ByVal Bit_Nr As Integer) As Boolean
    Sub Daten_von_SPS_via_MPI_lesen()
    ' ******************************************************************************
    ' Daten aus der SPS lesen und als Aktualwerte in Register schreiben (7.7.2003)
    ' 1. Prüfen ob es sich beim Register um einen DB handelt.
    ' 2. Prüfen ob die DB-Nr.vorhanden ist.
    ' 3. Erste und Letzte Zeile bestimmen.
    ' 4. Prüfen ob ungültige absolute Adressen vorhanden sind.
    ' 5. Länge in Byte des gesammten DBs bestimmen
    ' 6. Abfrage der MPI und Steckplatz Nummer
    ' 7. Daten aus SPS lesen und in Array speichern
    ' 8. Schleife über alle Zeilen
    '    8.1 Datentyp ermitteln
    '    8.2 Daten umwandeln
    '    8.3 Anfangswert mit Aktualwert vergleichen
    '    8.4 Farbe bestimmen
    '    8.5 Schlüsselwort bestimmen
    '    8.6 Wert in Zelle schreiben
    ' 9. Meldung, wenn alle Aktualwerte gleich sind wie die Anfangswerte
    ' ******************************************************************************
    
    Dim DB_Nr As Integer
    Dim DBB_Nr As Long
    Dim Anzahl_Byte As Long
    Dim Byte_Adr As Long
    Dim Bit_Adr As Integer
    
    Dim SPS_Adresse(1) As UDT_SPS_Adresse
    Dim Puffer() As Byte
    
     
        ' Auswahldialog für die MPI-Schnittstelle
        frmMPI_Daten.Show
    
        ' Prüfen ob der Dialog abgebrochen wurde
        If frmMPI_Daten.ComboBox_Steckplatz.Value = "" Then
            ' Dialog wird aus dem Speicher wieder gelöscht
            Unload frmMPI_Daten
            Exit Sub
        End If
        
        ' Parameter für aktuelle Schnittstelle zur SPS
        SPS_Adresse(0).MPI_Nr = frmMPI_Daten.ComboBox_MPI_Nr.Value
        SPS_Adresse(0).Segment_ID = 0
        SPS_Adresse(0).Steckplatz_Nr = frmMPI_Daten.ComboBox_Steckplatz.Value
        SPS_Adresse(0).Rack_Nr = 0
        SPS_Adresse(1).MPI_Nr = 0
        
        ' Auswahldialog MPI-Schnittstelle wird aus dem Speicher gelöscht
        Unload frmMPI_Daten
        
         
        ' Schnittstelle zur SPS öffnen und ev.Fehler ausgeben
        On Error GoTo MPI_Fehler:
        If Not AG_Error(load_tool(1, "S7ONLINE", SPS_Adresse(0))) Then
        On Error GoTo 0
            
            Application.StatusBar = "Daten werden aus der SPS gelesen!"
            
            ' Datenbaustein-Nr. und Anzahl Byte bestimmen, die aus der SPS gelesen werden
            DB_Nr = Bausteindaten_lesen(Col_BausteinNr)
            DBB_Nr = 0
            Anzahl_Byte = Byte_Nr_aus_Adresse(ActiveSheet.Cells(Zeile_Ende + 1, Col_Adresse))
            
            ' Das Array wird vor dem lesen aus der SPS angepasst
            ReDim Puffer(Anzahl_Byte - 1)
            
            ' Datenbaustein wird byteweise aus SPS lesen und ev.Fehler ausgeben
            On Error GoTo DB_Nr_Fehler:
            If Not AG_Error(d_field_read(DB_Nr, DBB_Nr, Anzahl_Byte, Puffer(0))) Then
            On Error GoTo 0
                
                 
        
        Application.StatusBar = "Schnittstelle zur SPS wird geschlossen!"
        
        ' Schnittstelle zur SPS wieder schliessen und ev.Fehler ausgeben
        AG_Error (unload_tool())
        
        Application.StatusBar = "Daten wurde aus der SPS gelesen!"
        
        Exit Sub
    
    ' Fehlerroutinen
    ' --------------
    
    MPI_Fehler:
            
        ' Fehlermeldung Prodave ist nicht installiert
        MsgBox "Aktualwerte können nur aus der SPS gelesen werden, wenn" & Chr(13) & _
               "der Siemens Treiber ""Prodave"" oder ""Prodave-Mini"" installiert ist!", vbCritical, "MPI Kommunikationsfehler"
        
        Exit Sub
    
    DB_Nr_Fehler:
            
        ' Fehlermeldung DB-Nr ungültig
        MsgBox "DB-Nr. konnte nicht gelesen werden", vbCritical, "MPI Kommunikationsfehler"
    
        ' Schnittstelle zur SPS wieder schliessen und ev.Fehler ausgeben
        AG_Error (unload_tool())
        
    End Sub
    
    Function AG_Error(e_Error_Code As Integer) As Boolean
    '***************************************************************
    ' Prüfen ob bei der Kommunikation mit der SPS-Schnittstelle
    ' über MPI ein Fehler aufgetretten ist.
    ' Es werden nur die Fehlermeldungen im Klartext ausgegeben,
    ' welche beim lesen eines DBs auftretten können.
    ' -> Fehlerauswertung noch nicht fertig (30.06.2003)
    '***************************************************************
    Dim Fehlertext As String
    
        ' Prüfen ob ein Fehler aufgetretten ist
        If e_Error_Code = 0 Then
            AG_Error = False
        Else
            AG_Error = True
            
            Select Case Hex(e_Error_Code)
                Case "203"
                    Fehlertext = "PRODAVE schon initialisiert!" & Chr(13) & _
                                 "-> PC/PG neu starten"
                Case "303"
                    Fehlertext = "Bausteingrenze überschritten, Anzahl korrigieren!" & Chr(13) & _
                                 "Zu viele Daten wurden versucht aus der SPS zu lesen"
                Case "336"
                    Fehlertext = "keine Verbindung"
                Case "4002"
                    Fehlertext = "Verbindung zur SPS konnte nicht aufgebaut werden"
                Case Else
                    Fehlertext = "Allgemeiner Kommunikationsfehler" & Chr(13) & Chr(13) & _
                                 "Fehlercode mit Beschreibung bitte an ""glarnerm@solnet.ch"""
            End Select
            
            ' Fehlermeldung ausgeben
            MsgBox "Fehlercode: Hex " & Hex(e_Error_Code) & Chr(13) & Chr(13) & _
                   Fehlertext, vbCritical, "MPI Kommunikationsfehler"
        
        End If
    
    End Function
    Gruss Martin

  4. #3
    Anonymous Gast

    Standard

    Tag,

    zu S5-Zeiten haben wir mal Prodave eingesetzt.

    Zumindest was die S7 betrifft gibt es Alternativen:

    PC-S7-Link (http:www.traeger.de)
    AGLink S7 (http:www.deltalogic.de)

    Ich bin mir nicht sicher, ich glaube in dem Downloadfile von Deltalogic sind eine ganze Menge Beispiele enthalten, unter anderem sogar eines für Excel.

    Wir haben aber keine Erfahrung damit, aber AGLink trifft man hin- und wieder an.

    G.
    Zitieren Zitieren Alternativen zu PRODAVE  

  5. #4
    Anonymous Gast

    Standard

    Sorry, dass ich die Links verpfuscht habe ...

    hier die direkten Links:

    http://www.traeger.de/Traegerfiles/s7link.htm

    http://www.deltalogic.de/kommunikation/agl-s7.htm
    Zitieren Zitieren Links verpfuscht  

  6. #5
    Anonymous Gast

    Standard

    Hallo

    ich habe einige anwendungen mit vb60 und s7 erstellt.
    zum prodave gibt's ein vb-beispiel
    hast du mit diesem kommunikation ?
    wenn ja wo genau liegt das problem ?

    gruss chris_w
    Zitieren Zitieren prodave  

  7. #6
    Registriert seit
    20.06.2003
    Beiträge
    39
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Also ich mache alle meine Visualisierungen mit ProDave und S7.
    Auf der ProDave CD sind Beispiele u.a. auch für VB.

  8. #7
    Registriert seit
    14.03.2006
    Ort
    Berlin
    Beiträge
    42
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    hi,

    plc_adr_table ist ein Typ und keine String Variable.
    Erstelle also einen eigenen Typ nach der vorgabe im Handbuch dann müsste es gehen.

    mfg Bossi

  9. #8
    Registriert seit
    26.02.2004
    Beiträge
    123
    Danke
    2
    Erhielt 9 Danke für 5 Beiträge

    Standard

    ... so nach zweieinhalb Jahren ist das Projekt erledigt so oder so.

  10. #9
    Registriert seit
    14.03.2006
    Ort
    Berlin
    Beiträge
    42
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hab ich leider zu spät gesehen von wann die Frage ist

Ähnliche Themen

  1. Prodave
    Von Ralle im Forum Hochsprachen - OPC
    Antworten: 8
    Letzter Beitrag: 04.10.2007, 13:32
  2. ProDave mit VB
    Von andrej_f im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 25.04.2007, 10:24
  3. Prodave !!
    Von moojoe im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 02.04.2007, 08:29
  4. Prodave und VBA
    Von Kojote im Forum Simatic
    Antworten: 18
    Letzter Beitrag: 18.06.2005, 00:25
  5. USB-Adapter für Prodave
    Von Kojote im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 16.06.2005, 07:39

Lesezeichen

Berechtigungen

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