正是快速发展期,很多项目当时也是高级语言编写得,界面精美,动画逼真。很长一段时间,我为了维护这些电脑,经常半夜被叫到车间处理各种输入错误、漏洞引起的生产问题,导致耳朵经常出现幻听,总以为有电话铃声响起。考虑到工业组态软件的昂贵,一些项目,我开始也采用visual BASIC编写,同样的问题,同样痛。随着时间的推移,我公司有些项目也用到了IFIX、WINCC这样的组态软件,画面确实不如自己遍的漂亮,可是胜在稳定,小问题少。
时间到了2007年,旧项目这些画面动画逼真的电脑快淘汰了,这些项目文件对工控机设置参数从CMOS,到环境变量,到COM参数设置,最坑的是COM参数设置被编译到软件可执行文件了,如果不是以前看见对方工程师更换过电脑,你根本不知道如何更换完电脑让它正常工作,能更换一台电脑让它正常运行工业软件,需要很专业知识和经验,甚至成了机密,但经常联系不到对方项目工程师。
我公司有多台旧电脑面临这些问题,我决定开始用组态软件来改造这些项目,选择当时手边有的WINCC6.0来替换原来C++应用程序,功能都很熟悉,就是动画做出来花了很多心血,毕竟操作工习惯原来画面效果,按照原来效果做了很多动画,功能也基本与原来没啥区别,其他就是习惯问题,天天指导操作工应用,项目总算改造完了,能正常采集数据,画面显示,操作等,然后就是观察、跟踪。
大概过了5天问题就出来了,操作界面弹出异常,然后程序就卡死了,有时候连异常都不弹出,直接画面假死了,只好强制关闭WINCC,重新开启又正常了。为了解决问题,天天蹲论坛上发求助帖,整理收集一些解决办法:先看看日志文件,发现经常提示采集变量超时,也将动画变量统一为一个,状态用显示与否来体现,画面变量更新采用立即更新,不必要动画与操作工商量后改为变色,这样问题基本上消失了。
后来的项目,我基本上都不采用动画了,每次保存画面都提示内存消耗过多报警,让人很不踏实。
项目用NTP和SMITIC模式去做时间同步都不成功,咨询西门子热线怀疑是plc硬件版本的问题,由于项目已经运行,程序太多不能停机,所以就想着用wincc读取服务器的时间,然后把读取的时间写入PLC来做时钟同步,服务器是外置gps时钟的客户端,时间同步没问题,具体步骤如下:
下面的方法是使用WinCC的脚本把本地或者系统时间写到数据块(DB350)的变量中。
这些变量作为"Date_And_Time"数据类型变量被调用,传送到系统块"SET_CLK" (SFC0)中。
说明
步骤1
1、创建一个共享数据块DB350,在里面建立如下变量,如图所示:
2、创建1个功能FC30,在里面调用SFC0,如图所示:
3、写设置校对周期的循环时间程序,示例中设置为60S,如图所示: