访问变量中的位

整数变量中可进行独立的位访问。因为这个原因位的索引必须作为地址附加到变量,通过一个点分开。位索引可以通过任何的常量进行定义。索引是 0-基础。

语法:

<变量名>.<位索引>

 

示例:

a : INT;

b : BOOL;

...

a.2 := b;

变量的第三位将会被设置为变量 b 的值。

如果索引比变量的位长度要长,那么会出现以下错误信息: 'Index '<n>' outside the valid range for variable '<var>'!'

位地址可以是以下变量类型: SINT, INT, DINT, USINT, UINT, UDINT, BYTE, WORD, DWORD.

如果变量类型不允许位访问,那么会出现以下错误信息: 'Invalid data type '<type>' for direct indexing'.

一个位访问不能被标记为一个 VAR_IN_OUT 变量!

 

通过一个全局常量进行位访问

如果定义一个全局常量定义位索引,可以使用这个常量作为一个位访问。

通过全局常量进行位访问示例...

1. 对于一个变量

2. 对于一个结构体变量

全局变量列表中两个示例的定义

变量激活定义要访问的位:

VAR_GLOBAL CONSTANT
    enable:int:=2;
END_VAR
 

一个整形变量位访问示例

POU 中定义:

VAR
    xxx:int;
END_VAR
 

位访问:

xxx.enable:=true;   (* -> the third bit in variable xxx will be set TRUE  *)
 
BIT 数据类型中位访问

BIT 数据类型是一个特殊数据类型只允许在结构体中访问。参阅 “结构中的Bit 访问”获得更多帮助信息。

BIT 数据类型位访问示例

结构体中定义:

TYPE ControllerData :
STRUCT
    Status_OperationEnabled : BIT;
    Status_SwitchOnActive : BIT;
    Status_EnableOperation : BIT;
    Status_Error : BIT;
    Status_VoltageEnabled : BIT;
    Status_QuickStop : BIT;
    Status_SwitchOnLocked : BIT;
    Status_Warning : BIT;
END_STRUCT
END_TYPE 
 

POU中定义:

VAR
    ControllerDrive1:ControllerData;
END_VAR
 

位访问:

ControllerDrive1.OperationEnabled := TRUE;