展开查看
以下是引用ktissot在2014-05-23 17:06:14的发言 >11楼:FC 再OB1中调用
变量声明
in参数
in int
in_upper_limit real
in_low_limit real
sampling_interval s5time
t1 timer
t2 timer
data_b block_db
start bool
inout 参数
local dword
程序如下:
OPN #data_b
L #in
ITD
DTR
L 2.764800e+004
>=R
JC _101
TAK
L 0.000000e+000
<=R
JC _102
TAK
T LD 0
L #in_upper_limit
L #in_low_limit
-R
L LD 0
*R
L 3.616898e-005
*R
L #in_low_limit
+R
JU _100
_101: L #in_upper_limit
JU _100
_102: L #in_low_limit
_100: T DBD 0
A(
AN #t2
L #sampling_interval
SD #t1
A #t1
)
L S5T#0MS
SD #t2
A #start
JC _103
L 0
T #local
LAR1
L 1000
nex1: T LW 4
L 0
T DBD [AR1,P#4.0]
+AR1 P#4.0
L LW 4
LOOP nex1
JU _201
_103: L #local
LAR1
L 4000
SLD 3
TAR1
==I
JC _201
A #t1
JCN _201
L DBD 0
T DBD [AR1,P#4.0]
+AR1 P#4.0
TAR1
T #local
_201: NOP 0
SET
SAVE
说明:
sampling_interval 是采样间隔 如果设置为 S5T#0S ,那么就是隔一个扫描周期采样一次。
start 是记录开始,这个位置变为1,则开始记录。如果为0,那么数据就清零。
可以记录1000个数据,设置db块,一共有1001个数据(real格式),其中第一个就是pv值。
in_upper_limit 是工程量的上限
in_low_limit 是工程量的下限
万分感谢,老师很厉害