[AB] 一段PLC程序(根据别人写的程序后所做的注释和修改)

[复制链接]
查看3080 | 回复5 | 2006-8-27 00:08:00 | 显示全部楼层 |阅读模式

循环读模拟量入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 :存储在数据块中的双字地址

smtplc | 2006-9-24 11:09:00 | 显示全部楼层

是什么牌子的PLC?

gerry789 | 2006-10-15 23:24:00 | 显示全部楼层
顶!!!!!!!!!!!!!
mali154 | 2006-10-20 20:59:00 | 显示全部楼层

菜鸟级。。。

看不懂!!!!

[em04][em04]
shnj-2006 | 2006-11-13 11:52:00 | 显示全部楼层
xiexie
xiaoma051 | 2007-3-7 10:16:00 | 显示全部楼层

看不懂!我是菜鸟

您需要登录后才可以回帖 登录 | 注册哦

本版积分规则