点击上方“正运动小助手”,随时关注新动态!
ZMC408CE硬件介绍
ZMC408CE支持8轴运动控制,最多可扩展至32轴,支持直线插补、任意圆弧插补、空间圆弧、螺旋插补、电子凸轮、电子齿轮、同步跟随等功能。
ZMC408CE支持PLC、Basic、HMI组态三种编程方式。PC上位机API编程支持C#、C++、LabVIEW、Matlab、Qt、Linux、VB.Net、Python等接口。
ZMC408CE支持8轴运动控制,可采用脉冲轴(带编码器反馈)或EtherCAT总线轴,通用IO包含24路输入口和16路输出口,部分IO为高速IO,模拟量AD/DA各两路,EtherCAT最快125us的刷新周期。
更多关于ZMC408CE的详情介绍,点击“推荐|8通道PSO的高性能EtherCAT总线运动控制器”查看。
PCIE464M硬件介绍
用户可直接将PCIE464M嵌入标准PC机实现高性能的EtherCAT运动控制功能,实现高精多轴同步控制,EtherCAT控制周期最小可达100us!
PCIE464M内置多路高速IO输入输出,可满足用户的多样化高速IO应用需求,如:高速色标锁存、高速PWM、多维位置比较输出PSO、视觉飞拍、速度前瞻、编码器位置检测等应用。
PCIE464M视频介绍
一
Python语言开发流程
操作系统环境:Win10_64位
Python版本:python-3.10.10-amd64.exe
Pycharm版本:pycharm-community-2024.1.3.exe
2.Python开发前对环境、解析器进行配置
1)安装汉化包:点击file → setting → plugins,然后搜索Chinese中文包。
2)python解析器安装Pyside2软件包(QT库):File → Settings → Project pythonProject。
3)配置自定义控件:File → Settings → Tools → External Tools点击+新增自定义工具。
Name:QtDesigner
Group:Qt
Program:PySide2安装路径下的 designer.exe 路径
例如:C:\Python\Python39\Scripts\pyside2-designer.exe
Name:Pyside2-uic
Group:Qt
Program:Python安装目录下Scripts\pyside2-uic.exe
例如:C:\Python\Python39\Scripts\pyside2-uic.exe
Arguments:$FileName$ -o $FileNameWithoutExtension$.py
Name:Pyside2-rcc
Group:Qt
Program:Python安装目录下Scripts\pyside2-rcc.exe
例如:C:\Python\Python39\Scripts\pyside2-rcc.exe
Arguments:$FileName$ -o $FileNameWithoutExtension$_rc.py
二
Python+Qt进行运动控制开发
1.新建项目
2.UI设置界面
3.Python运行UI
1)添加UI运行的python文件:选中项目右键 → 新建 → Python File。
2)Ui_Weiget文件里面添加UI处理的类。
from PySide2.QtCore import QFile
from PySide2.QtUiTools import QUiLoader
class UiInterFace:
def __init__(self):
# 从文件中加载UI定义
q_state_file = QFile("mainWeiget.ui")
q_state_file.open(QFile.ReadOnly)
q_state_file.close()
# 从 UI 定义中动态 创建一个相应的窗口对象
self.ui = QUiLoader().load(q_state_file)
from PySide2.QtWidgets import QApplication
from Ui_Weiget import UiInterFace
if __name__ == "__main__":
app = QApplication([]) #加载所有控件
ui_interface = UiInterFace() #创建窗体对象
ui_interface.ui.show() #主窗口的控件,全部显示在界面上
app.exec_() #进入QApplication的事件处理循环
4.添加库文件、库函数封装的Python文件
三
相关PC函数介绍
1.PC函数手册可在光盘资料查看,具体路径如下。
指令3 | ZAux_OpenEth | ||||
指令原型 | int32 __stdcall ZAux_OpenEth(char *ipaddr, ZMC_HANDLE * phandle) | ||||
指令说明 | 以太网连接控制器。 | ||||
输入参数 |
| ||||
输出参数 |
| ||||
返回值 | 成功返回值为0,非0详见错误码说明。 | ||||
指令示例 | 网口连接控制器 | ||||
详细说明 | 1.网口采用RJ45标准网线接口,通讯速率为100Mbit/s。 2.控制器出厂的IP地址为192.168.0.11,端口号为502。对端通讯设备需与控制器处于同一网段,才可进行连接。 3.最常用的控制器连接方式。 4.ZMC_HANDLE类型:Zmotion库中,专门用于控制卡连接数据定义类型; |
指令113 | ZAux_Direct_SetDatumIn | ||||||||
指令原型 | int32 __stdcall ZAux_Direct_SetDatumIn(ZMC_HANDLE handle, int iaxis , int iValue) | ||||||||
指令说明 | 设置轴映射原点IN,-1表示取消。 | ||||||||
输入参数 |
| ||||||||
输出参数 | / | ||||||||
返回值 | 成功返回值为0,非0详见错误码说明。 | ||||||||
指令示例 | 单轴回零运动 | ||||||||
详细说明 | 设置了原点开关后,ZMC控制器输入OFF时认为有信号输入,要相反效果可以用INVERT_IN反转电平。(ECI系列控制器相反)。 |
指令110 | ZAux_Direct_SetCreep | ||||||||
指令原型 | int32 __stdcall ZAux_Direct_SetCreep(ZMC_HANDLE handle, int iaxis, float fValue) | ||||||||
指令说明 | 设置回零爬行速度,用于原点搜寻。单位units/s。 | ||||||||
输入参数 |
| ||||||||
输出参数 | / | ||||||||
返回值 | 成功返回值为0,非0详见错误码说明。 | ||||||||
指令示例 | 单轴回零运动 | ||||||||
详细说明 | / |
指令103 | ZAux_Direct_Single_Datum | ||||||||||||||||||||
指令原型 | int32 __stdcall ZAux_Direct_Single_Datum(ZMC_HANDLE handle, int iaxis, int imode) | ||||||||||||||||||||
指令说明 | 单轴回零运动。 | ||||||||||||||||||||
输入参数 |
| ||||||||||||||||||||
输出参数 | / | ||||||||||||||||||||
返回值 | 成功返回值为0,非0详见错误码说明。 | ||||||||||||||||||||
指令示例 | 单轴回零运动 | ||||||||||||||||||||
详细说明 | mode:找原点模式,加10表示碰到限位后调头反找,不会碰到限位停止,例如13=模式3+限位调头反找,用于原点在正中间的情况。
|
指令39 | ZAux_Direct_GetIfIdle | ||||||
指令原型 | int32 __stdcall ZAux_Direct_GetIfIdle(ZMC_HANDLE handle, int iaxis, int *piValue) | ||||||
指令说明 | 读取当前轴运动是否在运动中 | ||||||
输入参数 |
| ||||||
输出参数 |
| ||||||
返回值 | 成功返回值为0,非0详见错误码说明。 | ||||||
指令示例 | 多轴直线插补 | ||||||
详细说明 | 当轴关联为机械手,CONNFRAME逆解时,关节轴一直返回0;CONNREFRAME正解时,虚拟轴一直返回0。 |
指令18 | ZAux_Direct_SetUnits | ||||||||
指令原型 | int32 __stdcall ZAux_Direct_SetUnits(ZMC_HANDLE handle,int iaxis, float fValue) | ||||||||
指令说明 | 设置脉冲当量,当设置为1时,表示单位为1个脉冲。 脉冲当量,控制器基本单位。指定每单位发送的脉冲数,支持5位小数精度。 控制器以脉冲当量作为基本单位,修改后坐标显示会随脉冲当量改变比例变化。 | ||||||||
输入参数 |
| ||||||||
输出参数 | / | ||||||||
返回值 | 成功返回值为0,非0详见错误码说明。 | ||||||||
指令示例 | 轴基本运动参数设置获取 | ||||||||
详细说明 | 如何设置 假设电机U=3600脉冲转一圈,丝杠一圈螺距P=2mm: 电机转1°对应的脉冲当量UNITS: UNITS=U/360=3600/360=10;//此时MOVE(1),电机转1° 工作台走1mm对应的脉冲当量UNTIS: UNITS=U/P=3600/2=1800,//此时MOVE(1),工作台走1mm 机台存在减速比时,要把减速比算上,假设减速比i=2:1 UNITS=U*i/P=3600*2/2=3600 |
8.设置轴运动速度。
指令24 | ZAux_Direct_SetSpeed | ||||||||
指令原型 | int32 __stdcall ZAux_Direct_SetSpeed(ZMC_HANDLE handle,int iaxis, float fValue) | ||||||||
指令说明 | 设置轴速度,单位units/s。 | ||||||||
输入参数 |
| ||||||||
输出参数 | / | ||||||||
返回值 | 成功返回值为0,非0详见错误码说明。 | ||||||||
指令示例 | 轴基本运动参数设置获取 | ||||||||
详细说明 | 2.速度修改后,立刻生效,可以实现动态变速,但是改变瞬间会抖。希望平滑变速请使用SPEED_RATIO(zbasic指令,PC可以用这个函数:ZAux_Direct_SetParam(句柄, “SPEED_RATIO”,轴号, 当前速度的比例))来代替掉速度函数,让他在线变速变得相对平滑。 |
9.单轴停止运动。
指令189 | ZAux_Direct_Single_Cancel | ||||||||
指令原型 | int32 __stdcall ZAux_Direct_Single_Cancel (ZMC_HANDLE handle, int iaxis, int imode); | ||||||||
指令说明 | 单轴运动停止。 | ||||||||
输入参数 |
| ||||||||
输出参数 | / | ||||||||
返回值 | 成功返回值为0,非0详见错误码说明。 | ||||||||
指令示例 | 单轴持续运动 | ||||||||
详细说明 | 如果指定轴在插补运动轴列表中,无论主轴或者其他轴,都停止轴组的插补运动 MODE0~2减速度按FASTDEC和DECEL中最大的值。 CANCEL后要调用绝对位置运动,必须先等待停止完成。 |
四
例程演示
1.连接控制器。
#连接控制器, 控制器默认IP是192.168.0.11,此处使用comboBox内输入的ip
def on_btn_open_clicked(self):
strtemp = self.ui.comboBox.currentText()
print("当前的ip是 :", strtemp)
if self.Zmc.handle.value is not None:
self.Zmc.ZAux_Close()
self.time1.stop()
self.ui.setWindowTitle("单轴运动")
iresult = self.Zmc.ZAux_OpenEth(strtemp)#连接控制器
if 0 != iresult:
QMessageBox.warning(self.ui, "提示", "连接失败")
else:
QMessageBox.warning(self.ui, "提示", "连接成功")
str_title = self.ui.windowTitle() + strtemp
self.ui.setWindowTitle(str_title)
self.Up_State() #刷新函数
self.time1.start(100)#开启定时器
def on_btn_run_clicked(self):
if self.Zmc.handle.value is None:
QMessageBox.warning(self.ui, "警告", "未连接控制器")
return
ifidle = self.Zmc.ZAux_Direct_GetIfIdle(self.axis_Num)[1].value
ifidle = int(ifidle)
if 0 == ifidle:
QMessageBox.warning(self.ui, "提示", "运动未停止")
return
self.Zmc.ZAux_Direct_SetAtype(self.axis_Num, 7 if self.mode < 3 else 1)
self.Zmc.ZAux_Direct_SetInvertStep(self.axis_Num, 0)
str_tmp = self.ui.edit_Units.text()
float_tmp = float(str_tmp)
self.Zmc.ZAux_Direct_SetUnits(self.axis_Num, float_tmp)
str_tmp = self.ui.edit_CLSpeed.text()
float_tmp = float(str_tmp)
self.Zmc.ZAux_Direct_SetCreep(self.axis_Num, float_tmp)
str_tmp = self.ui.edit_Speed.text()
float_tmp = float(str_tmp)
self.Zmc.ZAux_Direct_SetSpeed(self.axis_Num, float_tmp)
str_tmp = self.ui.edit_Accel.text()
float_tmp = float(str_tmp)
self.Zmc.ZAux_Direct_SetAccel(self.axis_Num, float_tmp)
str_tmp = self.ui.edit_Decel.text()
float_tmp = float(str_tmp)
self.Zmc.ZAux_Direct_SetDecel(self.axis_Num, float_tmp)
str_tmp = self.ui.edit_zeroIO.text()
float_tmp = int(str_tmp)
self.Zmc.ZAux_Direct_SetDatumIn(self.axis_Num, float_tmp)
self.Zmc.ZAux_Direct_SetInvertIn(float_tmp, 1)
self.Zmc.ZAux_Direct_Single_Datum(self.axis_Num, self.mode)
#停止轴运动
def on_btn_Stop_clicked(self):
if self.Zmc.handle.value is None:
QMessageBox.warning(self.ui, "警告", "未连接控制器")
return
#获取轴运动状态0 –运动中,-1-未运动
isidle=self.Zmc.ZAux_Direct_GetIfIdle(self.axis_Num)[1].value
if isidle:
QMessageBox.warning(self.ui, "警告", "已停止")
return
#停止单轴运动
self.Zmc.ZAux_Direct_Single_Cancel(self.axis_Num, 2)
4.运行程序观察运行效果。
5.教学视频。
本次,正运动技术EtherCAT运动控制器上位机开发之Python+Qt(二):回零,就分享到这里。
更多精彩内容请关注“正运动小助手”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师:400-089-8936。
回顾往期内容
开奖啦!参与《运动控制系统应用与实践》赠书活动的粉丝们看这里
送书福利!全自主IDE的《运动控制系统应用与实践》
EtherCAT运动控制器上位机开发之Python+Qt(一):链接与单轴运动
C#之Delta并联机械手的视觉同步分拣
C#之Delta并联机械手的视觉相机标定与形状匹配
C#之Delta并联机械手正逆解的建立和手动运动
PCIe EtherCAT实时运动控制卡PCIE464的安装与调试
PCIe EtherCAT实时运动控制卡PCIE464的IO与编码器读写应用
PCIe EtherCAT实时运动控制卡的DXF图形的CAD导图与多条运动指令的快速加工
VPLC系列机器视觉运动控制一体机在五轴联动点胶上的应用
基于VPLC7机器视觉运动控制一体机的UVW视觉对位解决方案
基于VPLC711的曲面外观检测XYR运动控制解决方案
基于VPLC532E开放式数控系统在五轴义齿机上的应用
机器视觉运动控制快组态软件RTFuse在XYZ三轴运动平台的应用方案
机器视觉运动控制一体机在喇叭跟随点胶上的应用
机器视觉运动控制一体机在光伏汇流焊机器人系统的解决方案
机器视觉运动控制一体机在点胶胶路检测上的应用
机器视觉运动控制一体机在SCARA机械手柔性上下料的应用
开放式激光振镜运动控制器的视觉校正振镜精度解决方案
开放式激光振镜运动控制器的激光清洗应用
PCIE超高速实时运动控制卡在六面外观视觉检测上的应用
超高速PCIe EtherCAT运动控制卡在高速异形插件机上的应用
运动控制器多工位位置比较输出在转盘式视觉筛选设备中的应用
EtherCAT总线冗余让制造更安全更可靠更智能
机器视觉运动控制一体机结构体功能上线,助力客户高效开发
正运动携手EPLAN,以高效的电气设计助力运动控制的数字化设计
BissC绝对值编码器在EtherCAT运动控制器中的应用
EtherCAT运动控制器在UVW对位平台中的应用
EtherCAT运动控制器Delta机械手应用
EtherCAT运动控制器的MATLAB开发
运动控制器/运动控制卡配套ZCAN总线ZIO模块的使用
运动控制卡/运动控制器的ZCAN总线ZMIO310扩展模块使用
EtherCAT运动控制器在ROS上的应用(下)
EtherCAT运动控制器在ROS上的应用(上)
皮带同步跟随:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十四)
自定义电子凸轮曲线的运动:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十三)
连续轨迹加工和速度前瞻:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十二)
PT/PVT运动模式介绍:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十一)
项目工程下载与XML配置文件下载:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十)
EtherCAT驱动器回零与控制器回零:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(九)
二维/三维的多轴PSO视觉飞拍与精准输出:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(八)
单轴PSO视觉飞拍与精准输出:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(七)
硬件位置比较输出和编码器锁存:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(六)
EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(五):通过RTSys进行调试与诊断
EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(四):板载IO与总线扩展IO的编码器与脉冲配置的应用
EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(三):EtherCAT总线CSP,CSV,CST模式切换
EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(二):EtherCAT总线初始化
EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(一):驱动安装与建立连接
全国产EtherCAT运动控制边缘控制器(六):RtBasic文件下载与连续轨迹加工的Python+Qt开发
全国产EtherCAT运动控制边缘控制器(五):IO配置与回零运动的Python+Qt开发
全国产EtherCAT运动控制边缘控制器(四):轴参数配置与单轴运动PC上位机C++控制
全国产EtherCAT运动控制边缘控制器(三):外设读写与RTSys开发诊断
全国产EtherCAT运动控制边缘控制器(二):统一的上位机API接口
全国产EtherCAT运动控制边缘控制器(一):ZMC432H硬件接口
简单易用的以太网数据采集卡应用开发之C#
高柔SS加减速曲线在锂电池焊接中的应用
EtherCAT和Ethernet的不同点有哪些, 通信周期又是什么意思?
工业以太网时代,该如何选择总线运动控制器?
正运动技术运动控制器如何快速实现单轴/多轴同步跟随功能?
EtherCAT运动控制器Delta机械手应用
EtherCAT运动控制器的MATLAB开发
EtherCAT运动控制器在数控加工手轮随动中的应用
EtherCAT运动控制器在数控加工手轮随动中的应用之C++
EtherCAT运动控制器在LabVIEW中的运动控制与实时数据采集
运动控制器PSO视觉飞拍与精准输出的C++开发(三):二维/三维/多轴PSO输出
运动控制器PSO视觉飞拍与精准输出的C++开发(一):单轴PSO
运动控制器八通道PSO的视觉飞拍与精准输出
Windows实时运动控制软核(七):LOCAL高速接口测试之Labview
Windows实时运动控制软核(六):LOCAL高速接口测试之Matlab
Windows实时运动控制软核(五):LOCAL高速接口测试之VC6.0
Windows实时运动控制软核(四):LOCAL高速接口测试之VB.NET
Windows实时运动控制软核(三):LOCAL高速接口测试之C++
Windows实时运动控制软核(二):LOCAL高速接口测试之Qt
Windows实时运动控制软核(一):LOCAL高速接口测试之C#
开放式激光振镜运动控制器:C++ 快速调用图形库应用
开放式激光振镜运动控制器:C++振镜矫正方法与实现
开放式激光振镜运动控制器:C++快速开发
开放式激光振镜运动控制器(五):ZMC408SCAN 光纤激光器的能量控制
开放式激光振镜运动控制器(四):ZMC408SCAN振镜控制光纤激光器加工
开放式激光振镜运动控制器(三):ZMC408SCAN轴控光纤激光器加工
开放式激光振镜运动控制器(二):ZMC408SCAN激光接口与控制
开放式激光振镜运动控制器(一):ZMC408SCAN接口与功能
运动控制器PSO位置同步输出(三):高精度等间距二维三维PSO输出
运动控制器PSO位置同步输出(一):硬件平台与PSO指令简介
经济型EtherCAT运动控制器(四):ModbusRTU或ModbusTcp与触摸屏通讯
经济型EtherCAT运动控制器(三):PLC实现多轴直线插补与电子凸轮
经济型EtherCAT运动控制器(二):ZBasic实现多轴直线插补运动
运动控制+机器视觉Demo软件框架(三):视觉纠偏+连续插补的配方编辑
运动控制+机器视觉Demo软件框架(二):移动标定和形状匹配
开放式激光振镜+运动控制器(五):ZMC408SCAN控制器硬件介绍
开放式激光振镜+运动控制器(四):PSO位置同步输出在激光振镜加工中的应用
快速入门 | 篇十九:正运动技术运动控制器多轴同步与电子凸轮指令简介
快速入门 | 篇十六:正运动控制器EtherCAT总线快速入门
快速入门 | 篇十四:运动控制器基础轴参数与基础运动控制指令
快速入门 | 篇十三:正运动技术运动控制器ZDevelop 编程软件的使用
快速入门 | 篇八:如何进行运动控制器EtherCAT总线的基础使用?
快速入门 | 篇七:如何进行运动控制器ZCAN总线扩展模块的使用?
快速入门 | 篇五:如何进行运动控制器输入/输出IO的应用?
快速入门 | 篇二:如何进行运动控制器ZBasic程序开发?
EtherCAT与RTEX驱动器轴回零的配置与实现
EtherCAT运动控制卡开发教程之Qt(中):小线段连续轨迹加工、暂停与继续
EtherCAT运动控制卡开发教程之Qt(上):开发环境配置与简单运动控制应用
EtherCAT运动控制卡的PWM与模拟量输出和运动速度同步
EtherCAT运动控制卡的硬件接线与C#的硬件外设读写与回零运动
简单易用的运动控制卡(十四):PWM、模拟量输出与运动控制的同步
简单易用的运动控制卡(六):Basic文件下载和连续轨迹加工
EtherCAT运动控制卡和LabVIEW构建智能装备(五)
EtherCAT运动控制卡和LabVIEW构建智能装备(四)
EtherCAT运动控制卡和LabVIEW构建智能装备(三)
EtherCAT运动控制卡和LabVIEW构建智能装备(二)
EtherCAT运动控制卡和LabVIEW构建智能装备(一)
关于正运动技术
深圳市正运动技术有限公司成立于2013年,专注于纯国产运动控制技术研究和通用运动控制软硬件平台和产品的研发,是国家级高新技术和专精特新“小巨人”企业。
正运动技术汇集了来自华为、中兴等公司的优秀人才。力求创新,目前公司拥有专利、著作权等知识产权五十余项。在坚持自主创新的同时,积极联合各大高校和科研院所协同运动控制基础技术的研究,是国内工控领域发展最快的企业之一,也是国内少有、完整掌握运动控制核心技术和实时工控软件平台技术的企业。
正运动技术除本部研发中心外,设有中山、武汉、上海三个研发分部。为更好地服务客户,本部之外设有苏州、东莞两个区域性服务中心,设有佛山、厦门、青岛、西安、武汉、成都、天津、郑州等销售和技术服务机构。
经过众多合作伙伴多年的开发应用,正运动技术的产品广泛地应用于3C电子、半导体、新能源、机器人、包装印刷、纺织服装、激光加工、医疗制药、数控机床、传统加工等领域。