某日,客户不解地问道“为什么Pcs7DiOu的PV_IN是1,而PV_OUT输出一直为0?”
通过与客户的交流,我进一步了解到:客户利用S7-PLCSIM仿真运行,程序中只有这个地方出现问题,其他调用Pcs7DiOu的地方均正常显示。对整个程序进行了全部编译/下载后,问题仍然存在。
这个问题很奇怪,到底是什么原因呢?为了找到问题根源,建议用户发送了错误截图。

通过检查,客户程序非常简单,没有逻辑错误,按照截图在自己的电脑上作了测试,结果一样,同样输出一直为0。忽然想到,有可能是运行组执行顺序前后颠倒,导致运行结果错误,做了“优化运行组”后,结果仍然没有变化。
程序没有问题,难道是块本身出错了?删除PV_IN引脚的连线,重新编译下载,发现PV_IN=1时,PV_Out=1,结果正常。既然如此,那一定是PV_IN的变化导致了结果错误。我就想了PV_IN会有什么变化呢?
APL功能库的一大特点就是大量使用了结构变量,包括带质量代码的信号类结构变量、带量程上下限的量程结构变量等。而该CFC中的PV_IN引脚就是带有质量代码的信号类结构变量。鼠标放到PV_IN引脚上,发现信号的质量代码ST=16#60,会不会是质量代码影响的输出结果呢?

通过实验验证,当PV_IN的信号质量为16#80时,输出PV_Out正常。原来Pcs7DiOu功能块会校验信号的质量代码,当质量代码为16#60时,会复位输出。
用户又问了“仿真过程中就不能模拟输出了吗?”别着急,APL功能库引入特性参数“Feature输入引脚”,可以灵活指定功能块的不同响应特性。Pcs7DiOu功能块中Feature的Bit30用于指定当仿真时是否钝化输出。Bit30=0,仿真时不会钝化输出;Bit30=1仿真时钝化输出。

通过这个故事,如果出现奇怪的问题不用急,可以通过正常与非正常的程序进行对比,仔细分析就会找到原因。另外我们可以看到APL在实际使用中是十分灵活的,使用时一定要注意Feature位的应用!
想了解更多的关于APL库的新功能功能,请参考:
《APL功能库新特性简介》
http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=A0472
《PCS 7 V7.1结构变量应用指南》
http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=A0463
更多精彩内容,请您关注西门子热线故事!