APP下载

浅析西门子S7-300PLC系统时钟在自动化控制系统中的应用

2020-02-25罗时俊丁勇杰

汽车实用技术 2020年1期
关键词:油温组态触摸屏

罗时俊 丁勇杰

摘 要:西门子S7-300PLC系统时钟在自动控制系统中的应用非常广泛,但S7-300PLC系统时钟的现场应用程序设计比较复杂。文章针对S7-300PLC系统时钟的应用进行了详细的分析。并从S7-300PLC系统时钟的设置方法,S7-300PLC系统时钟读取方法以及S7-300PLC系统时钟的数据类型等方面进行讲解。同时通过工业现场实例结合SIMATIC Wincc flexible 2008对S7-300PLC系统时钟的应用进行分析,希望能为相关专业技术人员提供参考。关键词:西门子;S7-300PLC;系统时钟;自动化控制系统;自动化;西门子PLC中图分类号:U462.1  文献标识码:B  文章编号:1671-7988(2020)01-67-08

Abstract: The application of the Siemens S7-300PLC system clock is extremely widespread in automatic control system, but the S7-300PLC system clock is quite complex in the application of the field programming. This article has carried on the detailed analysis in view of the S7-300PLC system clock application. And explanation the plc system clock from the method of set the S7-300PLC system clock, the S7-300PLC system clocks reading method to S7-300PLC system clocks data types .Meanwhile, analyse the application of S7-300PLC system clock through the industry scene example to unifies SIMATIC Wincc flexible 2008, hoped can provide the reference for the correlation professionals.Keywords: Siemens; S7-300 PLC; System clock; Automation; Automatic control system; Siemens PLCCLC NO.: U462.1  Document Code: B  Article ID: 1671-7988(2020)01-67-08

引言

西門子S7-300 PLC是模块化PLC系统,它主要由电源模块、CPU模块、接口模块、信号模块以及通讯模块等模块组成,能够满足大、中、小等不同控制规模的性能控制要求,所以它在工控行业中的应用非常广。

另外, S7-300PLC能够很好的与人机界面(HMI)进行数据交换,对控制对象进行可视化的操作与控制。当S7-300PLC与HMI通过相关通讯连接上并进行相应组态以后,用户只需在人机界面(HMI)中输入数据,这些数据就会被传送到S7-300PLC中,并通过PLC中编写的控制程序进行相关控制。

在工业现场控制以及工业生产中,时间是最为常用的参数,其应用非常广泛。如设定某工位的起始时间和结束时间;统计一个班次的生产时间,或者每个班次时间到后生产的产品数量;自动化设备的自动关机时间与自动启动时间控制;冲压行业中冬季液压油自动加热,液压油温度分季节冷却控制等等。但在实际应用中,由于受编程设计人员的能力、现场的复杂情况等因素的影响,S7-300PLC的系统时钟在应用过程中经常会遇到较大困难。这包括不懂得如何使用系统时钟功能块、不懂得设置时间参数、不会设置PLC系统时钟,无法读取系统时钟,时间参数不能被其它程序调用等等。本文将详细阐述时间功能块SFC0、SFC1的使用方法、时间常数的设置方法以及时间常数的存取格式等,并通过在触摸屏SIMATIC WinCC flexible 2008上设置需求时间与S7-300PLC进行通讯以实现现场控制来进行讲解。

1 S7-300PLC系统时钟的设置方法

1.1 系统时钟设置的重要性

在PLC的硬件组态中,PLC的系统时钟可以在“Set Time of Day”里面找到。如图1所示:PLC的系统时钟就是Module time(模块)时间,如果不设置该时钟的话,系统时钟默认为PLC本体统一的时间,有可能是1990年或者其他不定的时间,这样在实际应用中是无法实现控制要求的。所以需要对系统时钟进行设置,以让PLC的系统时钟与我们当前的实际北京时间相一致,以确保我们工业控制的准确性。

1.2 系统时钟的设置方法

1.2.1 将PLC系统时钟校准为工控电脑的时间的方法

现在很多现场控制均会使用“工控电脑”,以方便现场对PLC程序的上传、下载、监控以及修改等操作。这时我们可以将PLC的系统时钟校准为该工控电脑的系统时间即可。具体操作步骤 如下:

第一步:将工控电脑的系统时间修正为当前的北京时间;

第二步:打开STEP7编程软件,再打开我们需要进行系统时钟设置的PLC的程序并通过通讯与该PLC硬件进行连接(一般情况下工业现场都是连接在一起的,只需要打开该相关PLC程序即可);

第三步:根据如图2所示的步骤打开Set Time of Day(设置时钟)进入图2所示界面,图2中的“PG/PC time”后面的时间就是工控电脑的当前时间;

第四步:选中Take from PG/PC前面的复选框,使其变为打钩的形式,然后点击“应用”,再点击CLOSE退出即可。

到此时,PLC系统时钟就会与工控电脑的系统时钟相一致,接下来就可以进行需要的时间控制了。

1.2.2 使用S7-300PLC的SFC0“SET_CLK”设定TOD(系统时钟)

1.2.2.1 概要

S7-300PLC中可以使用SFC0这个集成的专用系统标准功能进行PLC系统时钟的设置,通过这个设置可以将PLC系统时钟精确的设置为任意想要的时间,以此来进行所需要的程序控制。SFC0系統标准功能的基本形式如图3所示:

它的使能端EN只要导通一个脉冲就会将PDT前面的时钟值设置为PLC当前的系统时钟值,所以在实际应用中在设置完系统时钟后就需要将EN端断开,以避免一直设置系统时钟。输入端PDT的数据类型为DT型(DATE_AND_TIME型),数据存储在临时存放区L区和数据块区D区。其输出RET_VAL为INT型,数据可存储在I、Q、M、D和L区,主要起返回故障代码的作用。所以如果要通过SFC0(SET_CLK)对S7-300PLC的系统时钟进行设置,就需要定义一个数据类型为DATE_ AND_TIME的数据块作为输入才有效。假如直接使用中间变量M进行赋值,SFC0是无法识别的,就会报错,无法设置系统时钟。SFC0(SET_CLK)输入输出详细数据类型如图4所示:

1.2.2.2 数据类型DATE_AND_TIME的格式

DATE_AND_TIME数据类型是复合数据类型,使用这种数据类型输入日期和时间时,以8个字节64位二进制编码的BCD码格式进行存储(即4位BCD码代表一个参数)。S7- 300PLC系统规定DATE_AND_TIME数据类型最多可以设置的范围是DT#1990-1-1-0:0:0.0(DT#90-1-1-0:0:0.000,最后两个00可以省略,如果不是0就不能省略)到DT#2089-12-31- 23: 59:59.999。

下面的实例给出了日期和时间分别是2015年7月24日星期五16:12:35:619毫秒的语法。下列3种格式是可行的:

● DATE_AND_TIME#2015-07-24-16:12:35.619

● DT#2015-07-24-16:12:35.619

●  或者DT#15-07-24-16:12:35.619(我们常用这种方式进行定义)

64位的DT(Date_And_Time)变量类型代表的具体含义为:第0位-第6位分别代表:年、月、日、时、分、秒、毫秒,由于毫秒是3位数,需要3个BCD码来表示,所以第6位代表毫秒的百位和十位,第8个字节,也就是第7位的高地址的4位(x7.4~x7.7)用来代表毫秒个位。而第8位的低地址4位(x7.0~x7.3)用来表示星期。具体如图5所示:

另外,我们可以使用系统功能FC3将日期和时间格式合并为复合型数据变量DATE_AND_TIME;使用FC6提取日期;使用FC7提取星期;使用FC8提取时间以方便我们的现场控制。具体如图6所示:

1.2.2.3 定义数据块DB作为SFC0的输入变量进行系统时钟设置

(1)在STEP7中创建一个DB数据块 如图7、图8所示:

注意,DB数据块的符号名必须进行命名,要不然在程序中调用的时候无法直接全部调用整个定义的8个字节64位数据类型的DB数据块。这是因为我们最大只能调用一个数据块的双字类型即:DB1.DBD0这种样式,仅仅只有32位,所以定义了数据块的符号名以后我们就可以调用这个符号名来调用整个64位的变量了。

(2)打开DB1在其中定义一个DATE_AND_TIME的变量(注意初始值需要手动输入:DT#90-1-1-0:0:0.000表示1990年1月1日0时0分0秒)如图9所示:

(3)打开组织块OB1,在里面编写系统时钟设置程序,如图10所示:

图10中,m0.0是与触摸屏链接的变量,它的作用是当m0.0导通时就将PDT前面变量”SET_TIME.setclock”中的设置值设置为当前PLC系统的系统时钟。注意,m0.0不能一直导通,否则系统时钟的值会一直被设置为”SET_TIME. setclock”中的值,相当于保持设置值不变,而不会是正常的可以自动增加的时间。

1.2.2.4 在触摸屏中组态需要设置的系统时钟值

为了通过触摸屏对PLC系统时钟进行设置,我们必须要会组态触摸屏相关变量。现在需要做的就是在触摸屏上组态“确定”按钮m0.0和“系统时钟设置值” SET_TIME.setcl -ock。

(1)新建一个触摸屏工程

打开SIMATIC WinCC flexible 2008,并点击“新建”按钮,选择如图11中所示的触摸屏类型,然后点击确定按钮进入新工程。

(2)在新工程中组态“系统时钟设置”值 SET_TIME. setclock。

如图12就是通过一个IO域组态一个DATE AND TIME类型的复合型变量,触摸屏中默认的初始值是2002年12月31日10:59:59。该变量名为:系统时钟设置,它链接的变量为S7-300PLC中的DB1数据块以DB1DBB0开始的8个字节的变量。

(3)当系统时钟值在触摸屏上输入完成后,需要将该值传送到S7-300PLC中控制它只设置一次,所以需要组态一个“确定”按钮,这个按钮的链接变量是S7-300中的M0.0根据图13中的程序控制要求,每一次只能让系统时钟设置一次就像正常时钟一样开始运转起来,所以需要这个控制按钮在按下的时候设置系统时钟,当松开以后就需要停止设置,让系统时钟以我们设置的时间为起点开始自然运行。具体如图13和图14所示:

然后,我们将组态好的触摸屏下载到实际的触摸屏上后,在实际的触摸屏上进行如图15所示的设置:

当点击确定按钮并放开以后,S7-300PLC系统时钟的当前值就被设置为2015年7月30日12点50分0秒了。通过观察PLC中的系统时钟如图16我们可以发现,我的电脑的实际时间是2015年7月30日14点11分57秒,而模块时间,也就是系统时间却为我们设置的2015年7月30日12点50分0秒,然后系统时钟就在我们设置的时间基础上开始运行。

2 S7-300PLC系统时钟的读取方法

2.1 概述

读取PLC系统时钟,也就是通过PLC程序读取出PLC模块的系统时间,用于工业现场控制。前面我们已经讲解了PLC系统时钟的校准方法,现在我們就来讲解PLC系统时钟的读取方法。

我们只能通过S7-300PLC的系统标准功能SFC1(READ_ CLK)来对S7-300PLC系统时钟进行读取。而至于我们读取出来的系统时钟值应该存放到什么地方呢?下面我们就来看一下SFC1程序符号中各引脚的作用:

图17是SFC1在程序中的符号表现形式。

图18是SFC1程序符号中各引脚的含义以及所要求的数据类型,其中RET_VAL返回故障代码。SFC1的输出CDT的变量类型为DT数据类型,也就是说这与SFC0的PDT输入变量类型是一样的,是DATE_AND_TIME数据类型。那我们是不是可以直接使用校准系统时钟时定义的数据块DB1呢?答案是可以使用DB1,但是必须在已经定义的DB1.DBB0~DB1.DBB8的基础上重新定义一个非重复的DATE_AND_TIME数据类型变量,如可以定义DB1.DBB9~DB1.DBB16。

从图18中我们还可以发现,CDT输出的变量存储在数据块D区和OB1组织块的临时数据存放区L区。所以我们可以读取出来的系统时钟可以存储在这两个区内。那他们有什么区别呢?

2.2 S7-300PLC系统时钟的读取方法

2.2.1 系统时钟存储在L区的系统时钟读取方法

在S7-300PLC的组织块OB1的临时变量区域内,系统自动定义有一个数据类型为DT(Date_And_Time)的变量“OB1_DATE_TIME”它是以LB12为起始地址8个字节的复合型变量,共64位,即LB12~LB19。其定义如图19所示:

使用本方法读取系统时钟的程序如图20所示:

读取出来的系统时钟存放在临时存放区L区的LB12~ LB19中,现在通过触摸屏设置好当前时钟后,读取出来的时间可以在监控变量里面看到,但是由于L区只能在定义它的那个功能块里面使用,在变量监控表里面无法监控,所以我们通过如图21所示的程序将LD12和LD16中读取出来的时钟传送到全局变量MD20和MD24中进行观察。

从图22中我们可以发现,设置的系统时钟和读取出来的系统时钟完全一致,这是因为我们设置完后立马就读取出来的数据,所以完全一致。如果我们设置完时钟后等一段时间再进行读取的话,那读取的时间点绝对比设置的时间点晚。如图23所示,读取出来的时间已经与设置的不一样了。时间已经从设置时的12点50分走到了读取时的13点08分19秒315毫秒,最后一个数字5代表的是星期,表示今天是星期四。

2.2.2 系统时钟存储在D区(数据块区)的系统时钟读取方法

如果读取出来的系统时钟需要存储在数据块中,那么就需要定义一个数据块区间用于存储我们读取出来的时钟数据。

我们可以将这个数据块区间定义在设置系统时钟的数据块中,当然也可以定义在另外一个数据块中。比如,定义在DB1中的话就需要在原来DB1.DB0~DB1.DB7的基础上进行定义,即可以定义到DB1.DB8~DB1.DB15或者其他区间。如果是另外定义一个数据块的话就可随便定义了。下面以定义在与设置系统时钟相同的数据块DB1中为例进行讲解。

在DB1中设置系统时钟的变量setclock的下一行定义读取系统时钟的变量readclock如图24所示:

用于读取系统时钟的变量定义好之后,现在我们需要做的事情就是将系统时钟读取到这个设置的变量里面,进行现场控制。

从图25中我们可以看出读取出来的系统时钟是存放在以DB1.DBX8.0为起始地址的64位数据块中。

3 S7-300PLC系统时钟在自动控制系统中的应用

本章将通过冲压行业中的班次产量统计、能源节约和提升产能等三个方面来探讨S7-300PLC系统时钟在自动控制系统中应用。

3.1 系统时钟在冲压车间单双班生产中的应用

汽车制造的四大工艺之一就是冲压,所以冲压在汽车行业中占据着非常重要的地位,所有汽车零部件都需要通过冲压成型,这是一个庞大的工程。所以精确的统计这些冲压件的生产量就显得非常重要了。

现在我们就对S7-300PLC的系统时钟在单双班生产产品统计中的应用进行分析。某公司冲压车间根据不同的生产需求会进行双班排产以及单班排产。这时他们需要设计一个计数系统进行产品自动计数,当下班时可以清楚的知道当班生产的总产品数量。

根据控制要求,现在设计了控制系统如下:

通过检测压力机在下死点的信号作为冲压一次的计数信号来源,该系统设置有双班生产和单班生产两种模式。如果是双班生产模式,那么第一班次的生产时间为早上8点到下午17点,17点半产品计数进行自动清零;第二班次为18点到第二天凌晨2点,产品计数在凌晨2点30分自动清零。如果选择的生产模式是单班生产模式,那么产品计数将会在午夜23:59分进行自动清零。

系统设计思路如下:

第一步,先通过程序根据北京时间设置好S7-300PLC的系统时钟,再将系统时钟读取出来;

第二步,设计单双班产品计数程序;

第三步,设计产品自动清零程序;

第四步,组态触摸屏控制按键。

3.1.1 设置系统时钟和读取系统时钟程序设计

系统时钟读取出来以后,现在我们只需要取其中的时间进行控制就行了,所以我们使用FC8将时间提取出来。具体程序如图29所示:

由于FC8提取出来的时间是TIME_OF_DAY格式,所以我们无法直接在程序中看出当前时间情况,现在在监控表里面可以看出,如图28所示:

3.1.2 设计单双班产品计数程序

图30中MW60是单班计数的产品件存储变量,MW62是双班计数的产品件存储变量。

3.1.3 设计单双班计数自动清零程序

在进行单班生产时,当到凌晨23:59分的时候进行产品件自动清零,为下一工作日的生产做好准备。

在进行双班生产时,第一班次在下午17:30分进行产品自动清零;而第二个班次则在凌晨02:30分的时候进行产品自动清零。

3.1.4 组态单双班计数画面

根据生产控制需求,我们在触摸屏上组态单双班生产时的产品计数画面如图33所示:

到这里,通过S7-300PLC系统时钟控制的产品计数自动清零系统设计完成。系统时钟在类似的工业控制中应用非常广泛。

3.2 分季节控制离合器油温冷却

汽车行业的冲压车间主要通过压力机进行冲压成型,这些冲压设备在运行过程中主要靠离合制动器来控制它们的运行与停止。离合器油温对冲压系统的影响非常大,特别是对于1600吨及以上的大型冲压设备更是如此。当温度过高时,一般情况下超过65度时就不允许压力运行了,而在离合油温过低时却无法进行正常的离合与制动,就有可能会出现数千吨压力机制动效果不佳产生打滑的现象。所以控制好它们的离合制动油温至关重要。

像我所在的江淮汽車重卡厂冲压车间,厂家设计的离合器油温开始冷却的温度都是40度,冷却到30度又开始进行加热。由于公司处在安徽合肥,天气一般是冬天特别冷,夏季特别热。所以厂家的这种设计只符合于春季和秋季使用,在冬天的时候油温冷却得太早了,在夏季的时候油温又冷却得太晚了,这就对正常生产生产了很大的 影响。为了消除这种不合理设计。我们在设备厂家原设计基础上做了改进——“分季节控制压力机离合油温加热与冷却控制”。

3.1节讲的是利用读取出来的系统时间进行产品自动清零控制,现在我们使用读取出来的月份进行离合油温加热与冷却控制。根据合肥的实际情况,我们将合肥的天气划分为4个季节,分别为天气炎热的夏季(6、7、8、9月)、天气异常寒冷的浓冬季(12、1、2月)、天气凉爽的春秋季(4、5、10月)和天气较冷的初冬初春季(11月和3月)。

由于没有专门用来提取系统时钟月分的功能块,所以我们无法直接利用标准功能块进行月分的提取。可以使用整数比较的方法就可以很简单的进行月分提取了。

由于DB1.DBD8提取出来的是年、月、日和时四个量的BCD码表示形式,所以首先需要将月分所在的DB1.DBB9单独取出来,由于在S7-300PLC的指令系统中没有像S7-200PLC指令系统中那样直接用于字节比较的指令,所以还无法单独使用DB1.DBB9进行比较,而是需要使用整个的DB1.DBW8通过相关运算并转换为整数形式后才能进行比较。具体如下:

从图34中我们可以看出当前是2015年8月份,而通过转换以后在MW124内就只有整数8了。下面图35、图36、图37和图38就是我们划分的4个季节的识别程序。

下面就是通过系统时钟控制的离合器油温冷却控制程序:

通过这样改进以后,车间的离合油温可以根据季节进行自动的调节在多少温度开始冷却,防止了以前统一在40度时开始冷却带来的很多不合理现象。比如冬季的时候本来气温很低,但是离合器冷却水阀却在40度就开始冷却了,由于制动过程中产生的热量与冷却的功效相抵消后,整个离合油温会维持在35度左右达到平衡,   这就导致离合器冷却水阀会在整个生产过程中都处在运行状态,而我们生产过程中只需要离合器油温超过25度就可以了。通过以上改进以后,冬季时,当离合油温高于46度开始降温,温度降到35度停止降温。夏季离合油温超过35度就开始降温,降到25度就停止降温。而在其他时候温度都是降到30度就停止降温,这样确保了整个冷却系统能够根据季节进行自动调节,在不需要降温的时候就停止降温,需要降温的时候就降温,大大节约了能源降低了消耗。

4 结束语

总之,随着国家工业4.0战略的提出,自动化系统的应用将越来越广泛, S7-300PLC系统时钟的智能应用也将会越来越广泛。所以,掌握好这部分知识,将会对相关专业人士在以后的工作中灵活的进行智能控制起到很大的作用。

参考文献

[1] 李文群.西门子S7-300PLC初级应用.技成培训网. p1-27.

[2] 向晓汉.西门子PLC S7-200/300/400/1200应用案例精讲.[M]化学工业出版社 p32-36.

[3] 孙承志.西门子S7-200/300/400 PLC基础与应用技术.[M]机械工业出版社 p106-123.

[4] 廖常初.跟我动手学S7-300/400 PLC.[M]机械工业出版社p179- 193.

[5] 廖常初.西门子与人机界面(触摸屏)组态与应用技术.[M]机械工业出版社 p1-270.

[6] S7-300/400梯形图(LAD)编程参考手册.p1-228.

[7] SIMATIC 用于S7-300 400系统和标准功能的系统软件参考手册p117-118, p415-426.

猜你喜欢

油温组态触摸屏
浅谈力控ForceControl V7.2组态软件在自动化控制工程中的应用
DCS模拟组态技术研究
皮肤“长”出触摸屏
组态软件技术现状与发展
高职“工业组态技术”课程建设探析
一根筷子试出最佳油温
一根筷子试出最佳油温
358:基于图像识别的虚拟触摸屏系统
如何判断油温?