一种基于通信的PLC 控制系统时钟同步方案

2020-06-02 09:18任东宇王海群刘运洲孟廷豪
化工自动化及仪表 2020年2期
关键词:功能块调用以太网

任东宇 王海群 胡 昊 刘运洲 孟廷豪

(北京航天石化技术装备工程有限公司)

随着石化和化工行业的蓬勃发展,工业装置规模不断提升,配套的控制系统也日趋复杂。 部分复杂工业装置会使用到多台PLC 和操作面板,这些控制设备之间使用现场总线或工业以太网等方式连接并进行数据交换,组成一套完整的控制系统。

工业装置在实际运行过程中,如果发生系统故障,一般会按照时间轴查询工艺参数记录和历史报警信息来进行故障诊断,这种故障诊断方法需要整个控制系统的时钟保持精准同步,如果系统中不同PLC 或操作面板存在时间差,将会对故障诊断造成困难, 严重时甚至会引起事故误判,影响装置运行安全。

目前,西门子的中大型PLC 和部分以太网通信卡件(如CP343/443)等均自带时钟校准功能,主要有NTP 模式和SIMATIC 模式, 只要在PLC或通信卡件上进行相应的设置即可完成时钟自动同步。 但这两种时钟校准模式的应用具有一定的局限性。 NTP 模式必须基于以太网,网络内必须有稳定的时钟服务器,且不支持小型PLC(如S7-200 系列);SIMATIC 模式不必局限于以太网,也可以基于Profibus 或MPI 通信, 但必须购买CP343/443 等通信卡才可以使用,而且与NTP 一样,SIMATIC 模式也不支持小型PLC (如S7-200系列)。

在实际使用中,受限于硬件有可能无法使用NTP 模式和SIMATIC 模式进行时钟同步。此时也可采用单独设备人工对时的方法。 但是这种对时方法存在一定的弊端,目前PLC、操作面板等电子设备, 内置时钟均是基于晶振或RC 振荡电路等方式生成的,存在一定的误差,需要人为地定期进行对时,否则就会导致控制系统内部时间不一致。

针对上述问题,笔者提出了一种多设备控制系统时钟自动同步方案,此方案基于通信,可自动同步装置内多台西门子系列PLC 和操作面板的系统时钟,也能使装置的系统时钟与厂级DCS同步,有效避免由于系统时钟不一致导致的故障误判等问题。

1 控制系统组成

当一套工业装置内存在多个单体设备,或设计了备用设备时,每台单体设备往往会单独采用一套PLC 和操作面板进行控制,PLC 与控制面板之间、PLC 之间通过通信交换数据, 通信形式有可能为以太网、Profibus 或Modbus 等方式。 这样既保证了整套装置控制系统的完整性,也使得每个单体设备的控制系统相对独立,其中任何一部分控制系统故障都不会对整套装置产生太大的影响,分散了控制系统风险。 图1 所示为典型控制系统结构。

图1 典型控制系统结构

2 时钟自动同步方案

2.1 方案概述

西门子系列PLC 具有专门的系统功能块可以操作系统时钟,以S7-300 系列PLC 为例,调用系统功能块SET_CLK(SFC0)可实现写入PLC 时钟的功能,调用系统功能块READ_CLK(SFC1)可实现读取PLC 时钟的功能。 系统功能块SFC0 和SFC1 写入、 读取的时间值需存储为西门子PLC专用的时间数据格式DATA_AND_TIME,其数据结构定义和数据范围如图2 所示。

图2 DATA_AND_TIME 数据结构和范围

该数据类型共占用8 个字节, 分别以BCD码存储年、月、日、小时、分钟、秒、毫秒及星期等时间数据[1]。

笔者设计的时钟同步方案主要通过调用SFC0 和SFC1, 并通过通信传输时钟数据等方式实现控制系统内时钟同步和初始时钟设置。 该方案的时钟传递示意图如图3 所示。

图3 时钟传递示意图

2.2 多台PLC 之间的时间同步

需要选择一台PLC 下发时钟数据,相当于时钟主站,其余PLC 接收时钟数据,相当于时钟从站。 例如选择图1 中的设备A_PLC 下发时钟数据,设备B_PLC 和设备C_PLC 接收时钟数据。 在设备A_PLC 内定义时钟下发数据块DB1,DB1 共14 个字节,数据格式如图4 所示。

图4 时钟下发数据块

其中0~7 字节定义为DATA_AND_TIME 类型,8~11 字节占位备用,12~13 字节存储时钟下发脉冲。

设备A_PLC 中调用定时中断系统组织块OB35,每100ms 执行一次中断程序。OB35 内编写时钟下发程序,主要包含以下3 部分内容:

a. 系统时钟读取, 调用系统功能块READ_CLK(SFC1),读取当前系统时钟并写入至DB1 内。

b. 定时下发脉冲, 以每5s 执行一次时钟同步为例,调用两个接通延时定时器,输出一个占空比为1/6 的方波信号,即每5s 一个高电平脉冲信号,高电平持续1s,此脉冲信号作为时钟同步标志位写入DB1 的第12 字节0 位。

c. 时钟数据下发, 根据PLC 之间的通信形式, 调用相应的系统功能块进行通信发送数据。例如若所有PLC 基于以太网通信, 在PLC 硬件组态内设置以太网连接后,调用西门子以太网通信功能块AG_SEND, 将DB1 内容分别通信传输给设备B_PLC 和设备C_PLC。

设备B_PLC 和设备C_PLC 接收时钟数据,并设置系统时钟,主要包含以下3 部分内容:

a. 定义时钟接收数据块DB2,数据格式同设备A_PLC 内的DB1。

b. 根据PLC 之间的通信形式,调用相应的系统功能块进行通信接收数据,例如若基于以太网通信, 调用西门子以太网通信功能块AG_RECV,将设备A_PLC 下发的时钟数据接收并存储在DB2 内。

c. 调 用 系 统 功 能 块SET_CLK (SFC0),将DB2 内的时钟数据写入PLC 时钟寄存器,写入时钟的标志位为DB2 的第12 字节0 位。

通过上述操作即可实现多台PLC 之间的时钟同步,并可根据实际需求,自行设置时钟同步频率。

2.3 操作面板与PLC 之间的时钟同步

每台PLC 中定义时间读取数据块DB3,数据格式与DB1、DB2 相同。

在定时中断系统组织块OB35 内调用系统功能块READ_CLK(SFC1),读取当前系统时钟并写入DB3 内。

使用西门子操作面板内全局区域指针,使操作面板访问PLC 内的DB3 数据块。 详细设置如图5 所示。

图5 全局区域指针设置

全局区域指针设置需要指定连接,访问模式设置为绝对访问,访问地址指向PLC 内存储时钟数据的初始地址, 以本方案为例即DB3.DBW0,若仅需要使用年、月、日、时、分、秒这6 个时间数据,则访问长度设置为6,若还需要毫秒、星期等时间数据,需要将访问长度设置为8。采集模式选择循环连续,采集周期可由用户自行设定,本方案设定为5s。

2.4 主站时钟设置

主站时钟可以通过两种方式设置,若没有第三方时钟源(如DCS),则在设备A 操作面板上人为定期设置;若PLC 与DCS 有通信,则可以从厂级DCS 通过通信设置时钟。

2.4.1 操作面板人为设置主站时钟

在设备A_PLC 内定义初始时钟数据块DB4,数据格式同DB1。

设备A_PLC 操作面板上定义6 个时间变量,数据长度均为1Byte,分别对应年、月、日、时、分、秒,变量地址指向DB4 的相应地址。 再定义一个时间设置标志位,作为时间下发指令位。

通过操作面板组态时钟下发画面,即可将设置好的时间数据下发到PLC 内。

2.4.2 DCS 设定主站时钟

设备A_PLC 通过工业总线与厂级DCS 建立通信连接,DCS 将时钟数据和时钟设置标志位通信至 PLC,PLC 解析通信数据并转换为DATA_AND_TIME 格式后即可后调用SET_CLK(SFC0)进行时钟设置。该方式可以定期对主站时钟进行校准,进而使所有从站时钟自动与DCS 时钟同步[2]。

3 结束语

笔者提出了一种多设备控制系统内部时钟自动同步方案,在受限于硬件而无法使用NTP 和SIMATIC 模式进行时钟同步时,该方案可作为一个很好的补充方案。 该方案基于通信,定时将控制系统内部的多台PLC、操作面板等控制设备的时钟同步,可以长期保证系统内部时钟统一。 该方案是一种通用方案,不拘泥于通信形式,普遍适用于西门子工控产品,稍作修改即可通用于其他品牌的工控产品,具有较强的可推广性。

猜你喜欢
功能块调用以太网
核电项目物项调用管理的应用研究
如何编写200SMART程序
基于PLCopen的六轴工业机器人运动控制功能块设计
系统虚拟化环境下客户机系统调用信息捕获与分析①
自定义功能块编程在反渗透膜自动清洗设备中的应用
Ovation系统FIRSTOUT和FIFO跳闸首出比较
三大因素驱动创新提速以太网快步迈入“灵活”时代
三大因素驱动创新提速 以太网快步迈入“灵活”时代
谈实时以太网EtherCAT技术在变电站自动化中的应用
利用RFC技术实现SAP系统接口通信