- {{item.name}}
如何在PCS 7中实现模拟量累计功能
- 0
- 519
- 5865
1 PCS 7 V7.1中如何实现累计功能
累计功能就是对单位时间里的某一工艺量的测量值进行累加,这和数学运算中的“积分”(“Integral”)是一致的。在PCS 7 V7.1 APL库中提供的积分功能块可以实现该功能:
图1 APL中的积分功能块
在具体使用上,只需要将这个功能块拖入CFC中,连接需要累计的信号(例如通道功能块的输出管脚),设置积分参数TI后,编译即可:
图2“Integral”的使用
作为积分功能块,需要设置采样时间和积分时间,分别对应积分功能块的“Sample Time”和“TI”。采样时间指的是积分计算的执行间隔时间,积分时间表述的是积分环节的时间常数,这两个关键参数结合被累计的测量值就可以计算出累计值。
1.1 如何设置SampleTime和TI参数
PCS 7中使用该积分功能块时,无需也不能人为设置SampleTime值,用户只需也必须在循环中断OB3x中调用该功能块。
而积分时间常数TI则需要根据积分功能块前连接的流量信号的单位来进行设置。例如,通常情况下流量信号的单位为立方米/小时(1小时为3600秒),则该TI参数需要设置为3600。如果流量信号为立方米/分(1分钟为60秒),则该TI参数需要设置为60。
此外,SampleTime和TI还必须满足如下关系:
如果上述关系不能满足,则会在管脚“ErrorNum”上报“11”的错误号,而且积分运算停止。
1.2 累计量如何清零
通常情况下,在一个班组/批次结束、另一个新的工作时间段开始时,需要重新开始累计,原来的累计结果要清除。或者在某些情况下,在重新开始累计时需要设定一个起始值。这可以借助积分功能块的Track(跟踪)功能来实现:
图3清零
如上图所示,给管脚“OutTrkOn”置位则开启Track功能,在该功能下积分块Integral的输出“Out”的值和跟踪值“OutTrk”保持一致。如果要实现清零操作,则设置“OutTrk”的值为0.0;如果要设置累计的初始值,也是将初始值赋给“OutTrk”。在将OutTrkOn复位后,功能块就在当前累计值的基础上开始运算。
1.3 累计过程如何暂停
如果要实现在累计过程中暂停,则可以使用功能块Integral的“Hold”功能:
图4累计保持
置位管脚“Hold”即可暂停累计计算,复位该管脚则可以继续累计运算。
1.4 如何在CPU停机重新运行之后保持累计量
“Hold”参数能够在CPU运行期间暂停累计,但如果CPU进入STOP之后,重新开始运行,那上次的累计值就会丢失。为了解决这个问题,Integral功能块提供的“Feature”参数中可以设置:
图5 Feature中的设置
在Feature Bit0中,设置为1,即表示在OB100调用(暖启动)时上一次的累计值保持。
1.5 能否避免累计不了的问题
通过实数累加指令来实现累计功能的程序,在运行一段时间之后当前累加值达到一个很大的值时,可能就会出现累计停止的现象,测量值有数值,但总累计量保持不变。
导致这个问题的原因是实数在进行加运算的时候,如果两个加数数量级差距较大,就会出现加不上的问题。具体描述可以参考如下链接页面:
/cs/document/14844391?caller=view&lc=zh-cn
而PCS 7中的积分累计功能都对此进行了处理。如果累计量过大,导致测量值无法累加的时候,功能块就会单独存储并累计这些数值很小的测量值,直至其和增大到可以加入总累计量。
所以使用PCS 7下的功能块来实现累计功能不会出现累计不了的问题。
2 PCS 7 V7.0以前版本中如何实现累计功能
在PCS 7的标准库中也提供有相应的积分功能块来实现累计功能:
图6 INT_P功能块
和APL的Integral功能块的作用原理是一样的,只是管脚名上有所出入,如下是两个功能块的管脚对应表,请参考上述内容使用该积分功能块:
表格1 Integral和INT_P管脚对应表
Integral | INT_P |
In | U |
OutHiLim | V_HL |
OutLoLim | V_LL |
InHyst | HYS |
OutTrkOn | TRACK |
OutTrk | VTRACK |
Feature.Bit0 | Reset |
Out | V |
OutHiAct | QVHL |
OutLoAct | QVLL |
注:上表中的对应关系只是从功能的角度来比较的,APL功能块中的部分管脚数据类型是STRUCT。
3 APL V7.1 SP5中如何实现累计功能块
对于PCS 7 V7.1 SP2英文版本,可以从如下链接地址中下载APL V7.1 SP5:
http://support.automation.siemens.com/cn/view/zh/47756596
安装这个新的APL库之后,在APL库中可以找到“TotalL”,拖入到CFC中并在循环OB3x中调用:
图7 TontalL功能块
如图中所示,和Integral、INT_P不同,TotalL功能块增加了不少管脚,这是因为该块的功能大大扩展了,主要有如下几点新功能:
- 脉冲触发和持续两种计算条件;
- 增加了限制值和相应的报警;
- 增/减累计计算的选择;
- 增加了OS图标和面板;
- Batch接口等。
就模拟量累计功能而言,最直观的就是增/减累计和OS图标面板,这样就不用再使用一个模拟量监视块(例如MonAnL)来在OS上显示累计量:
图8 TotalL的图标
图9 TotalL的操作面板
在面板中的“Command”中选择增累计或者减累计,即可激活功能块的累计功能。
和APL下其他功能块的操作面板一样,该功能块也提供对累计值的曲线显示、参数设置等面板:
图10 TotalL的趋势面板
图11 TotalL的参数设置面板
TotalL丰富的功能是通过Feature来选择功能的,其中的Bit6和Bit7的不同组合定义了不同的功能:
表格2 TotalL功能列表
如上表中所示,如果要使用模拟量累计功能,只需要设置Bit6即可。其他的功能使用和Integral无异,关于该功能块更多使用和配置信息可以查看其帮助信息。
图12 TotalL的Feature Bit6设置
TotalL在模拟量累计功能的使用中,和Integral类似,但具体管脚的应用上会有所区别:
(1) 累计量清零
在TotalL中没有跟踪功能,但可以使用复位功能,可以在面板上复位,如果使用CFC程序来复位,需要用到的管脚是“RstLi”和“PresetVal”。在RstLi.Value=1的时候,累计输出Out.Value和PresetVal.Value保持一致。
所以,要实现CFC程序中的累计清零,只需设置PresetVal.Value=0.0之后,置位RstLi.Value=1即可。在OS侧清零,只需要在参数设置面板中设置“Preset Value”为0.0,然后点击标准面板中“Preset”按钮即可。
(2) 累计暂停
TotalL中没有Hold管脚,但增加了一个“OffLi”管脚,在标准面板中的“Command”中提供了“Off”按钮。使能这个功能,即可让累计停止,释放之后累计从新开始。与“Hold”功能一样。
(3) CPU停机重启保持上次累计值
和Integral功能块一样,设置Feature Bit0为1即可实现在CPU重启的时候恢复上次的累计值。
关键词
PCS 7,APL,流量累计,积分,FB1823,Integral ,FB40,INT_P,FB1906,TotalL,实数累加
剩余80%未阅读,请登录后下载/查看文档
- 评论
-
分享
扫码分享
- 收藏 收藏
- 点赞 点赞
- 纠错 纠错
- 如何在C#中实现OPC数据访问
- 如何在 WinCC 中实现变量状态监视和连接状态监视?
- 如何在SCL中实现循环执行S_ODT定时器
- 如何在MM420中实现本地/远程控制
- 如何在SIMATIC PCS 7 V8下使用Block Privacy功能
- 如何在PCS 7 OS运行系统或者WinCC V7.5中删除无法确认的消息?
- 如何在SIMATIC PCS 7 V8.0 和 WinCC V7.2中组态声音报警Horn?
- PCS 7 如何用RAMP_P块实现斜坡功能
- 在带 PROFINET 接口的 S7 CPU 中实现 FETCH/WRITE 服务
- 在PCS 7 V8.0中如何使用Version Trail实现程序自动备份
{{item.nickName}}