恭喜,你发布的帖子
发布于 2020-08-25 08:09:18
4楼
我这程序是在做软件滤波的时候使用的,可能有一点儿适合你。不过,这程序是一次性记录一批数据。然后就停止记录了。程序最后有一个置位,你从外部把这个置位的位触发一下自己的触发端,就可以又重新记录。(我是说在调用子程序的时候触发,不是叫你改变库程序。)
SUBROUTINE_BLOCK 数据采集:SBR1
TITLE=程序目的:
// 记录指定数据的当前值。直到指定次数后停止记录。记录录入到表头所指的V区偏移处。
//
// 适用范围:
// 不适宜中断使用。EN端接通一次记录次数据。EN端接通并且触发端接通的时候,数据从第一个开始记录。触发端请使用边缘触发。
//
// 程序接口:
// 触发 开始记录数据
// 采样 需要记录的原始数据。
// 表头 记录从V区的这个偏移位置开始填写。
// 表长 记录将填写这个次数后停止。
//
// 占用内存量及工作表结构:
// VWn+0 当前是第几个记录。
// VWn+2 第一个记录。
// VWn+4 第二个记录。
//
// 执行过程:
// 程序扫描一次记录一个数据。连续扫描就连续记录。
//
// 补充说明:
//
// 使用变化:
//
// 本程序免费使用。也许不会适用于你的程序。当由于任何原因不适用时,程序作者不负有责任。请用户仔细复核程序内容,再继续使用。
// 请出于对作者的劳动成果的尊重,不要删除作者名字。
//
// 程序密码:
//
// 作者:芳季2020.8.12
VAR_INPUT
触发:BOOL;
采样:WORD;
表头指针:DWORD;
表长:WORD;
END_VAR
VAR_IN_OUT
工作字节:BYTE;
END_VAR
VAR
数据指针:DWORD;
END_VAR
BEGIN
Network 1
LD SM0.0
MOVD LD3, LD10
+D +2, LD10
Network 2
LD L0.0
MOVW 0, *LD3
R L9.0, 1
Network 3
LD SM0.0
MOVW *LD3, AC0
*I +2, AC0
ITD AC0, AC0
+D AC0, LD10
Network 4
LDN L9.0
MOVW LW1, *LD10
INCW *LD3
AW>= *LD3, LW7
S L9.0, 1
END_SUBROUTINE_BLOCK
请填写推广理由:
分享
只看
楼主