Problem TwinCAT

COOLT

Level-1
Beiträge
98
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
YUHU ich habe endlich mal wieder ein Problem wo ich euch um Hilfe bitten darf:p.
Also es geht um Folgendes. Ich habe in TwinCAT PLC Control 3 Programm Bausteine und 1 FB und nun will ich im FB aus den Programmen eine Variable Rausholen und zwar
Code:
LastReceivedByte: ARRAY[0..18] OF BYTE;
so is die Variablen Deklaration im Programm.
in meinem FB steht nun
Code:
VAR_INPUT
    Bytelist:Sample_KL6001;
END_VAR
Da das Programm Sample_KL6001 heist dachte ich eigentlich ich könnte es mit
Code:
Bytelist.LastReceivedByte;
Rausholen also das Array um damit meinen Algorithmus zu füttern. aber iwie funzt das ganze nich wirklich. Der sagt mir immer das Sample_KL6001 ein unbekannter Typ is.
Bitte um Fachmännische beratung xD.
Mfg
COOLT
 
FBs [FB] musst du wie Variablen deklarieren und kannst das dann auch so machen.
Wenn dein Sample_KL6001 aber ein Programm [PRG] ist, geht das nicht, denn Programme werden nicht instanziiert.
 
Ich habe in TwinCAT PLC Control 3 Programm Bausteine und 1 FB und nun will ich im FB aus den Programmen eine Variable Rausholen
finde ich auch eigentlich nicht richtig.
Besser wäre du machst nur ein einziges Programm [PRG] und steckst deine Funktionalitäten in mehrere FBs. Dann hast du auch das Problem mit dem Zugriff nicht.
 
Ich hab von meinen Arbeitskolegen jetz gesagt bekommen das ich doch bitte die Programme so lasse und das nötige array als Structure bei den Datentypen angeben soll. Nur wie bekomm ich das jetz aus der Structure in mein Fb rein?
Code:
TYPE Bytelist :
STRUCT
    LastReceivedByte: ARRAY[0..18] OF BYTE;
END_STRUCT
END_TYPE
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Na mit Deklaration als VAR_INPUT, oder VAR_IN_OUT
Code:
VAR_INPUT
   stLastReceivedByte: LastReceivedByte;
END_VAR
oder
Code:
VAR_IN_OUT
   stLastReceivedByte: LastReceivedByte;
END_VAR
Wobei VAR_IN_OUT als eine Art Pointer arbeitet, ohne umkopieren in den FB.
 
Zuletzt bearbeitet:
Naja jetz sagt er mir: "Unbekannter Typ 'LastReceivedByte'"
Code:
TYPE Bytelist :
STRUCT
    LastReceivedByte: ARRAY[0..18] OF BYTE;
END_STRUCT
END_TYPE
Code:
FUNCTION_BLOCK DecodePersonalID
VAR_INPUT
    aData: LastReceivedByte;
END_VAR
 
Ja genau:

Code:
VAR_INPUT
  stBytelist: Bytelist;
END_VAR
VAR
  byMyByte: BYTE;
END_VAR
----------------------------------------
...
byMyBYte := stBytelist.LastReceivedByte[2];
...

von außen:
Code:
VAR
   stByByteList: Bytelist;
END_VAR

...
fbMyFunctionBlock.stBytelist := stByByteList;
...
 
Zuletzt bearbeitet:
o.k. ich hab mir jetz überlegt das ich es doch kacke finde mit den mehreren Programmen. Habe mich jetz für Fbs entschieden. Jetz klappt die zuweisung auch.

Melde mich wenn ich wieder n Problem habe.
Danke euch Trotzdem allen.

Mfg
COOLT
P.S.: Ich finds immer noch cool wie schnell einem hier geantwortet wird.
 
Zurück
Oben