EtherCAT运动控制器上位机开发之Python+Qt(三):PDO配置与SDO读写

主营产品:运动控制器,运动控制卡,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扩展模块,显控一体机

温馨提示:为规避购买风险,建议您在购买产品前务必确认供应商资质及产品质量。

THE END
1.系统开发的论文中提到数据字典怎么写?信息科学那请问数据字典怎么写?别人建议说数据字典应该从数据项、数据结构、数据存储、数据流和数据处理几个方面...https://muchong.com/t-4463128-1-authorid-839508
2.数据字典值大小写PolarDB通过设置polar_comp_redwood_raw_names参数控制数据字典显示行为,即您可以通过设置polar_comp_redwood_raw_names为off兼容Oracle控制数据字典显示的行为。如果polar_comp_redwood_raw_names设置为TRUE,则从Oracle数据字典查看,显示的数据库对象名称与Postgres系统字典中存储的完全相同。因此,创建的没有括起来的引号名称...https://help.aliyun.com/document_detail/194207.html
3.oracle启动监听ccjsj1二、用户如何有效地利用数据字典 ORACLE的数据字典是数据库的重要组成部分之一,它随着数据库的产生而产生, 随着数据库的变化而变化, 体现为sys用户下的一些表和视图。数据字典名称是大写的英文字符。 数据字典里存有用户信息、用户的权限信息、所有数据对象信息、表的约束条件、统计分析数据库的视图...http://blog.chinaunix.net/uid-13819951-id-2869914.html
4.嘉和电子病历数据字典副本.pdf《嘉和电子病历数据字典 - 副本.pdf》由会员分享,可在线阅读,更多相关《嘉和电子病历数据字典 - 副本.pdf(109页珍藏版)》请在人人文库网上搜索。 1 电子病历数据字典 北京嘉和美康信息技术有限公司 2009 年 2 月 12 日 PDF 文件使用 pdfFactory Pro 试用版本创建 2 项目名称 项目名称 电子病历 文档日期 文档...https://www.renrendoc.com/p-47551578.html
1.6位数字典pythonpython数据字典怎么写字典是一种通过名字或者关键字引用的得数据结构,其键可以是数字、字符串、元组,这种结构类型也称之为映射。字典类型是Python中唯一內建的映射类型,基本的操作包括如下: (1)len():返回字典中键—值对的数量; (2)d[k]:返回关键字对于的值; (3)d[k]=v:将值关联到键值k上; (4)del d[k]:删除...https://blog.51cto.com/u_16099177/9887962
2.C#“字典”Dictionary的简单用法:轻松管理键值对在C#编程中,当我们需要存储和快速查找键值对(比如学生ID对应学生姓名,或者商品编号对应商品价格)时,Dictionary就成了我们的得力助手。它就像一本字典书,通过“键”可以快速找到对应的“值”。今天,我们就来聊聊Dictionary的基本用法,让你轻松上手。 初识Dictionary ...https://blog.csdn.net/sD7O95O/article/details/143830553
3.详细分析ruoyi系统的数据字典(附思路)数据字典在ruoyi系统很常见,主要用于减少对后端的访问,直接在系统上配置即可 1. Vue3 以下Demo只是给个思路: 前端Vue3渲染前获取所有字典 // 获取所有字典constdictStore=useDictStoreWithOut()constuserStore=useUserStoreWithOut()constpermissionStore=usePermissionStoreWithOut()if(!dictStore.getIsSetDict){awaitdict...http://www.mynw.cn/netsecurity/2462.html
4.进销存的数据字典怎么写零代码企业数字化知识站进销存的数据字典怎么写 进销存系统的数据字典编写需要包括:定义数据项、描述数据类型、提供数据约束、确保数据规范。数据字典的编写是为了帮助用户和开发者理解和管理数据。具体而言,定义数据项是最基础的一步,它包括明确各个数据项的名称和含义。例如,“商品编号”就是一个数据项,它的含义是唯一标识每种商品的编号。https://www.jiandaoyun.com/blog/article/906185/
5.数据字典英文怎么写数据字典英语怎么说沪江词库精选数据字典英文怎么写、英语单词怎么写、例句等信息 DD 翻译推荐 数据接口data 同步数据synchrodat 数据类data 错误数据misdata 光标数据cursor 入口数据entry 使用数据service 串数据string 写数据write 失效数据fail 最新单词 索引名的英语怎么说index ...https://www.hujiang.com/ciku/99852_207578503/
6.网站建设数据字典怎么写详解数据字典的操作步骤数据资源平台阿里云帮助中心第四章 数据字典详解数据字典实例详解CSDN博客数据字典设计常用表(通用)数据字典设计表CSDN博客如何新建数据字典的操作步骤数据资源平台阿里云帮助中心数据字典的应用场景什么时候该用数据字典 什么时候不同CSDN博客数据库字典范例 范文118。https://www.dksearch.com/tsnx6m_20241101
7.数据字典的英文数据字典用英语怎么说怎么写data dictionary 数据字典的英文:data dictionary。data dictionary的读音:英[?de?t? ?d?knri];美[?de?t? ?d?kneri]。中文意思:[计] 数据字典。 相关词组: 数据字典目录 data dictionary directory数据字典的英文例句...https://danci.gjcha.com/cnendbd23811.html
8.如何编写数据字典在我们的软件系统开发中经常会使用到数据字典,那么我们如何编写数据字典呢?特别提示 数据库系统是一个...https://iask.sina.com.cn/jxwd/86QBt7wpcixl.html
9.Java面试题大全(整理版)1000+面试题附答案详解最全面看完稳了...43、数据字典属于哪一个用户的? 44、怎样查看一个 linux 命令的概要与用法?假设你在/bin 目录中偶然看到一个你从没见过的的命令,怎样才能知道它的作用和用法呢? 45、使用哪一个命令可以查看自己文件系统的磁盘空间配额呢? Spring Boot 面试题 1、什么是 Spring Boot? 2、Spring Boot 有哪些优点? 3、什么是 ...https://maimai.cn/article/detail?fid=1752437513&efid=uSgZIWSJqvkGwxf4vJW75w
10.mysql如何写数据字典MySQL是一个广泛使用的开源关系型数据库管理系统。在进行数据库设计时,编写数据字典非常重要。数据字典是数据库设计的重要组成部分,它对开发人员和未来的数据库管理员都非常有用。下面是一份关于如何编写MySQL数据字典的指南。 首先,可以使用MySQL Workbench软件来进行数据库设计。在进行设计时,可以选择File->Export->For...http://www.qzphp.cn/help/article-15-2324-31827-1.html
11.SpringBoot中实现数据字典的示例代码java这篇文章主要介绍了SpringBoot中实现数据字典的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧我们在日常的项目开发中,对于数据字典肯定不模糊,它帮助了我们更加方便快捷地进行开发,下面一起来看看在 SpringBoot 中如何实现数据字典功能的...https://www.jb51.net/article/195357.htm
12.医保办周工作计划范文怎么写(精选)二、根据现在的.实际情况进一步做好数据字典和医保、新农合报销字典的对应,并有专人负责。 三、根据市医保处的安排积极配合市医保处做好全市医保统筹工作。 医保办周工作计划怎么写 第四九篇 新的一年,医务科将根据集团和医院提出的二零xx年工作方针,结合劳务分配制度改革和干部聘任制度改革两项措施,围绕以“以经济...https://www.jsycf8.com/zhishizongjie/270336.html
13.运动控制卡应用开发教程之VB6.0(五)EtherCAT数据字典读写 EtherCAT数据字典读写ZAux_BusCmd_SDORead和ZAux_BusCmd_SDOWrite。 其中对象字典编号、对象字典子编号、数据类型是十进制输入,手册上是十六进制表示,使用时注意转换。 (六)位置环增益与速度环增益调整 松下A6B系列EtherCAT总线驱动器中: ...http://www.360doc.com/content/21/0211/11/29968938_961672857.shtml
14.软件需求分析报告(精选7篇)随着人们自身素质提升,报告与我们愈发关系密切,报告具有成文事后性的特点。我们应当如何写报告呢?以下是小编为大家整理的软件需求分析报告,仅供参考,大家一起来看看吧。 软件需求分析报告 1 1.总体功能需求 该产品主要是一个信息分享平台,所以一定要有实时信息交互功能;针对注册用户,要有用户信息管理以及后台数据库存储...https://www.ruiwen.com/fenxibaogao/6216637.html
15.一秒钟一句话生成PowerBI数据字典并与同事分享一秒钟一句话生成 Power BI 数据字典并与同事分享。 这看似是一个不可能完成的任务。 的确,有很多方法和工具可以从 Power BI Desktop 的数据模型中提取信息,但是对于小白来说,怎么可以快速实现呢? 小白的标准操作在于: 第一步,复制粘贴 “度量值” 内容。 https://cloud.tencent.com/developer/article/2042977