回复:流量累积问题

Letham

西门子1847工业学习平台

  • 帖子

    2101
  • 精华

    44
  • 被关注

    364

论坛等级:至圣

注册时间:2006-04-15

钻石 钻石 如何晋级?

发布于 2014-11-10 08:29:01

10楼

花了 一金币换来了 ,上传附件的权限》
接口说明(形参)
PulseMode : BOOL ; //使用脉冲计算时,为1
PulseIn : BOOL ; //流量到PLC 发出的脉冲信号
Adjust : BOOL ; //流量校准命令
MassVolumePerPulse : REAL ; //Kg or L//每个脉冲代表多少KG 或者L
FlowrateIn : REAL ; //kg/s 或者 L/s
OBScanTime : INT ; //OB1的上一次扫描周期或者循环中断的中断周期,也就是流量计算的采样周期
CutOffValue : REAL ;//小流量切断数值
N : INT ; //N个OB1或者OB35 调用后进行一次累积
Reset : BOOL ;//流量累积复位信号
由于采用了浮点数作为累积量量,所以还是有精度问题。如果有更高累积量要求,建议还是采用双整数进行累积,小数部分采用浮点数进行累积。
// Total<999999.0 累积分辨率可以达到0.1 kg以上
// Total<9999999.0 累积分辨率可以达到1 kg,新增累积量Z小于1kg,将被忽略,当累积量Z 大于1.0 时,总累积量可以反应出变化
// Total<99999999.0 累积分辨率可以达到10 kg,新增累积量Z小于10kg,将被忽略,当累积量Z 大于10.0 时,总累积量可以反应出变化
// Total<999999999.0 累积分辨率可以达到100 kg,新增累积量Z小于100kg,将被忽略,当累积量Z 大于100.0 时,总累积量可以反应出变化
见如下调用方式 子OB35里面调用
//模拟量累计 注意红色部分必须赋值
CALL "ASW_FB_FAccu_Fct" , DB1321
PulseMode :=FALSE //非PULSE 模式
PulseIn :=
Adjust :=
MassVolumePerPulse:=
FlowrateIn :=2.000000e-001 // 实际流量
OBScanTime :=100 //OB 35 中断周期
CutOffValue :=
N :=10
Reset :=

//脉冲计数累计 注意红色部分必须赋值
CALL "ASW_FB_FAccu_Fct" , DB1322
PulseMode :=TRUE //PULSE 模式
PulseIn :="S7_CPU_Pulse500ms" //模拟脉冲输入点
Adjust :=
MassVolumePerPulse:=1.000000e-001 //每个脉冲多少Kg
FlowrateIn :=
OBScanTime :=
CutOffValue :=
N :=5
Reset :=

N 这个参数 ,本来不想加的,后来还是加上去了,用处是比如我在OB35里调用流量累积程序,OB35中断周期100MS,顾名思义流量累积的采样周期就是100MS,当N=10时,代表的含义是N*100MS 时间间隔内,我进行累加一次重量到T一下的内存中。N<10的时候重量累加在另外的内存里。
我附件里上传的是STL 源文件的压缩文件。解压后可以导入到STEP7中,把FB 名称改成你们喜欢的名称,然后在符号表里 把这个名称分配给一个FB,然后编译就OK了。
点击此处查看附件
人生就像一场旅行!
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54789条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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