作为一个PCS7的新手,跟着入门指南战战兢兢的逐步完成,在最后自动生成block icon时,发现五个APL块缺失了一个motL生成的图标,故事就从这里开始。下面附件是入门指南链接文件。
链接:https://pan.baidu.com/s/1a3n9iP3Lhc68dMcfJDVi9w
提取码:rvfn
刚开始时以为是general block icon没有勾选自动生成,检查正常
手动从典型库(@PCS7TypicalAPLV8.PDL)中拷贝对应需要的motL图标,尝试用动态向导生成链接,一切正常(默认情况下动态向导是不打开的,需要在以下位置打开,视图-工具栏-动态向导,然后选择对应的功能,如下图所示)对于菜鸟选手,需要注意的是,先要先选中APL图标块才会出现这个选项。
然后又碰到一个问题,使用APL库内的模块,如PID块,编译自动生产wincc画面,上位的画面一个层级UNITA有通讯,一个层级UNITB通讯不通,看变量管理内通讯是绿色的,然后使用动态向导手动更改变量名后正常(实际还是原有的变量,只是手动又做了一次)。比如unitA是PID1,unitB是PID2,但是实际UNITB是拷贝的A,然后改了变量链接,自动生成画面时UNITA数据通讯正常,UNITB数据显示断线,然后手动动态向导UNITB中图标正常通讯(后来做了个测试,通讯不通的层级UNITB将自动生成的图标全部删除,重新编译后自动生成就可以了,如果不删除原先生成的图标编译是不行的)。此时motL的图标还是没有自动建立。
这时笔者已经开始吐槽PCS7的功能了,与愿景中的美好想象完全不合拍。后来向微信群的大神们请教,做了如下的一些测试
将UNITA的motl模块在CFC内指定除motl/1之外的画面,wincc可以自动生成UNITA的block icon(试验了2-5四个),但是UNITB的motl指定其他的还是不行(unitA指定5,unitB指定2,无论unitB指定哪一个都不可以)
重新拷贝UNITA整个层级,生成UNITC,所有图标正常生成,拷贝UNITB的电机CFC至UNITA,不能生成,拷贝UNITA的CFC至UNITB,正常生成(补充一点,所有测试motL必须设置成不是空白或者1,否则不生成),检查两个CFC无数遍,除了链接不同,没看出来啥区别
同样在UNITB中,如果我新拷贝的motL和老的motL指向同一个类型的block icon(如都是3),则两者都不显示,将新拷贝的指向不同的类型(不指向1),则新的会显示,老的始终不显示(无论指向哪个类型)
同一层级不同命名也没有用(同一层级CFC命名需要不一样,调用APL块时可以一致,另外一个层级名称一致的没有任何影响)
检查APL内的库版本为8.2,wincc版本内APL典型模板有V7和V8两种,官方说明是优先使用V8版本,不会有影响。
后续又做了测试从典型库里拷贝了一个mot L模板,然后新建了一个文件取名@PCS7Typical APLABC.PDL,然后手动在UNIT B的CFC中指向这个模板,这样就自动生成了图标。将原来好的UNIT A中的和UNIT B中的都指向ABC,结果A中两个电机有一个不显示了,B中都正常,然后我又把A中的改回来也只显示一个。这时,整个人都不好了,已经彻底晕菜。
第二天做了如下测试,红色为不正常显示图标,指向1都不正常
层级 | CFC名称 | 对应CFC中motL的block icon类型 |
A | MOTOR1 | 1
| 2 | 2 | 2 | 2 |
MOTOR5 | ABC | ABC | 2 | 2 | 2 |
B | MOTOR2
| ABC | ABC | ABC | ABC | ABC |
MOTOR4 | ABC | ABC | ABC | 2 | 2 |
C | MOTOR3 | 2 | 2 | 2 | 2 | 1 |
最后从其他项目拷贝了@PCS7TypicalAPLV8.PDL文件至项目,然后重新编译,将CFC中指向全部删除,或者无论指向哪个块都正常。
问题解决了,但是事实上我没记得我改过里面的文件,就算是个经历吧,给大家分享一下。