S7—400PLC系统时间设置方法及在炼钢厂中的应用

2017-03-06 21:20景志峰刘宁雁
电子技术与软件工程 2016年23期
关键词:数据类型

景志峰 刘宁雁

摘 要

主要介绍西门子S7-400PLC 硬件系统中,利用 Step 7编程软件进行对PLC硬件系统进行时间设定的方法,以及用编程软件读取系统时间的方法。通过这种方法的运用,成功地运用于武钢集团昆钢第三炼钢厂能耗累计、产量统计等工作。

【关键词】PLC Step7 数据类型 系统时间

西门子公司自控系统在武钢集团昆钢第三炼钢厂中应用非常广泛,例如4#转炉、3#LF精炼炉等过程系统。西门子S7-400PLC系统具有可靠性高、抗干扰能力强、适用性强等特点,而且软件易学易用,接口容易,编程语言接近原来的继电器电路,因此能完全满足炼钢厂的生产和发展需求。

炼钢厂4#转炉系统,采用的是西门子400系统硬件。应用西门子公司的Step7 V5.5 SP1 编程软件,Wincc6.0 SP2的上位监控软件,整个系统由转炉倾动系统、氧枪升降系统、散装料下料体统、底吹系统等几个主要环节组成。本文主要介绍在S7-400PLC系统中,如何对CPU的系统时间进行设定,如何同步计算机时间,如何运用系统功能块完成系统时间的读取。系统时间如何具体运用于炼钢厂4#转炉能源消耗统计工作中。

1 PLC时间的设定

打开Step7 V5.5 SP1 编程软件,让编程软件处于线监控状态,然后就可以在Step7 V5.5 SP1软件中进行CPU内部时钟进行的设定。其方法如下:

(1)首先打开Step7 V5.5 管理器,然后打开需要设定系统时间的项目。

(2)选中需要设定系统时间的CPU模块。然后选择Step7 V5.5 项目管理器工具栏中的PLC菜单。

(3) 在PLC菜单的下拉菜单中,选中的诊断/设置选项,在弹出的选项中选择设定时刻选项,然后就会弹出设定时间的对话框。

(4) 在设定时间的对话框中,有两个时间表示。其中PG/PC 时间选项表示的是计算机主机上的时间,也就是编程器或者上位机HMI中的时间。Modle time表示的是系统硬件内的时间,这个时间一般会默认为出厂设置时间。

(5)从设定时间的对话框中,我们看到,PG/PC 时间和Modle time时间一般情况下是不一致的。这个就需要把它们同步了,毕竟调整PLC硬件内的时间相比于调整上位机的时间要困难的多。在设定时间的对话框中,勾选“Take from PG/PC”选项,然后应用,就能够把计算机时钟与硬件内时钟同步。到此,硬件内时钟设定完毕了,如果在程序运用中读取的时间不准确,只需要调整计算机时间就可以了,而无需进入到Step7 V5.5 编程软件中,调整非常方便。另外,只要保证PLC不要掉电或者掉电的时候保证PLC的后备电池起作用,那么系统时间就能保持和计算机时间的一致。

2 PLC时间的读取

PLC硬件系统时间的读取方法主要是采用西门子编程软件自带的系统功能块SFC1(readsystemclock)來实现的。SFC1系统功能块的作用就是读取当前PLC的硬件系统时间,时间的数据类型----DATE_AND_TIME(简称DT)。DT时间这种数据类型是西门子PLC中比较特殊的一种数据类型,它长度为64bit,共包含8个字节,分别是Byte0-Byte7,对应年、月、日、时、分、秒、毫秒、星期, 但每个字节内的数据类型是BCD格式的。

在程序中DT数据类型是无法直接使用的,只有根据DT数据类型的存储情况把相应的字节读取出来,才可以在系统程序中使用。读取系统时间程序如图2所示。读取系统时间也可以使用到Step7中的IEC标准功能比如FC6、FC7、FC8从DT格式中提取出来,但这些都需要在调用相关的功能块,需要分配相关的存储空间,对于不太熟悉这些功能块的编程人员运用起来相对麻烦很多。在此介绍的如图2的提取时间方法既简单又实用,还容易掌握,非常适合广大编程人员。

图1中,第一段程序的作用是运用SFC1系统功能块读取当前PLC中的系统时间,把读取到的数据类型为DATE_AND_TIME(简称DT)的时间数据,存储到以DB1.DBX0.0地址开头的8个字节的寄存器中。这8个字节寄存器中就存储了DT数据中的年、月、日、时、分、秒、毫秒、星期等内容。第二段程序就是运用MOVE指令功能,抓取我们需要用到时、分、秒的时间数据。把存储在以DB1.DBX0.0地址开头的8个字节中的时间数据,赋值给 DB10的相应数据区。

采用MOVE功能所抓取出来的时间格式是用BCD码表示的,因此还需要采用BCD_I功能把BCD格式转换成可直接用于比较的整形数据格式才行。整形数据格式可以在程序中直接比较使用。相对于起始位置0,第3,4,5 字节分别为小时、分钟和秒,这里就需要把DB1.DBB3、DB1.DBB4,DB1.DBB5,这3个寄存器内的数据分配到数据块DB10中的DB10.DBW4、DB10.DBW8,DB10.DBW12寄存器中。为什么不直接运用DB1.DBX0.0开头的寄存器内容呢?因为,我们读取的系统时间变化率比较快,直接采用这个区域内的内容的话,容易引起误差,而且会加大CPU的负担,因此需要把数据赋值到其它存储区域。这里需要注意有一个字节寄存器分配到字寄存器中的问题,需要用到高低字节的概念。

3 应用情况

S7-400PLC系统一般在上电后,系统时间默认是从 1999年1月1日开始计时,这个是西门子公司出厂设备的时候就确定的时间,有些因为产品批次的不同,这个系统默认时间稍微有点不太一样。但总的来说,这个时间对于我们编程或者运用来说没有多大的意义而且非常的不方便。比如,在系统出故障的情况下,我们需要调取CPU的诊断缓冲区来的确定故障发生时间,以便进一步查明故障,但因为系统时间和当地时间对应不起来,根本无法判断什么时候出的故障,往往还需要根据默认时间去推算出故障的时间,既费时又不准确。因此,通过本文介绍的方法,需要让系统时间和计算机时间同步。

另外,在程序控制中如果需要用到系统时间来完成一些控制要求的时候,也可以通过本文介绍的方法来读取PLC系统时间。把抓取出来的系统时间数据,在程序中通过比较指令来设置时间触发点,以便于在设定好的具体时间点触发相应的程序控制从而完成任务。在武钢集团昆钢第三炼钢厂4#转炉的能源消耗统计工作中,就成功的运用了PLC系统时间。在设定的具体时间点来实现自动班累计和日累计能源消耗统计工作的。之前,4#转炉的班累计和日累计能源消耗的统计工作是让操作人员在规定的时间点,在上位机或者操作站上用手动按钮清零的方式来完成的。这种操作存在人的不稳定因素,非常容易造成班累计和日累计能源消耗统计不准确,人为误差严重,而且实际运行下来的结果也几乎没有准确过。为此,采用读取PLC系统时间的方法,然后运用比较时令来设定准确的时间点,每当系统时钟为0:05:00时,就触发一个标志位。运用这个标志位来自动完成日累计、班累计清零工作。这样不但减少了操作人员的劳动量,也提高了能源消耗统计的准确性,为4#转炉的稳定生产打下良好的基础。

作者单位

1.昆明工业职业技术学院 云南省安宁市 650302

2.武昆集团安宁公司炼钢厂 云南省安宁市 650302

猜你喜欢
数据类型
详谈Java中的基本数据类型与引用数据类型
如何理解数据结构中的抽象数据类型
范畴数据类型上的子类型*