跳到主要内容

变量中的位访问

通过索引访问,可以在整数变量中寻址各个位。使用结构变量或功能块实例,可以对各个位进行符号寻址。

对位整数变量的索引访问

寻址整数变量中的各个位。在变量后面附加一个点和寻址位的索引。位索引可以由任何常数给出。索引是从 0 开始的。

ST 语法

<integer 变量名> . <索引号>
<integer 数据类型> = BYTE | WORD | DWORD | LWORD | SINT | USINT | INT | UINT | DINT | UDINT | LINT | ULINT

示例

索引访问

PROGRAM PLC_PRG
VAR
wA : WORD := 16#FFFF;
xB : BOOL := 0;
END_VAR

// Index access in an integer variable
wA.2 := xB;

输出结果:wA = 2#1111_1111_1111_1011 = 16#FFFB

常量作为索引

// GVL declaration
VAR_GLOBAL CONSTANT
gc_usiENABLE : USINT := 2;
END_VAR

PROGRAM PLC_PRG
VAR
iX : INT := 0;
END_VAR

// Constant as index
iX.gc_usiENABLE := TRUE; // Third bit in iX is set TRUE

输出结果:iX = 4

结构变量中的位访问

使用BIT数据类型,可以将单个位组合成一个结构,然后单独访问它们。然后用组件名对位进行寻址。

示例

结构的类型声明

TYPE S_CONTROLLER :
STRUCT
bitOperationEnabled : BIT;
bitSwitchOnActive : BIT;
bitEnableOperation : BIT;
bitError : BIT;
bitVoltageEnabled : BIT;
bitQuickStop : BIT;
bitSwitchOnLocked : BIT;
bitWarning : BIT;
END_STRUCT
END_TYPE

声明和写访问位

PROGRAM PLC_PRG
VAR
ControlDriveA : S_CONTROLLER;
END_VAR

// Symbolic bit access to bitEnableOperation
ControlDriveA.bitEnableOperation := TRUE;

功能块实例中的位访问

在功能块中,可以为各个声明变量。

示例

FUNCTION_BLOCK FB_Controller
VAR_INPUT
bitSwitchOnActive : BIT;
bitEnableOperation : BIT;
bitVoltageEnabled : BIT;
bitQuickStop : BIT;
bitSwitchOnLocked : BIT;
END_VAR
VAR_OUTPUT
bitOperationEnabled : BIT;
bitError : BIT;
bitWarning : BIT;
END_VAR
VAR
END_VAR
;

PROGRAM PLC_PRG
VAR
fbController : FB_Controller;
END_VAR
// Symbolic bit access to bitSwitchOnActive
fbController(bitSwitchOnActive := TRUE);