DELTATAUDataSystems,Inc.1UMACTurboTurboPMACPCIGeoDriveSingleSourceMachineControlmotionlogicdataPowerBrickAC快速培训DELTATAUDataSystems,Inc.2UMACTurboTurboPMACPCIGeoDriveSingleSourceMachineControlmotionlogicdata什么是PowerPMAC•一个装有实时操作系统的通用计算机–可以运行标准C程序•内部带有专用运动控制的软件–可以执行脚本语言程序•连续运动程序•非同步PLC程序–自动执行电机伺服程序与换向算法•专用的电机控制接口–模拟量与数字伺服专用接口–模拟量与数字通用I/O–工业网络接口(e.g.MACROTMandEtherCATTM)–工业总线接口(e.g.DeviceNetTMandProfibusTM)DELTATAUDataSystems,Inc.3UMACTurboTurboPMACPCIGeoDriveSingleSourceMachineControlmotionlogicdataPowerPMACCPU能力•800MHz–1.2GHz主频•单核或双核配置•全32/64-bit结构•硬件64-bit(double-precision)浮点数计算能力–非常高的计算速度(10xTurboPMACfloating-point)–非常高的动态解析范围(100KxTurboPMAC)•支持非常大的内存–1GB–2GBDDRAM带有错误校验的内存–64MB非易失存储器,存储系统固件–512MB非易失存储器,存储用户程序–可通过USB扩展存储空间–可通过SD卡扩展存储空间•自带USB2.0,Ethernet100Mbpsor1Gbps接口–通过DMA与CPU交换数据•可选视频接口DELTATAUDataSystems,Inc.4UMACTurboTurboPMACPCIGeoDriveSingleSourceMachineControlmotionlogicdataPowerPMACCPUPowerPMACCPU800Mhz-1.0GhzDDR21GBor2GBRAMw/ECCRemovableSOCDIMM16MMotionProgBuffer(adjustable)8MPPmacMemoryMap(Fixed)1MUserSharedMemory(adjustable)AMDNORBootFlash64MBContainseverythingnecessarytobootLinuxRTOSKernelLatticeCPLDUBUSI/F*CanbeusedasSATAorPCIe(x1)USBHub/CardReaderSD/MMCExpansionSlot(UserExpansion)SolderedDownNANDFlash2or8GBContainsCompleteOperatingSystemFilesplusAddonproductsie.IEC1131,EPICSNCApplication,Ethercat,etc...UserInterfaceSoftwareUSB2.0HostExpansionPort(UserExpansion)USB2.0Device1GEth1GEthRS232LaptoporPCUSB2.0PCIe(x1)PCIe(x4)SATADiskDriveEthercat,Powerlink,Modbus,etc…PCCommi.e.-Web,TCPSocketsUptox232GBSDHCMemoryCard(UserPrograms)UBUSKeyboard,Mouse,RS232,HardDrive,MemorySticketc...RS232EthernetEthernetUSBUSBVideoCardVisionSystemCardFieldbusCards,etc...DELTATAUDataSystems,Inc.5UMACTurboTurboPMACPCIGeoDriveSingleSourceMachineControlmotionlogicdataPowerPMACLinux操作系统•Linux开源•标准Linux拥有一个非优先级多任务处理内核–此内核为不同的应用程序提供运行环境–此内核为应用程序实现服务与接口–没有优先级,不能够做硬件实时中断任务(e.g.servos)•PowerPMAC使用实时优先级内核代替原有内核–Xenomai开源实时内核–自己处理所有的硬件中断,将它们从传统Linux系统中冻结–运行单个real-time应用去处理PowerPMAC“foreground”任务(phase,servo,real-timeinterrupt–built-inanduser-written)–当中断完成时将资源给予传统Linux“general-purposeOS”(GPOS)•LinuxGPOS可以运行多个应用程序–PowerPMAC专用的“backgroundtasks”–用户自定义C语言子程序DELTATAUDataSystems,Inc.6UMACTurboTurboPMACPCIGeoDriveSingleSourceMachineControlmotionlogicdataPowerPMAC的工作任务•执行同步连续的运动程序(Scriptonly)•执行非同步的PLC程序(ScriptandC)•执行运动学变换•计算出电机运动轨迹•处理反馈与masterpositiondata•闭环电机(position/velocity)伺服环•计算补偿表•同步采集数据•执行电子换相•闭环电流环•执行安全检查,状态更新,与housekeeping•回答在线指令•执行独立的C程序DELTATAUDataSystems,Inc.7UMACTurboTurboPMACPCIGeoDriveSingleSourceMachineControlmotionlogicdataPowerPMAC任务•Phase中断–频率由Servo/MACROIC设定(9kHzdefault)–电机换相计算–电机电流环闭环–相位数据采集•Servo中断–频率由Servo/MACROIC设定(2.25kHzdefault)–编码器转表的处理–轨迹更新与插补(fineinterpolation)–补偿表差值计算–位置/速度闭环–高优先级安全与状态检查–伺服数据采集•Real-time中断–频率由Sys.RtIntPeriod设定(750Hzdefault)–运动程序计算–Segmentation计算:粗插补,运动学,前瞻–ForegroundPLC程序计算–ForegroundCPLC程序计算–中等优先级的安全与状态检查DELTATAUDataSystems,Inc.8UMACTurboTurboPMACPCIGeoDriveSingleSourceMachineControlmotionlogicdataPowerPMAC任务•后台任务(当所有的中断任务执行完成后执行)–PowerPMAC安排后台任务的执行周期•每个后台任务周期执行一次所有的激活PLC•每个后台任务周期执行一次所有的激活CPLC•重复上述动作直到所有的程序都执行一遍•Backgroundstatus与housekeeping更新•释放给LinuxGPOS–LinuxGPOS任务•用户编写的C程序•操作系统程序–PowerPMAC任务与GPOS任务的时间分配•后台程序的执行间隔“Sleep”周期(用来执行LinuxGPOS任务)•Variablesleep–0.25msecto10.0msec–通过Sys.BgSleepTime(inµsec)设置•默认是1.0msec当Sys.BgSleepTime=0.0•只有在CPU时间分配有问题是才做更改DELTATAUDataSystems,Inc.9UMACTurboTurboPMACPCIGeoDriveSingleSourceMachineControlmotionlogicdataPowerPMAC任务线程示例PhaseInterruptPhaseInterruptServoInterruptServoInterruptRTIRTI#1#3#4#2PhaseUpdate(LowerPriorityTasks)(Ph)(Ph)(Ph)(Ph)ECTInterpComp(LowerPriority)(LowerPriorityTasks)(LowerPriorityTasks)PhaseCycleServoCycleRTICycleServoUpdate(Ph/Srv)(Ph/Srv)(Ph/Srv)S.U.Loops&1&2&3MotionProgRTPLCRTCPLC(Background)(Background)BackgroundCycle(InterruptTasks)(InterruptTasks)BGPLCBGCPLCsSleepforGPOSAppsDELTATAUDataSystems,Inc.10UMACTurboTurboPMACPCIGeoDriveSingleSourceMachineControlmotionlogicdata硬件中断与程序关系DELTATAUDataSystems,Inc.11UMACTurboTurboPMACPCIGeoDriveSingleSourceMachineControlmotionlogicdataPowerPMAC时钟的产生•PowerPMAC需要一个时钟源为系统提供Phase与Servoclocks–中断处理器去执行实时中段任务–触发ASICI/O任务保证硬件与软件完美协调•所有的DSPGATEnICs可以产生或接受systemclocks–当系统中只有一个IC时,它必须作为systemclocks的时钟源–PowerPMACCPU在初始化时会自动选择时钟源–($$$***commandorhardwarechange)–Gaten[i].PhaseServoDir=0产生时钟IC,=3使用别的时钟源–极少用户需要改变默认选择•时钟的控制,系统时钟频率由产生频率的IC控制–Gate1/2[i].PwmPeriod,PhaseClockDiv,ServoClockDivonPMAC2ICs–Gate3[i].PhaseFreq,ServoClockDivonPMAC3ICs•建议将为作为时钟源的IC的设置与时钟源IC统一–非时钟源IC通过锁相环与时钟源IC同步–小的调整可以更高的使软硬件同步工作DELTATAUDataSystems,Inc.12UMACTurboTurboPMACPCIGeoDriveSingleSourceMachineControlmotionlogicdata通过IDE设置时钟频率DELTATAUDataSystems,Inc.13UMACTurboTurboPMACPCIGeoDriveSingleSourceMachineControlmotionlogicdata时钟分配样例CPUDSPGATEnPSD=0DSPGATEnPSD=3DSPGATEnPSD=3IOGATEBufferBi-dir.BufferBi-dir.BufferBi-dir.BufferBufferServoClockPhaseClockPSD:Gaten[i].PhaseServoDir•PowerPMACCPU上电后会自动分配PhaseServoDir为0或者3,即产生时钟,或接受时钟DELTATAUDataSystems,Inc.14UMACTurboTurboPMACPCIGeoDriveSingleSourceMachineControlmotionlogicdata时钟源分配原则•从初始化后($