Attribut 'TcLinkTo' / 'TcLinkToOSO'
Die beiden Pragmas können angewendet werden, um Variablen direkt Ein- und Ausgängen anderer Prozessabbilder zuzuweisen.
Syntax:
{attribute 'TcLinkTo' := '<I/O point name>'}
Der in einfache Hochkommata eingeschlossene Platzhalter <I/O point name> muss durch den Namen des Ein- oder Ausgangs ersetzt werden.
{attribute 'TcLinkToOSO' := '<x,y,z>'I/O point name'}
x: Bit-Offset der SPS-Variablen
y: Anzahl der anzuschließenden Bits
z: Offset der Zielvariablen, auf denen diese Bits abgebildet werden sollen
Der in einfache Hochkommata eingeschlossene Platzhalter <I/O point name> muss durch den Namen des Ein- oder Ausgangs ersetzt werden.
Verlinkung allokierter Variablen eines Funktionsbausteins:
Allokierte Variablen eines Funktionsbausteins können ebenfalls mit Hilfe des Pragmas verknüpft werden. Dies geschieht für Funktionsbausteine nicht an der Deklaration der allokierten Variablen, sondern an der Deklarationsstelle der Funktionsbausteininstanz. Weitere Informationen hierzu befinden sich unten im Abschnitt „Beispiele zur Verwendung des Attributs“.
Darstellung der Verknüpfungsart:
Wird eine Variable manuell mit einem Ein- oder Ausgang verknüpft, dann erhält die zugehörige Variable im Prozessabbild ein weißes Symbol, ebenso wie der verknüpfte Kanal. Wird die Variable hingegen über das Attribut 'TcLinkTo' / 'TcLinkToOSO' verknüpft, dann ist das zugehörige Symbol blau. Bei einer nicht verknüpften Variable ist kein Symbol vorhanden.
PROGRAM MAIN
VAR
bVarIn1 AT%I* : BOOL; // linked manually
{attribute 'TcLinkTo' := 'TIID^Device 1 (EtherCAT)^Term 1 (EK1100)^Term 2 (EL1004)^Channel 2^Input'}
bVarIn2 AT%I* : BOOL; // linked via attribute
bVarIn3 AT%I* : BOOL; // not linked
bVarOut1 AT%Q* : BOOL; // linked manually
{attribute 'TcLinkTo' := 'TIID^Device 1 (EtherCAT)^Term 1 (EK1100)^Term 3 (EL2004)^Channel 2^Output'}
bVarOut2 AT%Q* : BOOL; // linked via attribute
bVarOut3 AT%Q* : BOOL; // not linked
END_VAR
Beispiele zur Verwendung des Attributs:
PROGRAM MAIN
VAR
nVar1 : INT;
{attribute 'TcLinkTo' := 'TIID^Device 1 (EtherCAT)^Term 1 (EK1100)^Term 5 (EL4132)^Channel1^Output'}
// Link when using the full path of an input or output
nVar2 AT%Q* : INT;
{attribute 'TcLinkTo' := '[1] := TIID^Device 1 (EtherCAT)^Term 1 (EK1100)^Term 4 (EL2008)^Channel 4^Output;
[2] := TIID^Device 1 (EtherCAT)^Term 1 (EK1100)^Term 4 (EL2008)^Channel 5^Output'}
aVar3 AT%Q* : ARRAY [1..2] OF BOOL;
{attribute 'TcLinkTo' := '.bIn := TIID^Device 1 (EtherCAT)^Term 1 (EK1100)^Term 3 (EL1008)^Channel 2^Input;
.bOut := TIID^Device 1 (EtherCAT)^Term 1 (EK1100)^Term 2 (EL2008)^Channel 2^Output'}
// Link when using function blocks (FB_Module with allocated input bIn and allocated output bOut)
fbVar4 : FB_Module;
{attribute 'TcLinkTo' := '[1].bIn := TIID^Device 1 (EtherCAT)^Term 1 (EK1100)^Term 2 (EL1008)^Channel 4^Input;
[1].bOut := TIID^Device 1 (EtherCAT)^Term 1 (EK1100)^Term 3 (EL2008)^Channel 4^Output;
[2].bIn := TIID^Device 1 (EtherCAT)^Term 1 (EK1100)^Term 2 (EL1008)^Channel 5^Input;
[2].bOut := TIID^Device 1 (EtherCAT)^Term 1 (EK1100)^Term 3 (EL2008)^Channel 5^Output'}
aModule : ARRAY[1..2] OF FB_Module;
{attribute 'TcLinkTo' := 'TIIB(2)^Channel 5^Output'}
// Linking with the keyboard shortcuts
bVar5 AT%Q* : BOOL;
{attribute 'TcLinkTo' := 'TIIB[TerminalXY]^Channel 5^Output'}
// TerminalXY is the name of the terminal shown in the IO tree
nVar6 AT%Q* : INT;
{attribute 'TcLinkToOSO' := '<1,2,3>TIIB(5)^Channel 2^Output'}
// Link when using Offset/Size/Offset
nVar7 AT%Q* : BYTE;
{attribute 'TcLinkToOSO' := '[1] := <1,2,3>TIIB(5)^Channel 2^Output;
[2] := <4,5,6>TIIB(5)^Channel 3^Output'}
aVar8 AT%Q* : ARRAY [1..2] OF WORD;
{attribute 'TcLinkTo' := '[0][0] := TIID^Device 1 (EtherCAT)^Term 1 (EK1100)^Term 2 (EL2008)^InfoData^State;
[0][1] := TIID^Device 1 (EtherCAT)^Term 1 (EK1100)^Term 3 (EL2008)^InfoData^State;
[0][2] := TIID^Device 1 (EtherCAT)^Term 1 (EK1100)^Term 4 (EL2008)^InfoData^State;
[1][0] := TIID^Device 1 (EtherCAT)^Term 1 (EK1100)^Term 5 (EL2008)^InfoData^State;
[1][1] := TIID^Device 1 (EtherCAT)^Term 1 (EK1100)^Term 6 (EL2008)^InfoData^State;
[1][2] := TIID^Device 1 (EtherCAT)^Term 1 (EK1100)^Term 7 (EL2008)^InfoData^State'}
aVar9 AT%Q* : ARRAY[0..1, 0..2] OF UINT;
(*************************************************************************************)
Available from TC3.1 Build 4026
(*************************************************************************************)
// ARRAY info on the left is "%d..%d" and on the right side "%d..#"
// Link info will be generate from 1 TO 4 (4 times) and from 3 TO 6 on channel side
{attribute 'TcLinkTo' := '[1..4] := TIID^Device 1 (EtherCAT)^Term 1 (EK1100)^Term 2 (EL2008)^Channel 3..#^Output'}
bVar10 AT %Q* : ARRAY[1..4] OF BOOL;
{attribute 'TcLinkTo' := '[1..4] := TIID^Device 1 (EtherCAT)^Term 1 (EK1100)^Term 4 (EL4014)^AO Outputs Channel 1..#^Analog output'}
bVar11 AT %Q* : ARRAY[1..4] OF INT;
// Also additional syntax for EtherCAT PLC structures to PLC mappings - see "PLC" tab on EtherCAT terminals:
// ARRAY info on the left is "%d..%d" and on the right side "%d..#" - channel index is added via "^^%d" and the value is 0-based
{attribute 'TcLinkTo' := '[1..4] := TIID^Device 1 (EtherCAT)^Term 1 (EK1100)^Term 5 (EL2819)^^ 0..#'}
bVar12 : ARRAY [1..16] OF MDP5001_280_700116F7;
END_VAR
Tabelle aller verfügbaren Tastenkombinationen:
Tastenkombination | To |
---|---|
TIIC | Knoten I/O-Konfiguration |
TIID | Knoten I/O Konfiguration^I/O Geräte oder |
TIRC | Knoten Echtzeit-Konfiguration |
TIRT | Knoten Echtzeit-Konfiguration^Zusätzliche Tasks oder |
TIRS | Knoten Echtzeit-Konfiguration^Echtzeit-Einstellungen oder |
TIPC | Knoten SPS-Konfiguration |
TINC | Knoten NC-Konfiguration |
TICC | Knoten CNC-Konfiguration |
TIAC | Knoten CAM-Konfiguration |
TING | Knoten Achsen |
TINT | Knoten Tabellen |
TINS | Knoten SAF Task |
TIIT(%d) | Klemme %d (nur für KL Bus) |
TIIB(%d) | Box %d |
TIIF(%d) | Gerät %d |
TIIT[%s] | Klemme mit Namen %s (nur für KL Bus) |
TIIB[%s] | Box mit Namen %s |
TIIF[%s] | Gerät mit Namen %s |