发布于 2011-07-26 10:33:17
122楼
不好意思,还有个问题想请教。
剑忠大侠您提到:“2、“IN_D8,OUT_D8,IN_A4”这些是我专为使用CFC工具时开发的I/O驱动功能块,但不适用于无CFC工具的组态编程,具有模块故障诊断报警、限幅、量程标度、信号方向组态、通道信号强制等功能。该系列功能块核心就是使用了系统功能SFC5(GADR_LGC)。”
我查看SFC5是通过设置找到IO通道的块。
还想请问一下,如何可以确认通道故障的方式?
在一些别的品牌的DCS中,模板本身提供一些通道错误的标志位。
而用STEP7+WINCC方式,我使用的方式是,判断小于3.8ma,大于20.2ma,我判断通断错误。但是这种方法,我认为不是最最真实的方式。
其中我也尝试查找ET200M(我们常用的ET200M)的诊断数据,通过诊断来读取,当时也读上来了。但是,一方面是ET200M手册中,我不能确认哪几项可用于判断通道错误,另一方面用一堆SFC来读状态,加上IO模块状态前还应首先读取通讯模块状态。所以我认为也超出我个人能力。
在PCS7中,CFC编译时候有“产生模块驱动”选项,我一度认为找到方法。可是系统编译时候产生的那些系统块,我无法明白其机制,所以也应用不到STEP7+WINCC项目中。
唯一可以借鉴和学习的就是QC代码机制。在我刚做的项目中,因为点数是最多的一次,涉及H,HH,L,LL报警的点也多,为节省授权数,我把模拟量点都设置为有QC属性,当STEP7中判断通道错误时写QC为00,则WINCC运行后,一旦错误,该数据变为灰格,用于给操作工提示该数据有错误。之前我一直是用一个BOOL变量动态化该IO域的背景类型。