众所周知,Python作为一门面向对象的新兴开发语言,具有完善的基础代码库,实用性与代码可读性强,被越来越多的人应用于智能装备的运动控制。

  今天正运动技术与大家分享一下运动控制卡应用开发教程之Python。

  在正式学习之前,我们先了解一下正运动技术的运动控制卡ECI2418和ECI2618。这两款产品分别是4轴,6轴运动控制卡。

  ECI2418支持4轴脉冲输入与编码器反馈,板载24点输入,16点输出,2AD,2DA,支持手轮接口,其中特定输出支持高速PWM控制。

  ECI2618支持6轴脉冲输入与编码器反馈,板载24点输入,16点输出,2AD,2DA,支持手轮接口,其中特定输出支持高速PWM控制。

  ECI2418,ECI2618均使用同一套API函数,均支持C、C++、C#、LabView、Python、Delphi等开发语言,支持VC6.0、VB6.0、Qt、.Net等平台,支持Windows、Linux、WinCE、iMac等操作系统。

以下是Python语言的开发流程。

1、新建项目。

  打开Pycharm软件进行操作,点击Create New Project新建项目。

2、设置Python项目存放路径。

  此过程主要包含三步:

  选择Python项目→选择Python项目将存放的路径→创建Python项目。

  3、新建Python文件。

  在Python项目中新建Python文件,右键CratPython文件夹,选择“New→PythonFile”,创建新的Python 文件。

  选择“New→Python File”

  创建新的Python 文件

4、将Python动态库复制到Python项目中。

5、模块导入并加载动态链接库。

  首先把Python中的两个模块导入(platform和ctypes模块),其中ctypes模块提供和C语言兼容的数据类型,能够很方便地调用动态链接库中输出的C接口函数。

importplatform

import ctypes

#运行环境判断

  systype = platform.system()

ifsystype == 'Windows':

ifplatform.architecture()[0] == '64bit':

   zauxdll = ctypes.WinDLL( './zauxdll64.dll')

   print( 'Windows x64')

else:

   zauxdll = ctypes.WinDLL( './zauxdll.dll')

   print( 'Windows x86')

elifsystype == 'Darwin':

   zmcdll = ctypes.CDLL( './zmotion.dylib')

   print( "macOS")

elif systype == 'Linux':

   zmcdll = ctypes.CDLL( './libzmotion.so')

   print( "Linux")

else:

  print( "Not Supported!!")

6、通过加载导入的动态库链接库,调用ZMotion PC函数手册中的函数。

1)使用操作。

  首先根据控制器连接方式用连接函数连接控制器,输出控制器句柄,利用控制器的句柄我们就可以对库函数进行操作。

  即“打开PC函数手册→搜索想要的函数功能→查看函数说明→通过刚才加载的动态链接库返回的zauxdll对象进行调用”。

2)通过ip连接函数接口返回的控制器句柄handle,对控制器的句柄handle操作。

  #####控制器连接#####

def connect(self, ip, console=[]):

ifself.handle.value is not None:

   self.disconnect()

  ip_bytes = ip.encode( 'utf-8')

  p_ip = ctypes.c_char_p(ip_bytes)

   print( "Connecting to", ip, "...")

   ret = zauxdll.ZAux_OpenEth(p_ip, ctypes.pointer(self.handle))

   msg = "Connected"

ifret == 0:

   msg = ip + " Connected"

   self.sys_ip = ip

   self.is_connected = True

else:

   msg = "Connection Failed, Error " + str(ret)

   self.is_connected = False

   console.append(msg)

   console.append(self.sys_info)

returnret

# 断开连接

def disconnect(self):

  ret = zauxdll.ZAux_Close(self.handle)

  self.is_connected = False

return ret

3)轴参数设置。

#####轴参数设置####

  # 设置轴类型

def set_atype(self, iaxis, iValue):

   ret = zauxdll.ZAux_Direct_SetAtype(self.handle, iaxis, iValue)

ifret == 0:

   print( "Set Axis (", iaxis, ") Atype:", iValue)

else:

   print( "Set Axis (", iaxis, ") Atype fail!")

returnret

 # 设置脉冲当量

def set_units(self, iaxis, iValue):

   ret = zauxdll.ZAux_Direct_SetUnits(self.handle, iaxis, ctypes.c_float(iValue))

if ret == 0:

   print( "Set Axis (", iaxis, ") Units:", iValue)

else:

   print( "Set Axis (", iaxis, ") Units fail!")

returnret

  # 设置轴加速度

def set_accel(self, iaxis, iValue):

   ret = zauxdll.ZAux_Direct_SetAccel(self.handle, iaxis, ctypes.c_float(iValue))

ifret == 0:

   print( "Set Axis (", iaxis, ") Accel:", iValue)

else:

   print( "Set Accel (", iaxis, ") Accel fail!")

returnret

# 设置轴减速度

def set_decel(self, iaxis, iValue):

   ret = zauxdll.ZAux_Direct_SetDecel(self.handle, iaxis, ctypes.c_float(iValue))

ifret == 0:

   print( "Set Axis (", iaxis, ") Decel:", iValue)

else:

   print( "Set Axis (", iaxis, ") Decel fail!")

returnret

# 设置轴运行速度

def set_speed(self, iaxis, iValue):

   ret = zauxdll.ZAux_Direct_SetAccel(self.handle, iaxis, ctypes.c_float(iValue))

ifret == 0:

   print( "Set Axis (", iaxis, ") Speed:", iValue)

else:

   print( "Set Axis (", iaxis, ") Speed fail!")

returnret

4)轴参数读取。

  #####轴参数读取####

  # 读取轴类型

def get_atype(self, iaxis):

   iValue = (ctypes.c_int)()

   ret = zauxdll.ZAux_Direct_GetAtype(self.handle, iaxis, ctypes.byref(iValue))

ifret == 0:

   print( "Get Axis (", iaxis, ") Atype:", iValue.value)

else:

   print( "Get Axis (", iaxis, ") Atype fail!")

return ret

# 读取轴脉冲当量

def get_units(self, iaxis):

   iValue = (ctypes.c_float)()

   ret = zauxdll.ZAux_Direct_GetUnits(self.handle, iaxis, ctypes.byref(iValue))

if ret == 0:

   print( "Get Axis (", iaxis, ") Units:", iValue.value)

else:

   print( "Get Axis (", iaxis, ") Units fail!")

returnret

# 读取轴加速度

def get_accel(self, iaxis):

   iValue = (ctypes.c_float)()

   ret = zauxdll.ZAux_Direct_GetAccel(self.handle, iaxis, ctypes.byref(iValue))

ifret == 0:

   print( "Get Axis (", iaxis, ") Accel:", iValue.value)

else:

   print( "Get Axis (", iaxis, ") Accel fail!")

returnret

# 读取轴减速度

def get_decel(self, iaxis):

   iValue = (ctypes.c_float)()

   ret = zauxdll.ZAux_Direct_GetDecel(self.handle, iaxis, ctypes.byref(iValue))

if ret == 0:

   print( "Get Axis (", iaxis, ") Decel:", iValue.value)

else:

   print( "Get Axis (", iaxis, ") Decel fail!")

returnret

# 读取轴运行速度

def get_speed(self, iaxis):

   iValue = (ctypes.c_float)()

   ret = zauxdll.ZAux_Direct_GetSpeed(self.handle, iaxis, ctypes.byref(iValue))

ifret == 0:

   print( "Get Axis (", iaxis, ") Speed:", iValue.value)

else:

   print( "Get Axis (", iaxis, ") Speed fail!")

returnret

5)单轴运动。

  #####运动调用####

  # 直线运动

def move(self, iaxis, iValue):

   ret = zauxdll.ZAux_Direct_Single_Move(self.handle, iaxis, iValue)

ifret == 0:

   print( "Axis (", iaxis, ") Move:",iValue)

else:

   print( "Axis (", iaxis, ") Move Fail")

returnret

6)运行程序,输出结果。

  调用封装好的函数→运行→输出程序运行结果。

#####功能使用####

  zaux = ZMCWrapper()

# 连接控制器ip 默认192.168.0.11

  zaux.connect( "192.168.0.11")

# 设置轴0参数

  zaux.set_atype(0, 1)

  zaux.set_units(0, 100)

  zaux.set_accel(0, 1000)

  zaux.set_decel(0, 1000)

  zaux.set_speed(0, 1000)

# 获取轴0参数

  zaux.get_atype(0)

  zaux.get_units(0)

  zaux.get_accel(0)

  zaux.get_decel(0)

  zaux.get_speed(0)

# 运动

  zaux.move(0, 100) # 轴0直线运动移动100

  运行并输出程序运行结果

  正运动技术运动控制卡应用开发教程之Python就分享到这里,更多精彩内容,请关注我们的公众号。

  本文由正运动小助手原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。

wince 开发_正运动技术运动控制卡应用开发教程之Python相关推荐

  1. 快速入门 | 篇十三:正运动技术运动控制器ZDevelop 编程软件的使用

    之前正运动技术与大家分享了,运动控制器的固件升级.ZBasic程序开发.ZPLC程序开发.与触摸屏通讯和输入/输出IO的应用.运动控制器数据与存储的应用.运动控制器ZCAN.EtherCAT总线的使用 ...

  2. 正运动技术荣膺“CMCD 2020年度运动控制领域最具成长品牌”等三项大奖

    2020年12月17日,"智能制造&中国运动控制/直驱行业发展高峰论坛暨CMCD&CDDIA年度颁奖典礼"在深圳坪山隆重举行,正运动技术总经理赵建厂.市场总监陈光华 ...

  3. 快速入门 | 篇十一: 正运动技术运动控制器中断的应用​

    之前正运动技术与大家分享了,运动控制器的固件升级.ZBasic程序开发.ZPLC程序开发.与触摸屏通讯和输入/输出IO的应用.运动控制器数据与存储的应用.运动控制器ZCAN.EtherCAT总线的使用 ...

  4. 快速入门 | 篇十二:正运动技术运动控制器U盘接口的使用​

    之前正运动技术与大家分享了,运动控制器的固件升级.ZBasic程序开发.ZPLC程序开发.与触摸屏通讯和输入/输出IO的应用.运动控制器数据与存储的应用.运动控制器ZCAN.EtherCAT总线的使用 ...

  5. 快速入门 | 篇十八:正运动技术脉冲型运动控制器的使用​

    视频教程:<正运动技术脉冲型运动控制器的使用> 今天,正运动技术来分享一下,脉冲型运动控制器的使用入门.首先,我们从准备工作讲起,然后依次讲控制器与电脑连接.控制器参数设置.驱动器参数设置 ...

  6. EtherCAT运动控制卡开发教程之python

    众所周知,Python作为一门面向对象的新兴开发语言,具有非常完善的基础代码库,更注重实用,同时代码可读极强,编写完程序即可直接运行,被越来越多的人广泛将它用于机器视觉和自动化控制. 今天正运动技术与 ...

  7. python 技巧视频教程_扣丁学堂Python视频教程之Python开发技巧

    扣丁学堂Python视频教程之Python开发技巧 2018-07-25 14:09:44 808浏览 关于Python开发的技巧小编在上篇文章已经给大家分享过一些,本篇文章扣丁学堂 神秘eval: ...

  8. 小甲鱼python全部视频_小甲鱼全套教程之Python系列视频教程

    Python 当前位置:主页 > 编程教程 > Python > 小甲鱼全套教程之Python系列视频教程 小甲鱼全套教程之Python系列视频教程 教程大小:   发布时间:201 ...

  9. python 工业软件开发_记一次工业软件开发经历

    项目概述 项目背景:工厂表面处理产线项目 b司接了a司一条表面处理产线的项目,包含硬件及软件,由于现在b司做的软件难用且数据难以查找,a司不满意验收不通过,款项没有结清.所有b司找到我们,希望我们能帮 ...

最新文章

  1. Windows下通过Python 3.x的ctypes调用C接口
  2. WPF入门教程-转载
  3. windows 2003 活动目录的更改域名后缀技巧
  4. 遇到的问题然后自己找到答案
  5. CVPR 2013 录用论文(目标跟踪部分)
  6. SAP Spartacus 服务器端渲染的三种可能情形
  7. 共同努力做好NBear!
  8. 如何在 GitHub 上面精准搜索开源项目?
  9. w ndows7旗舰版网卡驱动,Ghost windows7 64位系统旗舰版网卡驱动工具推荐下载
  10. 机智云开源框架二次开发之换皮肤,几乎不用改代码
  11. 台湾普瑞Parade PS8625| PS8625芯片方案|EDP转LVDS方案| 替代与兼容PS8625
  12. 人脸对齐--采用dlib库的68_face_landmark进行人脸对齐操作
  13. Java调用的高德api,通过经纬度查询地址信息 - 记录
  14. 实时大数据处理real-time big data processing (RTDP)框架:挑战与解决方案
  15. 使用Mac本打造你的高效率融合双系统(结尾附视频)
  16. 根据图片名字生成文件夹并归类+批量重命名照片名
  17. 统一了Excel和Python的神级编辑器GridStudio,安装起来确实不简单
  18. 【嵌入式】教你如何在Linux设备上截图
  19. C# 控制台项目练习--当当网
  20. 火车余票查询(python)

热门文章

  1. 让自律成为你2019年的新名片,快来看这24种建议
  2. java 定时还款 技术_详解java定时任务
  3. php 未定义数组索引_如何删除PHP数组元素键值并重新排序
  4. python创建文件对象的函数_Python学习笔记之—— File(文件) 对象常用函数
  5. Leetcode怎么调试java代码,LeetCode–正则表达式匹配
  6. 4gl 上传文件_速看!关于浙江移动微法院新版图文上传和签名的使用说明
  7. poj 1001 分析
  8. 如何向某网址Post信息,并得到CookieContainer以便以后直接通过验证
  9. 彻底删除SQL Server2005(转)
  10. ASP.NET DROPDOWNLIST无刷新联动(中文URL参数处理)