PLC侧的启停控制程序如何与WinCC协同工作

系列视频《WinCC+PLC综合实战演练》已经累计发布了十余期了,鉴于有网友要求对一些关键知识点形成文字资料,因此,特别概括性的做一些总结,以弥补视频中遗漏的、未提到的部分,供有需要的小伙伴做参考。


前文探讨了"污水处理"应用中,有关泵、阀的启停控制程序(参见文章《编写泵、阀等设备的启停控制模板程序》FC版),并录制了一期视频,将FC版的启停控制程序重写为FB版(参见视频《【工程实例】编写FB版的"启停模板",初步探讨FB与FC的异同》)。


一、明确WinCC侧参与控制的数据

如图1所示,以控制"泵"的启停为例,WinCC写给PLC侧的数据有:

  • 启动指令:start,数据类型为:BOOL
  • 停止指令:stop,数据类型为:BOOL
  • 故障确认:ack,数据类型为:BOOL
  • 从WinCC侧通过点击相应的"按钮",将上述三个BOOL型的数据发送到PLC端,PLC执行相应的"启停控制程序"(如图2),以实现泵的启停控制。

    同时,WinCC会从PLC侧读回设备的状态字,以便在画面上根据状态字的不同,显示不同的颜色,如图1所示,显示为"蓝色",即说明此时泵处于停止状态。

    通过上述分析可知,WinCC画面中参与到"泵"的启停控制与状态监控的变量共有4个,三个BOOL型的,用作控制;一个Word型的,用作状态监视。

    如图2所示,为"泵"的启停控制程序,为了集中管理,特将参与到WinCC控制与监视的变量都保存在DB1中,如启动指令为DB1.DBX0.0,状态字为:DB1.DBW2等。

    如图3所示,若要在WinCC侧做"1#自吸泵"的控制与监视,只需要在"变量管理器"中建立相关的变量,并与图3中的红框中的数据关联起来即可。


    二、定义结构变量

    通常,为了方便组态、维护和数据管理,可将上述参与控制与监视的4个变量定义在一个结构中,如图4所示。"BIT"型的三个数据,用于控制设备的启停,"status"为从PLC侧读入的"状态字",这4个元素皆定义为"外部变量",新建的结构变量的实例将与DB1中的数据相关联。(注意:元素"control"定义为内部变量,其用于WinCC侧的辅助启停控制,这部分内容我们以后再展开。)


    三、创建结构变量的实例

    如图5所示,定义了结构变量"pumb"后,就可以创建结构变量"pumb"的实例了,具体步骤如下:

    1. 选择WinCC与PLC的通讯通道,标准形式为:S7协议集->通道单元->连接->"变量";本例中二者通过PROFIBUS进行通讯,因此,要在PROBUS下新建变量;
    2. 新建变量,指定"变量名称",数据类型选择为结构变量"pumb";
    3. 在"地址"栏中,点击"选择"按钮,为变量指定PLC侧的地址,如图3所示,与"1#自吸泵"相关的数据在DB1.DBX0.0开始的连续地址范围内,因此,在此处将其指定为DB1,从DBB0开始即可。

    如图6所示,为创建的"pumb"的实例,蓝框中表示其关联的PLC侧的地址,可以检查一下是否与DB1中定义的相对应,如果有不对的地方,可以手动重新关联。


    四、启停控制与状态监视

    创立的结构变量的实例后,就要用它们进行"泵"的启停控制和状态监视了。

    1、启停控制

    "启停"命令以及"故障确认"均做在按钮的鼠标事件响应中了。大概的思路是,点击"start"按钮,然后通过"OK"按钮确认,将启动指令"1#自吸泵.start"设置为"1",该值通过通讯传送给PLC,执行图2中所示的程序,完成"泵"的启动。"停止指令"和"故障确认"的逻辑类似。

    注意:由于WinCC这边"启停窗口"做成了"模板",它即可以控制泵的启停,也可以控制"阀"的开、合,为了适应这种"通用性",将"画面窗口"的"变量前缀"属性设置成动态属性。基于此,图7中的脚本中涉及到的变量都隐去了"前缀"。这部分内容,我们将在后面的文章中做详细讨论,这里,只需要将"start"看成"1#自吸泵.start"即可。

    2、状态监视

    在WinCC侧除了能控制"泵"的启停外,还要监视当前"泵"处于什么状态。如图8所示,用"圆"做法是用"颜色"来表示其实时状态。为"圆"的颜色组态动态属性,关联结构变量"1#自吸泵.status",然后对其值进行判断即可。

    判定依据要与PLC侧"状态字"的定义相一致,如图9所示。定义故障时,status=1;停止时,status=2;运行时,status=4。因此,在图8中做颜色配置时,也要与之相符,故障时为红色,停止时为蓝色,运行时,"圆"透明。


    <<上一篇《「视频随手文档」编写泵、阀等设备的启停控制模板程序》