PPMAC & Copley EtherCAT 安全设置与使用指南

需积分: 0 11 下载量 24 浏览量 更新于2024-08-27 1 收藏 5.5MB PDF 举报
"PPMAC & Copley EtherCAT设置指南提供了关于如何配置和安全使用PPMAC(Power PMAC)与Copley驱动器的详细步骤,适用于基于EtherCAT的自动化控制系统。该指南由北京泰诺德科技有限公司提供,强调了安全操作的重要性,包括在运行前检查紧急开关、设置控制器参数、无负载测试电机、避免频繁开关电源等。同时,手册中列出了硬件和软件的具体参数,如控制器CK3E-1210、驱动器copleyAccelnetAE2-090-14、电机H.D.T Brushless,以及PowerPMAC IDE和CMEV8.1 Beta10软件。Copley驱动器的配置过程包括正确连接电机、使用CME软件进行通信设置、配置电机和编码器、设置Autophase以及电流环自调整等步骤。" 这篇文档详细介绍了如何安全有效地设置和操作一个集成PPMAC和Copley EtherCAT驱动器的自动化系统。首先,文档强调了安全注意事项,提醒用户在实际操作前确认所有设备的规格和性能,确保使用额定值并设计安全回路。用户必须阅读并理解设备手册,包括所有安全提示。 硬件部分,文档列出了控制器CK3E-1210、驱动器copleyAccelnetAE2-090-14以及H.D.T Brushless电机的组合。而软件方面,用户需要使用PowerPMAC IDE 4.3.2.19和CMEV8.1 Beta10进行编程和调试。 在Copley驱动器的配置过程中,用户需要按照指南正确连接电机,然后以管理员权限运行CME软件,通过USB转232通信线缆与驱动器建立连接。接下来,用户需要在软件中配置电机和编码器,进行Autophase设置,以及电流环自调整以优化系统性能。 此外,文档还提到了一些禁止的行为,比如在系统运行时不应靠近运动部件,不应触摸放大器和电机,不应移动连接电缆,以及在电源关闭后一段时间内避免接触接线端子,以防止意外伤害和电气事故。 这份指南是针对工程师和技术人员的一份实用参考资料,有助于他们在遵循安全规定的同时,正确地设置和操作基于PPMAC和Copley EtherCAT技术的自动化控制系统。

代码解释:void CopleyAmplifier::SetNewPVTMotionStartTime(boost::posix_time::ptime time,CouchTrjType pvt_point) { //Record the time stamp and data. m_bool_pvt_started = true; m_start_motion_time_us = PosixTime2Integer<unsigned long long>(time); m_last_pvt_data.p = m_start_pos; //Send the last dummy data calculated by the motion start time. ptime current_time = microsec_clock::universal_time(); ptime couch_time = Integer2PosixTime<unsigned long long>(pvt_point.t, current_time); ptime couch_to_L1_time = Integer2PosixTime<unsigned long long>(pvt_point.timeReachToBuffer, current_time); unsigned char next_point_time = round((pvt_point.t-m_start_motion_time_us)/1000.0)-m_total_motion_time_ms; if(next_point_time<4) { GcLogInfo(m_log_id, __FUNCTION__, "<CopleyStartPVT>Motion start time:%s. First couch time:%s.First couch to L1 time:%s.", boost::posix_time::to_simple_string(time).c_str(), boost::posix_time::to_simple_string(couch_time).c_str(), boost::posix_time::to_simple_string(couch_to_L1_time).c_str()); GcLogInfo(m_log_id, __FUNCTION__, "next_point_time: %d.",next_point_time); BOOST_THROW_EXCEPTION(AxisException() <<Axis_Error_Msg("Start PVT time failed! No enough time for First PVT data!")); } AmpPVTData dummy_data = {next_point_time,0,0}; //Send the left dummy data. dummy_data.time = next_point_time; Gantry::Array seg_cmd = ComposePVTRawData(dummy_data,m_next_pvt_index,1); GcLogDebugExpect(m_need_trace, m_log_id, __FUNCTION__, "<CopleyStartPVT>The %dth PVT dummy data.", m_next_pvt_index); WriteSDO(Gantry::ODAddress(COPLEY_PVT_DATA, 0), (unsigned long long)seg_cmd.GetValue<unsigned long long>()); GcLogInfo(m_log_id, __FUNCTION__, "<CopleyStartPVT>Motion start time:%s. First couch time:%s.First couch to L1 time:%s.", boost::posix_time::to_simple_string(time).c_str(), boost::posix_time::to_simple_string(couch_time).c_str(), boost::posix_time::to_simple_string(couch_to_L1_time).c_str()); m_total_motion_time_ms += dummy_data.time; m_lasttrj_segments.push_back(seg_cmd.GetValue<unsigned long long>()); ++m_next_pvt_index; GcLogInfo(m_log_id, __FUNCTION__, "<CopleyStartPVT>Motion Started. Start position %f mm.", pvt_point.p); }

2023-07-14 上传