- 7.36 MB
- 2022-09-27 发布
- 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
- 网站客服QQ:403074932
西安航空职业技术学院毕业设计论文题目【摘要】本论文主要阐述了GT系列运动控制器的各种控制功能以及相应的编程实现。首先能够了解GT系列运动控制器的控制功能,然后掌握运动函数的用法,最后熟悉特定控制功能的编程实现。运动控制器提供C语言函数库和Windows动态链接库,实现复杂的控制功能,高性能的控制计算。GT系列运动控制器以IBM-PC及其兼容机为主机,提供标准的ISA总线和PCI总线两个系列的产品。作为选件,在任何一款产品上可以提供RS232串行通讯和PC104通讯接口,方便用户配置系统。用户能够将这些控制函数与自己控制系统所需的数据处理、界面显示、用户接口等应用程序模块集成在一起,建造符合特定应用要求的控制系统,以适应各种应用领域的要求。GT系列运动控制器,可以同步控制四个运动轴,实现多轴协调运动,完成需要加工的模拟图形。关键词:运动控制器 C语音控制函数Abstract:ThecaptionintroducesGTseriesofmotioncontrollersandhowtoimplementthemotorcontrolsystem.FirstofhelpsunderstandthebasicarchitectureofGTseriesofmotioncontrollers,Secondlearnhowtoinstallthemotioncontroller,Listthecontrollerwiththemotorcontrolsystemandconductthebasicdebuggingofthemotioncontrolsystem..TheCfunctionlibraryandWindowsDLLarealsoprovidedtoaccomplishmorecomplicatedcontrolfunctions,processhigh-performancecontrolcomputation.GTmotioncontrollerusesPCasitshost,andofferstwoversionsofproducts-ISAandPCIbusversions.Ineitherversion,RS232serialcommunicationandPC104interfacesocketareavailabletofacilitateusersinconfiguringtheirsystems.Ausermaycombinethesecontrolfunctionswiththedataprocessing,userinterfaceandotherapplicationmodulesasrequiredbyaspecifiedcontrolsystem,toimplementdifferentapplication.TheGTseriesofmotioncontrollerscancontrolfourmotionaxessynchronously,achievingmulti-axiscoordinatedmotion,finishofneedtoprocesssimulatefigure...Keywords:motioncontrollersCfunctionlibrary22\n西安航空职业技术学院毕业设计论文目录1运动控制系统平台的组成21.1控制系统基本构成21.1.1控制系统的基本控制原理21.1.2运动控制系统基本结构图21.2伺服电机21.2.1步进电动机21.2.2直流伺服电动机21.2.3交流司服电动机21.3运动控制器21.3.1四轴运动控制卡21.4伺服驱动器21.4.1步进伺服驱动器21.4.2YKA2204MA细分驱动器的特点21.5强电控制21.5.1断路器空气开关21.5.2中间继电器22运动控制器的编程32.1windows系统下动态连接库的使用32.1.1VC中的使用32.1.2VB中的使用32.2控制系统的初始化32.2.1程序的编排32.2.2使用的函数及解析32.3单轴运动的编程32.3.1程序的编排32.3.2使用的函数及解析32.4单轴停止的编程32.4.1程序编排32.4.2使用的函数及解析32.5电子齿轮32.5.1程序的编排32.5.2使用的函数及解析32.6多轴协调运动32.6.1程序编排32.6.2使用的函数及解析322\n西安航空职业技术学院毕业设计论文3完成加工图形23.1图形任务23.1.1图形的程序2结束语4谢辞5文献622\n西安航空职业技术学院毕业设计论文1运动控制系统平台的组成(1)GT系列运动控制器的组成主要有:1)电机,2)I/O板,3)直流电源,4)驱动器,5)强电控器。6)模拟电机轴,7)专用I/O开关指示灯,8)通用I/O开关指示灯,9)控制开关(2)系统特点: 1)体积小,结构紧凑,各轴电机的相对运动可以直观地从电机轴上反映出来; 2)各轴电机专用输入信号通过前面板的按钮开关模拟,检测控制系统对各种专用输入信号的响应; 3)各轴电机专用输出信号和16路通用输出信号通过前面板的指示灯显示,非常直观; 4)16路通用输入数字信号通过拨动开关模拟, 使用方便、快捷; 5)8路独立的模拟输入信号接口,2路辅助编码器输入接口; 6)控制系统采用高性能运动控制卡和Windows系列操作系统,可进行各种运动控制系统的开发;1.1控制系统基本构成控制系统主要由控制计算机、控制卡和电机驱动器组成。1.1.1控制系统的基本控制原理计算机从运动控制卡读取各种运行状态数据,并施加位置或速度等控制量,控制量在运动控制器中经过处理后,施加给电机驱动器,驱动器将控制信号放大,22\n西安航空职业技术学院毕业设计论文并施加给伺服电机,使电机按照要求运转,驱动器同时也可以作为电机编码器数据等信号的通道。1.1.2运动控制系统基本结构图1.2伺服电机伺服电动机是将输入的电压信号转变为转轴的角位移或角速度的输出。改变输入信号的大小和极性可以改变伺服电动机的转速与转向,故输入的电压信号又称为控制信号或控制电压。当输入电压为0时,转子静止不动,加入输入电压后,转子马上转动,改变电压的大小和方向输出转速的大小和方向也跟随变化。固高科技运动控制器开发平台的实验用了步进电动机,直流伺服电动机,交流伺服电动机,下面由于实验的目的性我们主要介绍步进电动机,简单介绍直流和交流伺服电动机。22\n西安航空职业技术学院毕业设计论文1.2.1步进电机本试验用到的步进电机的步进精度为5%,工作温度为80摄氏度Max,绝缘电阻为100兆欧姆,耐压为500VAC1minute,最大径向跳动为0.02mm(450g负载),最大轴向跳动为0.08mm(450g负载).步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。(1)基本原理:当电流流过定子绕组时,定子绕组产生一矢量磁场。该磁场会带动转子旋转一角度,使得转子的一对磁场方向与定子的磁场方向一致。当定子的矢量磁场旋转一个角度。转子也随着该磁场转一个角度。每输入一个电脉冲,电动机转动一个角度前进一步。它输出的角位移与输入的脉冲数成正比、转速与脉冲频率成正比。改变绕组通电的顺序,电机就会反转。所以可用控制脉冲数量、频率及电动机各相绕组的通电顺序来控制步进电机的转动。(2)驱动方法:步进电动机不能直接接到工频交流或直流电源上工作,而必须使用专用的步进电动机驱动器,如图2所示,它由脉冲发生控制单元、功率驱动单元、保护单元等组成。图中点划线所包围的二个单元可以用微机控制来实现。驱动单元与步进电动机直接耦合,也可理解成步进电动机微机控制器的功率接口。22\n西安航空职业技术学院毕业设计论文(3)优点1.电机旋转的角度正比于脉冲数; 2.电机停转的时候具有最大的转矩(当绕组激磁时); 3.由于每步的精度在百分之三到百分之五,而且不会将一步的误差积累到下一步因而有较好的位置精度和运动的重复性; 4.优秀的起停和反转响应; 5.由于没有电刷,可靠性较高,因此电机的寿命仅仅取决于轴承的寿命;6.电机的响应仅由数字输入脉冲确定,因而可以采用开环控制,这使得电机的结构可以比较简单而且控制成本; 7.仅仅将负载直接连接到电机的转轴上也可以极低速的同步旋转。 8.由于速度正比于脉冲频率,因而有比较宽的转速范围。(4)缺点:1.如果控制不当容易产生共振; 2.难以运转到较高的转速。 3.难以获得较大的转矩 4.在体积重量方面没有优势,能源利用率低。 5.超过负载时会破坏同步,高速工作时会发出振动和噪声。1.2.2直流伺服电动机直流伺服电动机与普通电动机的工作原理完全相同,有永磁式和电磁式两种:永磁性定子是永久磁铁的磁极。电磁式由硅钢片叠压而成,在铁心上套有励磁绕组。直流伺服电动机的结构应由定子和转子两大部分组成。直流电机运行时22\n西安航空职业技术学院毕业设计论文静止不动的部分称为定子,定子的主要作用是产生磁场,由机座、主磁极、换向极、端盖、轴承和电刷装置等组成。运行时转动的部分称为转子,其主要作用是产生电磁转矩和感应电动势,是直流电机进行能量转换的枢纽,所以通常又称为电枢,由转轴、电枢铁心、电枢绕组、换向器等组成。1.2.3交流伺服电动机交流伺服电动机,是将电能转变为机械能的一种机器。(1)原理: 交流伺服电动机主要由一个用以产生磁场的电磁铁绕组或布的定子绕组和一个旋转电枢或转子组成。电动机利用通电线圈在磁场中受力转动的现象而制成的。(2)优点:1)交流伺服电动机控制精度高,矩频特性好,具有过载能力2)由于转子由磁性,所以在极低频率下也能旋转运行。1.3运动控制器运动控制器使运动控制的核心,它可以同时控制一个或多个电机运动控制器是以中央逻辑控制单元为中心、以传感器为信号元件,以电机和执22\n西安航空职业技术学院毕业设计论文行单元为控制对象的,主要用于对机械传动装备的位置、速度进行实时的控制管理,使运动部件按照预期的轨迹和规定的运动参数完成相应的动作。1.3.1四轴运动控制卡固高公司生产的GT系列运动卡可以同步控制4个轴,实现多轴协调运动。其核心由ADSP2181数字信号处理器和FPGA组成,能实现高性能的控制计算。控制卡同时提供了C语言函数库和Windows下的动态链接库,可实现复杂的控制功能。主要功能如下:(1)PCI总线,即插即用;(2)可编程伺服采样周期(3)4路16位分辨率模拟电压输出信号或脉冲输出信号,每路可独立控制,无不影响(4)4路四倍频率增量编码器输入,作为各轴反馈信号输入;(5)每轴2路限位开关信号,1路驱动复位信号输出;(6)每轴1路驱动使能信号使能,1路驱动复位信号输出;(7)运动方式;单轴点运动、直线插补、圆弧插补、速度控制模式、电子齿轮模式;22\n西安航空职业技术学院毕业设计论文1.4伺服驱动器 伺服驱动器是用来控制伺服电机的一种控制器,它采用数字信号处理器(DSP)作为控制核心,可以实现比较复杂的控制算法,实现数字化、网络化和智能化,以智能功率模块(IPM)为核心设计的驱动电路,IPM内部集成了驱动电路,同时具有过电压、过电流、过热、欠压等故障检测保护电路,在主回路中还加入软启动电路,以减小启动过程对驱动器的冲击。伺服驱动器的选择依据不同的伺服电动机来选择的,固高科技运动控制器开发平台的实验用了直流伺服电动机、交流伺服电动机和步进伺服电动机,因而伺服驱动器也采用相对应的驱动器(步进伺服驱动器,直流伺服驱动器、,交流伺服驱动器)1.4.1步进伺服驱动器本实验运用的步进驱动器为YKA2204MA细分驱动器,驱动电压为DC15-40V,电流在1.5A以下,外径42mm的二相混合式步进电机。步进伺服驱动器可以把脉冲信号转换成角位移,并且可用作电磁制动轮、电磁差分器、或角位移发生器等。步进驱动器控制的U/V/W三相电形成电磁场,转子在此磁场的作用下转动,同时电机自带的编码器反馈信号给驱动器,驱动器根据反馈值与目标值进行比较,调整转子转动的角度。步进伺服电机的精度决定于编码器的精度。精确电流输出,具有全频段正弦波控制输出,实现高频斩波,恒流驱动,具有极强的抗干扰性;控制信号与内部信号实现光电隔离、具有过流、过压、过热等一系列自保护功能、运行平稳、可靠性好22\n西安航空职业技术学院毕业设计论文1.4.2YKA2204MA细分驱动器的特点(1)高性能、低价格、低噪音、平稳性极好(2) 设有10档等角度恒力矩细分,最高64细分(3)采用独特的控制电路,有效的降低噪音,增加了转动平稳性(4)最高反应频率可达200Kpps(5)步进脉冲停止超过100ms,线圈电流自动减半,减小了许多场合的电机过热(6)双极恒流斩波方式,使得相同电机可以输出更大的速度和功率(7)光电隔离信号输入/输出(8)驱动电流从0.0A/相到1.5A/相连续可调,单电源输入,电压范围:DC15-40V(9)由出错保护,过热保护和过流、电压过低保护(10)体积小巧的步进驱动器,体积为96*56.5*21(mm)静体重为:0.13kg1.5强电控制运动控制器平台强电控制部分主要由断路器空气开关、中间继电器和接线排端口组成。为平台提供强电的装备,并且有保护电路作用。1.5.1断路器空气开关该断路器,全称自动空气断路器,也称空气开关,是一种低压保护电器,可实现短路、过载等功能。22\n西安航空职业技术学院毕业设计论文当线路或电器发生短路或过载时,它能自动跳闸,切断电源,断路器作总电源保护开关或支线保护开关用,从而有效的保护这些设备。1.5.2中间继电器中间继电器用于继电保护与自动控制系统中以增加触点的数量及容量。它用于在控制电路中传递中间信号。中间继电器的结构和原理与交流接触器基本相同,与接触器的主要区别在于:接触器的主触头可以通过大电流,而中间继电器的触头只能通过小电流。所以,它只能用于控制电路中。它一般是没有主触点的,因为过载能力比较小。所以它用的全部都是辅助触头,数量比较多。22\n西安航空职业技术学院毕业设计论文2运动控制器的编程运动控制器提供DOS下的运动函数库和Windows下的运动函数动态链接库。我们只要依据你所选的类型电动机来调用相对运动函数库中的函数,再根据我们使用的函数编程就可以实现运动控制器的各种功能。2.1Windows系统下动态连接库的使用打开VisualC++6.0,利用MFCAppWizard[exe]创建一个基本对话框的Robot2008工程,将GT400.h,GT400.lib添加进工程,编程时要在头文件里包含头文件GT400.h。在对话框中添加按钮和编程框2.1.1VC中的使用PCI卡:(1)在用户程序中加入:#include“GT400.h"(2)在VC环境菜单中,选择Project--Setting--Link,在Object/Librarymodules中输入GT400.lib然后用户即可在程序中调用动态链接库中的函数。(3)在我们新建的程序文件夹中再加入三个VC文件:GT400LIB文件,GT400.dll,GT400.h。2.1.2VB中的使用用户可根据板卡的总线类型,将光盘中Windows\VB目录下提供的GTDeclarISA.bas或GTDeclarPCI.bas加入用户的工程中,即可直接调用。22\n西安航空职业技术学院毕业设计论文2.2控制系统的初始化在开始写编程的第一步首先使先对控制系统的初始化,设置主机与运动控制器的通讯基地址。运动控制器通过PC机的ISA总线与主机交换数据。而基地址其实就是向主机指明运动控制器所在的位置,使两者之间的通讯能够建立起来。打开运动控制器设备,用户程序开始时必须调用shortGT_Open(unsignedlongPortBase,unsignedlongirq)此函数,与GT_Open对应的函数是:shortGT_Close(void)。关闭运动控制器设备,用户程序结束时必须调用此函数接下来使要对轴的初始化,使用的函数也比较多,编程的顺序为:设置第几个轴》》》关闭当前轴的限位开关》》》设置限位开关触发电平》》》驱动报警信号》》》清除当前轴的不正确状态》》》设置当前轴的控制输出方式》》》设置闭环/开环控制》》》轴的打开。2.2.1程序的编排GT_Open();GT_AxisOff();GT_Reset();//////////////////////////////////////GT_Axis(1);GT_LmtsOn();GT_LmtSns(255);GT_AlarmOff();GT_ClrSts();GT_CtrlMode(1);GT_OpenLp();GT_AxisOn();2.2.2使用的函数及解析(1)GT_Open();GT_Open函数含义是打开运动控制器设备,我们编程序开始时必须调用此函数,通熟来说就是要控制器打开,做好运动的准备。与GT_Open对应的函数是:GT_Close,即关闭运动控制器设备,用户程序结束时必须调用此函数。函数返回0表示成功,非0表示失败。(1)GT_AxisOff();22\n西安航空职业技术学院毕业设计论文GT_AxisOff函数的含义为关闭当前轴,该函数使当前轴处于非控制状态并关闭轴驱动使能。(3)GT_Reset();GT_Reset函数的含义为复位运动控制器,该函数是主机以命令的形式使运动控制器复位。调用该函数时,如果有电机轴处于控制状态(即使用GT_AxisOn()将控制轴打开),该电机轴可能会有动作,这是由于复位指令在复位运动控制器的同时,也会使运动控制器的所有外部输出置于初始状态(包括关闭电机驱动使能),但由于电机本身对该关闭信号的滞后响应,使得运动控制器已经关闭控制时,电机还处于接收伺服控制命令的状态,从而使电机产生动作。所以在调用该函数之前,应使用GT_AxisOff()指令将所有电机轴的控制状态关闭。(4)GT_Axis();GT_Axis()函数的含义为设置当前轴,括号内填的是自己所需要第几个轴。运动控制器可以同时控制四个控制轴,并且各控制轴可以独立设置参数。为了提高主机与运动控制器的通讯效率,运动控制器采用控制轴寻址的策略。GT_Axis(),将参数指定轴设置为当前轴。此后调用的单轴命令都是针对当前轴,直到再次调用该函数将当前轴设置为另一个轴。参数num表示指定的轴号,在1、2、3、4四个数中取值,分别代表第一、二、三、四轴。(5)GT_LmtsOn();GT_LmtsOn函数的含义为使当前轴的限位开关有效,该函数使运动控制器开始监视当前轴的限位开关状态,如果中断申请允许,不管是正向或负向限位开关被压下,运动控制器都会向主机发出中断申请如果不允许中断,则可采用查询的办法,调用GT_GetLmtSwt()或GT_GetSts()命令来查询限位开关的状态。运动控制器默认状态为调用GT_LmtsOn()。(6)GT_LmtSns();GT_Lmtsns函数的含义为设置限位开关有效电平,运动控制器为每个控制轴都提供了正负限位信号输入接口。各轴限位开关应与端子板上相应的限位信号输入端子和OGND相连。当某个方向上的限位开关触发时,运动控制器将自动停止该方向上的运动,以保障系统安全。当离开限位开关以后,必须调用指令GT_ClrSts才能清除该轴的限位状态。22\n西安航空职业技术学院毕业设计论文运动控制器默认的限位开关为常闭开关,即各轴处于正常工作状态时,其限位开关信号输入为低电平;当限位开关信号输入为高电平时,与其对应轴的限位状态将被触发。如果使用常开开关,需要通过调用指令GT_LmtSns改变限位开关触发电平。指令GT_LmtSns的参数设置各轴正负限位开关的触发电平,当该参数的某个状态位为0时,表示将对应的限位开关设置为高电平触发,当某个状态位为1时表示将对应的限位开关设置为低电平触发。(7)GT_AlarmOff();GT_AlarmOff函数的含义为关闭驱动器报警信号,(8)GT_ClrSts();GT_ClrSts函数的含义为清除当前轴不正确状态,该函数清除当前轴事件状态标志位,但是并不影响运动控制器事件触发的中断,仅仅是把当前轴状态字的事件标志位清零,使下一次新的事件发生时可以产生标志。执行GT_ClrSts()后,将清除Bit0~Bit7,下一次再有新的事件发生后,对应位将会重新置为“1”。对于bit8~bit15位完全由运动控制器来管理的标志位,本函数将不起作用。(9)GT_CtrlMode();GT_CtrlMode()函数的含义为设置当前轴的输出方式,控制器由两种输出方式,既可以输出模拟量,也可以输出脉冲量。我们要按照电机伺服器的输出方式选择使输出模拟量还使输出脉冲量,设置参数Mode:0表示为模拟量输出模式,1表示为脉冲输出模式。使用步进电机则选用的的输出方式为脉冲输出模式(10)GT_OpenLp();GT_OpenLp函数含义为当前轴工作在开环方式,该函数主要直接对电机控制,允许主机通过GT_SetMtrCmd()命令直接设置运动控制器的控制轴输出信号,这种方式主要用于只需转矩控制的运动或标定驱动器,运动控制器无法实现准确的位置控制。而还有一种环方式为闭环方式,函数为GT_CloseLp(),调用此函数使当前轴工作在闭环方式,运动控制器将当前规划的运动位置、速度、加速度送入数字伺服滤波器,与反馈的实际位置进行比较获得控制输出信号。这种方式能够实现准确的位置控制。22\n西安航空职业技术学院毕业设计论文(11)GT_AxisOn();GT_AxisOn()函数的含义为使当前轴处于工作状态,该函数使当前轴处于控制状态,并使当前轴驱动器使能。2.3单轴运动的编程当进行该轴初始化完成之后接下来就是编程该轴,使该轴按照自己编程格式运动起来。编程该轴运动需要设置曲线模式的速度、加速度、加加速度还由目标位置。2.3.1程序的编排GT_Axis();GT_PrflV();GT_SetAcc();GT_SetVel();GT_Update();2.3.2使用的函数及解析(1)GT_Axis();GT_Axis()是当前轴的设定,前面初始化有详细的解析。要想使哪根轴运动就设置参数即可。(1)GT_PrflV();GT_PrflV()函数的含义为设置当前轴的运动模式为速度控制模式,本任务用的就是速度控制模式。在调用GT_PrflV()后,运动控制器将当前轴设定成速度控制模式,我们22\n西安航空职业技术学院毕业设计论文需要设定最大速度和加速度两个参数。在该模式下,开始运动时将以设定的加速度连续加速到设定的最大速度,运动方向由最大速度的符号确定,即正速度产生正向运动,而负速度则产生负向运动。在运动过程中,这两个运动参数可以随时修改。但运动控制器针对单轴运动除了速度运动控制模式外还有S-曲线模式、梯形曲线模式、电子齿轮模式。某一种运动模式设定后,该轴将保持这种运动模式,直到设置新的运动模式为止。S-曲线运动模式的函数为GT_PrflS(),其模式下的速度、加速度,加加速度的合成曲线基本图形模样为:梯形曲线运动模式的函数为GT_PrflT(),电子齿轮控制运动模式的函数为GT_PrflG()。(1)GT_SetAcc();GT_SetAcc()的函数含义为设置当前轴的加速度,该函数只在梯形速度模式和速度控制模式下有效,对电子齿轮控制模式使没有效的。设置加速度值是有范围的,其取值范围为:0~16384,单位为脉冲数或控制周期。(2)GT_SetAcc();GT_SetAcc()函数的含义为设置当前轴的目标速度,Vel是需要设施的目标速度值。在梯形曲线模式和S-曲线模式下速度取值范围为:0到16384。在速度控制模式下,速度取值范围为:-16384~16384。速度值单位是脉冲数或控制周期。(6)GT_Update();GT_Update()函数的含义为当前轴普通参数更新(参数生效),调用该函数命令实现当前轴立即刷新,使当前轴的运动参数或缓冲区命令生效。运动控制器的一些参数设置函数和一些命令函数,采用双缓冲寄存器方式工作。调用GT_Update()函数后,针对当前轴的双缓冲参数和命令才能生效。还有一种普通的参数更新是现多轴运动参数(命令)立即刷新,函数为GT_MltiUpdt(),即多个控制轴同步刷新参数(命令),在希望多个控制轴的运动同步的情况下,主机可采用此命令来实现多控制轴运动同步。22\n西安航空职业技术学院毕业设计论文2.4单轴停止的编程2.4.1程序的编排(1)GT_Axis();GT_Axis()是当前轴的设定,前面初始化有详细的解析。要想使哪根轴运动就设置参数即可。(2)XXXXX(小四号宋体,固定值20磅)2.4.2使用的函数及解析22\n西安航空职业技术学院毕业设计论文结束语完成情况:……。所得收获:……。22\n西安航空职业技术学院毕业设计论文谢辞在整个毕业设计中,我得到了指导老师***老师的热心指导和帮助,…………………22\n西安航空职业技术学院毕业设计论文文献[1]:著者.书名[M].版本(.翻译者).出版地:出版者,出版年.起止页码[2]:22