回复:西门子S7-200模拟量编程 ,分享给大家

芳季

西门子1847工业学习平台

  • 帖子

    15504
  • 精华

    101
  • 被关注

    960

论坛等级:至圣

注册时间:2007-08-03

钻石 钻石 如何晋级?

发布于 2009-07-10 23:25:00

0楼

有红花在这。何不配上绿叶衬托?
请恕在下无意奉上绿叶(递推法滤波库)。属在下亲手栽培,实难登大雅之堂。若有幸与阁下的红花相影。请留芳踪。
在下芳季。愿与惜花人结识。
SUBROUTINE_BLOCK AD滤波2:SBR1
TITLE=子程序注释
// 程序目的:
// 用递推平均值计算法。当前样品平均值作软件滤波值。
// 缓冲区指针是计算过程使用占用的v存储区,连续占用(样本数+5)个字。
// 第一个字节是指示当前最新样本放置的次序,并非表长。
// 第二个双字是当前采样后的样本总和。
// 以后的n个字是样本的数据。无先后顺序,循环地对样本进行更新。
// VBn+0 放置次序
// VBn+1 总和
// VBn+2 (总和)
// VBn+3 (总和)
// VBn+4 (总和)
// VBn+5 数据1
// VBn+6 数据2
// ......
// VBn+5+(样本数-1)×2 数据x(最后一个)
//
// 适用范围:
// 不适用于中断执行。数据位长仅适合用于16位。正负数均可混合。
// 参数类型:
// 模拟输入 字型 AIW0;AIW2;VW10等。
// 样本数 字型 常数;VW0;MW2等。一旦确定请不要变更。取值只能为自然数。
// 缓冲区偏移 字 只接受全局变量V的指针。100(&VB100);1200(&VB1200)等。
// 滤波输出 字型 有符号整数。
// 执行过程:
// 每执行一次将当前输入值更新到缓冲区。更新表头指针对象值。计算更新当前n个样本的平均值。
VAR_INPUT
模拟输入:INT; // 需要滤波的模拟量。直接填写地址。
样本数:BYTE; // 需要记录的样本个数。
缓冲区偏移:WORD; // 计算过程需要的缓冲区头。(VB0的偏移值)
END_VAR
VAR_OUTPUT
滤波输出:INT;
END_VAR
VAR
缓冲区指针:DWORD; // 对象是表头。一个字节
样本总和:DWORD; // 对象是表的第二部分内容。一个双字
当前位置:DWORD; // 当前采样应该填入的位置。(指针值)
滤波值32位:DINT;
临时值:BYTE;
END_VAR
BEGIN
Network 1 // 缓冲区指针所指的地方是表头。下一个双字是和。再下一个字才是真正第一个数据。
LD SM0.0
MOVW 16#0800, LW7
MOVW LW3, LW9
MOVD LD7, LD11
+D 1, LD11
MOVD LD11, LD15
+D +4, LD15
Network 2 // 计算确定当前位置的指针。指针偏移+表头偏移+次序偏移
// 因为样本按字记录,所以 顺序数×2。转化为字。
// 加到缓冲区指针值的低16位。这是指针所指的偏移。
// 再加上5。这是垮过表头5个字节开始的偏移。
LD SM0.0
LPS
BTI *LD7, LW23
AENO
SLW LW23, 1
LPP
MOVW LW23, LW17
AENO
+I LW9, LW17
AENO
+I 5, LW17
Network 3 // 总和前值减最旧值。当前周期的新值替换最旧值。后面接续还有相关计算内容。
LD SM0.0
ITD *LD15, LD23
AENO
-D LD23, *LD11
Network 4 // 登记模拟量到指针所指的对象。对最新值进行累加。即成为递推和。
LD SM0.0
MOVW LW0, *LD15
ITD *LD15, LD23
AENO
+D LD23, *LD11
Network 5 // 求总和的平均值。当前记录表头数加 1。
LD SM0.0
LPS
BTI LB2, LW23
AENO
ITD LW23, LD23
AENO
MOVD *LD11, LD19
AENO
/D LD23, LD19
AENO
MOVW LW21, LW5
LPP
INCB *LD7





Network 6 // 表头指示,到了最后的位置时从最早的一个开始刷新。
LDW>= *#缓冲区指针, #样本数
MOVB 0, *LD7
END_SUBROUTINE_BLOCK
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33257条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。