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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 25

Thema: S7: Keine Benutzer definierte Datentypen bei InOut-Variablen möglich?

  1. #11
    Registriert seit
    29.06.2012
    Beiträge
    126
    Danke
    13
    Erhielt 19 Danke für 19 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Es gibt gewisse Programmierregeln, an die man sich halten sollte, genau wie ich z.B. meine Hausinstallation nach bestimmten Regeln ausführe. Ich ziehe meine Leitungen ja auch nicht diagonal quer durch den Raum, obwohl das rein technisch natürlich auch funktionieren würde. IN/OUT/INOUT sind als Schnittstellen zum Datenaustausch mit einem FB gedacht und nur über diese Schnittstellen sollte man auch mit dem FB arbeiten. Auf IDBs wird überhaupt nicht zugegriffen, weder lesend noch schreibend, auch wenn das technisch natürlich möglich ist.

  2. Folgender Benutzer sagt Danke zu Slaine für den nützlichen Beitrag:

    PN/DP (26.02.2016)

  3. #12
    Automatinator ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    11.09.2014
    Beiträge
    101
    Danke
    13
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von Slaine Beitrag anzeigen
    Es gibt gewisse Programmierregeln, an die man sich halten sollte, genau wie ich z.B. meine Hausinstallation nach bestimmten Regeln ausführe. Ich ziehe meine Leitungen ja auch nicht diagonal quer durch den Raum, obwohl das rein technisch natürlich auch funktionieren würde. IN/OUT/INOUT sind als Schnittstellen zum Datenaustausch mit einem FB gedacht und nur über diese Schnittstellen sollte man auch mit dem FB arbeiten. Auf IDBs wird überhaupt nicht zugegriffen, weder lesend noch schreibend, auch wenn das technisch natürlich möglich ist.
    Ja das ist klar, aber wir reden ja hier von INOUT Variablen.
    Du hast schlecht angefangen doch gegen Ende stark nachgelassen,
    aber auch ein blindes Huhn kann die Zeit nicht zurück drehen,
    denn Schweizerische Wissenschaftler haben herausgefunden
    nachdem man ihnen den Ausgang zeigte.

  4. #13
    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

    Vielleicht einmal zum besseren Verständnis der bisherigen Einwände :
    Ein Baustein hat eine Schnittstelle (IN, INOUT , OUT). Über diese Schnittstelle wird die Verbindung von "innen im Baustein" nach "außerhalb von Baustein" hergestellt. Das heißt, dass alle Variablen, die der Baustein benötigt ihm über die IN- und INOUT-Schnittstelle zur Verfügung gestellt werden. Des gleichen stellt er seine Ergebnisse über die OUT- und INOUT-Schnittstelle nach aussen zur Verfügung.
    Wenn du ein sauberes Programm erstellen möchtest dann hältst du dich an diese doch recht einfache Regel. Man könnte dazu auch sagen "best practise" ...

    Natürlich hast du recht : man kann bei einem FB auch auf alle diese Variablen (und zusätzlich über den STAT-Bereich des internen Speichers) auch über den zugehörigen Instanz-DB zugreifen - sowohl lesend wie auch schreibend. Wenn du eine richtig tolles, für uneingeweihte (und irgendwann auch für dich) schwer nachvollziehbares Programm erstellen möchtest dann ist dies genau der Weg ... und das ist auch der Grund, warum manch einer (mich eingeschlossen) diese Vorgehensweise nicht so toll findet.
    Aber wie du schon schreibst - es geht - also mach es und werde glücklich damit ...

    Gruß
    Larry

  5. #14
    Automatinator ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    11.09.2014
    Beiträge
    101
    Danke
    13
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Vielleicht einmal zum besseren Verständnis der bisherigen Einwände :
    Ein Baustein hat eine Schnittstelle (IN, INOUT , OUT). Über diese Schnittstelle wird die Verbindung von "innen im Baustein" nach "außerhalb von Baustein" hergestellt. Das heißt, dass alle Variablen, die der Baustein benötigt ihm über die IN- und INOUT-Schnittstelle zur Verfügung gestellt werden. Des gleichen stellt er seine Ergebnisse über die OUT- und INOUT-Schnittstelle nach aussen zur Verfügung.
    Wenn du ein sauberes Programm erstellen möchtest dann hältst du dich an diese doch recht einfache Regel. Man könnte dazu auch sagen "best practise" ...

    Natürlich hast du recht : man kann bei einem FB auch auf alle diese Variablen (und zusätzlich über den STAT-Bereich des internen Speichers) auch über den zugehörigen Instanz-DB zugreifen - sowohl lesend wie auch schreibend. Wenn du eine richtig tolles, für uneingeweihte (und irgendwann auch für dich) schwer nachvollziehbares Programm erstellen möchtest dann ist dies genau der Weg ... und das ist auch der Grund, warum manch einer (mich eingeschlossen) diese Vorgehensweise nicht so toll findet.
    Aber wie du schon schreibst - es geht - also mach es und werde glücklich damit ...
    Wie gesagt, ich rede von INOUT-Variablen. Keine Statischen.
    Du hast schlecht angefangen doch gegen Ende stark nachgelassen,
    aber auch ein blindes Huhn kann die Zeit nicht zurück drehen,
    denn Schweizerische Wissenschaftler haben herausgefunden
    nachdem man ihnen den Ausgang zeigte.

  6. #15
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.725
    Danke
    314
    Erhielt 1.519 Danke für 1.282 Beiträge

    Standard

    Zitat Zitat von Automatinator Beitrag anzeigen
    Wie gesagt, ich rede von INOUT-Variablen. Keine Statischen.
    Es ist doch ganz einfach:
    Einen Speicher den es im IDB nicht gibt, kannst du auch nicht Lesen/Schreiben.
    Der UDT wird als InOutVar nur als Pointer übergeben, und folglich steht im IDB auch nur eine Adresse (der außen angelegten passenden Variable) im PointerFormat, nicht jedoch die Daten des UDTs ansich.
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  7. #16
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.618
    Danke
    775
    Erhielt 646 Danke für 492 Beiträge

    Standard

    Das fällt aber auch auf wenn man das Programm ohne beschalteten INOUT auf die CPU runterläd wenn man INOUT als erweiterten Datentyp deklariert.

    Dann geht die CPU auf Stop bzw ruft einen zugriffsfehlerOB auf.

    mfG René

  8. #17
    Automatinator ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    11.09.2014
    Beiträge
    101
    Danke
    13
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von MSB Beitrag anzeigen
    Es ist doch ganz einfach:
    Einen Speicher den es im IDB nicht gibt, kannst du auch nicht Lesen/Schreiben.
    Der UDT wird als InOutVar nur als Pointer übergeben, und folglich steht im IDB auch nur eine Adresse (der außen angelegten passenden Variable) im PointerFormat, nicht jedoch die Daten des UDTs ansich.
    Jup, das weiss ich jetzt auch, ist trotzdem schade das es so ist...
    Du hast schlecht angefangen doch gegen Ende stark nachgelassen,
    aber auch ein blindes Huhn kann die Zeit nicht zurück drehen,
    denn Schweizerische Wissenschaftler haben herausgefunden
    nachdem man ihnen den Ausgang zeigte.

  9. #18
    Registriert seit
    01.10.2012
    Beiträge
    203
    Danke
    12
    Erhielt 56 Danke für 36 Beiträge

    Standard

    Also in InstanzDBs rumgrapschen ist ganz pfui, da schliesse ich mich meinen Vorrednern an.

    Wenn du in den Stat Variablen des FB die UDT als Variable deklarierst, kannst du dann im Anweisungsteil die I/O Variable in die Stat Variable kopieren und das dann auch im IDB anschauen. Wenn es das ist was du willst.
    Nüchtern betrachtet war es besoffen besser.

  10. #19
    Automatinator ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    11.09.2014
    Beiträge
    101
    Danke
    13
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von Bapho Beitrag anzeigen
    Also in InstanzDBs rumgrapschen ist ganz pfui, da schliesse ich mich meinen Vorrednern an.

    Wenn du in den Stat Variablen des FB die UDT als Variable deklarierst, kannst du dann im Anweisungsteil die I/O Variable in die Stat Variable kopieren und das dann auch im IDB anschauen. Wenn es das ist was du willst.
    In InstanzDBs rumgrapschen ist 'pfui', das ist so, dass ist klar und ne stat Var anlegen vom gleichen Typ ist auch klar, nevertheless könnt auch die INOUT eine normale, nicht-pointer Variable sein...
    Geändert von Automatinator (29.02.2016 um 14:58 Uhr)
    Du hast schlecht angefangen doch gegen Ende stark nachgelassen,
    aber auch ein blindes Huhn kann die Zeit nicht zurück drehen,
    denn Schweizerische Wissenschaftler haben herausgefunden
    nachdem man ihnen den Ausgang zeigte.

  11. #20
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.725
    Danke
    314
    Erhielt 1.519 Danke für 1.282 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Automatinator Beitrag anzeigen
    nevertheless könnt auch die INOUT eine normale, nicht-pointer Variable sein...
    Warum eigentlich?
    Das du den SPS Speicher vollbekommst?
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 22.04.2015, 09:40
  2. TIA TIA absturz bei syb von Datentypen
    Von emilio20 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 21.12.2014, 17:30
  3. Codesy Speicherbelegung bei INOUT
    Von SY50 im Forum CODESYS und IEC61131
    Antworten: 9
    Letzter Beitrag: 10.03.2013, 15:59
  4. Datentypen bei Profibusslaves
    Von Howie im Forum Feldbusse
    Antworten: 1
    Letzter Beitrag: 12.01.2010, 17:09
  5. Keine Bitmeldung möglich
    Von Bensen83 im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 16.09.2009, 09:31

Stichworte

Lesezeichen

Berechtigungen

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