主营产品:运动控制器,运动控制卡,IO扩展模块,显控一体机
手机访问展示厅
企业信息
普通会员
普通会员第12年
公司类型:生产商
所在地区:广东省深圳市
联系我们
公司名称:深圳市正运动技术有限公司
地址:广东省深圳市宝安区航城街道鹤州南片工业区2-3号阳光工业园A1栋5楼
手机:18576439953
传真:0755-26066955
Email:sales@zmotion.com.cn
ZMC408CE控制器硬件介绍
ZMC408CE支持8轴运动控制,最多可扩展至32轴,支持直线插补、任意圆弧插补、空间圆弧、螺旋插补、电子凸轮、电子齿轮、同步跟随等功能。
ZMC408CE支持8个通道的硬件比较输出、硬件定时器、运动中精准输出,还支持8通道PWM输出,对应的输出口为OUT0-7,支持8个通道同时触发硬件比较输出。
ZMC408CE视频介绍更多关于ZMC408CE的详情介绍,点击“推荐|8通道PSO的高性能EtherCAT总线运动控制器”查看。
PCIE464M控制卡硬件介绍
PCIE464M是一款基于PCIe的PCIExpress的EtherCAT总线运动控制卡,具有多项实时和高精度运动控制控制功能。
用户可直接将PCIE464M嵌入标准PC机实现高性能的EtherCAT运动控制功能,实现高精多轴同步控制,EtherCAT控制周期最小可达100us!
PCIE464M内置多路高速IO输入输出,可满足用户的多样化高速IO应用需求,如:高速色标锁存、高速PWM、多维位置比较输出PSO、视觉飞拍、速度前瞻、编码器位置检测等应用。
PCIE464M视频介绍
更多关于PCIE464M的详情介绍,点击“PCIE464M-高速高精,超高速PCIeEthrtCAT实时运动控制卡”查看。
ECI2A18B控制卡硬件介绍
ECI2A18B是正运动推出的一款高性价比10轴脉冲型、模块化的网络型运动控制卡,采用优化的网络通讯协议可以实现实时的运动控制,同时支持多种通信协议,方便与其他工业控制设备连接和集成。安装配置相对便捷,适合于模块化和灵活性要求较高的控制系统。
ECI2A18B控制卡最大可扩展至12脉冲轴,支持8路高速输入和4路高速输出,集成丰富的运动控制功能,包含多轴点位运动、电子凸轮,直线插补,圆弧插补,连续插补运动等,满足多样化的工业应用需求。
更多关于ECI2A18B的详情介绍,点击“【加量不加价】正运动网络型运动控制卡ECI2618B/ECI2A18B”查看。
一、Python+Qt开发流程
Python+Qt运动控制开发流程参考“EtherCAT运动控制器上位机之Python+Qt(一):链接与单轴运动”。
1.PC函数手册可在光盘资料查看,具体路径如下。
2.连接控制器。
3.下载bas文件到控制器。
4.下载zar文件到控制器。
5.SDO写入。
6.SDO读取。
7.读取轴类型。
8.设置轴使能。
9.设置脉冲当量。
10.单轴持续运动。
三、例程演示
1.连接控制器。
·
#连接控制器,控制器默认IP是192.168.0.11,此处使用comboBox内输入的ipdefon_btn_open_clicked(self):strtemp=self.ui.comboBox.currentText()print("当前的ip是:",strtemp)ifself.Zmc.handle.valueisnotNone:self.Zmc.ZAux_Close()self.time1.stop()self.ui.setWindowTitle("单轴运动")iresult=self.Zmc.ZAux_OpenEth(strtemp)#连接控制器if0!=iresult:QMessageBox.warning(self.ui,"提示","连接失败")else:QMessageBox.warning(self.ui,"提示","连接成功")str_title=self.ui.windowTitle()+strtempself.ui.setWindowTitle(str_title)self.Up_State()#刷新函数self.time1.start(100)#开启定时器
2.下载BAS文件到控制器。
#下载BAS文件到控制器defon_btn_down_bas_clicked(self):#下载BAS文件到控制器ifself.Zmc.handle.valueisNone:QMessageBox.warning(self.ui,"提示","未连接控制器")returnfile_Date=QFileDialog.getOpenFileName(self.ui,"选择BAS文件","..","Files(*.bas)")self.file_Name=file_Date[0].replace("/","\\")print(self.file_Name)self.ui.textEdit_file_path.insertPlainText(self.file_Name+"\n")#读取BAS文件中的变量判断是否有加载BAS文件temp=self.Zmc.ZAux_Direct_GetUserVar("BUS_TYPE")[1].valueself.Bus_type=float(temp)#BAS文件下载到ROMret=self.Zmc.ZAux_BasDown(self.file_Name,1)ifret!=0:QMessageBox.warning(self.ui,"提示","文件下载失败!"+"错误码为:%1".format(ret))
3.下载ZAR文件到控制器。
#下载ZAR文件到控制器defon_btn_down_zar_clicked(self):#下载zar件到控制器ifself.Zmc.handle.valueisNone:QMessageBox.warning(self.ui,"提示","未连接控制器")returnfile_Date=QFileDialog.getOpenFileName(self.ui,"选择zar文件","..","Files(*.zar)")self.file_Name=file_Date[0].replace("/","\\")print(self.file_Name)self.ui.textEdit_file_path.insertPlainText(self.file_Name+"\n")#读取zar文件中的变量判断是否有加载zar文件temp=self.Zmc.ZAux_Direct_GetUserVar("BUS_TYPE")[1].valueself.Bus_type=float(temp)#zar文件下载到ROMret=self.Zmc.ZAux_ZarDown(self.file_Name,1)ifret!=0:QMessageBox.warning(self.ui,"提示","zar文件下载失败!"+"错误码为:%1".format(ret))
4.SDO写入数据。
#SDO写入数据defon_btn_Ecat_write_clicked(self):#ETHERCAT写ifself.Zmc.handle.valueisNone:QMessageBox.warning(self.ui,"提示","未连接控制器")return#节点编号m_sdo_node1=int(self.ui.edit_node_1.text())#对象字典编号m_sdo_index1=int(self.ui.edit_dir_1.text())#对象字典子编号m_sdo_sub1=int(self.ui.edit_sub_node_1.text())#数据类型m_sdo_type1=self.ui.comboBox_type_1.currentIndex()+1#写入数据字典值的数据值m_sdo_data1=int(self.ui.edit_date_1.text())ifself.Bus_type==0:#SDO写入ret=self.Zmc.ZAux_BusCmd_SDOWrite(0,m_sdo_node1,m_sdo_index1,m_sdo_sub1,m_sdo_type1,m_sdo_data1)ifret!=0:QMessageBox.warning(self.ui,"提示","写入失败")returnelse:QMessageBox.warning(self.ui,"提示","非ETHERCAT模块")return
5.SDO读取数据。
#SDO读取数据defon_btn_Ecat_read_clicked(self):#ETHERCAT读取ifself.Zmc.handle.valueisNone:QMessageBox.warning(self.ui,"提示","未连接控制器")return#节点编号m_sdo_node2=int(self.ui.edit_node_2.text())#对象字典编号m_sdo_index2=int(self.ui.edit_dir_2.text())#对象字典子编号m_sdo_sub2=int(self.ui.edit_sub_node_2.text())#数据类型m_sdo_type2=self.ui.comboBox_type_2.currentIndex()+1m_sdo_data2=ctypes.c_int(0)print(self.Bus_type)ifself.Bus_type==0:#通过设备号和槽位号进行SDO读取。ret=self.Zmc.ZAux_BusCmd_SDORead(0,m_sdo_node2,m_sdo_index2,m_sdo_sub2,m_sdo_type2)#读取的数据值m_sdo_data2=int(ret[1].value)ifret!=0:QMessageBox.warning(self.ui,"提示","读取失败")returnself.ui.edit_date_2.setText(str(m_sdo_data2))else:QMessageBox.warning(self.ui,"提示","非ETHERCAT模块")return
四、运行效果
运行python程序,通过RTSys软件观察运行情况。
通过驱动器软件查看sdo读写情况(对象字典为10进制数据):此处以雷赛驱动为例读写驱动器SDO。
1.SDO_READ读取驱动器SDO参数,比如先在驱动器软件设置单圈脉冲数量为5000后,通过SDO_READ读取驱动器单圈脉冲数。
2.SDO_WRITE写入驱动器SDO参数,比如使用SDO_WRITE写入单圈脉冲数量为10000后,通过驱动器软件查看修改结果。
五、总线初始化bas文件
总线初始化BAS文件下载到控制器ROM里面掉电保存。
1.EtherCAT总线扩展接线
每个EIO扩展模块在扩展接线完成后,不需要进行进行二次开发,只需手动在EtherCAT主站控制器配置扩展模块唯一的IO地址和轴地址,配置完成即可访问。
IO地址编号通过总线指令NODE_IO来设置,控制器上程序只需通过IO编号就可以访问到扩展模块上的资源。轴地址的配置使用AXIS_ADDRESS指令映射绑定轴号,绑定完成通过BASE或AXIS指令指定轴号。接线时注意EtherCATIN连接上一级模块,EtherCATOUT连接下一级模块,IN和OUT口不可混用。
EIO扩展模块接线参考
1)槽位号(slot):槽位号是指控制器上总线接口的编号,EtherCAT总线槽位号为0。
2)设备号(node):
设备号是指一个槽位上连接的所有设备的编号,从0开始,按设备在总线上的连接顺序自动编号,可以通过NODE_COUNT(slot)指令查看总线上连接的设备总数。
3)驱动器编号:
控制器会自动识别出槽位上的驱动器,编号从0开始,按驱动器在总线上的连接顺序自动编号。
驱动器编号与设备号不同,只给槽位上的驱动器设备编号,其他设备忽略,映射轴号时将会用到驱动器编号。
2.EtherCAT总线扩展资源映射
1)IO映射
控制器上程序只需通过IO编号就可以访问到扩展模块上的资源,EtherCAT总线扩展模块IO编号通过总线指令NODE_IO来设置,同时配置输入和输出。IO映射时先查看控制器自身的最大IO编号(包括外部IO接口和脉冲轴内的接口),再使用指令设置。若扩展的IO与控制器自身IO编号重合,二者将同时起作用,所以IO映射的映射的编号在整个控制系统中均不得重复。IO映射语法:NODE_IO(slot,node)=iobaseslot:槽位号,0-缺省node:设备编号,编号从0开始iobase:映射IO起始编号,设置结果只会是8的倍数
2)轴映射
扩展模块的轴使用前需要使用AXIS_ADDRESS指令映射轴号,轴映射也需要注意整个系统的轴号不得重复。EIO系列扩展轴的映射与总线驱动器的轴映射语法相同。轴映射语法:
AXIS_ADDRESS(轴号)=(槽位号<<16)+驱动器编号+1
3.总线初始化BAS程序
4.BAS总线初始化关键函数
1)SLOT_SCAN--总线扫描
2)AXIS_ADDRESS--轴地址设置
3)DRIVE_PROFILE--驱动器PDO设置
4)SDO_READ--数据字典读取
5)SDO_WRITE--数据字典写入
完整代码获取地址
▼
企业在线
您好!欢迎新老客户咨询洽谈!
手机扫描二维码
一键打给商家
深圳市正运动技术有限公司-主营产品:运动控制器,运动控制卡,IO扩展模块,显控一体机
温馨提示:为规避购买风险,建议您在购买产品前务必确认供应商资质及产品质量。