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

Ergebnis 1 bis 7 von 7

Thema: Allgemeine Fragen zu Libnodave und der S7_1200 bzw TIA

  1. #1
    Registriert seit
    02.10.2014
    Beiträge
    1
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    aufgrund der unzureichenden Lehre im Bereich der Automatisierungs-Technik an meiner Uni, habe ich mich für eine Projektarbeit entschieden, wo ich gezwungen bin mir den Großteil davon selbst bei zubringen. Über ein wenig erfahrende Hilfe würde ich mich aber dennoch sehr freuen. Unsere Aufgabe ist es einen alten Versuchsstand für Praktika zum Thema Füllstandsreglung mit einer SPS auszustatten. Diese soll über ein Computerprogramm angesteuert werden, sodass nachfolgenden Studenten sich praktisch an der Regelungstechnik probieren können. Meine Aufgabe ist die reine Programierung der Benutzeroberfläche am PC. Wie man eine SPS programmiert habe ich noch keine Ahnung, da der für diesen Teil zuständige Student erst im November beginnt.

    Als SPS nutzen wir eine S7-1200 DC/DC/DC mit TIA V12. Ich habe es schon geschafft der SPS eine IP zuzuweisen und ein kleines Programm mit Funktionsbausteinen zu erstellt. Desweiteren habe ich über das Testprogramm"testISO_TCP.exe" von Libnodave mit Hilfe alter Foreneinträge eine Verbindung mit der SPS hergestellt, was jedoch nur mit --slot=1 funktioniert. Leider habe ich es nur geschafft in FW=0 zu lesen und zu schreiben aber nicht im DB1. In anderen Threads habe ich gelesen das der DB in der SPS nicht optimiert sein darf. In TIA V12 habe ich beim Erstellen einer DB leider keine Checkbox für diese Option gefunden. Es war mir nur möglich nach dem erstellen der DB über Rechtsklick->Eigenschaften den optimierten Bausteinzugriff zu deaktivieren. Ist dies ausreichend ? Oder liegt der Fehler wo anders ? Ich hänge eine .txt mit den debugg Infos mal an. Denke mal das die Zeile die wichtige ist.
    _daveTestReadResult() returned: 5=the desired address is beyond limit for this PLC failed! (5)
    Leider weiß ich nicht was genau ich ändern muss.

    Die nächste Frage ist, kann ich einfach ein DB erstellen in den ich sagen wir mal 10 Variablen definiere und meine Programm so schreiben das diese gelesen und beschrieben werden. Und der spätere SPS-Programmierer nutzt diese dann für sein Programm. Oder muss erst das SPS-Programm stehen und ich muss mir dann die genauen Adressen, die ich auslesen und umschreiben soll, sagen lassen ?

    Ich hoffe ich konnte detailliert genug wiedergeben was mein anliegen ist.

    Gruß Sebastian
    Angehängte Dateien Angehängte Dateien
    Zitieren Zitieren Allgemeine Fragen zu Libnodave und der S7_1200 bzw TIA  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Bei einer 1200 ist Rack = 0 und Slot = 1 richtig.

    Du kannst wie schon erkannt mit Libnodave bei einer 1200 nur auf Bausteine mit nicht gesetztem Haken bei "Optimierter Bausteinzugriff" zugreifen.
    Wenn du die Option deaktivierst und den Baustein neu übersetzt, bekommst du eine Spalte "Offset" mit entsprechenden Werten eingeblendet. Diese Werte benötigst du für den Zugriff mit Libnodave.
    Angenommen du hast im DB eine Variable vom Typ Int an Offsetadresse 20, dann müsstest du mit libnodave ab Adresse 20 zwei Bytes einlesen, um den Wert dieser Variable auszulesen.

    Wenn du den DB und die Adressen auf die zu zugreifst festgelegt hast, solltest du an dem DB nichts mehr einfügen, höchstens hinten anhängen. Sonst müsstest du bei deiner libnodave-Anwendung die Verschiebungen ebenfalls nachpflegen.
    Darum solltest du dem Anwender des SPS-Programmes mitteilen, dass er an diesem Datenbaustein nur in Abstimmung mit demjenigen der den Kommunikationspartner programmiert etwas ändern darf.

  3. #3
    Registriert seit
    19.03.2014
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    ich versuche mich derzeit auch mit der S7-1200 und "libnodave". Ich nutze Visual Studio 2013 Ultimate (Studentenversion) und Windows 8. Weiterhin ist das Tia-V12-Portal im Einsatz und die CPU1215C DC/DC/Rly. Nun habe ich im Netz schon diverse Bibliotheken gesucht, gefunden und teilweise probiert. Als erstes habe ich die "IPS7Lnk.Advanced" von "Traeger.de" ausprobiert und es funktioniert so wie auf der Homepage beschrieben. Jetzt wollte ich die "libnodave" bzw. die modifizierte "DotNetSiemensPLCToolBoxLib" testen. Leider ohne Erfolg. Auch mit den Beispielprojekten kann ich nicht nachvollziehen, warum es bei mir nicht klappt. Ich habe zunächst die "DotNetSiemensPLCToolBoxLib" als Verweis hinzugefügt inkl. Using-direktive. Der Code lässt sich ausführen. Die auszulesenden Werte aus dem Datenbaustein bekomme ich allerdings nicht auf den Schirm. Parallel zu VS gucke ich live auf den Datenbaustein im Tia-Portal.

    Hier der Code:

    Code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using DotNetSiemensPLCToolBoxLibrary.Communication;
    
    namespace
     WindowsFormsApplication5
    
    {
    
        
    publicpartialclassForm1 : Form
    
        {
    
            
    PLCConnectionConfiguration myConfig;     
    PLCConnection myConn;     
    PLCTag myTag;
            
    public Form1()
    
            {
                InitializeComponent();
            }
           
    privatevoid Form1_Load(object sender, EventArgs e)
    
            {
    
                myConfig = new PLCConnectionConfiguration("myConnection");
    
                myConfig.CpuIP = "172.17.1.20";
    
                myConfig.CpuRack = 0;
    
                myConfig.CpuSlot = 1;
    
    
                
    Configuration.ShowConfiguration("myConnection", true);
    
    
                myConn = new PLCConnection(myConfig);
    
                myTag = new PLCTag("DB300.DBB14", DotNetSiemensPLCToolBoxLibrary.DataTypes.TagDataType.Dint);
    
    
                
    //myTag.DataBlockNumber = 300;         
    //myTag.ByteAddress = 14;         
    //myTag.BitAddress = 0;
    
                myConn.Connect();
                
    //myConn.Dispose();          
    
            }
          
    privatevoid button1_Click(object sender, EventArgs e)
    
            {
                
    string text;// = myConn.PLCGetState().ToString();
    
                text = myTag.ValueAsString;
            
    //text = myConn.ReadValue("DB300.DBB14").ToString();
    
                textBox1.Text = text;
            }
        }
    }
    
    Mit dem Fenster "ShowConfiguration" lässt sich die Verbindung zur CPU aufbauen. Mit "myConn.PLCGetState()" wird mir "Stopped" ausgegeben. Auch der Versuch mit "myConn.PLCStart()" brachte hier keine Abhilfe. Habe ich die Adresse des Datenbereiches falsch deklariert? Hierbei habe ich auch schon mehrere Wege versucht, wobei mir entweder "0" oder " " (nichts) angezeigt wird. Der Datenbausteinzugriff erfolgt nicht optimiert, sodass ich die entsprechende Offset-Adresse angezeigt bekomme.

    Grüße

  4. #4
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Denke der PLCState wird mit der 1200er nicht klappen, da diese Telegramme glaube nicht identisch mit der 300/400er sind. Und in libnodave und meiner Bibliothek sind die nur für 300/400er bisher implementiert. DB auslesen sollte gehen (hab Ich aber noch nie getestet (hab keine 1200er)). Was hast du als Rack/Slot eingestellt? Der DB ist auf absoluten Zugriff parametriert?
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  5. #5
    Registriert seit
    19.03.2014
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    ich habe gerade noch ein wenig getestet:

    - über "mytag" als Variable kann ich auf keine Werte im DB über die vorhandenen Methoden zugreifen
    - auch die explizite Konvertierung von "myTag.Value" in "short" oder "int" spuckt mir ne "System.NullReferenceException" aus, obwohl "myTag" zuvor angelegt und mit dem Wert 111 initialisiert

    - mit dem Aufruf "text = myConn.ReadValue("DB300.DBD14").ToString();" ist es doch möglich die Daten auszulesen (Ich hatte DBB14 )

    - Rack = 0 / Slot = 0 --> funktioniert
    - Rack = 0 / Slot = 1 --> funktioniert
    - Rack = 0 / Slot = 2 --> funktioniert nicht

    - Schreiben in den DB funktioniert auch, wenn ich zuvor "myTag.Value" mit einem Wert initialisiert wird und ich die Funktion "myConn.WriteValue(myTag)" anwende

    Grüße

  6. #6
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Zitat Zitat von dorfler1000 Beitrag anzeigen
    Hallo,

    ich habe gerade noch ein wenig getestet:

    - über "mytag" als Variable kann ich auf keine Werte im DB über die vorhandenen Methoden zugreifen
    - auch die explizite Konvertierung von "myTag.Value" in "short" oder "int" spuckt mir ne "System.NullReferenceException" aus, obwohl "myTag" zuvor angelegt und mit dem Wert 111 initialisiert

    - mit dem Aufruf "text = myConn.ReadValue("DB300.DBD14").ToString();" ist es doch möglich die Daten auszulesen (Ich hatte DBB14 )

    - Rack = 0 / Slot = 0 --> funktioniert
    - Rack = 0 / Slot = 1 --> funktioniert
    - Rack = 0 / Slot = 2 --> funktioniert nicht

    - Schreiben in den DB funktioniert auch, wenn ich zuvor "myTag.Value" mit einem Wert initialisiert wird und ich die Funktion "myConn.WriteValue(myTag)" anwende

    Grüße
    Das setzen der Value eigenschaft des Tag Objektes setzt in Wirklichkeit nicht den Value sondern "ControlValue". Das hab Ich mal eingebaut das man den Tag direkt in WPF Binden kann. Der Value wird erst nach dem lesen gefüllt...
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo nochmal,

    gibt es zu deiner Bibo auch eine Dokumentation der einzelnen Klassen? Ich würde auch Bibliotheken für Schneider Steuerungen (M340) benötigen, konnte aber bisher nichts finden, was der LibNoDave etc. für Siemens ähnelt. Kennt da jemand etwas?

    Grüße

Ähnliche Themen

  1. Allgemeine Fragen zu S7 1200
    Von emilio20 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 28.11.2012, 09:04
  2. Allgemeine Fragen
    Von Horschd im Forum HMI
    Antworten: 1
    Letzter Beitrag: 21.10.2011, 20:49
  3. allgemeine Fragen
    Von Tiger30 im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 04.08.2009, 10:07
  4. Allgemeine fragen bezüglich S7
    Von Kraft im Forum Simatic
    Antworten: 24
    Letzter Beitrag: 15.07.2007, 17:02
  5. Allgemeine Fragen zu WinCC
    Von Bender25 im Forum HMI
    Antworten: 12
    Letzter Beitrag: 22.03.2005, 15:01

Lesezeichen

Berechtigungen

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