一种工作时序的模拟仿真方法及系统与流程

文档序号:11919798阅读:259来源:国知局
一种工作时序的模拟仿真方法及系统与流程

本发明涉及模拟仿真技术领域,尤其涉及一种工作时序的模拟仿真方法及系统。



背景技术:

目前,在大部分的系统中,如飞行器系统、飞机火控系统等,各部件有各部件的工作时序。有的部件的工作时序比较复杂,涉及的接口设备、逻辑关系,需要正确实现,否则会影响到整个系统的正常工作流程和功能。

在现有技术中,主要是通过手动编写代码和研制硬件电路来实现工作时序的模拟。通过手动编写工作时序逻辑代码,烧写到硬件电路中,硬件电路中有继电器,通过烧写的代码实现继电器切换,在达到某种状态后进行通路切换、数据收发,以控制进入下一个状态。

由此可以看出,现有的模拟方式成本较高,对于不同设备,其工作时序不相同,依靠硬件模拟方式来实现通用型较低,修改不方便。



技术实现要素:

本发明提供了一种工作时序的模拟仿真方法及系统,能够通过搭建工作时序模型,下载实时仿真计算机,可以实现通用化的工作时序模拟和验证,进而降低了工作时序模拟仿真的成本。

本发明提供了一种工作时序的模拟仿真方法,包括:

基于目标工作时序的功能进行模块划分,所述目标工作时序为待模拟仿真的工作时序;

在仿真建模环境下,基于模块划分得到的模块搭建工作时序模型;

在数字仿真环境下对搭建的所述工作时序模型进行离线仿真分析;

判断离线仿真分析结果是否正确;

当离线仿真分析结果正确时,在实时仿真环境下对搭建的所述工作时序模型进行仿真分析。

优选地,所述在仿真建模环境下,基于模块划分得到的模块搭建工作时序模型包括:

使用Simulink模块库中的模块搭建状态满足条件判断模块;

使用Simulink模块库中的时间计数器模块搭建时间等待模块;

对需要赋值的变量进行赋值操作搭建赋值模块;

使用Simulink模块库中的对外接口模型搭建接口操作模块;

基于所述状态满足条件判断模块、时间等待模块、赋值模块和接口操作模块搭建工作时序模型。

优选地,所述在数字仿真环境下对搭建的所述工作时序模型进行离线仿真分析包括:

在数字仿真环境下利用查看软件绘制的以时间为X轴的时序曲线,分析时序逻辑。

优选地,所述判断离线仿真分析结果是否正确包括:

判断时序曲线的输出值是否符合预设期望值,当时序曲线的输出值符合预设期望值时,判断离线仿真分析结果正确。

优选地,所述当离线仿真分析结果正确时,在实时仿真环境下对搭建的所述工作时序模型进行仿真分析包括:

在实时仿真环境下利用查看上位机监控软件绘制的以时间为X轴的时序曲线,分析时序逻辑是否与离线仿真时的曲线一致,输出分析结果。

一种工作时序的模拟仿真系统,包括:

模块划分单元,用于基于目标工作时序的功能进行模块划分,所述目标工作时序为待模拟仿真的工作时序;

工作时序模型搭建单元,用于在仿真建模环境下,基于模块划分得到的模块搭建工作时序模型;

离线仿真分析单元,用于在数字仿真环境下对搭建的所述工作时序模型进行离线仿真分析;

判断单元,用于判断离线仿真分析结果是否正确;

实时仿真分析单元,用于当离线仿真分析结果正确时,在实时仿真环境下对搭建的所述工作时序模型进行仿真分析。

优选地,所述工作时序模型搭建单元具体用于:

使用Simulink模块库中的模块搭建状态满足条件判断模块;

使用Simulink模块库中的时间计数器模块搭建时间等待模块;

对需要赋值的变量进行赋值操作搭建赋值模块;

使用Simulink模块库中的对外接口模型搭建接口操作模块;

基于所述状态满足条件判断模块、时间等待模块、赋值模块和接口操作模块搭建工作时序模型。

优选地,所述离线仿真分析单元具体用于:

在数字仿真环境下利用查看软件绘制的以时间为X轴的时序曲线,分析时序逻辑。

优选地,所述判断单元具体用于:

判断时序曲线的输出值是否符合预设期望值,当时序曲线的输出值符合预设期望值时,判断离线仿真分析结果正确。

优选地,所述实时仿真分析单元具体用于:

在实时仿真环境下利用查看上位机监控软件绘制的以时间为X轴的时序曲线,分析时序逻辑是否与离线仿真时的曲线一致,输出分析结果。

由上述方案可知,本发明提供的一种工作时序的模拟仿真方法及系统,当需要对系统的工作时序进行模拟仿真时,首先基于目标工作时序的功能进行模块划分,其中,目标工作时序为待模拟仿真的工作时序,然后在仿真建模环境下,基于模块划分得到的模块搭建工作时序模型,然后在数字仿真环境下对搭建的工作时序模型进行离线仿真分析,然后判断离线仿真分析结果是否正确,当离线仿真分析结果正确时,在实时仿真环境下对搭建的所述工作时序模型进行仿真分析,通过搭建工作时序模型,下载实时仿真计算机,可以实现通用化的工作时序模拟和验证,进而降低了工作时序模拟仿真的成本。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明公开的一种工作时序的模拟仿真方法实施例1的方法流程图;

图2为本发明公开的一种工作时序的模拟仿真方法实施例2的方法流程图;

图3为本发明公开的一种工作时序的模拟仿真系统实施例1的结构示意图;

图4为本发明公开的一种工作时序的模拟仿真系统实施例2的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了更加特定地强调实施的独立性,本说明书涉及许多模块或单元。举例而言,模块或单元可由硬件电路实现,该硬件电路包括特制VLSI电路或门阵列,比如逻辑芯片、晶体管,或其它组件。模块或单元也可在可编程的硬设备中实现,比如场效可编程门阵列、可编程阵列逻辑、可编程逻辑设备等等。

模块或单元也可在藉由各种形式的处理器所执行的软件中实现。比如说,一可执行码模块可包括一个或多个实体的或逻辑的计算机指令区块,该区块可能形成为,比如说,对象、程序或函数。然而,鉴别模块或单元的可执行部分不需要物理上放置在一起,但可由存于不同位置的不同指令所组成,当逻辑上组合在一起时,形成模块或单元且达到该模块或单元所要求的目的。

实际上,可执行码模块或单元可以是一单一指令或多个指令,甚至可以分布在位于不同的程序中的数个不同的码区段,并且横跨数个存储设备。同样地,操作数据可被辨识及显示于此模块或单元中,并且可以以任何合适的形式实施且在任何合适的数据结构形式内组织。操作数据可以集合成单一数据集,或可分布在具有不同的存储设备的不同的位置,且至少部分地只以电子信号方式存在于一系统或网络。

本说明书所提及的“实施例”或类似用语表示与实施例有关的特性、结构或特征,包括在本发明的至少一实施例中。因此,本说明书所出现的用语“在一实施例中”、“在实施例中”以及类似用语可能但不必然都指向相同实施例。

再者,本发明所述特性、结构或特征可以以任何方式结合在一个或多个实施例中。以下说明将提供许多特定的细节,比如编程序、软件模块、用户选择、网络交易、数据库查询、数据库结构、硬件模块、硬件电路、硬件芯片等例子,以提供对本发明实施例的了解。然而相关领域的普通技术人员将看出本发明,即使没有利用其中一个或多个特定细节,或利用其它方法、组件、材料等亦可实施。另一方面,为避免混淆本发明,公知的结构、材料或操作并没有详细描述。

如图1所示,为本发明提供的一种工作时序的模拟仿真方法实施例1的方法流程图,所述方法可以包括以下步骤:

S101、基于目标工作时序的功能进行模块划分,其中,目标工作时序为待模拟仿真的工作时序;

当需要对系统的工作时序进行模拟仿真时,由于不同的系统具有不同的工作时序,因此,首先根据目标工作时序的功能进行分析,主要是分析工作时序并考虑用什么算法或流程划分为具体特定功能的模块。不同系统,其工作时序虽然不相同,但主要包括以下模块:状态满足条件判断模块、时间等待模块、赋值模块、接口操作模块,因此需要根据将要模拟的工作时序功能进行模块划分。

S102、在仿真建模环境下,基于模块划分得到的模块搭建工作时序模型;

在Simulink等仿真建模环境下,根据划分得到的模块搭建工作时序模型。

S103、在数字仿真环境下对搭建的所述工作时序模型进行离线仿真分析;

在数字仿真环境下,对搭建的工作时序模型进行离线仿真分析,以确保工作时序的正确。

S104、判断离线仿真分析结果是否正确;

对离线仿真输出的分析结果进行判断。

S105、当离线仿真分析结果正确时,在实时仿真环境下对搭建的所述工作时序模型进行仿真分析。

当判断离线仿真输出的分析结果正确时,进一步在实时仿真环境下对搭建的工作时序模型进行仿真分析。

综上所述,在上述实施例中,当需要对系统的工作时序进行模拟仿真时,首先基于目标工作时序的功能进行模块划分,其中,目标工作时序为待模拟仿真的工作时序,然后在仿真建模环境下,基于模块划分得到的模块搭建工作时序模型,然后在数字仿真环境下对搭建的工作时序模型进行离线仿真分析,然后判断离线仿真分析结果是否正确,当离线仿真分析结果正确时,在实时仿真环境下对搭建的所述工作时序模型进行仿真分析,通过搭建工作时序模型,下载实时仿真计算机,可以实现通用化的工作时序模拟和验证,进而降低了工作时序模拟仿真的成本。

如图2所示,为本发明提供的一种工作时序的模拟仿真方法实施例2的方法流程图,所述方法可以包括以下步骤:

S201、基于目标工作时序的功能进行模块划分,其中,目标工作时序为待模拟仿真的工作时序;

当需要对系统的工作时序进行模拟仿真时,由于不同的系统具有不同的工作时序,因此,首先根据目标工作时序的功能进行分析,主要是分析工作时序并考虑用什么算法或流程划分为具体特定功能的模块。不同系统,其工作时序虽然不相同,但主要包括以下模块:状态满足条件判断模块、时间等待模块、赋值模块、接口操作模块,因此需要根据将要模拟的工作时序功能进行模块划分。

S202、使用Simulink模块库中的模块搭建状态满足条件判断模块,使用Simulink模块库中的时间计数器模块搭建时间等待模块,对需要赋值的变量进行赋值操作搭建赋值模块,使用Simulink模块库中的对外接口模型搭建接口操作模块,基于状态满足条件判断模块、时间等待模块、赋值模块和接口操作模块搭建工作时序模型;

在Simulink等仿真建模环境下,根据划分的模块搭建工作时序模型。对于状态满足条件判断模块,直接采用判断模块实现,例如使用Simulink中的Switch、If Action Subsystem等模块搭建,也可以使用C语言编写S函数实现;对于时间等待模块,则需要通过搭建时间计数器模块实现;对于赋值模块,可以直接对所要赋值的变量进行赋值操作;对于接口操作模块,则需要将对外接口模型集成到工作时序模块中。

S203、在数字仿真环境下利用查看软件绘制的以时间为X轴的时序曲线,分析时序逻辑;

在数字仿真环境下对搭建的工作时序模型进行离线仿真分析,以确保工作时序的正确,具体为在数字仿真环境下如Simulink等仿真环境下利用查看软件绘制的以时间为X轴的时序曲线,分析时序逻辑。由于工作时序比较复杂,尤其是涉及到接口实物设备时,直接进行连接实物设备的仿真试验,出现问题往往不方便定位问题,因此需要先在数字仿真环境下对搭建的工作时序模型进行离线仿真分析,此时,对于对外接口操作模块,可以先用数字接口模型代替,如果对外接口是输入接口,则用Simulink下的Constant(常值模块)等Sources(输入源)模块代替,如果对外接口是输出接口,则用Scope(示波器模块)等Sinks(接收器)模块代替,以便能够在离线仿真下查看工作时序仿真结果。

S204、判断时序曲线的输出值是否符合预设期望值,当时序曲线的输出值符合预设期望值时,判断离线仿真分析结果正确;

S205、当离线仿真分析结果正确时,在实时仿真环境下利用查看上位机监控软件绘制的以时间为X轴的时序曲线,分析时序逻辑是否与离线仿真时的曲线一致,输出分析结果。

当离线仿真分析结果正确时,在实时仿真环境下对搭建的工作时序模型进行仿真分析,即在实时仿真环境下利用查看上位机监控软件绘制的以时间为X轴的时序曲线,分析时序逻辑是否与离线仿真时的曲线一致。工程应用中,先进行数学仿真(或叫离线仿真),而后将这个时序用到实际应用中,即用在实时仿真中,下载到实时仿真机中,通过硬件接口与其他设备进行通信,用这种时序控制其他设备。

下面以某火控系统的工作时序模拟为例来进行说明。

某火控系统的工作时序模拟主要是必须按照固定的顺序执行各个流程,也就是说只有上一个流程运行成功后,才可以进行下一个流程的运行。

第一个要运行的是初始化流程(模型中为初始化模块),然后依次为机弹握手流程(模型中为握手模块)、数据装载流程(模型中为装载模块)、传递对准流程(模型中为传递对准模块)、投放允许流程(模型中为投放允许模块)、热电池激活流程(模型中为电源激活模块)和投放流程(模型中为投放模块)。各个流程都是建立在模型的使能子系统中,流程主要涉及了以太网通信、串口通信、1553B通信和DIO板卡输出,输出的信号为载机电源和弹上热电池的上下电控制指令和相关流程执行成功是否。

对照上述实现过程的步骤进行实现,如下:

第一个步骤,工作时序功能模块划分如下(不同的系统由于时序逻辑不同,不可能包含所有的功能模块划分,如可能不包括时间等待模块):

状态满足条件判断模块,比如“==1模块”(即,确定输入是否等于常数1,如果等于输出值1,如果不等于输出值为0),“==2模块”(即,确定输入是否等于常数2,如果等于输出值1,如果不等于输出值为0)、“AND模块”(即,逻辑操作与模块,如果所有输入都为真,那模块的输出则为真,否则为假)等,当条件满足时,判断输出接口是0或1;

赋值模块,比如初始化子系统中的模块,当使能运行后会将相关的常值赋到输出接口;

接口操作模块,如“PXI 6509DO”模块,即为数字输入/输出板卡的DO输出驱动或输出接口操作模块。

第二步骤,搭建工作时序模型,即打开建模仿真软件(此例中为Simulink),找到Simulink模块库,将库中的模块拖拽到建模区域中,进行相关模块的互相连接组合,连接好各个模块的输入和输出端口。

第三步骤,对搭建的工作时序逻辑进行离线仿真分析,利用上述工作时序模型进行仿真,其中对外接口操作模块,用Scope(示波器模块)代替,查看工作时序仿真结果。

第四步骤,当对搭建的工作时序逻辑进行离线仿真分析的仿真结果正确时,将离线仿真完成的模型进行代码编译并下载到实时仿真系统中,本例利用HiGale实时仿真系统软件监控实时仿真结果,所运行得到的结果曲线与离线仿真曲线的工作时序逻辑吻合。

如图3所示,为本发明提供的一种工作时序的模拟仿真系统实施例1的结构示意图,所述系统可以包括:

模块划分单元301,用于基于目标工作时序的功能进行模块划分,其中,目标工作时序为待模拟仿真的工作时序;

当需要对系统的工作时序进行模拟仿真时,由于不同的系统具有不同的工作时序,因此,首先根据目标工作时序的功能进行分析,主要是分析工作时序并考虑用什么算法或流程划分为具体特定功能的模块。不同系统,其工作时序虽然不相同,但主要包括以下模块:状态满足条件判断模块、时间等待模块、赋值模块、接口操作模块,因此需要根据将要模拟的工作时序功能进行模块划分。

工作时序模型搭建单元302,用于在仿真建模环境下,基于模块划分得到的模块搭建工作时序模型;

在Simulink等仿真建模环境下,根据划分得到的模块搭建工作时序模型。

离线仿真分析单元303,用于在数字仿真环境下对搭建的所述工作时序模型进行离线仿真分析;

在数字仿真环境下,对搭建的工作时序模型进行离线仿真分析,以确保工作时序的正确。

判断单元304,用于判断离线仿真分析结果是否正确;

对离线仿真输出的分析结果进行判断。

实时仿真分析单元305,用于当离线仿真分析结果正确时,在实时仿真环境下对搭建的所述工作时序模型进行仿真分析。

当判断离线仿真输出的分析结果正确时,进一步在实时仿真环境下对搭建的工作时序模型进行仿真分析。

综上所述,在上述实施例中,当需要对系统的工作时序进行模拟仿真时,首先基于目标工作时序的功能进行模块划分,其中,目标工作时序为待模拟仿真的工作时序,然后在仿真建模环境下,基于模块划分得到的模块搭建工作时序模型,然后在数字仿真环境下对搭建的工作时序模型进行离线仿真分析,然后判断离线仿真分析结果是否正确,当离线仿真分析结果正确时,在实时仿真环境下对搭建的所述工作时序模型进行仿真分析,通过搭建工作时序模型,下载实时仿真计算机,可以实现通用化的工作时序模拟和验证,进而降低了工作时序模拟仿真的成本。

如图4所示,为本发明提供的一种工作时序的模拟仿真系统实施例2的结构示意图,所述系统可以包括:

模块划分单元401,用于基于目标工作时序的功能进行模块划分,其中,目标工作时序为待模拟仿真的工作时序;

当需要对系统的工作时序进行模拟仿真时,由于不同的系统具有不同的工作时序,因此,首先根据目标工作时序的功能进行分析,主要是分析工作时序并考虑用什么算法或流程划分为具体特定功能的模块。不同系统,其工作时序虽然不相同,但主要包括以下模块:状态满足条件判断模块、时间等待模块、赋值模块、接口操作模块,因此需要根据将要模拟的工作时序功能进行模块划分。

工作时序模型搭建单元402,用于使用Simulink模块库中的模块搭建状态满足条件判断模块,使用Simulink模块库中的时间计数器模块搭建时间等待模块,对需要赋值的变量进行赋值操作搭建赋值模块,使用Simulink模块库中的对外接口模型搭建接口操作模块,基于状态满足条件判断模块、时间等待模块、赋值模块和接口操作模块搭建工作时序模型;

在Simulink等仿真建模环境下,根据划分的模块搭建工作时序模型。对于状态满足条件判断模块,直接采用判断模块实现,例如使用Simulink中的Switch、If Action Subsystem等模块搭建,也可以使用C语言编写S函数实现;对于时间等待模块,则需要通过搭建时间计数器模块实现;对于赋值模块,可以直接对所要赋值的变量进行赋值操作;对于接口操作模块,则需要将对外接口模型集成到工作时序模块中。

离线仿真分析单元403,用于在数字仿真环境下利用查看软件绘制的以时间为X轴的时序曲线,分析时序逻辑;

在数字仿真环境下对搭建的工作时序模型进行离线仿真分析,以确保工作时序的正确,具体为在数字仿真环境下如Simulink等仿真环境下利用查看软件绘制的以时间为X轴的时序曲线,分析时序逻辑。由于工作时序比较复杂,尤其是涉及到接口实物设备时,直接进行连接实物设备的仿真试验,出现问题往往不方便定位问题,因此需要先在数字仿真环境下对搭建的工作时序模型进行离线仿真分析,此时,对于对外接口操作模块,可以先用数字接口模型代替,如果对外接口是输入接口,则用Simulink下的Constant(常值模块)等Sources(输入源)模块代替,如果对外接口是输出接口,则用Scope(示波器模块)等Sinks(接收器)模块代替,以便能够在离线仿真下查看工作时序仿真结果。

判断单元404,用于判断时序曲线的输出值是否符合预设期望值,当时序曲线的输出值符合预设期望值时,判断离线仿真分析结果正确;

实时仿真分析单元405,用于当离线仿真分析结果正确时,在实时仿真环境下利用查看上位机监控软件绘制的以时间为X轴的时序曲线,分析时序逻辑是否与离线仿真时的曲线一致,输出分析结果。

当离线仿真分析结果正确时,在实时仿真环境下对搭建的工作时序模型进行仿真分析,即在实时仿真环境下利用查看上位机监控软件绘制的以时间为X轴的时序曲线,分析时序逻辑是否与离线仿真时的曲线一致。工程应用中,先进行数学仿真(或叫离线仿真),而后将这个时序用到实际应用中,即用在实时仿真中,下载到实时仿真机中,通过硬件接口与其他设备进行通信,用这种时序控制其他设备。

下面以某火控系统的工作时序模拟为例来进行说明。

某火控系统的工作时序模拟主要是必须按照固定的顺序执行各个流程,也就是说只有上一个流程运行成功后,才可以进行下一个流程的运行。

第一个要运行的是初始化流程(模型中为初始化模块),然后依次为机弹握手流程(模型中为握手模块)、数据装载流程(模型中为装载模块)、传递对准流程(模型中为传递对准模块)、投放允许流程(模型中为投放允许模块)、热电池激活流程(模型中为电源激活模块)和投放流程(模型中为投放模块)。各个流程都是建立在模型的使能子系统中,流程主要涉及了以太网通信、串口通信、1553B通信和DIO板卡输出,输出的信号为载机电源和弹上热电池的上下电控制指令和相关流程执行成功是否。

对照上述实现过程的步骤进行实现,如下:

第一个步骤,工作时序功能模块划分如下(不同的系统由于时序逻辑不同,不可能包含所有的功能模块划分,如可能不包括时间等待模块):

状态满足条件判断模块,比如“==1模块”(即,确定输入是否等于常数1,如果等于输出值1,如果不等于输出值为0),“==2模块”(即,确定输入是否等于常数2,如果等于输出值1,如果不等于输出值为0)、“AND模块”(即,逻辑操作与模块,如果所有输入都为真,那模块的输出则为真,否则为假)等,当条件满足时,判断输出接口是0或1;

赋值模块,比如初始化子系统中的模块,当使能运行后会将相关的常值赋到输出接口;

接口操作模块,如“PXI 6509DO”模块,即为数字输入/输出板卡的DO输出驱动或输出接口操作模块。

第二步骤,搭建工作时序模型,即打开建模仿真软件(此例中为Simulink),找到Simulink模块库,将库中的模块拖拽到建模区域中,进行相关模块的互相连接组合,连接好各个模块的输入和输出端口。

第三步骤,对搭建的工作时序逻辑进行离线仿真分析,利用上述工作时序模型进行仿真,其中对外接口操作模块,用Scope(示波器模块)代替,查看工作时序仿真结果。

第四步骤,当对搭建的工作时序逻辑进行离线仿真分析的仿真结果正确时,将离线仿真完成的模型进行代码编译并下载到实时仿真系统中,本例利用HiGale实时仿真系统软件监控实时仿真结果,所运行得到的结果曲线与离线仿真曲线的时序逻辑吻合。

本实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本发明实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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