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

Ergebnis 1 bis 8 von 8

Thema: Variablen

  1. #1
    Registriert seit
    07.05.2016
    Beiträge
    179
    Danke
    45
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten Tag,

    es geht allgemein um Variablen welche in einem Projekt verwendet werden.

    Habe ich es richtig verstanden, dass zu einem Funktionsbaustein (FB) ein Datenbaustein (DB) gehört.

    In diesem Datenbaustein werden Statische Variablen abgelegt, welche im FB verwendet werden.

    Die Werte der statischen Variablen gehen nach mehreren Programmzyklen nicht verloren, es sein denn sie werden durch das Programm verändert.

    Wenn man FB1 - DB1 und FB2 -DB2 hat, kann FB1 auf DB2 zugreifen und Werte ändern.

    Dann gibt es noch die globalen Variablen (PLC-Variablen). Diese sind auch aus jeder FB/FC erreichbar und änderbar.

    Richtig?


    Warum ich das ganze frage: Ich habe vor ein paar Funktionen zu schreiben.
    Eine Funktion (read_inputs) soll die Eingänge der SPS einlesen und globale Input-Merker setzen.
    Die Input-Merker sollen allen Funktionen zur Verfügung stehen.
    Da die Funktion read_inputs zyklisch erfolgt, sind globale Input-Merker immer auf dem neusten stand.

    dementsprechend gibt es dann auch eine set_outputs Funktions. Diese beschreibt die Ausgänge der SPS nach den Output-Merkern
    welche im Programm in der Funktion verarbeitung gesetzt werden.

    Die Statischen Variablen sollten also die Variablen sein, welche nur die Funktion selber intern benötigt.

    Richtig?

    Bei den Variablen welche zwischen den Funktionen ausgetauscht werden sollen kann man auch globale variablen benutzen richtig?
    Zitieren Zitieren Variablen  

  2. #2
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Zitat Zitat von Neurorancer Beitrag anzeigen
    Guten Tag,

    es geht allgemein um Variablen welche in einem Projekt verwendet werden.

    Habe ich es richtig verstanden, dass zu einem Funktionsbaustein (FB) ein Datenbaustein (DB) gehört.

    JA

    In diesem Datenbaustein werden Statische Variablen abgelegt, welche im FB verwendet werden.

    Nicht nur diese, sondern auch In's, Out's, InOut's, etc.

    Die Werte der statischen Variablen gehen nach mehreren Programmzyklen nicht verloren, es sein denn sie werden durch das Programm verändert.

    Korrekt!

    Wenn man FB1 - DB1 und FB2 -DB2 hat, kann FB1 auf DB2 zugreifen und Werte ändern.

    Theoretisch möglich, sollte man aber tunlichst UNBEDINGT vermeiden.

    Dann gibt es noch die globalen Variablen (PLC-Variablen). Diese sind auch aus jeder FB/FC erreichbar und änderbar.

    Richtig?
    Wenn Du Global-DB's oder Merker meinst, ja.

    Warum ich das ganze frage: Ich habe vor ein paar Funktionen zu schreiben.
    Eine Funktion (read_inputs) soll die Eingänge der SPS einlesen und globale Input-Merker setzen.
    Die Input-Merker sollen allen Funktionen zur Verfügung stehen.
    Da die Funktion read_inputs zyklisch erfolgt, sind globale Input-Merker immer auf dem neusten stand.

    dementsprechend gibt es dann auch eine set_outputs Funktions. Diese beschreibt die Ausgänge der SPS nach den Output-Merkern
    welche im Programm in der Funktion verarbeitung gesetzt werden.

    Soll das eine universelle Schnittstelle der Peripherie zu einem (immer gleichen) Programm werden? Wenn ja, würde ich das vermeiden. (Es gibt aber auch Leute, die das gut finden, ich zähle da nicht dazu!)

    Die Statischen Variablen sollten also die Variablen sein, welche nur die Funktion selber intern benötigt.

    Richtig?

    Die Instanzvariablen, also auch die statischen sollte nur der Funktionsbaustein selbst beschreiben.

    Bei den Variablen welche zwischen den Funktionen ausgetauscht werden sollen kann man auch globale variablen benutzen richtig?

    Ja
    Siehe oben

  3. Folgender Benutzer sagt Danke zu borromeus für den nützlichen Beitrag:

    Neurorancer (29.06.2016)

  4. #3
    Neurorancer ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.05.2016
    Beiträge
    179
    Danke
    45
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Danke für die schnelle Antwort!

  5. #4
    Registriert seit
    12.04.2005
    Ort
    Black Forest
    Beiträge
    1.334
    Danke
    27
    Erhielt 129 Danke für 116 Beiträge

    Standard


    Habe ich es richtig verstanden, dass zu einem Funktionsbaustein (FB) ein Datenbaustein (DB) gehört.
    In diesem Datenbaustein werden Statische Variablen abgelegt, welche im FB verwendet werden.
    Die Werte der statischen Variablen gehen nach mehreren Programmzyklen nicht verloren, es sein denn sie werden durch das Programm verändert.
    Wenn man FB1 - DB1 und FB2 -DB2 hat, kann FB1 auf DB2 zugreifen und Werte ändern.
    Dann gibt es noch die globalen Variablen (PLC-Variablen). Diese sind auch aus jeder FB/FC erreichbar und änderbar.

    Richtig?
    Eigentlich Richtig, es sei ein Baustein wird speziel ,mit UC oder CC aufgerufen.
    Der Instanz Db ist das "Gedächniss des FBs", in diesem werden die statischen Variablen gespeichert
    Man vermeidet es aber Eigentlich außerhalb eines FBs bzw. innerhalb einens anderen FBs auf andere Instanz-Db schreibend zuzugreifen.


    Warum ich das ganze frage: Ich habe vor ein paar Funktionen zu schreiben.
    Eine Funktion (read_inputs) soll die Eingänge der SPS einlesen und globale Input-Merker setzen.
    Die Input-Merker sollen allen Funktionen zur Verfügung stehen.
    Da die Funktion read_inputs zyklisch erfolgt, sind globale Input-Merker immer auf dem neusten stand.

    dementsprechend gibt es dann auch eine set_outputs Funktions. Diese beschreibt die Ausgänge der SPS nach den Output-Merkern
    welche im Programm in der Funktion Verarbeitung gesetzt werden.

    Die Statischen Variablen sollten also die Variablen sein, welche nur die Funktion selber intern benötigt.

    Richtig?
    Das liegt an Dir ob dies so richtig ist oder nicht (IMHO).
    Beim Programmieren Richtig und Falsch zu beurteilen liegt halt immer auch im Auge und der Erfahrung des Betrachters.
    Da ist es einfacher zu sagen geht oder geht nicht ^^

    Das mit den Ein- / Ausgängen über z.B. einen DB oder Merker zugehen um in verschieden Programmen selbst immer auf dieselbe Variable zu verarbeiten findest öfters unter dem Begriff Mapping!
    Man könnte auch auf Symbolische Programmierung umstellen, dann macht man die Zuweisung der Symbolik zu den E/As halt über die Symboltabelle und passt dort Adressen zu den Symbolen an.
    Aber es gibt ja auch 1001 und einen Weg nach Rom. ..

    Problematisch könnten solche Dinge dann sein bei indirekten Zugriffen auf E/A Adressen in Funktionen.

    Bei den Variablen welche zwischen den Funktionen ausgetauscht werden sollen kann man auch globale variablen benutzen richtig?
    Ja, Richtig (wenn man zB Merker, Ausgänge und die DBs usw. als globale Variable betrachtet).
    Lokale Variablen sind ja eigentlich nur innerhalb der jeweiligen Bausteine Grenze gültig.

    „Eine Frage raubt mir den Verstand bin ich verrückt oder sind es die Anderen ?“

    Albert Einstein

  6. #5
    Registriert seit
    01.02.2011
    Ort
    Baesweiler bei Aachen
    Beiträge
    51
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Boxy Beitrag anzeigen
    Eigentlich Richtig, es sei ein Baustein wird speziel ,mit UC oder CC aufgerufen.
    Der Instanz Db ist das "Gedächniss des FBs", in diesem werden die statischen Variablen gespeichert
    Man vermeidet es aber Eigentlich außerhalb eines FBs bzw. innerhalb einens anderen FBs auf andere Instanz-Db schreibend zuzugreifen.
    Aber ich könnte doch Problemlos im FB1 lesend auf den Instanz DB eines anderes FBs zugreifen, oder spricht etwas dagegen?

  7. #6
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Zitat Zitat von Holle-52499 Beitrag anzeigen
    Aber ich könnte doch Problemlos im FB1 lesend auf den Instanz DB eines anderes FBs zugreifen, oder spricht etwas dagegen?
    Glaubensfrage!
    Ich persönlich halte das für schlechten Programmierstil. Ändert jemand den anderen FB verschieben sich u.U. Variablen, dann macht dein FB1 Probleme.
    Manchmal geht es nicht anders, Ausnahmen bestätigen wie immer die Regel.
    Ganz böse ist schreiben in fremde IDB, das kann noch mehr Seiteneffekte hervorrufen.
    Siemens z.B. macht ähnliches im Diagnose-FB für Profibus/Profinet. Aber da kann ich das verstehen, die nutzen den IDB-Inhalt gleich für die VISU (und nur dafür!) und das spart viel Umkopiererei von Daten in der SPS.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  8. #7
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Aber da kann ich das verstehen, die nutzen den IDB-Inhalt gleich für die VISU (und nur dafür!) und das spart viel Umkopiererei von Daten in der SPS.

    Alles korrekt, aber das sind nur IN, oder INOUT's.
    Niemals aber STAT's.
    Und schon gar nicht OUT's.

  9. #8
    Registriert seit
    12.04.2005
    Ort
    Black Forest
    Beiträge
    1.334
    Danke
    27
    Erhielt 129 Danke für 116 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Holle-52499 Beitrag anzeigen
    Aber ich könnte doch Problemlos im FB1 lesend auf den Instanz DB eines anderes FBs zugreifen, oder spricht etwas dagegen?
    Wie Ralle schon schrieb, manchmal geht es nicht anders.

    Gerade wenn es sich bei mehreren FBs um sagen wir einmal Funktionsgruppe dreht.
    Also mehrere FBs, welche zwangläufig zur Funktion zusammen genutzt werden.
    Da kommt solch etwas öfters vor.
    Aber da stellt sich dann die Frage, warum schreibt man dann nicht alles in einen FB?
    Da ist zB bei der neueren Generation der Bosch Steuerungen mit OOP schön, da kann man auch nur Teilfunktionen ansprechen (ist aber anderes Thema).

    Sobald jemand halt etwas an Variablen zwischen drin einfügt, stimmt halt dann der Zugriff in den anderen Bausteinen nicht mehr und man würde dann auf falsche Adressen zugreifen.
    (Bei uns in der Firma siehst es dann, das dort immer steht "neue Variablen nur hinten anfügen ..")
    Man spart sich halt dadurch die Versorgung von Eingangsparametern an dem jeweiligen FB.

    Wie es schon geschrieben wurde, es ist eigentlich kein schöner Programmierstill aber funktionell möglich

    „Eine Frage raubt mir den Verstand bin ich verrückt oder sind es die Anderen ?“

    Albert Einstein

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 11.03.2014, 10:04
  2. ANY Variablen
    Von rsu76 im Forum Simatic
    Antworten: 23
    Letzter Beitrag: 31.08.2010, 14:18
  3. Variablen
    Von Anger im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 06.04.2010, 15:12
  4. Antworten: 5
    Letzter Beitrag: 30.11.2009, 10:27
  5. IN-Out Variablen
    Von 1schilcher im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 10.07.2007, 12:03

Lesezeichen

Berechtigungen

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