用WINCC编程控制数据和字符串变化的技巧
2013-09-07郑毅
郑 毅
(武汉钢铁工程技术集体自动化有限责任公司 湖北 武汉:430080)
WINCC软件是德国西门子公司为其工业控制器(简称:PLC)开发的自动化软件系统。其目的之一是监视设备运行状况,实时报警和数据采集。更重要的目的是和PLC交换数据,给PLC传递数据并下达执行指令,通过PLC控制设备的运行。所以也被称为人机操作控制软件。通过运行画面来实施。如何用WINCC编程软件控制数据或字符串满足不同生产上的需要,这需要一些编程技巧才能完成。
1 生产需求
(1)在生产上,有时需要输入一个固定长度的数,当操作人员输入的数据多于或少于该数据的固定长度时,都需要有一个错误输入的提示,以便操作人员重新输入。这就需要用WINCC编程来解决。如何固定一个数的长度?在此称为:问题1。
(2)在生产上,经常会出现一个操作人员用电脑控制两条运行相同的生产线,要给两条生产线上的PLC输入不同的数据或者是字符串。在忙碌的时候,可能会把A生产线的数据输给了B生产线,而A生产线的数据与B生产线的数据通常是由一串数据中的某一位上的数据来区别。比如:在数据的第3位上,用1表示A生产线,用2表示B生产线,为了防止操作人员的误输入,就必须用WINCC编程的方法来限制它。即操作人员无论输入什么数据,在A生产线的数据第三位上总是用1表示,B生产线的数据第三位上总是用2表示,这样就能避免错误的产生。如何在数据中的某一位固定一个数值?在此称为:问题2。
(3)有时输入的一串数据,其显示的数据与给PLC去执行的数据顺序正好相反,怎样用WINCC编程的方法来实现它,这就需要编程技巧。如何取反数据?在此称为:问题3。
2 解决方法
首先要用PLC的编程软件(Step7)建立一个数据块(简称:DB块),并在该数据块中分配一个地址,其类型定义为字符型,并根据需要定义该字符的长度。注意:无论是数据还是字符串,都要把它的类型定义成字符型,这样才能保证以上问题能够解决。通常编画面程序的人与编PLC程序的人不是同一个人,这样就需要两个人的沟通。编画面程序的人要根据工艺的要求向编PLC程序的人提出要求。往往编画面程序的人不懂编PLC程序,而编PLC程序的人又不懂编画面程序。如果数据类型没有匹配好,调试半天也不知道错在哪里。这需要特别的注意。
然后在画面程序上定义与PLC对应的外部变量字符块(比如名称叫W),和一个与之匹配的内部变量字符块(比如名称叫N)。把‘W’和‘N’分别用‘输入/输出域’控件,组态在画面上。
(1)解决问题1
保证数据的固定长度,比如10个字。
右键点击‘N输入/输出域’,进一步点击其对象属性,跳出对话框,点其‘事件’,再进入‘输入/输出域’子目录下的‘键盘’,对应右边‘释放’执行动作框中选用‘C动作’,编程如下:
错误提示语句是写在一个静态文本上的,其中‘showerror’是该静态文本的动态值,‘showerror’为1时,静态文本就显示出来,提醒操作人员输入有误,需要重新输入;‘showerror’为0时,该静态文本就不显示,并且把内部变量值传递给外部变量。
定义字符指针是解决问题的关键,其中计算字节长度strlen是C语言的语句,而ss=GetTagChar(ApcN);又是WINCC自己的语言,所以在编程过程中,不仅要了解WINCC自带的语言,也要了解C语言。熟悉C语言的语句与函数,就能得心应手的完成各种编程工作。
(2)解决问题2
在字符串中的某一位上,固定一个数。比如有10个字符串,在其右边第三位上总是用‘1’表示。
和解决问题1的操作过程一样,编程如下:
如果输入的是1234567890,则结果就会是1234567190。要注意的是:指针ss的数组是从零并从数据的左边开始算起的,拿上面的数字来举例,即ss[0]='1',ss[1]='2'等等。
(3)解决问题3
显示的数据与给PLC去执行的数据顺序正好相反。比如显示的数据是1234567890,而PLC去执行的数据顺序是0987654321。
可以在画面上加一个按钮控件。当按下按钮时,就将显示的数据取反传递给PLC去执行。在按钮控件的对象属性中,‘事件’下的‘按钮’对应的子目录‘鼠标’,对应右边‘按左键’执行动作框中选用‘C动作’,对按钮编程如下:
其中:DATA_1、DATA_2等等是直接给PLC的外部变量。要求在PLC的数据块中,一一定义成字类型,即WORD类型;而在画面上把它们要一一定义成无符号16位数类型,这样传递的数据就不会出错。
3 结语
WINCC软件看上去非常简单,如果仅仅是连接数据、显示数据或者发一个简单的命令等,对编程人员的业务素质要求不高,一学就会。但是如果进一步的想玩转WINCC软件就必须有比较好的基础作为垫底。要了解数据库的连接、要熟悉C语言的语句与函数、要大概了解PLC的数据结构,有时还需要了解VBS的编程方式以及语句与函数等。用WINCC编程控制数据串和字符串的变化也仅仅是一个小技巧而已。
[1]西门子[中国]有限公司工业业务领域工业自动化与驱动技术集团。WinCC-- 创建HMI组态 -- 使用字符串[EB/OL].(2011-06-28)[2013-08-28]http://gongkong.gongye360.com/paper_view.html?id=116360.
[2]稚若初现0.WinCC数据报表实现方法介绍[EB/OL].(2012-07-19)[2013-08-19].http://bbs.gongkong.com/D/201207/446509_1.shtm.
[3]李林,王恒山.用WinCC实现自动化立体仓库控制与管理的动态数据交换[J].计算机应用与软件.2006(8);41-42.
[4]西门子自动化.西门子PLC的数据类型[EB/OL].(2006-11-15)[2013-08-18].http://gongkong.28xl.com/bencandy-2-6563-1.htm.