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

Ergebnis 1 bis 9 von 9

Thema: Array

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo.
    Ich habe da ein Problem das ganze ist eine Übung aus einem Siemens Kurs OKPPRO2.
    Folgendes:
    Ich erstelle ein UDT5 mit 2 Parametern in BOOL " Start" , "Stop".
    Dann ein FC 23 mit in_out Variablen ein Array [1..3] of UDT5.
    Danach habe ich ein kleines Prog im FC23 geschrieben um die beiden Variablen zu verarbeiten.
    Bis hier geht es ja noch.
    Rufe ich den FC23 im OB1 auf und will er einen Aufrufparameter in Form eines Array´s haben.Ich finde trotz intensiver suche keine Lösung. Wie muss dieser Parameter geschrieben werden?

    Ich habe schon versucht ein DB zu erstellen mit der Vorlage des UDT5.
    Aber Parameter in Form von DB1.DBD0 o. ä. nimmt der FC 23 auch nicht an.

    Bitte um Eure Hilfe. Danke

    Gruß Rainer
    Zitieren Zitieren Array  

  2. #2
    Registriert seit
    06.10.2003
    Beiträge
    3.403
    Danke
    447
    Erhielt 502 Danke für 406 Beiträge

    Standard

    Hallo Rainer,

    schließe mal alle Editoren und markiere den Bausteinordner. Dann Bearbeiten-Bausteinkonsistenz prüfen und "Alles übersetzen".


    Gruß, Onkel
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  3. #3
    Registriert seit
    19.08.2004
    Beiträge
    46
    Danke
    5
    Erhielt 8 Danke für 5 Beiträge

    Standard

    1- ein DB erstellen z.B DB 123
    2- In diesem DB dann eine Array-Variable definieren z.B VAR[1..3] Typ UDT5
    3- Wenn du im FC 23 als InVariable ein Array vom gleichen Typ definiert hast, kannst du beim Aufruf von FC 23 als Variable DB123.VAR übergeben (ohne Index, nur den Namen der Variablen)
    -------------
    Für Wertezuweisung oder Abfrage im FC 23 dann

    U InVariable[x].Start
    UN InVariable[y].Stop
    = IrgendEtwas


    Willst du die Werte vor dem Aufruf manipulieren, dann
    .....Bedingung 1
    .....Bedingung 2
    = DB 123.VAR[1].Start


    usw.....

  4. #4
    Registriert seit
    19.06.2003
    Beiträge
    23
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Da komme ich noch nicht so recht mit weiter.
    Als Hinweis nochmal im FC 23 habe ich eine IN_OUT Variable mit dem Namen "Antrieb" Array[1..3]of UDT5.
    Dann ein Prog mit RS Baustein und schalte ein Ausgang das ganze 3 mit den entspr. Parameter.
    Wird jetzt der FB 23 im OB1 aufgerufen verlangt er einen IN_OUT Parameter "Antrieb" in Form eines "ARRAY´s". Ansonsten gibt es nur noch EN und ENO.
    Meine Frage ist wie der Parameter "Antrieb" geschrieben werden muss.
    Oder ist das ganze Bspl. daneben?

  5. #5
    Registriert seit
    19.06.2003
    Beiträge
    23
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Sinus Quadraht,
    ich habe deine Version nochmal eingetippt, da habe ich das gleiche Problem.

  6. #6
    Registriert seit
    06.10.2003
    Beiträge
    3.403
    Danke
    447
    Erhielt 502 Danke für 406 Beiträge

    Standard

    Hallo Rainer,

    deklariere den IN_OUT der FC als UDT, nicht als ARRAY[1..3] of UDT, dann kannst du den Parameter in Form von "MEINDB".MEINUDT[1] anlegen. Hoffe, ich habe dein Anliegen richtig verstanden.
    Mit Parameter als ARRAY hätte es nach SinusQuadrat aber gehen müssen! Hast du mal meinen ersten Hinweis befolgt?

    Gruß, Onkel
    Geändert von Onkel Dagobert (31.10.2006 um 15:20 Uhr)
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  7. #7
    Registriert seit
    19.09.2006
    Beiträge
    49
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    1. erstelle deinen UDT wie du ihn brauchst
    gib ihr unebdingt einen Symbolischen Namen

    2. erstelle einen Datenbaustein
    der aus einem Array besteht aus diesem Udt

    STRUCT
    Motor : ARRAY [1 .. 3 ] OF "Test";
    END_STRUCT ;

    Test heißt in meinem Fall der UDT

    3. erstelle die INOUT Variable mit dieser UDT


    4. Bausteinaufruf sieht dann so aus und wird Symbolisch eingegeben

    CALL FC 1000
    Motor:="Test_DB1".Motor[1]

    oder so: das Array muss aber so eingegeben werden

    CALL FC 1000
    Motor:=DB1000.Motor[1]

    5. fertig
    Kaum macht mans richtig, schon funktionierts...

  8. #8
    Registriert seit
    19.06.2003
    Beiträge
    23
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke erstmal für die ganzen Antworten
    Alle Versionen die Ihr mir geschrieben habt funktionieren.
    Aber meine Frage ist eigentlich immer noch nicht beantwortet. Es ist wohl so das ich ein Tippfehler habe.
    Das mit der Konsistenz habe ich auch schon durchgespielt.
    Aber weiter bin ich immer noch nicht.

  9. #9
    Registriert seit
    19.06.2003
    Beiträge
    23
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    So jetzt geht es. Warum ?? Irgend ein Fehler beim Übernehmen oder soetwas. Ähnliche Fehler habe ich schonmal auf Lehrgänge gehabt wenn mann den ganzen Tag daran rumbastelt, löscht und neu schreibt usw.
    Danke an Sinus Quadraht. Das war der Richtige Weg.

Ähnliche Themen

  1. Antworten: 18
    Letzter Beitrag: 21.12.2016, 17:03
  2. Array in Nov Ram
    Von COOLT im Forum CODESYS und IEC61131
    Antworten: 41
    Letzter Beitrag: 22.09.2009, 20:19
  3. In: Array ???
    Von husox81 im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 15.12.2008, 07:07
  4. Array?????
    Von Adenauer im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 20.04.2006, 10:32
  5. Bool-Array in Byte-Array
    Von Techniker im Forum Sonstige Steuerungen
    Antworten: 10
    Letzter Beitrag: 13.01.2006, 19:12

Lesezeichen

Berechtigungen

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