点击【 大 中 小 】,可以选择字体的大小,以便你阅读.
循环读模拟量入DB块
L #DB_NO ; 局域变量(存储的是块号)
T LW 0; 将数据块的块号存放在LW0中!
OPN DB [LW 0]; 打开数据块!
L #PIW_ADDR; 将模拟通道的起始地址左移三位,以便与寄存器内部寻址的格式相匹配!
SLD 3
T LD 4
L #DBD_ADDR; 将数据块内双字地址左移三位,以便与寄存器内部寻址的格式相匹配!
SLD 3; 因双字做寄存器间接寻址时,低三位必须为0!
T LD 8
L #CH_LEN; 将通道数量传到累加器1中!
NEXT: T LW 0
L LD 4; 将模拟通道起始地址传数据到累加器1中!
LAR1 ; 将累加器1中的内容送到地址寄存器1中!
L PIW [AR1,P#0.0]; 将第一次采集的模拟量数据存到LW2中!
T LW 2
{ CALL "Read Analog Value 464-2"
IN :=LW2
HI_LIM :=5.000000e+002
LO_LIM :=-1.000000e+001 将模拟量转换成工程量
BIPOLAR:=TRUE
RET_VAL:=LW10
OUT :=LD12 }
L LD 8
LAR1
L LD 2
T DBD [AR1,P#0.0]; 将采集到的模拟量存储 在数据块中!(从字地址DBW_Addr)开始
L LD 4
+ L#16
T LD 4; 将模拟量的起始地址加16,表示采集下一个模拟通道的数据!
L LD 8
+ L#32
T LD 8; 数据块字地址加32(因为采集后的模拟量是以32位的数保存在数据块内)
L LW 0;
DEC 1; 将通道字节数减一。
JN UMP; 如果通道数未采集结束,则继续循环采集。如果一个循环完毕的话,则重新
L #CH_LEN; 设置起始参数!
L #PIW_ADDR; 将模拟通道的起始地址左移三位,以便与寄存器内部寻址的格式相匹配!
SLD 3
T LD 4
UMP:LOOP NEXT
PIW_Addr :模拟块通道起始地址
CHI_LEN :要读入的 通道数
DB_NO :存储数据块的块号
DBW_Addr :存储在数据块中的双字地址