数字数据移动
由s指定的16位数据或16位等效常量中的十六进制数字会按照n所指定的复制到由d指定的16位区域中。
输入
源16位区域
指定源和目标十六进制数位和十六进制数字数量
输出
目标16位区域
建议使用相应的FP7指令,来代替使用此F型指令:FP_MOVE_DIGITS 数字数据移动
数字是处理数据时使用的4位单位。使用此指令,16位数据被分成四个数字。从最低有效四位开始按十六进制数字0、数字1、数字2和数字3的顺序调用数字:
16位数据
位
十六进制数字
使用如下十六进制数据,n指定要复制的(3)源十六进制数位、(2)数字数量和(1)目标十六进制数位:
0十六进制数字0
1十六进制数字1
2十六进制数字2
3十六进制数字3
0复制1个十六进制数字(4位)
1复制2个十六进制数字(8位)
2复制3个十六进制数字(12位)
3复制4个十六进制数字(16位)
0十六进制数字0
1十六进制数字1
2十六进制数字2
3十六进制数字3
以下是基于指定n时的一些数字传输模式。
当源的十六进制数字1复制到目标的十六进制数字1时,指定n: 16#101。
当源的十六进制数字3复制到目标的十六进制数字0时,指定n: 16#003(简写:16#3)。
当源的多个十六进制数字(十六进制数字2和3)复制到目标的多个十六进制数字(十六进制数字2和3)时,指定n: 16#212。
当源的多个十六进制数字(十六进制数字0和1)复制到目标的多个十六进制数字(十六进制数字2和3)时,指定n: 16#210。
当源的4个十六进制数字(十六进制数字0到3)复制到目标的4个十六进制数字(十六进制数字0到3)时,指定n: 16#130。
所有用于编程此函数的输入和输出变量已在POU头中声明。 所有编程语言使用相同的POU头。
VAR
start: BOOL:=FALSE;
source: INT:=329;
(*decimal 329 = 16#149*)
specify_n: WORD:=16#111;
(*Beginning from the end:
1: first hex. digit is digit 1, i.e. 4
1: copies 2 hex. digits, i.e. 14
1: destination is hex. digit 1*)
output: INT:=0;
(*16#140 = decimal 320*)
END_VAR
当变量start设置为TRUE时,执行此函数。梯形图的[监控头]中的source和output值已设置为通过激活工具栏中的[十六进制]按钮来显示十六进制值。
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_F,F6_DGT!,Instance,12,0,18,5,,?DEN?D@'s'?Dn?AENO?Cd);
B(B_VARIN,,source,8,2,10,4,);
B(B_VARIN,,specify_n,8,3,10,5,);
B(B_VAROUT,,output,18,2,20,4,);
B(B_CONTACT,,start,6,1,8,3,);
L(10,3,12,3);
L(10,4,12,4);
L(8,2,12,2);
L(1,2,6,2);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF start then
F6_DGT( s:= source,
n:= specify_n,
d=> output);
END_IF;