您现在的位置: 万喜堂彩票>技术中心>万喜堂彩票app下载中心

直播推荐

更多>

企业动态

更多>

推荐展会

更多>

万喜堂彩票app下载中心

2023年11月20日 14:39:29人气:220来源:深圳市正运动技术有限公司

今天,正运动小助手给大家分享一下 全国产EtherCAT运动控制边缘控制器ZMC432H如何使用Python+QT实现连续轨迹加工。




01

功能简介

全国产EtherCAT运动控制边缘控制器ZMC432H是正运动的一款软硬件全国产自主可控,运动控制接口兼容EtherCAT总线和脉冲型的独立式运动控制器,最多支持32轴运动控制,同时支持正运动远程HMI功能,能提供网络组态显示,可实时监控和调整参数配置。

ok娱乐首页

ZMC432H具备丰富的硬件接口和控制功能模块,能实现高效稳定的运动控制和实时数据采集,以满足工业控制协同工业互联网的应用需求。
ZMC432H内置了Linux系统,可以使用本地的LOCAL接口进行连接,可以做到更快速的指令交互,单条指令与多条指令一次性交互时间为40us左右。
ok娱乐首页


02

Python+QT进行运动控制开发

一.配置好python +Qt 开发环境,以及安装好所需工具
1、下载python解释器。
2、安装pyside2或者pyside6根据python解释器的版本来选择,高版本的解释器使用pyside6。
安装pyside2有以下两种方式:
方式一: 使用win+r打开运行界面,然后输入cmd(在安装python解释器的时候要根据安装向导配置好环境变量,否则后面的指令不会执行成功)
方式二: 在pycharm中安装
3、安装好PyCharm Community Edition,在如下界面点击+号,安装所需的工具,如pyside2。

ok娱乐首页

4、在Pycharm中配置自定义工具(用于qt的界面编辑)。
(1)按照如图步骤打开Tool的编辑框。

ok娱乐首页

(2)自定义Pyside2-uic:
a.Program填写: Python安装目录 \Scripts\pyside2-uic.exe;
b.Arguments填写: $FileName$ -o $FileNameWithoutExtension$.py;
c.Working directory填写: $FileDir$。
ok娱乐首页
(3)自定义QtDesigner:
a.Program填写: Python安装目录 \Scripts\pyside2-designer.exe;
b.Working directory填写: $ProjectFileDir$。
ok娱乐首页
将自定义工具配置好之后就可以直接在PyCharm的菜单中直接使用了。
1、点击Tools → Qt → Qtdesigner即可进入UI的设计界面。
ok娱乐首页
2、右键ui文件,点击Qt → Pyside2-uic即可生成ui文件的py文件。

ok娱乐首页

万喜堂彩票

1、使用PyCharm Community Edition 2022打开一个新建的文件夹或者在进入PyCharm Community Edition 2022之后新建一个目录,并在目录中添加Python文件。

ok娱乐首页

2、找到 找到厂家提供的光盘资料,路径如下。
A.进入厂商提供的光盘资料找到“04.PC函数”文件夹,并点击进入。

ok娱乐首页

B.选择“PC函数库V2.1.1”文件夹。

ok娱乐首页

C.选择“Windows平台”文件夹。

ok娱乐首页

D.选择“库文件与例程”文件夹。

ok娱乐首页

E.选择“PYTHON例程”文件夹。

ok娱乐首页

F.解压对应位数的压缩包。

ok娱乐首页

G.解压后如下图所示。

ok娱乐首页

3、对于Windows系统来说将zauxdll.dll、zmotion.dll以及zauxdllPython.Py文件加入所创建的文件夹内即可。

ok娱乐首页

三.查看PC函数手册,熟悉相关函数接口。

1、PC函数手册也在光盘资料里面,具体路径如下:“光盘资料\04.PC函数\ZMotionPC函数库编程手册及其例程源码\ZMotionPC函数库编程手册 V2.1.1.pdf”。

ok娱乐首页

2、链接控制器,获取链接句柄。

(1)ZAux_OpenEth()接口说明。

指令7

ZAux_OpenEth

指令原型

int32  __stdcall  ZAux_OpenEth(char  *ipaddr, ZMC_HANDLE  * phandle)

指令说明

以太网链接控制器。

输入参数

输入参数1个,详细见下面说明。

ipaddr

链接的IP地址。

输出参数

输出参数1个,详细见下面说明。

Phandle

返回的链接句柄。

返回值

详细见错误码说明。

(2)下载“.bas”文件到控制器中运行的接口说明。

指令12

ZAux_BasDown

指令原型

int32  __stdcall  ZAux_BasDown(ZMC_HANDLE handle,const char *Filename,uint32 run_mode )

指令说明

单个bas文件生成ZAR并且下载到控制器运行

输入参数

共有3个输入参数,见下方说明。

handle

链接句柄。

Filename

BAS文件名带路径。

run_mode

下载模式0-RAM 1-ROM。

(3)暂停和恢复控制器内部Basic程序的接口说明。

指令10

ZAux_Pause

指令原型

int32  __stdcall  ZAux_Pause(ZMC_HANDLE handle)

指令说明

暂停控制器内部运行的 Basic 程序。

输入参数

输入参数1个,见下方说明。

handle

链接句柄。

指令11

ZAux_Resume

指令原型

int32  __stdcall  ZAux_Resume(ZMC_HANDLE handle)

指令说明

继续控制器内部运行的 Basic 程序。

输入参数

输入参数1个,见下方说明。

四. 万喜堂彩票app下载中心例程

1、例程界面如下。

ok娱乐首页

2、通过“光盘资料” → “工具软件”里面的“ZmotionCadV1.0导图工具”将CAD图纸里面的图形转换成“.bas”的运动控制代码。
A.打开该工具软件,点击“文件”→“导入”。选择需要转换的dxf格式的CAD图纸并打开。

ok娱乐首页

B.打开后效果如下。

ok娱乐首页

C.点击“文件”→“导出”,导出“.bas”文件。到时候可下载到控制卡里面进行以上轨迹的运动控制。

ok娱乐首页

D.CAD导图软件的具体使用方法参考往期文章 正运动技术CAD导图软件配合控制器的使用方法

3、程序示例如下。

(1)Python中加载qt的UI文件;

1.png

注:此时self.ui表示了qt中的ui。

(2)链接按钮的事件处理函数中调用链接控制器的接口函数ZAux_OpenEth(),与控制器进行链接,链接成功后启动定时器1监控控制器状态。

2.png

(3)通过定时器监控控制器状态。

def Up_State(self):

idlelist = [ctypes.c_int(-1) for i in range(0, 4)]

fdposlist = [ctypes.c_float(0) for i in range(0, 4)]

for i in range(0, 4):

self.Zmc.get_target_pos(i, fdposlist[i])  # 获取当前轴位置

self.Zmc.get_idle(i, idlelist[i])  # 判断当前轴状态

str1 = " {}  {} ".format("停止中" if idlelist[0].value else "运行中", round(fdposlist[0].value, 2))

self.ui.lineEdit_X.setText(str1)

str1 = " {}  {} ".format("停止中" if idlelist[1].value else "运行中", round(fdposlist[1].value, 2))

self.ui.lineEdit_Y.setText(str1)

str1 = " {}  {} ".format("停止中" if idlelist[2].value else "运行中", round(fdposlist[2].value, 2))

self.ui.lineEdit_Z.setText(str1)

str1 = " {}  {} ".format("停止中" if idlelist[3].value else "运行中", round(fdposlist[3].value, 2))

self.ui.lineEdit_R.setText(str1)


(4)通过“选择bas文件”按钮的事件处理函数选择对应的bas文件。

def on_btn_DownBas_clicked(self):

if self.Zmc.handle.value is None:

QMessageBox.warning(self.ui, "提示", "未连接控制器")

return

file_Date = QFileDialog.getOpenFileName(self.ui, "选择BAS文件", "..", "Files(*.bas)")

self.file_Name = file_Date[0].replace("/", "")

print(self.file_Name)

if self.file_Name == "":

return

self.ui.textEdit_FilePath.insertPlainText(self.file_Name + "\n")


(5)通过“启动”按钮的事件处理函数来下载和启动选择的bas文件。

if self.Zmc.handle.value is None:

QMessageBox.warning(self.ui, "警告", "未连接控制器")

return

# 设定轴0轴类型

str_tmp = self.ui.edit_Atype_0.text()

float_tmp = int(str_tmp)

self.Zmc.set_axis_type(0, float_tmp)

# 设定轴0轴类型

str_tmp = self.ui.edit_Atype_1.text()

float_tmp = int(str_tmp)

self.Zmc.set_axis_type(1, float_tmp)

# 设定脉冲模式及逻辑方向(脉冲 + 方向)

self.Zmc.set_invert_step(self.axis_Num, 0)

# 设置当量

str_tmp = self.ui.edit_Units_0.text()

float_tmp = float(str_tmp)

self.Zmc.set_units(0, float_tmp)

str_tmp = self.ui.edit_Units_1.text()

float_tmp = float(str_tmp)

self.Zmc.set_units(1, float_tmp)

# 设置速度

str_tmp = self.ui.edit_Speed_0.text()

float_tmp = float(str_tmp)

self.Zmc.set_speed(0, float_tmp)

str_tmp = self.ui.edit_Speed_1.text()

float_tmp = float(str_tmp)

self.Zmc.set_speed(1, float_tmp)

# 设置加速度

str_tmp = self.ui.edit_Accel_0.text()

float_tmp = float(str_tmp)

self.Zmc.set_acceleration(0, float_tmp)

str_tmp = self.ui.edit_Accel_1.text()

float_tmp = float(str_tmp)

self.Zmc.set_acceleration(1, float_tmp)

# 设置减速度

self.Zmc.set_deceleration(0, 0)

self.Zmc.set_deceleration(1, 0)

#开启连续插补

str_tmp = self.ui.edit_Merge_0.text()

float_tmp = int(str_tmp)

self.Zmc.set_merge(0,float_tmp)

str_tmp = self.ui.edit_Merge_1.text()

float_tmp = int(str_tmp)

self.Zmc.set_merge(1, float_tmp)

if self.file_Name == "":

return

ret = self.Zmc.bas_down(self.file_Name, 1)  # 下载到ROM 运行

if ret != 0:

QMessageBox.warning(self.ui, "提示", "文件下载失败!" + "错误码为 :{} ".format(ret))

return

注:“.bas”文件也可以通过我们的ZDevelop软件下载。ZAux_BasDown指令会将单个bas文件生成ZAR并且下载到控制器运行。


(6)通过停止、暂停、继续按钮的事件处理函数来实现控制器。

def on_btn_stop_clicked(self):

if self.Zmc.handle.value is None:

QMessageBox.warning(self.ui, "警告", "未连接控制器")

return

buffer = (ctypes.c_char * 1024)()

ret = self.Zmc.execute("STOPTASK 0", buffer, 0)

ret = self.Zmc.rapid_stop(2)

def on_btn_Pause_clicked(self):

ret = self.Zmc.bas_pause()

if ret != 0:

QMessageBox.warning(self.ui, "提示", "运动暂停失败!" + "错误码为 :{} ".format(ret))

return

def on_btn_Resume_clicked(self):

ret = self.Zmc.bas_resume()

if ret != 0:

QMessageBox.warning(self.ui, "提示", "运动恢复失败!" + "错误码为 :{} ".format(ret))

return



03

调试与监控

编译运行例程,同时通过ZDevelop软件连接控制器对控制器状态进行监控。

ZDevelop软件连接控制器打开调试模式可以查看控制器里面的“.bas”文件的文件名。

ok娱乐首页

万喜堂app下载老虎机

比较如下 图所示。

ok娱乐首页

ok娱乐首页


本次,正运动技术全国产EtherCAT运动控制边缘控制器(六):RtBasic文件下载与连续轨迹加工的Python+QT开发,就分享到这里。 更多精彩内容请关注“ 正运动小助手 ”公众号。

本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国万喜堂彩票注册开户水平。文章版权归正运动技术所有,如有转载请注明文章来源。


全年征稿/资讯合作 联系邮箱:1271141964@qq.com

万喜堂彩票app下载中心

  • 凡本网注明"来源:万喜堂彩票"的所有作品,版权均属于万喜堂彩票,转载请必须注明万喜堂彩票,http://tsyxdc.sbs。违反者本网将追究相关法律责任。
  • 企业发布的公司新闻、技术文章、资料下载等内容,如涉及侵权、违规遭投诉的,一律由发布企业自行承担责任,本网有权删除内容并追溯责任。
  • 本网转载并注明自其它来源的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品来源,并自负版权等法律责任。
  • 如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

<
更多 >

工控网 机器人 仪器仪表 物联网 3D打印 工业软件 金属加工机械 包装机械 印刷机械 农业机械 食品加工设备 制药设备 仓储物流 环保设备 造纸机械 工程机械 纺织机械 化工设备 电子加工设备 水泥设备 海洋水利装备 矿冶设备 新能源设备 服装机械 印染机械 制鞋机械 玻璃机械 陶瓷设备 橡塑设备 船舶设备 电子元器件 电气设备


我要投稿
  • 投稿请发送邮件至:(邮件标题请备注“投稿”)1271141964.qq.com
  • 联系电话0571-89719789
工业4.0时代万喜堂彩票注册开户领域“互联网+”服务平台
万喜堂彩票APP

功能丰富 实时交流

万喜堂彩票小程序

订阅获取更多服务

微信公众号

关注我们

抖音

万喜堂彩票

抖音号:gkzhan

打开抖音 搜索页扫一扫

视频号

万喜堂彩票

公众号:万喜堂彩票

打开微信扫码关注视频号

快手

万喜堂彩票

快手ID:gkzhan2006

打开快手 扫一扫关注
意见反馈
关闭
企业未开通此功能
详询客服 : 0571-87858618