200模拟量采集、滤波 点击:1057 | 回复:2



电点笔

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 19回
  • 年度积分:0
  • 历史总积分:96
  • 注册:2010年3月22日
发表于:2012-09-24 13:02:24
楼主

在S7-200plc中。同样的一段模拟量数据采集程序,在子程序中采集数据正常,中断程序中采集异常,
彼此的寄存器与采样定时器是不一样的;没有重叠,想要此段程序在中断程序中正常运行,怎么更改,

求高手指点.,小弟在此先感激万分,程序代码如下(附带程序可以下载):

1主程序:

注释:

 同样的一段模拟量数据采集程序,在子程序中采集数据正常,中断程序中采集异常, 彼此的寄存器与采样定时器是不一样的;没有重叠,想要此段程序在中断程序中正常运行,怎么更改,求高手指点.,小弟在此先感激万分。
// 1、调用子程序,并对数据进行滤波采集,方法有点笨,显示结果还算行.,因为数据采集较多所以想将子程序放在中断程序中,必要时进行中断数据采集处理.故而有了下面一段调用中断程序...
LD     SM0.0
CALL   SBR0
Network 2
// 调用中断程序前先进行必要的处理(初始化)
LD     SM0.0
CALL   SBR1
Network 3
LD     SM0.0
END

2子程序

采样次数与采样时间已在数据块中设置;预设采样时间为100MS
//    采样次数为 5次;
Network 1
LD     SM0.1
R      T32, 1
MOVW   120, VW886
MOVW   3, VW880
Network 2 // 网络标题
// 采样时间设定(数据块中已设为100ms)
//
LD     SM0.0
LPS
MOVW   AIW0, AC1
MOVW   AC1, VW896
-I     VW884, VW896
AN     T32
TON    T32, VW886
LRD
A      T32
EU
ITD    AC1, AC1
+D     AC1, VD628
+I     1, VW892
LPP
MOVD   VD628, VD628
ITD    VW892, VD600
Network 3
// 计算均值:当差值大于+320或小于-320时,不执行平均采样滤波处理,直接将采样值输入均值寄存器VD240当差值在+320与-320之间时,执行平均采样滤波处理.并输出均值存在在VD240中。
LD     SM0.0
LPS
LDW<   VW896, +320
OW>    VW896, -320
AW>=   VW892, VW880
ALD
MOVD   VD628, VD240
/D     VD600, VD240
MOVW   0, VW892
MOVD   0, VD628
LPP
LPS
AW>    VW896, +320
MOVD   AC1, VD240
LRD
AW<    VW896, -320
MOVD   AC1, VD240
LRD
DTI    VD240, VW884
LRD
MOVD   VD240, VD608
LRD
AD>    VD608, +32000
MOVD   +32000, VD608
LPP
AD<    VD608, +0
MOVD   +0, VD608
Network 4
LD     SM0.0
CRET
3、调用初始化

Network 1
LD     SM0.1
MOVB   200, SMB34
ATCH   INT0, 10
ENI
Network 2
LD     SM0.0
CRET

4、中断程序

TITLE=
Network 1
LD     SM0.1
R      T98, 1
MOVW   100, VW256
MOVW   4, VW260
Network 2 // 网络标题
LD     SM0.0
LPS
MOVW   AIW0, AC2
MOVW   AC2, VW304
-I     VW300, VW304
AN     T98
TON    T98, VW256
LRD
A      T98
EU
ITD    AC2, AC2
+D     AC2, VD352
+I     1, VW342
LPP
MOVD   VD352, VD352
ITD    VW342, VD360
Network 3
LD     SM0.0
LPS
LDW<   VW304, +320
OW>    VW304, -320
AW>=   VW342, VW260
ALD
MOVD   VD352, VD332
/D     VD360, VD332
MOVW   0, VW342
MOVD   0, VD352
LPP
LPS
AW>    VW304, +320
MOVD   AC2, VD332
LRD
AW<    VW304, -320
MOVD   AC2, VD332
LRD
DTI    VD332, VW300
LRD
MOVD   VD332, VD322
LRD
AD>    VD322, +32000
MOVD   +32000, VD322
LPP
AD<    VD322, +6400
MOVD   +6400, VD322
Network 4
LD     SM0.0
CRETI

5、符号表 地址列表:

ZL_CY  AIW0

ZL_CLN3 VD608
ZL_CLNV1 VD628
ZL_CLN4 VW880
ZL_CLN2 VW884
ZL_CLN1 VW892
ZL_CLN6 VW896
LL_CLZC15 VD240
ZL_CLN5 VW886

 

VW256
VW260
VW300
VW304
VD308
VD312
VD322
VD332
VW342
VD352
VD360

6、数据库数据

VW256  120                         //采样时间
VW260  3                           //采样次数




电点笔

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 19回
  • 年度积分:0
  • 历史总积分:96
  • 注册:2010年3月22日
发表于:2012-09-24 13:20:49
1楼

各位大侠一定给点意见哦,谢谢,起初我怀疑是不是定时器不能再中断程序中使用,经过多方查看后时可以的,查阅资料时无意中看到一点,在中断程序中做数据采集,只要数据采集周期不高于中断程序预设扫描周期应该是可以的嘛.

电点笔

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 19回
  • 年度积分:0
  • 历史总积分:96
  • 注册:2010年3月22日
发表于:2012-09-29 10:15:27
2楼
回复内容:
对:张 忠关于www.plcstar.comN80系列PLC支持6轴200K脉冲输出,4路AB相高速计数。多串口,以太网,CAN总线PLC. -----------以太网,CAN总线,多串口-----------本体混合型模块:N80-M44MAD-DC或AC配置16DI,6DO,6AI,6AO,1路RS232,3路RS485,1路CAN,1路以太网接口,可以带7个扩展。N80-M39MAD-DC或AC配置12DI,12D0,2路PT100,2AI,2AO,6路电流互感器输入,1RS232,2RS485,1以太网,3相交流380输入检测、断线、相序检测(可以计算有功,无功,功率因数,节电率等)N80-M22MAD-DC或AC配置7DI,8DO,4AI,3AO,1路RS232,2路RS485(或1路CAN)。-----------多轴控制器,CAN总线,多串口--------------本体标准型模块:(以下为晶体管输出,将DT改成DR就是继电器输出模块)N80-M16DT-DC或AC配置8DI,8DO(最高可以支持4轴200K输出),4路AB相输入计数,1RS232,1RS485N80-M24DT-DC或AC配置14DI,10DO(最高可以支持4轴200K输出),4路AB相输入计数,1RS232,2RS485N80-M32DT-DC或AC配置16DI,16DO(最高可以支持6轴200K输出),1路RS232,2路RS485,4路AB相输入计数,可以带7路扩展N80-M48DT-DC或AC配置24DI,24DO(最高可以支持6轴200K输出),1路RS232,2路RS485,4路AB相输入计数,可以带7路扩展-------IO扩展-----------------------扩展模块:E8AD1配置8路电流输入EBAD2配置8路电压输入E8RTD配置8路PT100输入E8THM配置8路热电偶输入E4DA1配置4路电流输出E4DA2配置4路电压输出E6MAD1/2配置4路AI,2AOE16D配置16路DIE16T配置16路DO(晶体管)E16DR配置8DI,8DO  内容的回复:
谢谢你的好意.但是这个现在还不是我想要的.希望以后能合作.

热门招聘
相关主题

官方公众号

智造工程师