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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 27

Thema: ARRAY an FC übergeben

  1. #1
    Registriert seit
    21.07.2005
    Beiträge
    222
    Danke
    54
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo!

    Hab im DB10 ein Array[1..3] vom Format Real angelegt.
    Will damit nun einen FC Var IN versorgen.
    Wie bitte lautet da die genaue Eingabe, damit der FC dies auch akzeptiert?
    Habe bis dato mit Arrays noch nichts zu tun.
    Schöne Grüße!
    Zitieren Zitieren ARRAY an FC übergeben  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.224
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Die Einfachste ist, im FC als IN (Test) ebenfalls ein Array[1..3] anzulegen.
    Der Aufruf erfolgt dann am FC symbolisch, jedenfalls gelingt mir das nur, wenn ich das symbolisch antrage, obwohl es auch mit dem entsprechenden Pointer gehen sollte. Im FC kannst du dann mit Test[1], Test[2] auf die Arraywerte zugreifen.

    Bsp.: Der DB heißt "DB_Test_Array"
    darin definiert Test_Array Array[1..3] of Real

    dann lautet der Aufruf am FC: "DB_Test_Array".Test_Array
    eigentlich sollte auch P#DB301.DBX 0.0 BYTE 12 funktionieren, aber das kann man aus irgendeinem unerfindlichen Grund, nicht von Hand an den FC schreiben, er akzeptiert es nicht, trotz abgeschalteter Typprüfung.

    Weiß jemand eigentlich den Grund?
    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

  3. #3
    Registriert seit
    22.12.2006
    Beiträge
    43
    Danke
    0
    Erhielt 6 Danke für 6 Beiträge

    Standard

    wenn du P#DB301.DBX 0.0 Real 4 schreibst, funktioniert es dann?
    Zitieren Zitieren NurEinVersuch  

  4. #4
    Registriert seit
    03.01.2008
    Beiträge
    6
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich habe da auch mal ne Frage wo schaltet man die Typenprüfung im Simatic Manager aus?
    Geändert von Günter (04.01.2008 um 10:23 Uhr)

  5. #5
    Avatar von klauserl
    klauserl ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    21.07.2005
    Beiträge
    222
    Danke
    54
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von tim_taylor Beitrag anzeigen
    wenn du P#DB301.DBX 0.0 Real 4 schreibst, funktioniert es dann?
    Hallo!
    Leider NEIN!

    Es handelt sich um den Baustein (FC65) LINEAR_INT aus der aktuellen Oscat Bibliothek2.5 (Arethmetische Funktionen)
    Gruß!!!

  6. #6
    Registriert seit
    08.11.2006
    Ort
    Uckermark
    Beiträge
    903
    Danke
    201
    Erhielt 256 Danke für 208 Beiträge

    Standard

    Zitat Zitat von Günter Beitrag anzeigen
    Ich habe da auch mal ne Frage wo schaltet man die Typenprüfung im Simatic Manager aus?
    Im KOP/FUP/AWL- Editor:

    Extras->Einstellungen->KOP/FUP: Das Häkchen "Typprüfung von Operanden" rausnehmen
    Neue Ideen begeistern jene am meisten, die auch mit den alten nichts anzufangen wussten.
    Karl Heinrich Waggerl (1897-1973)

  7. #7
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.224
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Nochmal nachfragen: Was für eine Variable erwartet denn der FC?

    So er eine einzige Real erwartet dann: "DB_Test_Array".Test_Array[1] bzw. DB301.DBD0, je nachdem, welcher DB und welches DBD.
    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. #8
    Registriert seit
    06.10.2003
    Beiträge
    3.413
    Danke
    451
    Erhielt 506 Danke für 408 Beiträge

    Standard

    P#DB301.DBX 0.0 Real 4 würde funktionieren, wenn der Eingang als ANY deklariert wäre. Wenn man das ARRAY als solches übergeben möchte, so geht es wohl nur so wie Ralle es beschrieben hat, wobei der Bereich [1..3] genau übereinstimmen muss.

    Am saubersten wäre es wenn man ein UDT of ARRAY vereinbart, welches man dann im DB und als Eingangsvariable in der FC (als UDT) verwendet.


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

  9. Folgender Benutzer sagt Danke zu Onkel Dagobert für den nützlichen Beitrag:

    dalbi (05.01.2008)

  10. #9
    Registriert seit
    16.01.2007
    Beiträge
    15
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    So gehts:

    Bausteinparameter:

    VAR_IN_OUT
    ElTab :tElTab; // Elemententabelle FOEL
    ElMerker :tElMerker; // Elementmerker FOEL
    Status :tElStatus; // Status FOEL
    Merker AT ElMerker :STRUCT

    Aufruf:

    ElTab := "dbElInfo".Ix[ElIxTemp].Eltab,
    ElMerker := "dbElInfo".Ix[ElIxTemp].ElMerker,
    Status := "dbElInfo".Ix[ElIxTemp].Status,

  11. #10
    Registriert seit
    24.11.2006
    Ort
    57072 Siegen
    Beiträge
    466
    Danke
    59
    Erhielt 121 Danke für 109 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Onkel Dagobert Beitrag anzeigen

    ...
    Am saubersten wäre es wenn man ein UDT of ARRAY vereinbart, welches man dann im DB und als Eingangsvariable in der FC (als UDT) verwendet.


    Gruß, Onkel
    Hallo OD,

    ich bin genau deiner Meinung...

    Der Einsatz des UDT hat noch weitere Vorteile.
    Z.B. sind Kommentaränderungen im UDT an allen referenzierten Stellen
    sichtbar, das erhöht die Transparenz eines Programmes sehr.

    Weiterhin wird mittels Konsistenzprüfung ein geänderter / erweiterter UDT
    an allen Einsatzstellen sichtbar. Eine Programmerweiterung läst sich dann
    schnell an allen relevanten Stellen durchführen.

    CU

    Jürgen

    .

    Zur Beachtung:
    Ich distanziere mich ausdrücklich von allen Aussagen in diesem Forum
    welche nicht von mir stammen und mache mir deren Inhalte nicht zu eigen.


    www.ibn-service.com

Ähnliche Themen

  1. Antworten: 18
    Letzter Beitrag: 21.12.2016, 17:03
  2. Array an DWORD übergeben (SCL)
    Von MatthiasH24 im Forum Simatic
    Antworten: 22
    Letzter Beitrag: 30.01.2014, 20:04
  3. Array ohne Pointer übergeben? (SCL)
    Von tahren im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 15.06.2010, 12:08
  4. Array an FC übergeben und löschen (SCL)
    Von Isha im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 22.04.2010, 10:23
  5. Array mit Char an FC übergeben?
    Von Ingo im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 15.12.2007, 16:07

Lesezeichen

Berechtigungen

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