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

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

Thema: Daten aus DB auslesen und speichern

  1. #1
    Registriert seit
    17.12.2010
    Beiträge
    20
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,
    hoffe jemand kann mit einen Tipp geben..

    Ich muss aus einem Datenbaustein 2 Messwerte auslesen und später auswerten.
    Gibt es die Möglichkeit diese beiden Werte z.B. alle 5 Sekunden abzuholen und in einem Excel-Sheet abzuspeichern?

    Kann mit vielleicht jemand ein Programm empfehlen mit dem das möglich ist ?

    Danke schonmal im Voraus
    Zitieren Zitieren Daten aus DB auslesen und speichern  

  2. #2
    Registriert seit
    22.10.2005
    Beiträge
    253
    Danke
    25
    Erhielt 23 Danke für 23 Beiträge

    Standard

    Hallo,
    die Fa. Träger hat eine Demo.
    http://www.traeger.de/downloads/sps-...-category.html

    Gruß
    joe

  3. #3
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Zitat Zitat von buhuu Beitrag anzeigen
    Ich muss aus einem Datenbaustein 2 Messwerte auslesen und später auswerten.
    Gibt es die Möglichkeit diese beiden Werte z.B. alle 5 Sekunden abzuholen und in einem Excel-Sheet abzuspeichern?

    Ein Programm will ich zunächst nicht empfehlen, aber es gibt die SuFu hier im Forum.
    Letzte Woche denke war dies schon einmal das Thema.

    Viel Erfolg


    bike

  4. #4
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Hier kann ich nicht widerstehen:
    Genau dafür wurde ACCON-S7-EasyLog entwickelt. Einfach einmal mit der Demo testen.

    @JoeJo:
    Das Teil von Alois Träger ist eine Kommunikationsbibliothek wie libnodave, ACCON-AGLink, ... Da es sich dabei um keine fertige Lösung handelt, kann und muss die Anwendung dann selbst erstellt werden.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  5. #5
    buhuu ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    17.12.2010
    Beiträge
    20
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo
    Danke für den Tipp..
    Ich hoffe mit der Demo kann ich den vollen Umfang des Programms testen.

  6. #6
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Zitat Zitat von buhuu Beitrag anzeigen
    Ich hoffe mit der Demo kann ich den vollen Umfang des Programms testen.
    Aber sicher, ist nur über die Laufzeit eingeschränkt.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  7. #7
    Registriert seit
    15.12.2010
    Beiträge
    35
    Danke
    0
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Du kannst Dir auch mal HSDBASE anschauen. Damit kann man wahlweise in CSV-Dateien (lässt sich dann mit Excel öffnen), Access- oder MySQL-Datenbanken schreiben. Eine zyklusgenaue Aufzeichnung ist ebenfalls möglich.
    Mit der Demo kann der volle Funktionsumfang getestet werden.

  8. #8
    buhuu ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    17.12.2010
    Beiträge
    20
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Vielen Dank für eure Tipps..
    Ich habe mich im ersten Schritt mal etwas mit dem Accon-Tool beschäftigt.
    Im Tutorial habe ich leider nur herausgefunden wie man auf Merker zugreift wie geht es aber auf einen Datenbaustein ?
    Ich habe um DB1 2 Variablen
    Name Datentyp Offset
    Zahl 1 int 0.0
    Zahl 2 int 2.0

    Es ist zum Test eine S7-1200...

  9. #9
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Einfach wie bei der S7 gewohnt DB1.DBW0 bzw. DB1.DBW2 angeben. Wichtig ist, dass das Häkchen "symbolische Adressierung" beim ANLEGEN des DBs nicht gesetzt war. Sonst funktioniert der Zugriff nicht. Ein nächträgliches Entfernen hat keine Auswirkung.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  10. #10
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Code:
    *
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data;
    using System.Data.OleDb;
    using S7;
    
    
    namespace lib
    {
        class Program
        {
    
            public static void Main(string[] args)
            {            
                S7.PLC plc = null;   
                string gsConnectionString="Provider=SQLOLEDB.1;"+
                                        "Password=*****;"+
                                        "Persist Security Info=True;"+
                                        "User ID=app-user;"+
                                        "Initial Catalog=*****;"+
                                        "Data Source=*****\\SQLEXPRESS";
                OleDbConnection gc_DBConnection = new OleDbConnection(gsConnectionString);           
                OleDbCommand gCm_DBCommand = new OleDbCommand();
                OleDbDataAdapter gDa_DataAdapter = new OleDbDataAdapter();
                string gsSQLQuery;
    
                DataSet _DsCounter = new DataSet();
                gsSQLQuery = "SELECT [HOST], [FIELD], conf_Counter.[FUNCTION] FROM conf_Counter, proc_CounterReset WHERE conf_Counter.[FUNCTION] = [proc_CounterReset].[FUNCTION] AND [VALUE] = 'True'";
                gCm_DBCommand.CommandText = gsSQLQuery;
                gCm_DBCommand.Connection = gc_DBConnection;
                gDa_DataAdapter.SelectCommand = gCm_DBCommand;
                gDa_DataAdapter.Fill(_DsCounter);
    
                gCm_DBCommand.Connection = gc_DBConnection;
                gCm_DBCommand.Connection.Open();
                foreach (DataRow _Row in _DsCounter.Tables[0].Rows)
                {
                    plc = new PLC(CPU_Type.S7300, _Row.ItemArray[0].ToString(), 0, 2);
                    ErrorCode errCode = plc.Open();
                    if (errCode == ErrorCode.NoError)
                    {
                        plc.Write(_Row.ItemArray[1].ToString(), 1);
                        gsSQLQuery = "UPDATE proc_CounterReset SET [VALUE]='False' WHERE [FUNCTION] = '" + _Row.ItemArray[2].ToString() + "'";
                        gCm_DBCommand.CommandText = gsSQLQuery;
                        gCm_DBCommand.ExecuteNonQuery();
                    }
                }
                gCm_DBCommand.Connection.Close();
    
                _DsCounter = new DataSet();
                gsSQLQuery = "SELECT [HOST], [FIELD], conf_Counter.[FUNCTION] FROM conf_Counter, proc_Counter WHERE conf_Counter.[FUNCTION] = [proc_Counter].[FUNCTION]";
                gCm_DBCommand.CommandText = gsSQLQuery;
                gCm_DBCommand.Connection = gc_DBConnection;
                gDa_DataAdapter.SelectCommand = gCm_DBCommand;
                gDa_DataAdapter.Fill(_DsCounter);
    
                gCm_DBCommand.Connection = gc_DBConnection;
                gCm_DBCommand.Connection.Open();
                foreach (DataRow _Row in _DsCounter.Tables[0].Rows)
                {
                    plc = new PLC(CPU_Type.S7300, _Row.ItemArray[0].ToString(), 0, 2);
                    ErrorCode errCode = plc.Open();
                    if (errCode == ErrorCode.NoError)
                    {
                        UInt32 b1;
                        if(_Row.ItemArray[2].ToString().IndexOf("LEV")<0)
                            b1 = (UInt32)plc.Read(_Row.ItemArray[1].ToString());
                        else
                            b1 = (UInt16)plc.Read(_Row.ItemArray[1].ToString());
                        
                        gsSQLQuery = "UPDATE proc_Counter SET [VALUE]='" + b1 + "' WHERE [FUNCTION] = '" + _Row.ItemArray[2].ToString() + "'";
                        gCm_DBCommand.CommandText = gsSQLQuery;
                        gCm_DBCommand.ExecuteNonQuery();
                    }
                }
                gCm_DBCommand.Connection.Close();
            }
        }
    }
    mit S7.net
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

Ähnliche Themen

  1. Antworten: 12
    Letzter Beitrag: 01.11.2011, 22:33
  2. S7-200 Daten remanent Speichern
    Von godi im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 10.09.2008, 16:02
  3. Daten speichern und auslesen
    Von PsYchO_LoGiC im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 11.02.2008, 10:07
  4. Daten speichern in der SPS / ausserhalb der SPS
    Von MSP im Forum Programmierstrategien
    Antworten: 16
    Letzter Beitrag: 30.06.2005, 19:33
  5. Daten speichern
    Von Sascha77 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 11.03.2004, 06:33

Lesezeichen

Berechtigungen

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