控制程序测试方法和系统与流程

文档序号:14676011发布日期:2018-06-12 21:30阅读:269来源:国知局
控制程序测试方法和系统与流程

本发明涉及测试技术领域,尤其涉及一种控制程序测试方法和系统。



背景技术:

在各个领域的硬件设备投入使用之前,需要对硬件设备进行测试,从而判定给硬件设备是否满足工作需求。现阶段,硬件设备往往采用可编程逻辑控制器(Programmable Logic Controller,PLC)对硬件设备中的各个部件进行控制。

测试模型的搭建采用的是软件测试语言,比如,Matlab语言或C语言等。而PLC上运行的控制软件程序大多基于IEC61131-3标准的结构化文本语言(Structured text,ST)、功能块编程语言(Function Block Diagram,FBD)、梯形图语言(Ladder Diagram,LD)等语言中的一种语言编程或多种语言混合编程。测试模型的编写语言与PLC的控制语言并不兼容,且PLC控制具有实时性,为了能够对PLC进行测试,目前采用人工手动测试,测试效率低下。



技术实现要素:

本发明实施例提供了一种控制程序测试方法和系统,能够提高控制程序的测试效率。

第一方面,本发明实施例提供了一种控制程序测试方法,包括:控制测试平台的时钟与可编程逻辑控制器PLC的时钟同步;通过自动化设备规范ADS通讯协议,将测试平台设定的PLC的输入变量写入PLC,使得PLC根据输入变量运行控制程序;通过ADS通讯协议,将PLC运行控制程序生成的实际输出变量写入测试平台;在与PLC的时钟同步的测试平台的时钟下,控制测试平台利用PLC运行控制程序生成的实际输出变量,按照预设周期进行测试。

在第一方面的一些实施例中,上述控制程序测试的方法还包括:利用TE1410插件对PLC的输入变量和实际输出变量进行解析,建立与用于传输PLC的输入变量的测试输入接口和用于传输PLC的实际输出变量的测试输出接口。

在第一方面的一些实施例中,PLC的输入变量和PLC的实际输出变量均以结构体的形式传输。

在第一方面的一些实施例中,结构体包括一个或两个以上存储段,每个存储段包括整数个输入变量或整数个实际输出变量,且存储段占用4个字节。

在第一方面的一些实施例中,结构体为嵌套结构体;嵌套结构体中的每层结构体均包括一个或两个以上存储段。

在第一方面的一些实施例中,测试平台包括测试用例框架,测试用例框架用于记录测试参数;测试参数包括时间、输入变量、输入变量插值模式、期望输出变量、实际输出变量和输出变量比较容差。

第二方面,本发明实施例提供了一种控制程序测试系统,包括测试平台和可编程逻辑控制器PLC;测试平台用于与PLC的时钟同步;通过自动化设备规范ADS通讯协议,将设定的PLC的输入变量写入PLC;通过ADS通讯协议,接收PLC运行控制程序生成的实际输出变量;在与PLC的时钟同步的测试平台的时钟下,利用实际输出变量,按照预设周期进行测试;PLC用于通过ADS通讯协议,接收测试平台设定的输入变量;根据输入变量运行控制程序,并生成实际输出变量,将实际输出变量写入测试平台。

在第二方面的一些实施例中,测试平台包括测试子平台、测试用例框架、信号发生器、测试模型和ADS通讯模块;测试子平台,用于按照预设周期周期性提供测试参数,将测试参数写入测试用例框架;测试用例框架,用于记录测试参数,并将测试参数中的输入变量通过信号发生器输入至测试模型;测试模型,用于将测试参数中的输入变量通过ADS通讯模块写入PLC;还用于通过ADS通讯模块接收PLC的实际输出变量,将PLC的实际输出变量传输至测试子平台;测试子平台,还用于利用PLC的实际输出变量和测试参数中的期望输出变量进行测试,并生成测试结果;还用于将实际输出变量写入测试用例框架。

在第二方面的一些实施例中,PLC的输入变量和PLC的实际输出变量均以结构体的形式传输。

在第二方面的一些实施例中,结构体包括一个或两个以上存储段,每个存储段包括整数个输入变量或整数个实际输出变量,且存储段占用4个字节。

在第二方面的一些实施例中,结构体为嵌套结构体;嵌套结构体中的每层结构体均包括一个或两个以上存储段。

在第二方面的一些实施例中,测试参数包括时间、输入变量、输入变量插值模式、期望输出变量、实际输出变量和输出变量比较容差。

本发明实施例提供一种控制程序测试方法和系统,控制测试平台的时钟与PLC的时钟同步,并利用ADS通讯协议实现测试平台和PLC的数据交互,使得测试平台的输入变量可写入PLC,PLC根据输入变量运行控制程序生成的实际输出变量也可传输至测试平台,便于测试平台进行测试。从而实现了测试平台与PLC之间的自动实时测试,提高了控制程序的测试效率。

附图说明

从下面结合附图对本发明的具体实施方式的描述中可以更好地理解本发明其中,相同或相似的附图标记表示相同或相似的特征。

图1为本发明一实施例中一种控制程序测试方法的流程图;

图2为本发明实施例中一种测试用例框架的示意图;

图3为本发明一实施例中的一种控制程序测试系统的结构示意图;

图4为本发明另一实施例中控制程序测试系统的结构示意图。

具体实施方式

下面将详细描述本发明的各个方面的特征和示例性实施例。在下面的详细描述中,提出了许多具体细节,以便提供对本发明的全面理解。但是,对于本领域技术人员来说很明显的是,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明的更好的理解。本发明决不限于下面所提出的任何具体配置和算法,而是在不脱离本发明的精神的前提下覆盖了元素、部件和算法的任何修改、替换和改进。在附图和下面的描述中,没有示出公知的结构和技术,以便避免对本发明造成不必要的模糊。

本发明实施例提供一种控制程序测试方法和系统,可应用于软件测试平台与可编程逻辑控制器(Programmable Logic Controller,PLC)相结合对PLC的控制程序进行检测的场景中。控制程序测试方法包括测试平台和PLC。其中,测试平台为软件测试平台,比如,Matlab测试平台或标准C语言测试平台等,在此并不限定。在本发明实施例中,可在测试平台设定PLC运行控制程序所需的输入变量以及期望输出变量,测试平台与PLC时钟同步,从而使得PLC能够实时利用在测试平台中设定的输入变量运行控制程序,并生成实际输出变量。PLC将实际输出变量传输至测试平台,测试平台通过对比实际输出变量与期望输出变量,得到对控制程序的测试结果。

图1为本发明一实施例中一种控制程序测试方法的流程图。如图1所示,控制程序测试方法包括步骤101至步骤104。

在步骤101中,控制测试平台的时钟与可编程逻辑控制器PLC的时钟同步。

其中,测试平台具有时钟模块,PLC也具有时钟模块。可将PLC的时钟模块的时钟作为标准,控制测试平台的时钟与PLC的时钟同步。为了保证测试平台的时钟可长时间与PLC时钟同步,避免随着时间的推移测试平台的时钟与PLC的时钟之间出现的误差。PLC可周期性地向测试平台发布时钟信息,以使得测试平台可周期性地以PLC的时钟为标准调整测试平台的时钟,使测试平台的时钟与PLC的时钟始终保持一致。

在一个示例中,可采用精确时钟同步协议(Precision Time Protocol,PTP)实现测试平台的时钟与PLC的时钟的同步。PTP无需时钟专线来传输时钟同步消息,而是利用数据网络来传输时钟同步消息。PLC的时钟作为主时钟,测试平台的时钟作为从时钟。主时钟周期性发布PTP时间同步协议及时间戳信息,从时钟接收主时钟发来的时间戳信息,并根据该时间戳信息,使从时钟与主时钟的时钟保持一致。

在步骤102中,通过ADS通讯协议,将测试平台设定的PLC的输入变量写入PLC,使得PLC根据输入变量运行控制程序。

自动化设备规范(Automation Device Specification,ADS)可以为不同的设备之间的通讯提供路由,以使得不同的设备之间可交换数据和信息。在本发明实施例中,ADS实现了测试平台与PLC之间的双向交互。测试平台可将设定的输入变量通过ADS通讯协议写入PLC,PLC根据写入的输入变量运行控制程序。PLC运行控制程序生成实际输出变量。

在一个示例中,还可利用TE1410插件对PLC的输入变量和实际输出变量进行解析,从而建立用于传输PLC的输入变量的测试输入接口和用于传输PLC的实际输出变量的测试输出接口。其中,测试输入接口将输入变量输入至负责进行ADS通讯的模块,由负责进行ADS通讯的模块将输入变量传输至PLC。测试输出接口用于将PLC发送来的实际输出变量输出至进行实际输出变量和期望输出变量比较的模块。TE1410还可对PLC的输入变量和实际输入变量进行地址解析和数据类型解析。

在步骤103中,通过ADS通讯协议,将PLC运行控制程序生成的实际输出变量写入测试平台。

ADS通讯协议实现了测试平台与PLC之间的双向交互,PLC可将运行控制程序生成的实际输出变量通过ADS通讯协议写入测试平台。

在一个示例中,PLC的输入变量和PLC的实际输出变量可经过打包以结构体的形式在测试平台和PLC之间传输。也就是说,测试平台每次设定一组输入变量,相应的,PLC也输出一组实际输出变量。一个结构体可包括多个输入变量或多个实际输出变量。在进行ADS通讯的过程中,将输入变量和实际输出变量以结构体的形式传输,可一次性传输多个输入变量或多个实际输出变量,与一次传输一个输入变量或一个实际输出变量的方法相比,本发明实施例中利用结构体传输输入变量和实际输出变量,可减小测试平台与PLC之间的通讯延迟时间,提高测试平台与PLC之间的通讯效率。

由于测试平台的数据与PLC中的数据的对齐方式不同。相同定义的结构体在测试平台和在PLC中的数据结构并不相同,使得测试平台或PLC对结构体进行解析后得到的数据可能会不相符。在本发明实施例中,为了避免测试平台或PLC对结构体进行解析后得到的数据不相符的情况,可设定结构体包括一个或两个以上的存储段,每个存储段包括整数个输入变量或整数个实际输出变量。其中,每个存储段占用4个字节。每个存储段中可以存放多个相同变量类型的数据,也可存放多个不同变量类型的数据,在此并不限定。但需要注意的是,存储段中的整数个输入变量或整数个实际输出变量占满了存储段的4个字节。比如,1个char类型的数据占一个字节,1个short类型的数据占两个字节。一个存储段可包括4个char类型的数据。或者,一个存储段中可包括2个char类型的数据和1个short类型的数据。在一个示例中,结构体可为嵌套结构体。若结构体为嵌套结构体,则嵌套结构体中的每层结构体均包括一个或两个以上存储段,以保证测试平台或PLC对嵌套结构体解析后可得到对齐的数据。

若结构体未划分存储段,和/或存储段的字节数不是4,测试平台会对结构体中的数据进行补位,使得结构体的字节数为4的整数倍,之后按照补位后的结构体解析出的数据与PLC中解析出的数据不相符。在本发明实施例中,结构体划分了存储段,且存储段的字节数为4,则在测试平台或PLC中解析得到的数据是相符的,提高了测试平台与PLC之间的解析的准确率。

在步骤104中,在与PLC的时钟同步的测试平台的时钟下,控制测试平台利用PLC运行控制程序生成的实际输出变量,按照预设周期进行测试。

在于PLC的时钟同步的时钟下,测试平台可利用PLC运行控制程序生成的实际输出变量与期望输出变量进行对比,从而生成测试报告。由于测试平台的时钟与PLC的时钟同步,因此测试平台按照预设周期进行测试时,预设周期与PLC的时钟下的预设周期一致,使得测试平台能够实现对PLC的控制程序的实时测试。

其中,实际输出变量为实时数据,且实际输出变量为PLC根据对应的输入变量生成的,期望输出变量为按照输入变量预先设定的期望变量。若实际输出变量与期望输出变量之间的差距超出预设差距阈值,则可判定控制程序的效果较差,可对控制程序进行优化和调整。

在本发明实施例中,控制测试平台的时钟与PLC的时钟同步,并利用ADS通讯协议实现测试平台和PLC的数据交互,使得测试平台的输入变量可写入PLC,PLC根据输入变量运行控制程序生成的实际输出变量也可传输至测试平台,便于测试平台进行测试。从而实现了测试平台与PLC之间的自动实时测试,提高了控制程序的测试效率。

在一个示例中,测试平台可包括测试用例框架,测试用例框架用于记录测试参数。具体的,测试用例框架可为表格,在表格中记录测试参数。比如,图2为本发明实施例中一种测试用例框架的示意图。如图2所示,测试参数可包括时间、输入变量、输入变量插值模式、期望输出变量、实际输出变量和输出变量比较容差等,在此并不限定。其中,输入变量插值模式和输出变量比较容差均为测试配置参数。

其中,时间为PLC生成实际输出变量的时间。由于用户关注的往往不是所有数据,而是数据中的个别数据。但在测试用例框架中还可记录个别数据之间的其他数据。具体的,可采用插值法得到个别数据之间的其他数据。输入变量插值模式即为插值的方式,比如,在两个个别数据之间采用升值顺序插入四个数据。输出变量比较容差为测试结果可接受的最大的期望输出变量与实际输出变量的差值。若期望输出变量与实际输出变量的差值未超出输出变量比较容差,则可判定控制程序的效果较好。若期望输出变量与实际输出变量的差值超出输出变量比较容差,则可判定控制程序的效果较差。

在一个示例中,本发明实施例中的控制程序测试方法和系统可对各个领域中对具有PLC的实体设备进行控制程序的测试,如通信领域、风电领域、机械自动化领域等。比如,在风电领域中,PLC中可运行风力发电机组控制程序。从而使得测试平台可对风力发电机组的控制程序进行测试,可根据测试结果,得到控制程序的效果,便于根据测试结果,对控制程序进行优化和调整,从而优化风力发电机组的控制流程,提高风力发电机组的运行性能。

图3为本发明一实施例中的一种控制程序测试系统20的结构示意图。如图3所示,控制程序测试系统20包括测试平台21和PLC22。PLC22可包括ADS通讯服务器221。

其中,测试平台21用于与PLC22的时钟同步;通过ADS通讯协议,将设定的PLC22的输入变量写入PLC;通过ADS通讯协议,接收PLC22运行控制程序生成的实际输出变量;在与PLC22的时钟同步的测试平台的时钟下,利用实际输出变量,按照预设周期进行测试。

PLC22用于通过ADS通讯协议,接收测试平台21设定的输入变量;根据输入变量运行控制程序,并生成实际输出变量,将实际输出变量写入测试平台21。

在本发明实施例中,控制测试平台21的时钟与PLC22的时钟同步,并利用ADS通讯协议实现测试平台21和PLC22的数据交互,使得测试平台21的输入变量可写入PLC22,PLC22根据输入变量运行控制程序生成的实际输出变量也可传输至测试平台21,便于测试平台21进行测试。从而实现了测试平台21与PLC22之间的自动实时测试,提高了控制程序的测试效率。

图4为本发明另一实施例中控制程序测试系统20的结构示意图。图4与图3的不同之处在于,图4所示的控制程序测试系统20中的测试平台21可包括测试子平台211、测试用例框架212、信号发生器213、测试模型214和ADS通讯模块215。

测试子平台211,用于按照预设周期周期性提供测试参数,将测试参数写入测试用例框架。

测试子平台211可接受用户的设置指令,从而根据设置指令向测试用例框架发送测试参数。在一个示例中,测试参数包括时间、输入变量、输入变量插值模式、期望输出变量、实际输出变量和输出变量比较容差。

测试用例框架212,用于记录测试参数,并将测试参数中的输入变量通过信号发生器输入至测试模型。

信号发生器213,用于接收测试用例框架传输来的输入变量,并将输入变量输入至测试模型。

测试模型214,用于将测试参数中的输入变量通过ADS通讯模块215写入PLC22;还用于通过ADS通讯模块215接收PLC22的实际输出变量,将PLC22的实际输出变量传输至测试子平台211。

在一个示例中,测试模型214可通过测试输入接口2141接收信号发生器213传输来的输入变量。PLC22输出的实际输出变量还可通过测试输出接口2142输出至测试模型。

测试子平台211,还用于利用PLC22的实际输出变量和测试参数中的期望输出变量进行测试,并生成测试结果;还用于将实际输出变量写入测试用例框架212。用户可以通过查看测试用例框架得到控制程序测试的测试结果。

ADS通讯服务器221可用于接收ADS通讯模块215发送来的输入变量;还用于向ADS通讯模块215发送实际输出变量。

在一个示例中,PLC的输入变量和PLC的实际输出变量均以结构体的形式传输。具体的,结构体包括一个或两个以上存储段,每个存储段包括整数个输入变量或整数个实际输出变量,且存储段占用4个字节。若结构体为嵌套结构体,嵌套结构体中的每层结构体均包括一个或两个以上存储段。

需要明确的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。对于系统实施例而言,相关之处可以参见方法实施例的说明部分。本发明并不局限于上文所描述并在图中示出的特定步骤和结构。本领域的技术人员可以在领会本发明的精神之后,作出各种改变、修改和添加,或者改变步骤之间的顺序。并且,为了简明起见,这里省略对已知方法技术的详细描述。

以上所述的结构框图中所示的功能模块、功能单元以及功能器件可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1