$变量是在NCK中存储的,PLC可以利用功能块从NCK中读/写这些变量
A memory area is reserved in the communications buffer (DPR) of the PLC and NC modules
$A_DBB // Data byte (8 bits)
$A_DBW // Data word (16 bits)
$A_DBD // Data double word (32 bits)
$A_DBR // Real data (32 bits)
最多124个字节的数据存储在这个DPR区;
而且不能进行位操作,至少是字节间的操作;
在NCK中Float-point的数据为64位的,但是在PLC中Float数据为32位,所以在利用$A_DBR时候,存储到dual-port RAM的前/后需要进行数据变换;
最大可以同时写入的输出变量的数量是由MD 28150 MM_NUM_VDIVAR_ELEME
NTS设定的,缺省的值为0;
FC21功能块(Transfer PLC NCK data exchange)
当此功能块被调用的时候,根据此功能块的FUNCTION CODE,实现PLC与NCK的数据通讯,数据传输是发生在此功能块被激活后,而不是在PLC循环的开始。
此功能块即或信号为“enable”, “enable=1”的时候,开始激活。
CALL FC 21 (
Enable := F 10.0, // If True, FC21 active
Funct := B#16#3, // Read data
S7Var := P#M 104.0 WORD 1,
IVAR1 := 8,
IVAR2 := –1,
Error := F10.1,
ErrCode := FW 12);
说明:F10.0激活FC21,读取DPF区的数据,一个字的数据长度,存放在M104,指针为8,不需要Semaphore byte,错误信号送到F10.1,错误代码送到FW12。
接下来就是利用FC21给$A_DBB赋值的一个例子
A M 120.0
= L 5.0
BLD 103
CALL FC 21
Enable :=L5.0
Funct :=B#16#4
S7Var :=P#DB160.DBX1.0 BYTE 7 //将从DB160.DBB1开始的7个字节
IVAR1 :=440 //送到$A_DBB【440】-$A_DBB【446】
IVAR2 :=-1
Error :=#r_Error
ErrCode:=#rw_ErrCode
NOP 0