基于Visual C++的运动控制系统开发

合集下载

六自由度模块化机器人控制系统设计

六自由度模块化机器人控制系统设计

六自由度模块化机器人控制系统设计王殿君;嵇钟辉;刘淑晶;相臣;彭文祥【摘要】针对开放式系统在控制机器人方面的特点,使用PMAC (Programmable multiple-axis controller)运动控制器,基于Visual C++6.0平台开发了一种六自由度模块化机器人控制系统。

采用PMAC运动控制器为下位机,完成了硬件系统的设计和搭建,在PC上位机上基于MFC设计了机器人控制软件,实现空间运动学计算、示教等功能。

机器人示教实验及定位实验表明,应用PC+PMAC的控制系统可以较好地实现机器人稳定工作,其最大定位误差为0.8392mm,定位精度比较高,这可以较好地满足机器人的工作要求。

【期刊名称】《制造业自动化》【年(卷),期】2015(000)012【总页数】4页(P107-109,113)【关键词】模块化;六自由度机器人;PMAC;控制系统【作者】王殿君;嵇钟辉;刘淑晶;相臣;彭文祥【作者单位】北京石油化工学院机械工程学院,北京 102617;北京石油化工学院机械工程学院,北京 102617;北京石油化工学院机械工程学院,北京 102617;北京石油化工学院机械工程学院,北京 102617;北京石油化工学院机械工程学院,北京 102617【正文语种】中文【中图分类】TP242.60 引言目前机器人常用的控制方式主要有主从式、分布式、集中式。

主从式控制方式是由一级计算机和二级计算机组合控制的,主要应用于机器人的远程控制。

分布式控制方式可以有效的提高控制器的工作速度和控制性能,但是这也给控制系统设计增大了难度。

而集中式的控制方式简单、灵活,可以实现任务的实时集中控制等特点,被广泛应用于机器人控制。

集中式控制方式目前主要有专用式控制方式、开放式控制方式。

专用式控制方式专用、集成度高,但不开放、功能可扩展性和可移植性不高,不利于二次开发。

开放式的控制方式以其具有很好的实时性、稳定性、可扩展性等优点成为当下机器人控制的常用方法。

基于PLCopen的数控机械控制器研究与开发

基于PLCopen的数控机械控制器研究与开发
中圈分类号;TP31 1
Doi:1 0.396cl/J.issn.1009-01 34.201 611
31—3;PLCopen;运动控制

文献标识码:A文章缩号;1 009—0134(201 3)ol(下)一0063—05 3.01(下).1
0引言
“数控一代机械产品”的发展规划,通过在 各行业中推广应用成熟的数字控制技术和装置来
程语言。TwinCAT
Scope
View贝1]是TwinCAT的附
己的控制需求选取相应的功能块,并设置相应的 输入/输出变量即可。
功能块对轴的作用机理如图4所示。轴数据变
加软件,是一种图形化输出分析工具,可对本地
1641
第35卷第1期2013-01(下)
万方数据
量Axis,作为公共的数据电缆联系并贯穿于整个 控制方案的始终,各个功能块根据自身的控制功 能,完成对单轴数据结构体中控制信息和反馈信 息的处理,最后在TwinCAT的任务调度下,以及 经过必要的数据变换,完成对电机的控制。多轴 和轴组功能块的控制作用是在单轴功能块作用机 理的基础上实施的。
PLC
31—3工业控制编程语言标准和PLCopen运动控制规范,开发了完整的 open运动控制库,并以此为基础研究没计了几种典型的数控机械,最后对PLCopen,L亟动
61 1
控制库和数控机械功能库进行了实验验证,从而实现了一套简单、高效、通用、灵活、完整的 数控机械运动控制解决方案。 关键词:数控一代;数控机械;IEC
开始
图3运动控制功能块软件模型
图4运动控制功能块对轴的作用机理
本文PLCopen运动控制库开发,主要分为五大 模块,如图5所示:电源开/关管理模块、功能块
参数配置和状态管理模块、运动控制信息管理模 块、错误信息管理和复位模块以及运动控制执行

VISSIM简介

VISSIM简介
在任何支持ANSI C编译器平台上编译和运行的代码。相比对应的模块 图形,由此产生的可执行文件最快可运行到高于正常速率五倍的运行 速度,其尤为适用于高采样率系统。 查看仿真结果:为查看执行仿真后模型性能VisSim为用户提供了 附加的功能监视自己的模型。VisSim提供了大量的模块以便可视、分 析、动画及仿真数据收集。使用虚拟现实建模语言VRML,用户可以创 建3D虚拟现实并控制物体的改变、运动、光线以及VisSim摄像机视角 。 下图为模拟登月舱着陆3D动画:
VSI公司简介

目前,通过全球超过10万的科学家和设计工 程师的使用,VisSim已经证明了自己的价值,它 的应用跨越了多个领域多个行业,有航空航天、 动力和气能、高精度运动控制、过程控制,HVAC (采暖、通风和空调)、交通运输、通讯、机械 电子、电动机控制、导弹制导系统以及闭合回路 控制等各方面。全球拥有12,500多个注册用户。 其中包括ABB、波音、杜邦、本田、NASA、摩托罗 拉、通用电气、惠普、大众电器、东芝、沃尔沃 等国际知名企业。
VISSIM主要功能

通讯系统设计仿真平台
信道失真的衰落和回声:VISSIM /COMM包括多种预定义的通道 模型,支持固定和移动的服务方案。衰落,多径,带限高斯噪声模型 包括: AWGN信道(实数和复数,标量和矢量) 二元对称 杰克斯移动 Rummler和标准的多路径 传输损耗 米/瑞利衰落 Saleh-Valenzuela (实数和复数) 行波管放大器(计算和查表) 您可以修改VISSIM /COMM模块参数,以满足其特定的系统。您还 可以创建,形成新的模块或开发使用内置VISSIM模块向导的定制模块 定制机型。



VISSIM的主要特点

雷赛运动控制卡说明书【详细版】

雷赛运动控制卡说明书【详细版】

首先,请确保运动控制卡已经插入到你的计算机插槽中,已安装好驱动程序,并用演示软件确认硬件系统工作正常。

安装好VB软件,但在开始编写运动控制软件前,需要做下面几项工作:1 :建立自己的工作目录,如:d:\vbMotion(此目录名可以自己指定)。

2 :将DMC5480.bas文件拷贝到该目录下(此文件在软件CD的module目录下可以找到)。

3 :运行VB,并建立一个工程,然后保存此新建的工程在vbMotion目录中然后按下述步骤,将运动函数库链接到你的工程项目中:1:在VB编译器的“工程(P)”菜单中选择“添加模块”;2 选择“现存”;3 选择“DMC5480.bas”;4 选择“确定”。

5 当您将运动函数链接到你的工程项目中后,就可以象调用其它API函数一样直接调用运动函数,每个函数的具体功能,请参考软件手册中的“运动函数说明”,当然还可以打开模块文件DMC5480.bas了解每个函数的具体定义。

确保DMC5480运动控制卡已经插入到你的计算机插槽中,安装好驱动程序,演示软件和VC软件,在调用DMC5480运动函数之前,需要做下面几项工作:1. 启动演示软件,进行运动控制卡控制功能的简单测试,如:单轴定长运动等,以确定DMC5480运动控制卡软硬件安装正常。

2. 运行VC,并建立一工程,将工程命名为vcMotion(注:此工程名可以自己指定);3. 将DMC5480.lib和DMC5480.h文件拷贝到该目录下(此文件在module目录下);4. 将运动函数链接到你的工程项目中,将DMC5480.lib加入到工程中;5. 在调用运动函数的文件头部代码中加入#include “DMC5480.h”语句。

在编程过程中,可以参阅运动函数编程实例,可以通过网站下载,只要您将控制卡及其驱动软件安装好,即可直接运行这些源代码。

使用雷赛运动控制卡的设备控制系统结构如图3-1所示:图1 基于雷赛运动控制卡的设备控制系统结构从上面的结构图可以看出,控制系统的工作原理可以简单描述为:1. 操作员的操作信息通过操作界面(包括显示屏和键盘)传递给系统控制软件;2. 系统控制软件将操作信息转化为运动参数并根据这些参数调用DLL库中运动函数;3. 运动函数调用雷赛运动控制卡驱动程序发出控制指令给控制卡;4. 雷赛运动控制卡再根据控制指令发出相应的驱动信号(如脉冲、方向信号)给驱动器及电机、读取编码器数据、读/写通用输入/输出口。

机电一体化实验报告

机电一体化实验报告

机电一体化实验报告一体化系统设计实验报告学院专业班级学号姓名指导教师XX 年1月12日实验一机电一体化系统的组成实验目的:以XY简易数控工作台为例,说明机电一体化系统的基本组成和各模块的特点。

实验设备:1台式PC机一台1标准XY工作台一套1运动控制卡一块1游标卡尺一把实验内容:XY简易数控工作台是一典型的机电一体化系统,是许多数控加工设备和电子加工设备的基本部件,XY数控工作台主要由运动控制卡、DC24V 开关电源、步进电机及其驱动器、XY向运动平台、光栅尺和霍尔限位开关组成,其之间的关系如图1、1所示。

工作原理大致为:运动控制卡接受PC机发出的位置和轨迹指令,进行规划处理(插补运算),转化成步进电机驱动器可以接受的指令格式(速度脉冲和方向信号)发给驱动器,由驱动器进行脉冲环行分配和功率放大从而驱动步进电机,步进电机经过联轴器、滚动丝杠推动工作台按指定的速度和位移运动。

实验步骤:(1)在XY数控工作台系统中分别找到上述各个模块,并指出各模块在机电一体化系统中实现哪一模块的功能。

①运动控制卡:运动控制卡是PCL、CPCL、PXL等总线形成的板卡,通俗地讲我们可以把它看成一个单片机,有自己的算法,可以通过VC、VB、labview. BCB等语言实现其功能,数控系统即通过运动控制卡来实现对机床运动轨迹的控制。

②DC24V开关电源:对供电要求质量比较高的控制设备提供纯净、稳定、没有杂波的直流电源。

③步进电机及其驱动器:步进电机用于驱动数控工作台的X、Y两个方向的移动;步进电机通过驱动器细分,可减小步距角,从而提髙步进电机的精确率,实现脉冲分配和功率驱动放大,此外还可以消除电机的低频振荡、提高电机的输出转矩。

④XY向运动平台:分别传输X、Y两个方向的运动。

⑤光栅尺:光栅尺是一种位移传感器,是利用光栅的光学原理工作的测量反馈装置。

经常应用于数控机床的闭环伺服系统中,可用作直线位移或者角位移的检测。

⑥霍尔限位开关:用于限制工作台的运动超出导轨的有效长度。

基于C#语言的GTS控制卡入门手册(1)

基于C#语言的GTS控制卡入门手册(1)
图 5 4 轴运动控制器与 4 轴端子板连接示意图 2)端子板电源连接 端子板的 CN16 接用户提供的外部电源,板上标有“+24V”的端子接外部 电源+24V(DC+),标有“OGND”的端子接外部电源负(DC—),标有“SGND” 用于特殊情况下的信号地连接,如图 6 所示。
图 6 端子板电源连接图 3)端子板与驱动器连接 一般情况下,伺服驱动器的 C1 接口用屏蔽电缆连接到轴通道 CN1~CN8。
(a)包装盒标签
(b)板卡上的标签
(c)端子板标签 图 1 运动控制器的型号 请戴上配备的防静电手套从产品包装箱取出运动控制卡,然后插入到计算机 机箱中 PCI 插槽,在这之前请确认计算机关闭电源。插好之后,用螺丝将 GTS 卡 转接板固定在机箱上。
1.2 安装运动控制器驱动程序
1)GTS 卡安装好之后,启动计算机,点击“我的电脑”—“属性”—“设
图 4 驱动安装成功提示
1.3 硬件之间的连接
1)运动控制器与段子板的连接
关闭计算机电源,取出产品附带的屏蔽电缆(4 轴卡 1 条,8 轴卡 2 条)。以 4 轴卡为例,屏蔽电缆一端连接控制卡,一端连接端子板(注意:运动控制卡接 口、屏蔽电缆线和端子板都带有标识“CN17”,需要更换时要避免带电插拔), 如图 5 所示连接。
第 1 章 控制卡和端子板型号识别以及硬件连接 1.1 认识运动控制卡和硬件安装
运动控制器包含两个部件:运动控制卡和端子板。从包装盒侧面标签处可以 知道 GTS 卡和端子板的型号,还可以通过 GTS 卡和端子板上的标签得知型号。 如 图 1 所 示VB-LASER ; 端 子 板 型 号 为 GT2-400-ACC2-VB-G-A。
图 29
在 private void button5_click(object sender,EventArgs e) { } 中输入以下代码,如图 30

VISSIM简介ppt课件

VISSIM简介ppt课件
11
VISSIM主要功能
➢ 系统建模与动态仿真
加快仿真速度:使用VisSim/C-Code(单独提供),用户可生成
在任何支持ANSI C编译器平台上编译和运行的代码。相比对应的模块 图形,由此产生的可执行文件最快可运行到高于正常速率五倍的运行 速度,其尤为适用于高采样率系统。
查看仿真结果:为查看执行仿真后模型性能VisSim为用户提供了
由的进行软件之间的数据和图形交换。
7
VISSIM主要功能
对于动态控制系统, VisSim 的算法和解决方 案具有更快、更准确、适应性更强的优点。同时 针对飞速发展的通信行业及嵌入式系统的运用, Visual Solutions 在 VisSim 软件基础上开发了 点到点物理层验证工具和嵌入式控制系统开发工 具,完美的解决了通信系统和嵌入式控制系统开 发过程中的设计验证问题。这可使用户拥有更低 廉的成本和更短的产品上市时间。
执行模式:用户通常从VisSim的图形用户界面运行仿真,但如果
用户需要查看仿真结果,可在批处理方式中对其进行运行。用户还有
以下几种执行模式选择:▪ 标准模式:对模型进行说明性的仿真。▪
快速模式:模型中的组件被转换成为可执行的代码,并作为VisSim生
成的DLL纳入模型之中(需要VisSim/C-Code)。
编码器和射频组件:对于需要编码的设计,VISSIM /COMM支持常
规的编码技术(卷积,里德 - 所罗门,网格为基础的),以及更先 进的方法,如UMTS或LTE Turbo码。此外,设计要求的射频元器件的 建模,VISSIM /COMM提供了放大器,混频器,分路器,衰减器,耦合 器和交换机,包括噪声系数和非线性效应im/Comm C-Code:将通信模块翻译成为满足ANSI C代码。为了翻 译成为标准VisSim模块您亦需要VisSim/C-Code。

LabVIEW在运动控制系统实验平台的应用和实现_苏仔见

LabVIEW在运动控制系统实验平台的应用和实现_苏仔见

中图分类号: TP 273
文献标志码: A
文章编号: 1006 - 7167( 2011) 10 - 0038 - 02
Realization of Motion Control System Experimental Platform Based on LabVIEW
SU Zi-jian, NI Pan, XU Shao-lun ( School of Electronic Information and Electrical Engineering,Shanghai Jiaotong University,Shanghai 200240,China)
图 1 运动控制系统框图
1 传统运动控制系统平台
原有的运动控制系统平台的硬件组成包括触摸 屏、PLC、伺服驱 动 器、伺 服 电 机。 实 验 平 台 主 要 基 于 PLC,通过 CANopen 实现伺服电机的控制。HMI 实现 是基于施奈德的 XBT GT2330 来实现,通信方式同样 采用 Modbus 控制总线实现与 Twido PLC 的通信。系 统框图如图 2 所示。PLC 采用施奈德公司生产的一体 型 TWDLCAE40DRF。通信端口 为 EIA RS-485,最 大 波特率 为 19. 2kb / s,支 持 Modbus RTU 主 / 从 通 信 和 Modbus ASCII 通信[6]。伺服驱动器采用施奈德的交 流伺 服 驱 动 装 置 LXM05A,LXM05A 的 通 信 端 口 为 RJ45 接口,协议采用 Modbus 现场总线与上位机进行 通信[7]。由上级 PLC 控制系统来设定、监控给定值, 下级采用 Schneider Electric 伺服电机。
与探索,2008,27( 9) : 136-137. [12] 冯其红,赵修太,孙仁远. 加强示范中心内涵建设 全面提高实验

关于激光喷丸运动控制系统方面的专题综述报告

关于激光喷丸运动控制系统方面的专题综述报告

本科毕业论文文献综述毕业论文题目:激光喷丸系统运动控制软件编制及喷丸改性实验学生姓名:学号:系别:专业班级:机械设计制造及其自动化关于激光喷丸运动控制系统方面的专题综述报告机电一体化技术的发展状况是衡量一个国家机械工业发展水平的重要标志。

运动控制技术是机电一体化技术的核心部分。

因此,对运动控制技术作深入细致的研究,把握国内外运动控制技术的最新发展动态,开发运动控制类产品是摆在我们面前的一个重大课题。

在激光喷丸领域[1][2],激光喷丸工艺是利用高能脉冲激光在零件表面产生冲击波,冲击波作用于金属表面产生的机械“冷作”作用使表面金属材料达到压缩和塑性变形的效果;表面金属材料塑性变形的结果是在零件表面造成残余压应力,而残余压应力增强了零件材料对表面相关破坏(如疲劳、腐蚀疲劳和应力腐蚀裂纹)的抵抗能力。

激光喷丸工艺的最大优越性在于激光喷丸工艺可使飞机和航空发动机零部件在同一零件上的不同区域达到各自不同的抗疲劳性能。

当零件上的不同区域要求不同的抗疲劳性能时,激光喷丸工艺可以发挥其“点冷作”的优越性,通过调整工艺参数使零件不同的区域达到不同的残余应力强度和深度,从而实现不同的抗疲劳性能。

这是以往常规喷丸工艺所难以实现的,这一优越性赋予了飞机和航空发动机设计师更宽广的零件设计空间。

进行激光喷丸首先要具备激光喷丸机,由于航空零部件的结构特点和激光喷丸工艺的“点”工作特性,要求激光喷丸机具有较高的自动化程度。

利用目前成熟的三轴、四轴或五轴数控加工中心的控制系统将不难实现上述激光喷丸工艺的要求。

美国的激光喷丸设备处于相对成熟和工业应用推广阶段,但主要的应用领域还局限于航空发动机零部件,而激光喷丸设备存在的效率低是其最大的不足之处。

对国内而言现有的激光喷丸设备仅限于试验阶段,激光器的控制不成熟,这限制了激光喷丸工艺的应用和快速发展[3]。

在自动控制领域,开放式控制系统具有软件和硬件开放性,它能使人们自由的选择控制装置、伺服放大器、执行单元等,模块化开放式运动控制系统是当今运动精致技术的发展方向。

PLCopen多轴圆弧运动控制功能块的实现

PLCopen多轴圆弧运动控制功能块的实现

PLCopen多轴圆弧运动控制功能块的实现罗亮;王瀚博;刘知贵;范玉德【摘要】针对目前市场上运动控制器编程语言不兼容、编程方法繁琐等问题,深入研究了基于PLCopen规范的功能块模型设计及圆弧插补算法的工作原理.首先,在试验室现有的"多轴运动控制器+μC/OS-Ⅲ"平台上,选用目前工控界广泛推广的德国3S公司的Codesys软件作为开发平台,以多轴圆弧运动控制功能块作为编程对象,采用结构化文本语言和顺序功能图,设计运动控制功能块.其次,通过在嵌入式系统中移植Codesys SP内核,使硬件平台成为符合IEC编程标准的可编程逻辑控制器,实现底层功能块的接口设计.最后,将设计好的功能块下载到控制器中,在Matlab中进行速度与位移曲线的仿真.仿真结果表明,功能块可达到设计要求,能够完成多轴运动,并可被移植到其他硬件平台上,具有很好的兼容性与复用性.%At present, the programming languages for commercial available motion controllers are not compatible and the programming methods are cumbersome;aiming at these problems, the model design of function module based on specification of PLCopen and the operational principle of arc interpolation algorithm are researched in-depth. Firstly, on the existing "multi-axis motion con troller+ μC/OS-Ⅲ" platform in the laboratory, selecting the Codesys software of German 3S Gmbh, that is widely promoted currently in industrial control industry as the development platform, with the multi -axis arc motion control function block as the programming object, using structured text language and sequence function diagram, the motion control function block is designed. Then through transplanting the Codesys SP kernel provided into the embedded system, this makes thehardware platform use as programmable logic controller conforming to IEC programming standards, thus the design of interface for bottom layer function block is realized. Finally, the function block designed is downloaded into controller;then the simulation of speed curve and displacement curve are conducted in Matlab. The simulation results indicate that the function block can meet the design requirements, can complete multi-axis motion, and can be transplanted to other hardware platforms;it has the very good compatibility and reusability.【期刊名称】《自动化仪表》【年(卷),期】2017(038)002【总页数】5页(P10-14)【关键词】IEC61131-3;PLCopen;运动控制;编程语言;连续功能图【作者】罗亮;王瀚博;刘知贵;范玉德【作者单位】中国工程物理研究院电子工程研究院,四川绵阳 621900;西南科技大学信息工程学院,四川绵阳 621010;西南科技大学信息工程学院,四川绵阳 621010;西南科技大学研究生院,四川绵阳 621010;中国工程物理研究院化工材料研究所,四川绵阳 621900【正文语种】中文【中图分类】TH-39;TP311近年来,随着PLC编程语言标准化程度的逐步提高,自动化产品的解决方案互补兼容,但运动控制产品的市场依旧各行其事,产品之间的编程语言存在差异,用户在使用不同产品时还需重新学习[1-2]。

基于Visual C++.Net的Measurement Studio软件设计

基于Visual C++.Net的Measurement Studio软件设计
s f a e frma — c i e it r c fvr a q i me t o v n e t ,I x e me t e t e h to e u e e e p ott n c s o t r n ma h n e f e o i u e u p n n e i n .II e p r n si st e meh r d c st x l i i o t w o n a t l c ’e i t f i d h ao a d s v se p ott n t o a e o t e t d t n t o . n a e x l i i i c mp r d t a i o a meh d a o me h r i l
2 ai a a oaoyo V Sei ehooy N r w s r o t h i ie i , ’n7 0 6 , hn) .N tn l br r f o l t UA p c l c nl , o h etn P l e ne Un r t Xia 10 5 C ia aT g t e yc a l vs y Ab ta t Acodn ec mpei n ted v lp n fvr a e up n ot aea d p orm o e a go p o o tolbe sr c : c rig t t o lxt i h eeo me to it l q ime tsf r n rga c d , u fc nrl l oh y u w r a Mes rmetSu i src nrli a d dt. ttruh MF dAcie n Me u e n tdo I k st evr a q ime t aue n tdou e o t s d e o Ne o g C a t X i a rme tSu i.tma e h i u e up n o h n v s tl

基于RTW和视景仿真的经纬仪跟踪控制仿真测试系统

基于RTW和视景仿真的经纬仪跟踪控制仿真测试系统

基于RTW和视景仿真的经纬仪跟踪控制仿真测试系统熊帅;付承毓;刘子栋【摘要】Testing on theodolite tracking control system is very important for the theodolite development. The function structure of the simulation test system was established. Real-time Workshop (RTW) was used to realize the tracking control algorithm fast. The virtual target motion scenes, which accord with the theodolite imaging character and effect and satisfy various simulation test demands, were rendered real-time based on the visual simulation technology. The practical applications show that this simulation test system can be used to test theodolite tracking control system and solve the limitation of traditional indoor test methods. It is not only convenient and fast, but also targeted and repeatable. The test system is quite useful to analyze and design theodolite tracking control system.% 在经纬仪研制中,对跟踪控制系统的测试具有十分重要的意义。

基于MPC的无人船运动控制及可视化仿真系统实现

基于MPC的无人船运动控制及可视化仿真系统实现

基于MPC的无人船运动控制及可视化仿真系统实现吴青;王乐;柳晨光;初秀民【摘要】Motion control visualization is of great significance to the research on motion control of un‐manned surface vessel (USV) under the environmental disturbance and demand of the automatic colli‐sion avoidance .First ,motion mathematical model of USV under the wind and wave disturbance is es‐tablished ,a series of constraints are set based on the model ,and Model Predictive Control (MPC) al‐gorithm is used to control the motion trajectory of USV .Using Visual C+ + (VC) as the develop‐ment platform ,the visual simulation platform of USV motion is established .In addition ,multi-con‐straint MPC controller based on the hybrid programming of Matlab and VC is developed ,which can realize real-time display of the vessel motion trajectories and dynamic changes in parameters related to vessel motion on the software interface .The experimental results show that the system can rela‐tively well simulate the true navigation track of full‐actuated and under-actuated vessels ,change the motion parameters of vessel according to different vessel features ,and provide test simulation plat‐form for the research on motion control of USV .%运动控制可视化对研究在环境干扰和自动避碰需求下的无人船运动控制具有重要意义。

基于VisualOne“智能工厂搭建与仿真”课程教学设计探索与应用——以机电一体化专业教学为例*

基于VisualOne“智能工厂搭建与仿真”课程教学设计探索与应用——以机电一体化专业教学为例*

DOI :10.15913/ki.kjycx.2024.04.013基于VisualOne “智能工厂搭建与仿真”课程教学设计探索与应用——以机电一体化专业教学为例*周建桂,王文凯,汪 红,把翠芳(兰州石化职业技术大学,甘肃 兰州 730060)摘 要:基于VisualOne 软件进行智能工厂设计与仿真,不仅兼具灵活性、直观性、高效性,还动态可视化地展示了智能工厂的智能化生产情境,能让学生身临其境体验柔性制造智能工厂精益化、智能化,极大提升了机电类专业学生的创新能力、思维能力和实践能力,使学生扩大了知识面和开阔了视野,也可对传统智能产线教学模式起到有效的支撑与延伸作用。

关键词:VisualOne ;智能工厂;虚拟设计与仿真;教学设计中图分类号:TP391.92 文献标志码:A 文章编号:2095-6835(2024)04-0053-03——————————————————————————*[基金项目]2023年兰州石化职业技术大学校级项目(编号:2023KY-20);2022 年甘肃省大学生创新创业训练计划项目(编号:S202216209025)自进入21世纪以来,随着大数据、云计算、物联网、信息通信技术、人工智能等新一代高新技术与制造技术的不断发展与交叉深度融合,制造业迎来了新一轮模式变革。

作为制造业大国,中国非常重视制造业智能化转型升级,出台了智能制造行业发展的相关政策,把制造业的智能化发展作为中国制造业发展的主攻方向。

加快发展智能制造,是实现中国经济增长新动能的必由之路,是抢占未来经济和科技发展制高点的战略选择,对于推动制造业结构性改革、打造制造业竞争新优势、实现制造强国具有重要战略意义[1]。

职业教育是培养具有时代工匠精神的智能制造产业一线技术技能人才的摇篮,更要强化服务国家制造强国战略的意识,切实把提升智能制造领域技术技能人才能力培养放在更加突出的位置,优化专业结构,提高人才培养质量。

多轴运动的数字控制新技术

多轴运动的数字控制新技术

多轴运动的数字控制新技术作者:黄志军来源:《科技创新导报》2011年第08期摘要:针对模拟器对系统实时性和同步性要求苛刻等特点,本文以电动六自由度运动平台为例,采用数控技术用工业级计算机IPC和数字信号处理器DSP作为六自由度运动平台的控制器,设计了基于可编程多轴控制器PMAC(Programmable Multi-Axis Controller)来作为六自由度运动平台多轴运行控制系统的硬件平台,同时采用Visual C#.NET作为软件开发平台,满足了模拟器六自由度运动平台实时性控制的要求。

关键词:多轴运动数字控制六自由度运动平台中图分类号:TP2 文献标识码:A 文章编号1674-098X(2011)03(b)-0120-01随着我国经济和社会的飞速发展,多轴运动的数控技术也取得了飞快的发展。

所谓数控技术是指利用数字信息对机械运动及加工过程进行控制的技术,它是集传统的机械制造技术、计算机技术、现代控制技术、传感检测技术和光机电技术等于一体的现代制造业的基础技术,由于它具有精度高、速度快、效率高等优点,近些年来取得了突发猛进的发展,在国民经济发展中起着举足轻重的作用。

未来数控技术的发展趋势是朝着柔性化、智能化、工艺复合性和多轴化方向发展。

电动六自由度运动平台技术在近些年来发展迅速,由于六自由度电动六自由度运动平台控制系统是一种典型的多轴实时运动控制系统,对其控制系统的研究仍是目前的一个工作重点。

1 喷涂机器人控制系统设计本文采用数控技术用工业级计算机IPC和数字信号处理器DSP作为电动六自由度运动平台的控制器,设计了基于可编程多轴控制器PMAC(Programmable Multi-Axis Controller)来作为六自由度运动平台多轴运行控制系统的硬件平台,通过层次化系统体系结构提高了系统的效率,模块化的软件设计则使系统具有很强的可移植性、扩展性和开放性。

六自由度运动平台控制系统结构如图1所示。

MPC08运动控制卡软件开发说明

MPC08运动控制卡软件开发说明

MPC08䖤 ԰4Ẕࡼ᥻ࠊிඣՈᓔথ4.1ᓔথWindowsϟՈẔࡼ᥻ࠊிඣ⫼MPC08ⱘ 䫒 ˄DLL˅ˈ 㗙 ҹ Windows ϟⱘ䖤 ㋏㒳DŽMPC08 䫒 ⱘWindows32ԡ 䫒 ˈ䗝⫼ⱘ Windows ⱘ32ԡDLL䇗⫼DŽҹϟҟ㒡 ԩ ⫼ϸ⾡ ⫼ⱘ Microsoft Visual Basic Microsoft Visual C++ ѢWindows ⱘ䖤 ⿟ DŽ4.1.1ᓔথVisual Basic᥻ࠊ࣏ᑣ˄ϔ˅ ὖ䗄Ўњ ѢWindowsⱘ䖤 ⿟ ˈ⫼ ҹՓ⫼VB5.0 催⠜ ˈ ϔϾㅔ ⱘVisual B asic ⿟ 䴲 DŽ ✻ ϟℹ偸 ҹ 䗳 ϔϾㅔ ⱘ ⿟ DŽ1ˊ 㺙MPC08偅 ⿟ ˗2ˊ⫼V isual Basic ϔϾ⬠䴶⿟ ˗3ˊ MPC08.bas ӊ⏏ VB ProjectЁ ˗4ˊ ⫼⿟ Ё䇗⫼䖤 DŽVisual Basicⱘ 䛑ҟ㒡њ ԩ ҟ䴶⿟ ˈ 䪂ǃ 䆱Ḛҹ 㦰 ㄝDŽ Ѣ❳ Visual Basic MPC08䖤 ⱘ 㗙 䇈ˈϔϾ⬅䕧 Ḛ Ҹ 䪂㒘 ⱘ ѢWindowsⱘㅔ 䖤 ⿟ ˈ ҹ 䩳 ҹ DŽ˄Ѡ˅ 䫒 䇗⫼ ⊩VBЁ䇗⫼ 䫒 ˄DLL˅Ё ϸ䚼 ԰˖↣ϔϾ 䫒 ˄DLL˅Ёⱘ VBЁⱘ 㒣 MPC08.bas ӊЁњˈ䆹 ӊ MPC08 ⫼⿟ 㺙Ⳃ Ā\MPC08SP\Develop\VBā ӊ ϟ ˈ⫼ 䳔㽕 䆹 ӊ⏏ 䖯VB ⿟Ё DŽ䇗⫼㢹䇗⫼ ⱘ䖨 Ўぎ ϡ䳔㽕䖨 ˈ ϟ ⊩䇗⫼˖con_pmove1,2000Call con_pmove(1,2000)4䖤 ㋏㒳ⱘ㢹㽕 ⱘ䖨 ˈ ϟ ⊩䇗⫼˖Dim rtn As Longrtn=con_pmove(1,2000)⊼ᛣ˖Ӵ䗦ⱘ ㉏ 䖨 ⱘ 䞣㉏ Ϣ ⱘ ㉏ ϔ㟈ˈ Ϩ 䆂 䗄Ё int ˄C䇁㿔Ёⱘ ˅ long ˄C䇁㿔Ёⱘ䭓 ˅ 䖨 㒳ϔ䞛⫼Long ˄VBЁⱘ䭓 ˅ ㉏ ˗ ⱘfloat ˄C䇁㿔Ёⱘ ㊒ ⍂⚍ ˅ double˄C䇁㿔Ёⱘ ㊒ ⍂⚍ ˅ 䖨 㒳ϔ䞛⫼Double ˄VBЁⱘ ㊒ ⍂⚍ ˅ ㉏ ˈ 㛑ѻ⫳ ⊩乘 ⱘ㒧 DŽ˄ϝ˅ⓨ⼎⼎՟⿟ ⱘՓ⫼MPC08 ⫼⿟ 㺙Ⳃ Ā\MPC08SP\Demo\VBDemoā ӊ ϟ ϸϾ VB6.0ϟ ⱘ䖤 ㋏㒳ⓨ⼎⼎՟⿟ DŽ⫼ ✻ ϟℹ偸㓪䆥 䖤㸠䆹⼎՟ˈ ❳ њⳌ 㓪⿟ ⊩ ˈ⫼ ḍ 䳔㽕 㞾 ⱘ䖤 ㋏㒳DŽ ˄1˅ ✻MPC08䕃ӊⱘ 㺙ℹ偸䖯㸠ℷ⹂ 㺙DŽ˄2˅ ⹀ⲬϞ ゟϔϾ ӊ DŽ˄3˅ MPC08 ⫼⿟ 㺙Ⳃ Ā\MPC08SP\Demo\VBDemo\Demo1ā ӊ Ё˄ ϔϾ⼎՟⿟ ӊ ˅ ӊ 䋱 ⹀ⲬϞ ӊЁDŽ˄4˅ VB6.0䲚 ⦃ ˈ ⿟DŽ˄5˅ ⹂ 㒣ℷ⹂䆒㕂 䅵ㅫ ЁDŽ˄6˅ 㓪䆥䆹 ⿟⫳ EXE ӊDŽ˄7˅ 䖤㸠⫳ ⱘEXE ӊDŽ4.1.2ϬVisual C++ᓔথ᥻ࠊ࣏ᑣ˄ϔ˅ ⦃⫼ ҹՓ⫼VC5.0 催⠜ ˈ 䖯㸠Windows ϟ䖤 ㋏㒳 DŽ˄Ѡ˅ 䫒 䇗⫼ ⊩VCЁ䇗⫼ 䫒 DLLЁ ϸ⾡ ⊩˖䱤 䇗⫼䱤 䇗⫼䳔㽕 ϟ ӊ˖˄1˅ DLL ӊMPC.h˗˄2˅ 㓪䆥䖲 ⫼ⱘ ӊMPC08.lib˗MPC08䖤 ԰˄3˅ 䫒 ӊMPC08.dll˗˄4˅ 䆒 偅 ⿟ MPC08.sys˗ҹϞ ӊЁⱘ˄1˅˄2˅ϸ乍 MPC08 ⫼⿟ 㺙Ⳃ Ā\MPC08SP\ Develop\VCā ӊ ϟ DŽ˄3˅ 㒣⬅ 㺙⿟ 㺙 C:\WINDOWS\ SYSTEM32 ӊ ϟDŽ˄4˅ 㒣⬅ 㺙⿟ 㺙 C:\WINDOWS\SYSTEM32\ DRIVERS ӊ ϟ˄ Windows 㺙 C:\WINDOWS ӊ ϟ˅DŽ ゟ ⿟П ˈ VC䲚 ⦃ Ё⚍ Ā/project/settings…ā㦰 Āproject settingsā 䆱ḚDŽ䗝ĀLinkā䗝乍 ˈ Āobject/library modulesā 䕧 ӊ MPC08.libˈ ĀOKā 䪂DŽ 䇗⫼DLL ⱘ⑤ҷⷕ ӊ MPC.h ӊDŽП ҹ ✻䇗⫼ 䚼 ϔḋ䇗⫼DLL DŽ ԧ 㾕ⓨ⼎⼎՟˖\Demo\VCDemo\Demo1DŽ䇗⫼䇗⫼ 䳔㽕 ϟ ӊ˖˄1˅ 䫒 ӊMPC08.dll˗˄2˅ 䆒 偅 ⿟ MPC08.sysDŽҹϞ ӊЁ˄1˅ 㒣⬅ 㺙⿟ 㺙 C:\WINDOWS\SYSTEM32 ӊ ϟˈ˄2˅ 㒣⬅ 㺙⿟ 㺙 C:\WINDOWS\SYSTEM32\DRIVERS ӊ ϟ˄ Windows 㺙 C:\WINDOWS ӊ ϟ˅DŽ䇗⫼ ⊩䳔㽕䇗⫼Windows API 䕑 䞞 䫒 DŽ ⊩ ϟ˖˄1˅ 䇗⫼Windows API LoadLibrary() 䕑DLL˗˄2˅ 䇗⫼Windows API GetProcAddress() 㽕䇗⫼ⱘDLLЁ ⱘ 䩜˗˄3˅ ⫼ 䩜䇗⫼DLLЁ Ⳍ 㛑˗˄4˅ ⿟ 㒧 ϡ Փ⫼DLLЁ ˈ䇗⫼Windows API FreeLibrary()䞞 䫒 DŽ䆹 ⊩↨䕗⚺⧤DŽMPC08䕃ӊЁ 㒣 ⫼ⱘMPC08.dllЁDLL 㺙 ㉏CLoadDllˈ կ䆹㉏ⱘ⑤ҷⷕDŽ䆹㉏ Ϣ䖤 Ҹ Ⳍ ⱘ DŽ⑤ҷⷕ MPC08 ⫼⿟ 㺙Ⳃ Ā\MPC08SP\Develop\VCā ӊ ϟ ˈ ӊ ЎLoadDll.cpp LoadDll.hDŽ Ҏ ⏏ 䖯 ⿟ˈ ⿟ 䗖 ⏏ 䆹㉏ⱘ 䈵ˈ䗮䖛 䇗⫼DLLЁⱘ DŽ ԧ 㾕ⓨ⼎⼎՟˖\Demo\VCDemo\Demo2DŽҹϞ ϸ⾡ ⊩ ЎVCЁ䇗⫼ 䫒 ⱘ ⊩ˈ㢹㽕㦋 ԧⱘ䇗⫼ ⊩ ˈ䇋 㗗 䕃Visual Stutio ḷMSDN Ⳍ VC 㗗к㈡ЁⳌ 䚼 DŽ4䖤 ㋏㒳ⱘ˄ϝ˅ⓨ⼎⼎՟⿟ ⱘՓ⫼MPC08 ⫼⿟ 㺙Ⳃ Ā\MPC08SP\Demo\VCDemo\ā ӊ ϟ ϝϾ VC6.0ϟ ⱘ䖤 ㋏㒳ⓨ⼎⼎՟⿟ DŽĀ\Demo\VCDemo\Demo1āЎ䱤 䇗⫼⼎՟˗Ā\Demo\VCDemo\Demo2āЎ 䇗⫼⼎՟DŽ⫼ ✻ ϟℹ偸㓪䆥 䖤㸠⼎՟ˈ ❳ њⳌ 㓪⿟ ⊩ ˈ⫼ ḍ 䳔㽕 㞾 ⱘ䖤 ㋏㒳DŽ˄1˅ ✻MPC08䕃ӊⱘ 㺙ℹ偸䖯㸠ℷ⹂ 㺙DŽ˄2˅ ⹀ⲬϞ ゟϔϾ ӊ DŽ˄3˅ MPC08 ⫼⿟ 㺙Ⳃ Ā\MPC08SP\Demo\VCDemo\ā ӊ ϟDemo1 ӊ Ё ӊ Demo2 ӊ Ё ӊ 䋱 ⹀ⲬϞӊ ЁDŽ˄4˅ VC6.0䲚 ⦃ ˈ ⿟demo1.dsw demo2.dswDŽ˄5˅ ⹂ 㒣ℷ⹂䆒㕂 䅵ㅫ ЁDŽ˄6˅ 㓪䆥䖲 䆹 ⿟⫳ EXE ӊDŽ˄7˅ 䖤㸠⫳ ⱘEXE ӊDŽˈ \Demo\VCDemo\ ӊ ϟ䖬 կњϔϾMPC08 ⌟䆩⿟ \Demo\VCDemo\Demo3ˈ կњ 㸠 ӊˈ ⌟䆩MPC08 DŽMPC08䖤 ԰5ߑ᭄ᦣẴゴ䆺㒚 䗄њMPC08䖤 Ёⱘ↣ϔϾ DŽ Ёˈ ЁՓ⫼ⱘ ԡ 䖨 㑺 䗮 ϟ˖ऩԡԡ⿏˄ 䎱⾏˅ⱘ ԡЎP˄Pulse˅ˈ 㛝 ˗䗳 ⱘ ԡ PPS˄Pulse/sec˅ˈ 㛝 /⾦˗䗳 䗳 ⱘ ԡ PPSS˄Pulse/sec2˅ˈ 㛝 ˋ⾦2DŽߑ᭄ẘಲؐ䖤 Ёⱘ DŽϔ㠀 ϟˈ ϡ԰⡍⅞䇈 ˈ Ӏⱘ䖨 НЎ˖0 㸠ℷ⹂˗-1 㸠䫭䇃DŽ5.1᥻ࠊव੠Ḹ᪂าߑ᭄䆹㉏ Џ㽕⫼Ѣ䆒㕂MPC08 ⱘՓ⫼ 䞣ǃ 䕈 ҹ ↣䕈ⱘ䕧 ῵ ˈ䗳 ǃ 䗳 ㄝⱘ䆒㕂 䇏 ㄝㄝDŽⳌ ˖int auto_set(void)˗/*㞾 Ẕ⌟ 㞾 䆒㕂 */int init_board˄void˅˗/* ⹀ӊ 䕃ӊ */int get_max_axe˄void˅˗/*䇏 䕈 */int get_board_num˄void˅˗/*䇏 */int get_axe˄int board_no)˗/*䇏 Ϟ䕈 */int set_outmode˄int chˈint modeˈint outlogic˅˗/*䆒㕂 䕈䕧 ῵ */int set_home_mode˄int chˈint home_mode˅˗/*䆒㕂 ⚍῵ */int set_conspeed˄int chˈdouble conspeed˅˗/*䆒㕂 䕈 䗳䖤 䗳 */double get_conspeed˄int ch˅˗/*䇏 䕈 䗳䖤 䗳 */int set_profile˄int chˈdouble lsˈdouble hsˈdouble acc˅˗/*䆒㕂 䕈 䗳䖤 ẃ 䗳 */int get_profile˄int chˈdouble&lsˈdouble&hsˈdouble &acc˅˗/*䇏 䕈 䗳䖤 ẃ 䗳 */int set_vector_conspeed˄int con_speed˅˗/*䆒㕂 䗳䖤 ⶶ䞣䗳 */int set_vector_profile˄double vec_flˈdouble vec_fhˈdouble vec_ad˅˗/*䆒㕂 䗳䖤 ẃ ⶶ䞣䗳 */double get_vector_conspeed˄void˅˗/*䇏 䗳䖤 ⶶ䞣 䗳 */int get_vector_profile˄double *vec_flˈdouble *vec_fhˈdouble *vec_ad˅˗/*䇏 䗳䖤 ⶶ䞣ẃ 䗳 */double get_rate˄int ch˅˗/*䇏 䕈 䰙䖤 䗳 */ߑ᭄ৡ˖auto_setⳂⱘ˖⫼auto_set 㞾 Ẕ⌟MPC08 ⱘ 䞣ǃ Ϟⱘ䕈 ˈ 㞾 䆒㕂↣ MPC08 DŽ5 䗄䇁⊩˖int auto_set˄void˅˗䇗⫼՟ ˖auto_set˄˅˗/*㞾 Ẕ⌟ 㞾 䆒㕂䖤 */䗄˖ ҹ䇗⫼auto_set ⱘ 䞣ǃ䕈 ⱘ㞾 Ẕ⌟ˈ 㞾 䆒㕂䖭ѯ DŽ䆹 ⿟ Ё 㛑䇗⫼ϔ⃵DŽ䖨 ˖ 䇗⫼ ˈauto_set 䖨 䕈 ˗㢹Ẕ⌟ϡ ˈ䖨 0˗䇗⫼ 䋹䖨 䋳 DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP⊼䞞˖㾕˖ߑ᭄ৡ˖init_boardⳂⱘ˖⫼init_board DŽ䇁⊩˖int init_board˄void˅˗䇗⫼՟ ˖init_board˄˅˗䗄˖ ⫼auto_set㞾 Ẕ⌟ 䆒㕂П ˈ 乏䇗⫼init_board 䖯㸠 DŽinit_board Џ㽕 ⱘ Ͼ ǃ 䕈ⱘ㛝䕧 ῵ ˄㛝 / ˅ǃ 䗳 ˄2000pps˅ǃẃ 䗳 ˄ 䗳2000ppsˈ催䗳8000ppsˈ 䗳80000ppss˅ǃⶶ䞣 䗳 ˄2000pps˅ǃⶶ䞣ẃ 䗳˄ 䗳2000ppsˈ催䗳8000ppsˈ 䗳80000ppss˅ㄝㄝDŽ䆹⿟ Ё 㛑䇗⫼ϔ⃵DŽ䖨 ˖ 䇗⫼ ˈinit_board 䖨 ⱘ ˗㢹Ẕ⌟ϡ ˈ䖨 0˗䋳 㸼⼎ 䫭DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP⊼䞞˖ ϡ䇗⫼init_board ˈ ϡ㛑ℷ ԰DŽ㢹䳔 㛝 䕧 ῵ ǃ䗳 ㄝ ˈ 䇗⫼ DŽ㾕˖auto_setߑ᭄ৡ˖get_max_axeⳂⱘ˖get_max_axe⫼Ѣ䇏 ⱘ 䕈 DŽ䇁⊩˖int get_max_axe˄void˅˗䇗⫼՟ ˖max_axe_num=get_max_axe˄˅˗䖨 ˖get_max_axe䖨 䕈 DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖ߑ᭄ৡ˖get_board_numⳂⱘ˖get_board_num⫼Ѣ䇏 㺙ⱘMPC08 DŽ䇁⊩˖int get_board_num˄void˅˗䇗⫼՟ ˖card_num=get_board_num˄˅˗䖨 ˖get_board_num䖨 DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖ߑ᭄ৡ˖get_axeMPC08䖤 ԰Ⳃⱘ˖get_axe⫼Ѣ䇏 Ϟⱘ䕈 DŽ䇁⊩˖int get_axe˄int board_no˅˗board_no˖ 㓪 ˗䇗⫼՟ ˖axe_num=get_axe˄1˅˗䖨 ˖get_axe䖨 Ϟⱘ䕈 DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖ߑ᭄ৡ˖set_outmodeⳂⱘ˖⫼Ѣ䆒㕂↣Ͼ䕈ⱘ㛝 䕧 ῵ DŽ 偅 㽕∖ 㛝 ˄ℷ 㛝 ǃ 㛝 ˅ ˈ䙷М init_board 䇗⫼䆹 DŽ䇁⊩˖int set_outmode˄int chˈint modeˈint outlogic˅˗ch˖ 䆒㕂䕧 ⱘ 䕈˗mode˖㛝 䕧 ῵ 䆒㕂˄1Ў㛝 ˋ ˈ0Ў 㛝 ˅˗outlogic˖䆹 MPC08Ё DŽ䇗⫼՟ ˖set_outmode˄2ˈ0ˈ1˅˗/* ㄀2䕈ⱘ㛝 䕧 ῵ 䆒㕂Ў 㛝 ῵ DŽ*/䗄˖ 㔎ⳕ ϟˈinit_board 䕈䆒㕂Ў㛝 ˋ ῵ ˈ䕧 Ў䋳䘏䕥DŽ 偅 㽕∖ 㛝 ˄ℷ 㛝 㛝 ˅῵ ⱘ䕧ˈ䙷М init_board 䇗⫼set_outmode䞡 䆒㕂 㽕∖ⱘ῵ DŽ⊼ ˖ ⱘ䕧 ῵ Ϣ 䖲 ⱘ偅 ⱘ䕧 ῵ ϔ㟈ˈ⬉ ϡ㛑ℷ ԰DŽ䖨 ˖ 䕧 䆒㕂 ˈ set_outmode䖨 Ў0ˈ 䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖init_boardߑ᭄ৡ˖set_home_modeⳂⱘ˖⫼Ѣ䆒㕂 䕈 ⚍䖤 Ẕ⌟ ⚍ ⱘ DŽ䇁⊩˖int set_home_mode˄int chˈint home_mode˅ch˖ 䕈㓪 ˗home_mode˖ ⚍䖤 Ẕ⌟ ⚍ ⱘ ˄0˖ҙẔ⌟ ⚍ 䖥ˈ1˖Ẕ⌟ ⚍ 䖥 ⬉ Ϟ ⬉㓪ⷕ ZⳌ㛝⦄˅DŽ䇗⫼՟ ˖set_home_mode˄1ˈ1˅˗䗄˖ 㹿 䆒 ˄↨ ㄝ˅ ⚍䖤 ˈMPC08 㞾 Ẕ⌟ ⚍ ˈ 䖒 ⚍ԡ㕂 㞾 ℶ䖤 DŽ ⚍ ϔ㠀⬅ 䖥䗕DŽԚ ϔѯ ⚍ ԡ㊒ 㽕∖䕗催ⱘ ˈ ⚍ 䰸њ 䖥П ˈ䖬㽕Ẕ⌟ 㸠⬉ Ϟ ⬉㓪ⷕ ⱘZⳌ㛝 ˈ ҙ䖥 ZⳌ㛝 ⦄ ˈ 㸼 䖒 ⚍DŽset_home_mode ⫼Ѣ䆒㕂↣Ͼ䕈 ⚍䖤 Ẕ⌟ ⚍ ⱘDŽ home_mode=0 ˈҙ ⚍ 䖥 ԰Ў ⚍ ˗home_mode=1 ˈ ⚍ 䖥 ZⳌ㛝 ϸ㗙 ⦄԰Ў ⚍ DŽ⊼ ˖ 㸠⬉ Ϟ㺙 ⬉㓪ⷕ ˈ 㛑 ⚍䖥 ZⳌ㛝 ⦄䆒㕂Ў ⚍䖤 ⱘẔ⌟ ˈ5 䗄⊩ℷ⹂ ⚍䖤 DŽ䖨 ˖ 䆒㕂 ˈ䖨 0ˈ 䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖ߑ᭄ৡ˖set_maxspeedⳂⱘ˖⫼Ѣ䆒㕂↣Ͼ䕈ⱘ 䗳 DŽ䇁⊩˖int set_maxspeed˄int chˈdouble speed˅˗ch˖ 䆒㕂ⱘ 䕈˗speed˖䆒㕂ⱘ 䗳 ˈ ԡЎ㛝 ˋ⾦˄pps˅DŽ˗䇗⫼՟ ˖set_maxspeed˄2ˈ10000˅˗/* ㄀2䕈ⱘ 䗳 䆒㕂Ў10000ppsDŽ*/ 䗄˖ 㔎ⳕ ϟˈinit_board 䕈䆒㕂Ў 䆌 䗳 DŽՓϬᯊৃᣝ+ᅲ┉ṗߎợᑺẟᜐ᪂าҹቻᕫ↨ṇདՈợᑺஂᑺDŽMPC08 ⱘ䕧 㛝 乥⥛⬅ϸϾ 䞣 ˖㛝 䕼⥛ ⥛ˈϸ㗙ⱘЬ⿃ 䕧ⱘ㛝 乥⥛DŽ䇗⫼set_maxspeed䆒㕂䳔㽕䖒 ⱘ 䕧 㛝 乥⥛ˈ䆒㕂 㛝 䕼⥛ 㹿䞡 䆒㕂DŽ䖨 ˖ 䕧 䆒㕂 ˈ set_ maxspeed䖨 Ў0ˈ 䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖㄀6ゴĀ ԩ 催䗳 ㊒ āϔ㡖ߑ᭄ৡ˖set_conspeedˈget_conspeedⳂⱘ˖⫼set_conspeed 䆒㕂ϔϾ䕈 䗳䖤 ⱘ䗳 DŽ⫼get_conspeed 㦋 Ͼ䕈 䆒㕂ⱘ 䗳 DŽ䇁⊩˖int set_conspeed˄int chˈdouble conspeed˅˗double get_conspeed˄int ch˅˗ch˖ 䕈㓪 ˗conspeed˖䆒 ⱘ 䗳 ˈ ԡЎ㛝 ˋ⾦˄pps˅DŽ䇗⫼՟ ˖set_conspeed˄2ˈ400˅˗speed=get_conspeed˄2˅˗䗄˖ set_conspeed ҹ䆒 䗳䖤 ϟⱘ䗳 DŽ ⃵䇗⫼䖭Ͼ ˈ ϔ⃵䆒 ⱘ ˈ㗠Ϩ ϟϔ⃵ П ˈϔⳈDŽ䖨 ˖ 䗳 䆒㕂 ˈset_conspeed䖨 0 ˈ 䫭 䖨 -1DŽ get_conspeed䖨 䕈ⱘ 䗳 ˈ 䫭 䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP⊼䞞˖ 䗳 ϔ㠀䆒㕂䕗Ԣˈҹ 䗴 ⬉ ˄ ⦃ⱘℹ䖯⬉ ˅϶ℹ 䖛 DŽ 䳔㽕催䗳䖤 ˈ Փ⫼ẃ 䗳 DŽ㾕˖set_profileˈset_vector_conspeedߑ᭄ৡ˖set_profileˈget_profileⳂⱘ˖⫼set_profile 䆒 䗳䖤 ˄ fast_hmoveˈfast_vmoveˈfast_pmoveㄝ˅ ϟⱘẃ 䗳 ⱘ ˗⫼get_profile 䇏 ẃ䗳 ⱘ DŽ䇁⊩˖int set_profile˄int chˈdouble lsˈdouble hsˈdouble accel˅˗MPC08䖤 ԰ch˖ 䕈㓪 ˗ls˖䆒 Ԣ䗳˄䍋 䗳 ˅ⱘ䗳 ˗ ԡЎpps˄㛝 ˋ⾦˅˗hs˖䆒 催䗳˄Ⳃ 䗳 ˅ⱘ䗳 ˗ ԡЎpps˄㛝 ⾦˅˗accel˖䆒 䗳 ˗ ԡЎppss˄㛝 ˋ⾦ˋ⾦˅˗int get_profile˄int chˈint *lsˈint *hsˈlong*accel˅double *ls˖ 䍋 䗳 ⱘ 䩜˗double *hs˖ Ⳃ 䗳 ⱘ 䩜˗double *accel˖ 䗳 ⱘ 䩜DŽ䇗⫼՟ ˖set_profile˄3ˈ600ˈ6000ˈ10000˅˗get_profileˈ˄3ˈ&lsˈ&hsˈ&accel˅˗䗄˖ set_profile䆒 ϔϾ䕈 䗳䖤 ϟⱘԢ䗳˄䍋 䗳 ˅ǃ催䗳˄Ⳃ 䗳 ˅ǃ ˋ 䗳 ˄ 䗳 ㄝѢ 䗳 ˅DŽ䖭 Ͼ ⱘ㔎ⳕ Ў2000ǃ8000ǃ80000DŽ get_profile䗮䖛 䩜䖨 ϔϾ䕈䆒㕂ⱘẃ 䗳 ⱘԢ䗳ǃ催䗳 ˋ 䗳 DŽ䖨 ˖ 䆒 ˈset_profile䖨 0ˈ 䫭䖨 䋳 DŽ䇗⫼ ˈget_profile䖨 0 ˈ 䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖set_conspeedˈset_vector_conspeedˈset_vector_profileߑ᭄ৡ˖set_vector_conspeedˈget_vector_conspeedⳂⱘ˖⫼set_vector_conspeed 䆒㕂 䗳䖤 ϟⱘⶶ䞣䗳 ˈ䖭Ͼⶶ䞣䗳 ϸ䕈 ϝ䕈Ⳉ㒓 㸹䖤 Ё Ӯ⫼ ˗⫼get_vector_conspeed䇏 䗳䖤 ϟⱘⶶ䞣䗳 DŽ䇁⊩˖int set_vector_conspeed˄double vec_conspeed˅˗vec_conspeed˖ 䗳 㸹 䯈ⱘⶶ䞣䗳 ˗double get_vector_conspeed˄void˅˗䇗⫼՟ ˖set_vector_conspeed˄1000˅˗vec_conspeed= get_vector_conspeed˄˅˗䗄˖ set_vector_conspeedЎѠ䕈 ϝ䕈 䗳 㸹䖤 䆒㕂ⶶ䞣䗳 ˈ ˖con_line2ǃcon_line3ㄝDŽ ϡ㛑Ўfast_lin2ǃ fast_line3ㄝ催䗳 㸹䖤 䆒㕂䖤 䗳 ˄ Ӏⱘ䗳 ձ䌪Ѣset_vector_profile˅DŽget_vector_conspeed䖨 ⶶ䞣䗳 DŽ ϔ⃵䇗⫼set_vector_conspeedⱘ ⶶ䞣䗳 DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP⊼䞞˖ ⶶ䞣䗳 䆒㕂ЎⳌ 䕗 ϔѯˈҹ 䖤 䖛⿟Ё϶ℹDŽ Ѣ催䗳䖤 㸹ˈ ˖fast_line2ǃfast_line3ㄝ 䇈ˈ ⫼set_vector_profile䆒㕂䖤 䗳 DŽ㾕˖set_vector_profileˈset_conspeedˈset_profileߑ᭄ৡ˖set_vector_profileˈget_vector_profileⳂⱘ˖⫼set_vector_profile 䆒㕂 䗳䖤 ϟⱘⶶ䞣ẃ 䗳 ˗⫼get_vector_profile 㦋 䗳䖤 ϟⶶ䞣ẃ 䗳 ˗䇁⊩˖int set_vector_profile˄double vec_flˈdouble vec_fhˈdouble vec_ad˅˗vec_fl˖ⶶ䞣Ԣ䗳ⱘ䗳 ˗5 䗄vec_fh˖ⶶ䞣催䗳ⱘ䗳 ˗vec_ad˖ⶶ䞣催䗳ⱘ 䗳 ˗int get_vector_profile˄double *vec_flˈdouble *vec_fhˈdouble *vec_ad˅˗*vec_fl:˖ ⶶ䞣Ԣ䗳ⱘ 䩜˗*vec_fh˖ ⶶ䞣催䗳ⱘ 䩜˗*vec_ad˖ ⶶ䞣 䗳 ⱘ 䩜DŽ䇗⫼՟ ˖set_vector_profile˄1000ˈ16000ˈ10000˅˗get_vector_profile˄&vec_flˈ&vec_fhˈ&vec_ad˅˗䗄˖ set_vector_profileЎfast_line2ˈfast_line3ㄝ 䆒㕂ⶶ䞣ẃ 䗳 DŽ䖭Ͼ ϡЎcon_line2ˈcon_line3ㄝ 䆒㕂䖤 䗳 DŽ䖨 ˖ 䇗⫼ ˈset_vector_profile get_vector_profile 䖨 0ˈ 䫭ⱘ ϟˈ䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP⊼䞞˖㾕˖set_vector_conspeedˈfast_line2ˈfast_line3ߑ᭄ৡ˖get_rateⳂⱘ˖⫼get_rate 㦋 Ͼ䕈ⱘ 䰙䖤 䗳 DŽ䇁⊩˖double get_rate˄int ch˅˗ch˖ 䕈㓪 ˗䇗⫼՟ ˖speed=get_rate˄2˅˗䗄˖ get_rate䇏 䕈 ⱘ 䰙䖤㸠䗳 DŽ Փ⫼ ˈ 㛑䆹 䇏 ⱘ 䰙䖤 䗳 Ϣset_conspeedǃset_profileㄝ 䆒㕂ⱘ㛝 䗳䕗 ˈ䖭 ⬅Ѣ 䗳 䕼⥛ 䍋ⱘ DŽ ЎMPC08 ⱘ䕧㛝 乥⥛⬅ϸϾ 䞣 ˖㛝 䕼⥛ ⥛ˈϸ㗙ⱘЬ⿃Ў 䰙䕧ⱘ㛝 乥⥛DŽ set_maxspeed䆒㕂 䕧 㛝 乥⥛ Ў 㛝䕼⥛ˈՓϬᯊৃᣝ+ᅲ┉ṗߎợᑺ᪂า᳔໻ợᑺҹቻᕫ↨ṇདՈợᑺஂᑺDŽ䖨 ˖ get_rate䖨 䕈ⱘ 䖤㸠䗳 ˈ ԡ˖↣⾦㛝 ˄pps˅ˈ 䇗⫼ 䫭䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖㄀6ゴĀ ԩ 催䗳 ㊒ āϔ㡖5.2ẔࡼᣛҸߑ᭄䖤 ㉏ ㉏ˈЏ㽕 ϝ⾡㉏ ˖⚍ԡ䖤 ǃ䖲㓁䖤 ⚍䖤 ˗ 䖤 Ў⣀ゟ䖤 㸹䖤 ϸ⾡˗ 䖤 䗳 Ў 䗳䖤 ẃ 䗳 ϸ⾡DŽЎњ 䗄 ˈϟ䴶 䖤 Ҹ Ў⣀ゟ䖤 㸹䖤 ϸ䚼 䇈 DŽ5.2.1ưএẔࡼߑ᭄䇧⣀ゟ䖤 䕈ⱘ䖤 П䯈≵ 㘨 ㋏ˈ ҹ 䕈䖤 ˈг ҹ 䕈 㞾ⱘ䗳 䖤 DŽ⚍ԡ䖤 ǃ䖲㓁䖤 ⚍䖤 䛑 Ѣ⣀ゟ䖤 DŽ⣀ゟ䖤 Ҹⱘ Ḑ Ў˖X_YmoveZЁ˖X˖⬅con fast ҷˈcon㸼⼎ 䗳䖤 ˈfast㸼⼎ 䗳䖤 ˗Y˖⬅pǃv h ҷˈp㸼⼎⚍ԡ䖤 ˈv㸼⼎䖲㓁䖤 ˈh㸼⼎ ⚍䖤 ˗move˖Ў ҸЏԧˈ㸼⼎䆹 ҸЎ䖤 Ҹ˗Z˖≵ Ў 䕈䖤 ˈЎ2 㸼⼎ϸ䕈⣀ゟ䖤 ˈЎ3 㸼⼎ϝ䕈⣀ゟ䖤 DŽ՟ ˖con_vmoveЎ 䕈ⱘ 䗳䖲㓁䖤 ˗con_pmove2Ўϸ䕈ⱘ 䗳⚍ԡ䖤 ˗fast_hmove3Ўϝ䕈ⱘ 䗳 ⚍䖤 ҸDŽѢ 䗳䖤 Ҹˈ䖤 䗳 ⬅set_conspeed䆒 ˗ Ѣ 䗳䖤 Ҹˈ䖤 䗳 ⬅set_profile䆒 DŽϟ䴶ҹ⚍ԡ䖤 ǃ䖲㓁䖤 ⚍䖤 䇈 䖤 Ҹⱘ НDŽϔǃ⚍ԡẔࡼߑ᭄⚍ԡ䖤 㹿 䕈ҹ 㞾ⱘ䗳 ⿏ ⱘ䎱⾏ˈ 䖒Ⳃ ԡ㕂 㞾 ℶDŽ⊼ ˖ ϸ䕈 ϝ䕈ⱘ⚍ԡ䖤 Ёˈ 䕈 䖤 ˈԚϡϔ 䖒Ⳃ ԡ㕂DŽ MPC08 Ё կњ Ͼ⚍ԡ䖤 Ҹ ˖int con_pmove˄int chˈlong step˅˗/*ϔϾ䕈ҹ 䗳 ⚍ԡ䖤 */int fast_pmove˄int chˈlong step˅˗/*ϔϾ䕈ҹ 䗳 ⚍ԡ䖤 */int con_pmove2˄int ch1ˈlong step1ˈint ch2ˈlong step2˅˗/*ϸ䕈ҹ 䗳 ⚍ԡ䖤 */int fast_pmove2˄int ch1ˈlong step1ˈint ch2ˈlong step2˅˗/*ϸ䕈ҹ 䗳 ⚍ԡ䖤 */int con_pmove3˄int ch1ˈlong step1ˈint ch2ˈlong step2ˈint ch3ˈlong step3˅˗/*ϝϾ䕈ҹ 䗳 ⚍ԡ䖤 */int fast_pmove3˄int ch1ˈlong step1ˈint ch2ˈlong step2ˈint ch3ˈlong step3˅˗/*ϝϾ䕈ҹ 䗳԰⚍ԡ䖤 */Ё˖chǃch1ǃch2ǃch3˖㹿 䕈ⱘ䕈 ˗stepǃstep1ǃstep2ǃstep3˖㸼⼎㹿 䕈Ң ԡ㕂 ⿏ ⱘ䎱⾏ˈℷ㸼⼎ℷ ˗䋳 㸼⼎䋳 ˈ ԡЎ㛝 DŽ䇗⫼՟ ˖con_pmove˄1ˈ-2000˅˗/*㄀ϔ䕈ҹ 䗳 䋳 ⿏ 2000Ͼ㛝 ⱘ䎱⾏*/fast_pmove2˄2ˈ5000ˈ3ˈ-1000˅˗/*㄀Ѡ䕈ҹ 䗳 ℷ ⿏ 5000Ͼ㛝 ⱘ䎱⾏˗㄀ϝ䕈ҹ 䗳 䋳 ⿏ 1000Ͼ㛝 ⱘ䎱⾏DŽ*/䖨 ˖ 䇗⫼ ˈ䖭ѯ 䖨 0ˈ 䫭 ϟ䖨 -1DŽѠǃẢනẔࡼߑ᭄䖲㓁䖤 㹿 䕈ҹ 㞾ⱘ䗳 㒭 ⱘ ϔⳈ䖤 ˈⳈ ⺄ 䰤ԡ 䇗⫼ Ӯ ℶDŽ MPC08 Ё կњ Ͼ䖲㓁䖤 Ҹ ˖int con_vmove˄int chˈint dir˅˗/*ϔ䕈ҹ 䗳䖲㓁䖤 */int fast_vmove˄int chˈint dir˅˗/*ϔ䕈ҹ 䗳䖲㓁䖤 */int con_vmove2˄int ch1ˈint dir1ˈint ch2ˈint dir2˅˗/*ϸ䕈ҹ 䗳䖲㓁䖤 */int fast_vmove2˄int ch1ˈint dir1ˈint ch2ˈint dir2˅˗/*ϸ䕈ҹ 䗳䖲㓁䖤 */ int con_vmove3˄int ch1ˈint dir1ˈint ch2ˈint dir2ˈint ch3ˈint dir3˅˗/*ϝϾ䕈ҹ 䗳䖲㓁䖤 */int fast_vmove3˄int ch1ˈint dir1ˈint ch2ˈint dir2ˈint ch3ˈint dir3˅˗/*ϝϾ䕈ҹ 䗳䖲㓁䖤 */Ё˖chǃch1ǃch2ǃch3˖㹿 䕈ⱘ䕈 ˗dirǃdir1ǃdir2ǃdir3˖㸼⼎㹿 䕈ⱘ䖤 ˈ+1㸼⼎ℷ ˗-1㸼⼎䋳 DŽ䇗⫼՟ ˖con_vmove˄1ˈ-1˅˗/*㄀ϔ䕈ҹ 䗳 䋳 䖲㓁䖤 */fast_vmove2˄2ˈ1ˈ3ˈ-1˅˗/*㄀Ѡ䕈 䗳 ℷ 䖲㓁䖤 ˗㄀ϝ䕈䗳 䋳 䖲㓁䖤 DŽ*/䖨 ˖ 䇗⫼ ˈ䖭ѯ 䖨 0ˈ 䫭 ϟ䖨 -1DŽϝǃಲॳ⚍ߑ᭄⚍䖤 㹿 䕈ҹ 㞾ⱘ䗳 㒭 ⱘ ϔⳈ䖤 ˈⳈ ⺄ ⚍ ǃ䰤ԡ 䇗⫼ Ӯ ℶDŽ MPC08 Ё կњ Ͼ ⚍䖤 Ҹ ˖int con_hmove˄int chˈint dir˅˗/*ҹ 䗳䖨 ⚍*/int fast_hmove˄int chˈint dir˅˗/*ҹ 䗳䖨 ⚍*/int con_hmove2˄int ch1ˈint dir1ˈint ch2ˈint dir2˅˗/*ϸ䕈ҹ 䗳 㞾䖨 ⚍*/int fast_hmove2˄int ch1ˈint dir1ˈint ch2ˈint dir2˅˗/*ϸ䕈ҹ 䗳 㞾䖨 ⚍*/int con_hmove3˄int ch1ˈint dir1ˈint ch2ˈint dir2ˈint ch3ˈint dir3˅˗/*ϝϾ䕈ҹ 䗳 㞾䖨 ⚍*/int fast_hmove3˄int ch1ˈint dir1ˈint ch2ˈint dir2ˈint ch3ˈint dir3˅˗/*ϝϾ䕈ҹ 䗳 㞾䖨 ⚍*/Ё˖chǃch1ǃch2ǃch3˖㹿 䕈ⱘ䕈 ˗dirǃdir1ǃdir2ǃdir3˖㸼⼎㹿 䕈ⱘ䖤 ˈ+1㸼⼎ℷ ˗-1㸼⼎䋳 DŽ䇗⫼՟ ˖con_hmove˄1ˈ-1˅˗/*㄀ϔ䕈ҹ 䗳 䋳 ԰ ⚍䖤 */fast_hmove2˄2ˈ1ˈ3ˈ-1˅˗/*㄀Ѡ䕈 䗳 ℷ ԰ ⚍䖤 ˗㄀ϝ䕈 䗳 䋳 ԰ ⚍䖤 DŽ*/䖨 ˖ 䇗⫼ ˈ䖭ѯ 䖨 0ˈ 䫭 ϟ䖨 -1DŽ⊼䞞˖㽕 ⦄ ⚍䖤 ˈ䖤 䕈Ϟ 䆒 ⚍ ˄ 䖥 Ӵ ˅ˈԢ⬉ ϟ䰡⊓ DŽ5.2.2ᦦᜩẔࡼߑ᭄㸹䖤 ϸ䕈 ϝ䕈 ✻ϔ ⱘㅫ⊩䖯㸠㘨 ˈ㹿 䕈 ˈ 䖒Ⳃ ԡ㕂DŽ 㸹䖤 ҹⶶ䞣䗳 䖤㸠ˈⶶ䞣䗳 Ў ⶶ䞣䗳 ẃ ⶶ䞣䗳DŽϢ 㸹䖤 ⱘ ˖ϔǃඃᗻᦦᜩߑ᭄㒓 㸹䖤 ϸϾ䕈 ϝϾ䕈ҹⶶ䞣䗳 ˄ ⶶ䞣䗳 ẃ ⶶ䞣䗳 ˅԰㒓 㘨 ˈ↣Ͼ㹿 䕈ⱘ䖤 䗳 Ўⶶ䞣䗳 䆹䕈Ϟⱘ 䗳 ˈ Ͼ㹿 䕈 ˈ 䖒Ⳃ ԡ㕂DŽMPC08 Ё կ Ͼ㒓 㸹 ˖int con_line2˄int ch1ˈlong pos1ˈint ch2ˈlong pos2˅˗/*ϸ䕈 䗳Ⳉ㒓䖤 */int fast_line2˄int ch1ˈlong pos1ˈint ch2ˈlong pos3˅˗/*ϸ䕈 䗳Ⳉ㒓䖤 */int con_line3˄int ch1ˈlong pos1ˈint ch2ˈlong pos2ˈint ch3ˈlong pos3˅˗/*ϝϾ䕈Ⳉ㒓䖤 */int fast_line3˄int ch1ˈlong pos1ˈint ch2ˈlong pos2ˈint ch3ˈlong pos3˅˗/*ϝϾ䕈 䗳Ⳉ㒓䖤 */Ё˖ch1ǃch2ǃch3˖㹿 䕈ⱘ䕈 ˗pos1ǃpos2ǃpos3˖㸼⼎㹿 䕈Ң ԡ㕂 ⿏ ⱘ䎱⾏ˈℷ 㸼⼎ℷ˗䋳 㸼⼎䋳 ˈ ԡЎ㛝 DŽ䇗⫼՟ ˖con_line2˄1ˈ-2000ˈ3ˈ1000˅˗/*㄀ϔ䕈 ㄀ϝ䕈ҹ ⶶ䞣䗳 ԰㒓 㸹䖤 ˈ㄀ϔ䕈 䋳⿏ 2000Ͼ㛝 ⱘ䎱⾏ˈ ㄀ϝ䕈 ℷ ⿏ 1000Ͼ㛝ⱘ䎱⾏*/fast_line3˄2ˈ5000ˈ3ˈ-1000ˈ5ˈ3000˅˗/*㄀Ѡ䕈ǃ㄀ϝ䕈 ㄀Ѩ䕈ҹẃ ⶶ䞣䗳 ԰㒓 㸹䖤 ˈ㄀Ѡ䕈 ℷ ⿏ 5000Ͼ㛝 ⱘ䎱⾏˗㄀ϝ䕈 䋳 ⿏ 1000Ͼ㛝 ⱘ䎱⾏˗㄀Ѩ䕈 ℷ ⿏ 3000Ͼ㛝 ⱘ䎱⾏DŽ*/䖨 ˖ 䇗⫼ ˈ䖭ѯ 䖨 0ˈ 䫭 ϟ䖨 -1DŽ5.3ࠊࡼߑ᭄䖤 䖛⿟Ёˈ 䳔㽕 Ёℶ Ͼ䕈 Ͼ䕈ⱘ䖤 ˈ ҹ䇗⫼ DŽ MPC08䖤 Ё կњ6Ͼ ˖void sudden_stop˄int ch˅˗*/ゟ ϔϾ䖤 䕈*/void sudden_stop2˄int ch1ˈint ch2˅˗*/ゟ ϸϾ䖤 䕈*/void sudden_stop3˄int ch1ˈint ch2ˈint ch3˅˗*/ゟ ϝϾ䖤 䕈*/void decel_stop˄int ch˅˗/* ⒥ ϔϾ䖤 䕈*/void decel_stop2˄int ch1ˈint ch2˅˗/* ⒥ ϸϾ䖤 䕈*/void decel_stop3˄int ch1ˈint ch2ˈint ch3˅˗/* ⒥ ϝϾ䖤 䕈*/Ё˖chǃch1ǃch2ǃch3˖㹿 䕈ⱘ䕈 ˗䇗⫼՟ ˖decel_stop˄2˅˗/* ⒥ ㄀Ѡ䕈*/sudden _stop2˄1ˈ4˅˗/*ゟ ㄀ϔǃ 䕈*/decel_stop3˄1ˈ2ˈ3˅˗/* ⒥ ㄀ϔǃѠǃϝ䕈*/䖨 ˖䇗⫼ 䖨 0ˈ 䖨 -1 㛑 ⱘ䕈 DŽ䇈 ˖ ㉏ ⱘ䖤 䛑 DŽdecel_stop㉏ ⱘ ϔ㠀⫼Ѣẃ 䗳 䖤 ˄fast_YmoveZ˅ˈ ҹՓ㹿 䕈ⱘ䗳 Ң催䗳䰡㟇Ԣ䗳˄⬅set_proflile䆒 ˅ˈ✊ ℶ䖤 DŽϔ㠀 䖤 䖛⿟䳔㽕 䇗⫼decel㉏ ˈҹ 㛑 ⒥ Ёℶ 䗳䖤 ˄ ˖fast_hmoveǃfast_vmoveǃfast_pmove2ㄝ˅ˈҹ ⫳䖛 ⦄䈵DŽsudden_stop㉏ Փ㹿 䕈ゟ Ёℶ䖤 ˈ䖭Ͼ 㸠 ˈ ゟ ℶ ⬉ 偅 䗕㛝 ˈՓП ℶ䖤 DŽ䆹 䗮 ㋻ 䔺 䇗⫼DŽ Ѣ 䗳䖤 ˄con_YmoveZ˅ˈ䖭ϸ㉏ ϔḋDŽ5.4ԡา੠źᗕ᪂าߑ᭄int set_abs_pos (int chˈlong pos) ˗/*䆒㕂ϔϾ䕈ⱘ㒱 ԡ㕂 */int reset_pos˄int ch˅˗/* ԡ㕂 ԡ㟇䳊*/int reset_cmd_counter()˗/*⫼Ѣ 䖤 Ҹ䅵 ⏙䳊*/int set_getpos_mode(int ch,int mode);/*䆒㕂get_encoder( ) 䖨 ⱘ ⑤*/ int set_encoder_mode(long ch,long mode,long multip,long count_unit);/*䆒㕂ϔϾ䕈ⱘ㓪ⷕ 作 ῵ */int set_io_pos((int ch,int open_pos,int close_pos); /*䆒㕂 䕈ⱘ↨䕗ԡ㕂*/int set_dir(int chˈint dir)˗/*䆒㕂ϔϾ䕈ⱘ䖤 */int enable_io_pos(int cardno,int flag);/*䆒㕂 ⱘԡ㕂↨䕗䕧 */int enable_sd(int chˈint flag)˗/*䆒㕂ϔϾ䕈ⱘ 䚼 䗳 */int enable_el(int chˈint flag)˗/*䆒㕂ϔϾ䕈ⱘ 䚼䰤ԡ */int enable_org(int chˈint flag)˗/*䆒㕂ϔϾ䕈ⱘ 䚼 ⚍ */int set_sd_logic˄int chˈint flag˅/*⫼Ѣ䆒㕂䕈ⱘ 䚼 䗳 ⬉ */int set_el_logic˄int chˈint flag˅/*⫼Ѣ䆒㕂䕈ⱘ 䚼䰤ԡ ⬉ */int set_org_logic˄int chˈint flag˅/*⫼Ѣ䆒㕂䕈ⱘ 䚼 ⚍ ⬉ */int set_alm_logic˄int chˈint flag˅/*⫼Ѣ䆒㕂䕈ⱘ 䚼 䄺 ⬉ */ߑ᭄ৡ˖set_abs_posⳂⱘ˖⫼Ѣ䆒㕂䕈ⱘ䖤 䍋 㒱 ԡ㕂DŽ䇁⊩˖int set_abs_pos˄int chˈlong pos˅˗ch˖ 䕈㓪 ˗pos˖ 㽕䆒㕂ⱘ䆹䕈ⱘ䍋 㒱 ԡ㕂˗䇗⫼՟ ˖set_abs_pos˄1ˈ1000˅˗/* ㄀1䕈ⱘ ԡ㕂䆒㕂Ў1000*/䗄˖䇗⫼䆹 㒱 ԡ㕂䆒㕂Ў ϔϾ ˈԚҢϞϔϾԡ㕂 䆹ԡ㕂П䯈ϡӮѻ⫳䕈ⱘ 䰙䖤 DŽ䇗⫼䆹 ㄀ѠϾ 䆒Ў0⦄reset_pos() ⱘ 㛑DŽ䖨 ˖ 䇗⫼ ˈ 䖨 Ў0˗ 㢹䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖ߑ᭄ৡ˖reset_pos䇁⊩˖int reset_pos˄int ch˅˗ch˖㹿 ԡ䕈ⱘ䕈 ˗䇗⫼՟ ˖int reset_pos˄1˅˗䗄˖ reset_pos 䕈ⱘ㒱 ԡ㕂 Ⳍ ԡ㕂 ԡ㟇0ˈ䗮 䕈ⱘ ⚍ 䇗⫼ˈ䇗⫼䖭Ͼ ˈ ԡ㕂 Ў0ˈ䖭ҹ ˈ ⱘ㒱ԡ㕂 Ⳍ Ѣ䖭ϔ⚍ⱘDŽ䇗⫼䆹 乏⹂ 䆹䕈䖤 㒣ℶˈ 䍋㒱 ԡ㕂 ⱘ⏋хDŽ䖨 ˖ 䇗⫼ ˈreset_pos䖨 0ˈ 䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP⊼䞞˖ϔ㠀 䇈ˈ䖭Ͼ 㸠con_hmove fast_hmove 䇗⫼DŽ 㾕˖get_abs_posˈget_rel_posߑ᭄ৡ˖reset_cmd_counterⳂⱘ˖⫼Ѣ 䖤 Ҹ䅵 ⏙䳊DŽ䇁⊩˖int reset_cmd_counter˄˅˗䇗⫼՟ ˖reset_cmd_counter˄˅˗䗄˖䖤 Ҹ䅵 Ң ⱘ0 ˈ䱣ⴔ 㸠ⱘ䖤 Ҹ˄ 㛑ѻ⫳䖤 ⱘ Ҹˈϡ set_conspeedㄝ䆒㕂 Ҹ˅䗦 ˈ ҹ䇗⫼reset_cmd_counter() 䖯㸠⏙䳊DŽ䖨 ˖ 䇗⫼ ˈ 䖨 Ў0ˈ 䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖set_cmd_counterߑ᭄ৡ˖set_getpos_modeⳂⱘ˖⫼Ѣ䆒㕂䇗⫼get_encoder() 㦋 ⱘԡ㕂 ⱘ ⑤DŽ䇁⊩˖int set_getpos_mode(int ch,int mode)˗ch˖ 䕈㓪 ˗mode˖䇗⫼get_encoder() 㦋 ⱘԡ㕂 ⱘ ⑤˄1Ў㓪ⷕ 作ˈ0Ў䕧 㛝 ˅˗䇗⫼՟ ˖set_ getpos _mode˄1ˈ1˅˗/* ㄀1䕈䆒 Ў㓪ⷕ 作 */䗄˖㔎ⳕ ϟ䇗⫼get_encoder() 㦋 ⱘԡ㕂 Ў 䰙䕧 㛝 ˈ㢹㽕䅽䇗⫼get_encoder 㦋 ⱘԡ㕂 Ў㓪ⷕ 作 ˈ 䇗⫼init_board() П 䇗⫼䆹 set_encoder_mode() 䖯㸠䆒㕂ˈ䇗⫼get_encoder 㦋 ⱘԡ㕂 ϡ 䇏 ⱘ㓪ⷕ ԡ㕂DŽ䇗⫼䆹㄀ѠϾ 䆒㕂Ў1 ˈ㓪ⷕ 作 ῵ 㹿䆒㕂ЎA/BⳌ90 Ⳍԡ ˈ1 乥ˈ㢹㽕䆹Ў Ҫ῵ ˈ 䇗⫼set_encoder_mode() 䖯㸠䆒㕂DŽ䖨 ˖ 䆒㕂 ˈ set_ getpos _mode䖨 Ў0ˈ 䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖get_encoderˈset_encoder_modeߑ᭄ৡ˖set_encoder_modeⳂⱘ˖⫼Ѣ䆒㕂↣Ͼ䕈ⱘ㓪ⷕ 作 ῵ DŽ䇁⊩˖int set_encoder_mode˄int chˈint modeˈint multipˈint count_unit˅˗ch˖ 䆒㕂ⱘ 䕈˗mode˖ MPC08Ё ⫼ˈ㋏㒳 㒜咬䅸ЎA/BⳌ90 Ⳍԡ DŽmultip˖A/BⳌ90 Ⳍԡ ⱘ 乥˖1ǃ4DŽcount_unit˖ MPC08Ё ⫼DŽ䇗⫼՟ ˖set_encoder_mode˄1ˈ0ˈ1ˈ0˅˗/* ㄀1䕈ⱘ㓪ⷕ 作 䆒㕂ЎA/BⳌ90 Ⳍԡ 1 乥 DŽ*/䗄˖ 㔎ⳕ ϟˈinit_board 䕈䆒㕂ЎA/BⳌ90 Ⳍԡ 1 乥 DŽ㢹㽕 䆒㕂ˈ init_board 䇗⫼set_encoder_mode䞡 䆒㕂 㽕∖ⱘ῵ DŽ䖨 ˖ 䆒㕂 ˈ set_encoder_mode䖨 Ў0ˈ 䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖get_encoderߑ᭄ৡ˖set_io_posⳂⱘ˖䆒㕂 䕈ⱘԡ㕂↨䕗⚍DŽ䇁⊩˖int set_io_pos(int ch, long open_pos, long close_pos)˗ch˖ 䕈㓪 ˗open_ pos˖䍋 ↨䕗ԡ㕂˗close_ pos˖㒜ℶ↨䕗ԡ㕂˗䇗⫼՟ ˖set_io_pos(1,1000ˈ20000); // ϔ䕈ⱘ䍋 ↨䕗ԡ㕂Ў1000ˈ㒜ℶ↨䕗ԡ㕂Ў20000˗䗄˖⫼set_io_pos䆒㕂 䕈 ⱘ䍋 ↨䕗ԡ㕂 㒜ℶ↨䕗ԡ㕂DŽ 䖤 ˈԡ㕂䖯 ↨䕗䍋 ⚍ ˈ㞾 㾺 䕧 IO ˄Ԣ⬉ ˅˗ ԡ㕂䍄 ↨䕗㒜ℶ⚍ ˈ㞾 㾺 䕧 催⬉ DŽ䳔㽕⊼ ⱘ ˈℸԡ㕂Ў㒱 ԡ㕂 ˈ get_abs_pos get_encoder ⱘ䖨 DŽ䖨 ˖ℷ⹂䖨 0ˈ䫭䇃䖨 -1DŽ⊼ ˖㄀ϔ䕈ⱘԡ㕂↨䕗䕧 䗮⫼䕧 13 ˗㄀Ѡ䕈ⱘԡ㕂↨䕗䕧 䗮⫼䕧 14 ˗㄀ϝ䕈ⱘԡ㕂↨䕗䕧 䗮⫼䕧 15 ˗㄀䕈ⱘԡ㕂↨䕗䕧 䗮⫼䕧 16 DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖ߑ᭄ৡ˖set_dirⳂⱘ˖⫼Ѣ䆒㕂䕈ⱘ䖤 DŽ䇁⊩˖int set_dir˄int chˈint dir˅˗ch˖ 䕈㓪 ˗dir˖㸼⼎㹿 䕈ⱘ䖤 ˈ+1㸼⼎ℷ ˗-1㸼⼎䋳 DŽ˗䇗⫼՟ ˖set_dir˄1ˈ-1˅˗/* ㄀1䕈ⱘ䖤 䆒㕂 Ў䋳 */䗄˖䇗⫼䆹 ⱘ䖤 Ҹ 䆒 䕈ⱘ䖤 DŽ䖨 ˖ 䇗⫼ ˈ 䖨 Ў0˗ 㢹䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖ߑ᭄ৡ˖enable_io_posⳂⱘ˖⫼Ѣ䆒㕂 ⱘԡ㕂↨䕗䕧 DŽ䇁⊩˖int enable_io_pos˄int cardno,int flag˅˗cardno˖ 㽕䆒㕂ⱘ ˗flag˖ԡ㕂↨䕗䕧 ⱘ ˈ1㸼⼎ԡ㕂↨䕗䕧 ˗0㸼⼎ԡ㕂↨䕗䕧 DŽ䇗⫼՟ ˖enable_io_pos˄1ˈ0˅˗/* ㄀1 ⱘԡ㕂↨䕗䕧 䆒㕂Ў */䗄˖䇗⫼䆹 䆒㕂 ⱘԡ㕂↨䕗䕧 DŽ ⱘԡ㕂↨䕗䕧 䆒㕂Ў ˈ ⱘԡ㕂↨䕗䕧 ッ ԰Ў䗮⫼䕧 Փ⫼DŽ䆒㕂ԡ㕂↨䕗 㛑 DŽ䖨 ˖ 䇗⫼ ˈ 䖨 Ў0˗ 㢹䖨 -1DŽ⊼ ˖㄀ϔ䕈ⱘԡ㕂↨䕗䕧 䗮⫼䕧 13 ˗㄀Ѡ䕈ⱘԡ㕂↨䕗䕧 䗮⫼䕧 14 ˗㄀ϝ䕈ⱘԡ㕂↨䕗䕧 䗮⫼䕧 15 ˗㄀䕈ⱘԡ㕂↨䕗䕧 䗮⫼䕧 16 DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖set_io_pos()ߑ᭄ৡ˖enable_sdⳂⱘ˖⫼Ѣ䆒㕂䕈ⱘ 䚼 䗳 DŽ䇁⊩˖int enable_sd˄int chˈint flag˅˗ch˖ 䕈㓪 ˗flag˖ 䚼 䗳 ⱘ ˈ1㸼⼎Փ㛑 䚼 䗳 ˗0㸼⼎⽕ℶ 䚼 䗳 DŽ䇗⫼՟ ˖enable_sd˄1ˈ0˅˗/* ㄀1䕈ⱘ 䚼 䗳 䆒㕂Ў */䗄˖䇗⫼䆹 䆒㕂 䕈ⱘ 䚼 䗳 DŽ 䕈ⱘ 䚼 䗳 䆒㕂Ў ˈ ⱘ 䗳 䕧 ッ ˄SD˅ ԰Ў䗮⫼䕧Փ⫼ˈՓ⫼ check_SFR 䇏 Ⳍ ッ ⢊ DŽ䖨 ˖ 䇗⫼ ˈ 䖨 Ў0˗ 㢹䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖check_SFRߑ᭄ৡ˖enable_elⳂⱘ˖⫼Ѣ䆒㕂䕈ⱘ 䚼䰤ԡ DŽ䇁⊩˖int enable_el˄int chˈint flag˅˗ch˖ 䕈㓪 ˗flag˖ 䚼䰤ԡ ⱘ ˈ1㸼⼎Փ㛑 䚼䰤ԡ ˗0㸼⼎⽕ℶ 䚼䰤ԡ DŽ䇗⫼՟ ˖enable_el˄1ˈ0˅˗/* ㄀1䕈ⱘ 䚼䰤ԡ 䆒㕂Ў */䗄˖䇗⫼䆹 䆒㕂 䕈ⱘ 䚼䰤ԡ DŽ 䕈ⱘ 䚼䰤ԡ 䆒㕂Ў ˈ ⱘ䰤ԡ 䕧 ッ ˄EL+ǃEL-˅ ԰Ў䗮⫼䕧 Փ⫼ˈՓ⫼ check_SFR 䇏 Ⳍ ッ ⢊ DŽ䖨 ˖ 䇗⫼ ˈ 䖨 Ў0˗ 㢹䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖check_SFRߑ᭄ৡ˖enable_orgⳂⱘ˖⫼Ѣ䆒㕂䕈ⱘ 䚼 ⚍ DŽ䇁⊩˖int enable_org˄int chˈint flag˅˗ch˖ 䕈㓪 ˗flag˖ 䚼 ⚍ ⱘ ˈ1㸼⼎Փ㛑 䚼 ⚍ ˗0㸼⼎⽕ℶ 䚼 ⚍ DŽ䇗⫼՟ ˖enable_org˄1ˈ0˅˗/* ㄀1䕈ⱘ 䚼 ⚍ 䆒㕂Ў */䗄˖䇗⫼䆹 䆒㕂 䕈ⱘ 䚼 ⚍ DŽ 䕈ⱘ 䚼 ⚍ 䆒㕂Ў ˈ ⱘ ⚍ 䕧 ッ ˄ORG˅ ԰Ў䗮⫼䕧Փ⫼ˈՓ⫼ check_SFR 䇏 Ⳍ ッ ⢊ DŽ䖨 ˖ 䇗⫼ ˈ 䖨 Ў0˗ 㢹䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖check_SFRߑ᭄ৡ˖set_sd_logicⳂⱘ˖⫼Ѣ䆒㕂䕈ⱘ 䚼 䗳 ⬉ DŽ䇁⊩˖int set_sd_logic˄int chˈint flag˅˗ch˖ 䕈㓪 ˗flag˖ 䚼 䗳 ⬉ ˈ1㸼⼎ 䚼 䗳 催⬉ 㾺䗳˗0㸼⼎ 䚼 䗳 Ԣ⬉ 㾺 䗳DŽ䇗⫼՟ ˖set_sd_logic˄1ˈ1˅˗/* ㄀1䕈ⱘ 䚼 䗳 䆒㕂Ў催⬉ */ 䗄˖䇗⫼䆹 䆒㕂 䕈 䗳㾺 ⱘ ⬉ DŽ 䕈ⱘ 䚼 䗳 䆒㕂Ў催⬉ ˈ ⱘ 䗳 䕧 ッ Ў催⬉ 䕈㞾䗳DŽ ㋏㒳咬䅸Ԣ⬉ DŽ䖨 ˖ 䇗⫼ ˈ 䖨 Ў0˗ 㢹䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖ߑ᭄ৡ˖set_el_logicⳂⱘ˖⫼Ѣ䆒㕂䕈ⱘ 䚼䰤ԡ ⬉ DŽ䇁⊩˖int set_el_logic˄int chˈint flag˅˗ch˖ 䕈㓪 ˗flag˖ 䚼䰤ԡ ⬉ ˈ1㸼⼎ 䚼䰤ԡ 催⬉ 㾺˗0㸼⼎ 䚼䰤ԡ Ԣ⬉ 㾺 DŽ䇗⫼՟ ˖set_el_logic˄1ˈ1˅˗/* ㄀1䕈ⱘ 䚼䰤ԡ 䆒㕂Ў催⬉ */䗄˖䇗⫼䆹 䆒㕂 䕈ⱘ 䚼䰤ԡ ⬉ DŽ 䕈ⱘ 䚼䰤ԡ 䆒㕂Ў催⬉ ˈ ⱘ䰤ԡ 䕧 ッ Ў催⬉ ˈ䕈 䆹 ⱘ䖤 㞾 ℶDŽ ㋏㒳咬䅸Ԣ⬉ DŽ䖨 ˖ 䇗⫼ ˈ 䖨 Ў0˗ 㢹䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖ߑ᭄ৡ˖set_org_logicⳂⱘ˖⫼Ѣ䆒㕂䕈ⱘ 䚼 ⚍ ⬉ DŽ䇁⊩˖int set_org_logic˄int chˈint flag˅˗ch˖ 䕈㓪 ˗flag˖ 䚼 ⚍ ⬉ ˈ1㸼⼎ 䚼 ⚍ 催⬉ 㾺˗0㸼⼎ 䚼 ⚍ Ԣ⬉ 㾺 DŽ䇗⫼՟ ˖set_org_logic˄1ˈ1˅˗/* ㄀1䕈ⱘ 䚼 ⚍ 䆒㕂Ў催⬉ */ 䗄˖䇗⫼䆹 䆒㕂 䕈ⱘ 䚼 ⚍ ⬉ DŽ 䕈ⱘ 䚼 ⚍ 䆒㕂Ў催⬉ ˈ ⱘ ⚍ 䕧 ッ Ў催⬉ 㸼⼎䕈 ⚍DŽ ㋏㒳咬䅸Ԣ⬉ DŽ䖨 ˖ 䇗⫼ ˈ 䖨 Ў0˗ 㢹䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖ߑ᭄ৡ˖set_alm_logicⳂⱘ˖⫼Ѣ䆒㕂䕈ⱘ 䚼 䄺 ⬉ DŽ䇁⊩˖int set_alm_logic˄int chˈint flag˅˗ch˖ 䕈㓪 ˗flag˖ 䚼 䄺 ⬉ ˈ1㸼⼎ 䚼 䄺 催⬉ 㾺˗0㸼⼎ 䚼 䄺 Ԣ⬉ 㾺 DŽ䇗⫼՟ ˖set_alm_logic˄1ˈ1˅˗/* ㄀1䕈ⱘ 䚼 䄺 䆒㕂Ў催⬉ */ 䗄˖MPC08䖤 䕈 ⫼ϔϾ 䄺 ˈ ℸ䆒㕂ӏϔ䕈ⱘ 䚼 䄺 㾺 ⬉ ˈ 䕈гⳌ 㹿䆒㕂Ⳍ 㾺 ῵ DŽ䇗⫼䆹䆒㕂 䚼 䄺 ⬉ DŽ 䚼 䄺 䆒㕂Ў催⬉ˈ ⱘ 䄺 䕧 ッ Ў催⬉ 䕈㞾 ℶ䖤 DŽ㋏㒳咬䅸Ԣ⬉ DŽ䖨 ˖ 䇗⫼ ˈ 䖨 Ў0˗ 㢹䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖5.5ԡา੠źᗕᶹ᪦ߑ᭄䖤 䖛⿟Ёˈ 䳔㽕 䆶 Ͼ䕈ⱘ䖤 ԡ㕂 ⢊ ˈ ҹ䇗⫼ԡ㕂 ⢊ 䆶 DŽ5.5.1ԡาᶹ᪦ߑ᭄int get_abs_pos˄int chˈlong*pos˅˗/*䖨 ϔϾ䕈ⱘ㒱 ԡ㕂 */int get_rel_pos˄int chˈlong*pos˅˗/*䖨 ϔϾ䕈ⱘⳌ ԡ㕂 */int get_encoder˄int chˈlong*pos˅˗/*䖨 ϔϾ䕈ⱘ 䰙ԡ㕂 */int get_cur_dir (int ch)˗/*䖨 ϔϾ䕈ⱘ 䖤 */ߑ᭄ৡ˖get_abs_posˈget_rel_posˈget_encoderⳂⱘ˖⫼get_abs_pos䇏 ϔϾⳌ Ѣ ԡ㕂 ⚍ԡ㕂ⱘ㒱 ԡ㕂DŽ⫼get_rel_pos䇏 ϔϾⳌ Ѣ 䖤 䍋 ⚍ⱘⳌ ԡ㕂 DŽ⫼get_encoder䇏 ϔϾⳌ Ѣ ԡ㕂 ⚍ԡ㕂ⱘ㓪ⷕ 作ⱘ 䰙ԡ㕂 DŽ䇁⊩˖int get_abs_pos˄int chˈlong*abs_pos˅˗int get_rel_pos˄int chˈlong*rel_pos˅˗int get_encoder˄int chˈlong*en_pos˅˗ch˖䇏 ԡ㕂ⱘ䕈 ˗abs_pos˖ϔϾ 㒱 ԡ㕂ⱘ䭓 䩜˗rel_pos˖ϔϾ Ⳍ ԡ㕂ⱘ䭓 䩜˗en_pos˖ϔϾ 䰙ԡ㕂ⱘ䭓 䩜˗䇗⫼՟ ˖temp=get_abs_pos˄1ˈ&abs_pos˅˗temp=get_rel_pos˄1ˈ&rel_pos˅˗䗄˖ get_abs_pos㦋 䕈ⱘ 㒱 ԡ㕂ˈ 㸠䖛 ⚍䖤 ˈ䙷М䖭Ͼ㒱 ԡ㕂 Ⳍ Ѣ ⚍ԡ㕂ⱘ˗ ≵ 㸠䖛 ⚍䖤 ˈ䙷М䖭Ͼ㒱 ԡ㕂 Ⳍ Ѣ ⱘԡ㕂DŽ get_rel_pos㦋 Ѣ䖤 䍋 ⚍ⱘⳌ ԡ㕂 ˈ 䕈 ≵ 䖤 ˈ䙷М䆹䕈ⱘⳌ ԡ㕂Ў0DŽ⬅Ѣ䖭ϸϾ 䇏 ⱘԡ㕂 ⬅ 䕧 㛝 ⱘ 䞣ⱘˈ ҹ ϶ℹ 䖛 ㄝ ϟˈϡ㛑 䰙ⱘԡ㕂 DŽget_encoder䇏 ⬉Ⲭ 作ⱘ 䰙ԡ㕂DŽ䖨 ˖ 䇗⫼ ˈget_abs_posǃget_rel_pos get_encoder䖨 0 ˈ 䫭 ϟ䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XPߑ᭄ৡ˖get_cur_dirⳂⱘ˖⫼Ѣ㦋 䕈ⱘ 䖤 DŽ䇁⊩˖int get_cur_dir˄int ch˅˗ch˖ 㽕 䆶ⱘ䕈˗MPC08䖤 ԰䇗⫼՟ ˖get_cur_dir˄1˅˗/*㦋 ㄀1䕈ⱘ 䖤 */䖨 ˖ 䇗⫼ 䋹ˈ 䖨 Ў-2˗ 㢹䖨 -1㸼⼎ 䖤 䋳 ˈ䖨 1 㸼⼎ 䖤 ℷ ˈ0㸼⼎䖤 ℶDŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖5.5.2źᗕᶹ᪦ߑ᭄int check_status˄int ch˅˗/*Ẕ ϔϾ䕈ⱘ⢊ */int check_done˄int ch˅˗/*Ẕ⌟ϔϾ䕈ⱘ䖤 */int check_limit˄int ch˅˗/*Ẕ⌟ϔϾ䕈 ⱘ䰤ԡ 䯁 */int check_home(int ch)˗/*Ẕ ϔϾ䕈 㒣 䖒 ⚍ ԡ㕂*/int check_SD(int ch)˗/*Ẕ ϔϾ䕈ⱘ 䚼 䗳 */int check_alarm(int ch)˗/*Ẕ ϔϾ䕈ⱘ 䚼 䄺 */int get_cmd_counter()˗/*⫼Ѣ㦋 ℷ 㸠ⱘ䖤 Ҹ䅵 */ߑ᭄ৡ˖check_statusⳂⱘ˖⫼check_status 䇏 䖨 ϔϾ䕈ⱘ⢊ DŽ䇁⊩˖int check_status˄int ch˅˗ch˖ 䇏 ⢊ ⱘ䕈 DŽ䇗⫼՟ ˖ch_status=check_status˄2˅˗䗄˖ check_status䇏 䕈ⱘ⢊ DŽMPC08 ↣Ͼ䕈䛑 1Ͼ32ԡ˄ ˅ⱘ⢊ ˈ⫼Ѣ 䆶䕈ⱘ ԰⢊ DŽ䆹 Ё↣ԡ˄bit˅ⱘН ϟ ⼎DŽ䖨 ˖ 䇗⫼ ˈcheck_status䖨 䕈ⱘ⢊ ˈ 䫭 䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖D31̚D27D260˖OFF˗1˖ON ⚍ ORGⱘ⢊D250˖OFF˗1˖ONℷ䰤ԡ EL+ⱘ⢊D240˖OFF˗1˖ON䋳䰤ԡ EL-ⱘ⢊D23̚D16D150˖OFF˗1˖ON 䄺 ALMⱘ⢊D14D131˖ALM ˗0˖䴲ALM 䖤 ℶD12D11D101˖ORG ˗0˖䴲ORG 䖤 ℶ5 䗄D91˖EL_P ˗0˖䴲EL_P 䖤 ℶD81˖EL_N ˗0˖䴲EL_N 䖤 ℶD70˖䖤 ℶ˗1˖ℷ 䖤 䕈䖤 ⢊D6D5D4D3D2D10˖ON˗1˖OFF 䗳 SDⱘ⢊D0ߑ᭄ৡ˖check_doneⳂⱘ˖⫼check_done Ẕ 䕈ⱘ䖤 㒣 ↩DŽ䇁⊩˖int check_done˄int ch˅˗ch˖ Ẕ ⱘ䕈 DŽ䗄˖ check_doneẔ 䕈 䖤 Ё䖬 䴭ℶ⢊ DŽ䖨 ˖ 䕈ℷ 䖤 ⢊ ˈcheck_done䖨 1ˈ 䕈ℷ 䴭ℶ⢊ ˈcheck_done䖨 0ˈ 䇗⫼ 䋹䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖ߑ᭄ৡ˖check_limitⳂⱘ˖⫼check_limit Ẕ ϔϾ䕈 㒣 䖒䰤ԡ ԡ㕂DŽ䇁⊩˖int check_limit˄int ch˅˗ch˖ Ẕ ⱘ䕈 ˗䇗⫼՟ ˖status=check_limit˄1˅˗䗄˖MPC08䖤 ↣䕈䜡㕂 ϸϾ䰤ԡ 䕧 ˈ Ўℷ䰤ԡ 䕧 䋳䰤ԡ 䕧 DŽ check_limit⫼ѢẔ⌟ 䕈ⱘ䰤ԡ⢊ ˈ䖨 䕈 䖒䰤ԡ ԡ㕂 䖒 ϔϾ Ϟⱘ䰤ԡ ԡ㕂DŽ䖨 ˖ check_limit䖨 1㸼⼎ 䖒ℷ 䰤ԡ ԡ㕂ˈ䖨 -1㸼⼎ 䖒䋳 䰤ԡ ԡ㕂ˈ䖨 0 㸼⼎ 䖒䰤ԡ ԡ㕂ˈ䖨 2㸼⼎䖒ℷ 䰤ԡ 䋳 䰤ԡˈ㢹䇗⫼ 䫭 䖨 -3DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XPߑ᭄ৡ˖check_homeⳂⱘ˖⫼check_home Ẕ ϔϾ䕈 㒣 䖒 ⚍ ԡ㕂DŽ䇁⊩˖int check_home˄int ch˅˗ch˖ Ẕ ⱘ䕈 ˗䇗⫼՟ ˖status=check_home˄1˅˗䗄˖MPC08䖤 ↣䕈䜡㕂 ϔϾ ⚍ 䕧 DŽ check_home ⫼ѢẔ⌟ 䕈ⱘ ⚍ ⢊ ˈ䖨 䕈 䖒 ⚍ ԡ㕂DŽ䖨 ˖ check_home䖨 1㸼⼎ 䖒 ⚍ ԡ㕂ˈ䖨 0 㸼⼎ 䖒䰤ԡ ԡ㕂ˈ㢹䇗⫼ 䫭 䖨 -3DŽMPC08䖤 ԰㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XPߑ᭄ৡ˖check_SDⳂⱘ˖⫼check_SD Ẕ 䕈ⱘ 䚼 䗳 DŽ䇁⊩˖int check_SD˄int ch˅˗ch˖ Ẕ ⱘ䕈 DŽ䗄˖MPC08䖤 ↣䕈䜡㕂 ϔϾ 䗳 䕧 DŽ check_SD⫼ѢẔ⌟ 䕈ⱘ 䗳 ⢊ ˈ䖨 䕈 䖒 䗳 ԡ㕂DŽ䖨 ˖ 䕈ⱘ 䚼 䗳 ˈcheck_SD䖨 1ˈ㢹≵ 䚼 䗳 ˈ check_SD䖨 0ˈ㢹䇗⫼ 䫭 䖨 -3DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖ߑ᭄ৡ˖check_alarmⳂⱘ˖⫼check_alarm Ẕ 䚼 䄺 DŽ䇁⊩˖int check_alarm˄int ch˅˗ch˖ Ẕ ⱘ䕈 DŽ䗄˖MPC08䖤 䕈 ⫼ϔϾ 䄺 䕧 DŽ check_alarm ⫼ѢẔ⌟ ⱘ 䄺 ⢊ ˈ䖨 ⱘ 䄺 䕧 DŽ䖨 ˖ 䚼 䄺 ˈcheck_alarm䖨 1ˈ㢹≵ 䚼 䄺 ˈ check_alarm䖨 0ˈ 䇗⫼ 䋹䖨 -3DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖ߑ᭄ৡ˖get_cmd_counterⳂⱘ˖⫼Ѣ㦋 ℷ 㸠ⱘ䖤 Ҹ䅵 DŽ䇁⊩˖int get_cmd_counter˄˅˗䇗⫼՟ ˖cmdcounter=get_cmd_counter˄˅˗/*䇏 ℷ 㸠ⱘ䖤 Ҹ䅵 䞣cmdcounterЁ*/䗄˖㢹㽕ⶹ䘧 ℷ 㸠㄀ 䖤 Ҹˈ 䗮䖛䆹 䆶DŽ䖤 Ҹ䅵 Ң ⱘ0 ˈ䱣ⴔ 㸠ⱘ䖤 Ҹ˄ 㛑ѻ⫳䖤 ⱘҸˈϡ set_conspeedㄝ䆒㕂 Ҹ˅䗦 ˈ ҹ䇗⫼reset_cmd_counter() 䖯㸠⏙䳊DŽ䖨 ˖ 䇗⫼ ˈ 䖨 Ў ℷ 㸠ⱘ䖤 Ҹ䅵 ˈ 䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖reset_cmd_counter5.6I/Oষ᪡԰ߑ᭄int checkin_byte(int cardno)˗/*䇏 䗮⫼䕧 ⢊ */int checkin_bit(int cardno,int bitno)˗/*䇏 ԡ䗮⫼䕧 ⢊ */int outport_byte(int cardno,int bytedata)˗/* 䗮⫼䕧 */5 䗄int outport_bit(int cardno,int bitno,int status)˗/* ԡ䗮⫼䕧 */int check_SFR(int cardno)˗/*䇏 䚼 䗳ǃ䰤ԡ ⚍ ⢊ */ߑ᭄ৡ˖checkin_byteⳂⱘ˖䇏 䗮⫼䕧 䞣⢊ DŽ䇁⊩˖int checkin_byte(int cardno)˗cardno˖ 㓪 ˗䗄˖MPC08 կ16Ͼ䗮⫼ⱘ ⬉䱨⾏䕧 ˈկ⫼ Փ⫼ˈ䆹16Ͼ䕧 䛑ԡѢEA1616 DŽ䗮䖛䆹 ҹ䇏 䖭16Ͼ䕧 ⱘ⢊ DŽ㒓㾕MPC08 ϔ㡖 DŽ䖨 ˖䖨 䕧 ⱘ⢊ ˈ䖨 ⱘ1̚16ԡ˄Ѡ䖯 ˅ 16Ͼ䕧 ˈ䆹ԡЎ1㸼⼎䕧 催⬉ 䕧 ˈЎ0㸼⼎䆹䕧 Ԣ⬉ 䕧 ˗䫭 䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖checkin_bitߑ᭄ৡ˖checkin_bitⳂⱘ˖䇏 䗮⫼䕧 ϔԡ 䞣⢊ DŽ䇁⊩˖int checkin_bit(int cardno,int bitno)˗cardno˖ 㓪 ˗bitno˖㸼⼎㄀ ԡˈ 㣗 Ў1~16DŽ䗄˖MPC08 կ16Ͼ䗮⫼ⱘ ⬉䱨⾏䕧 ˈկ⫼ Փ⫼ˈ䆹16Ͼ䕧 䛑ԡѢEA1616 DŽ䗮䖛䆹 ҹ䇏 ϔϾ䕧 ⱘ⢊ DŽ㒓㾕MPC08 ϔ㡖 DŽ䖨 ˖䖨 Ͼ䕧 ⱘ⢊ ˈ䖨 Ў1㸼⼎䕧 催⬉ 䕧 ˈЎ0㸼⼎䆹䕧 Ԣ⬉ 䕧 ˗ 䫭 䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖checkin_byteߑ᭄ৡ˖outport_byteⳂⱘ˖䆒㕂 䗮⫼䕧 䞣⢊ DŽ䇁⊩˖int outport_byte(int cardno,int bytedata)˗cardno˖ 㓪 ˗bytedata˖⢊ 㡖ˈ ԡ 䕧 ˗䗄˖MPC08 կ16Ͼ䗮⫼ⱘ ⬉䱨⾏䕧 ˈկ⫼ Փ⫼ˈ䆹16Ͼ䕧 䛑ԡѢEA1616 DŽ䗮䖛䆹 ҹ䆒㕂䖭16Ͼ䕧 ⱘ⢊ DŽ㒓㾕MPC08 ϔ㡖 DŽ bytedataⱘ ԡ˄Ѡ䖯 ˅Ϣ 䕧ϔϔ ˈ bytedataⱘ Ԣԡ 䗮⫼䕧 1ǃ㄀Ѡԡ 䗮⫼䕧2ㄝˈձ⃵㉏ DŽ䖨 ˖ℷ⹂䆒㕂䖨 0˗ 䫭 䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖outport_bitߑ᭄ৡ˖outport_bitMPC08䖤 ԰Ⳃⱘ˖䆒㕂 䗮⫼䕧 ԡⱘ 䞣⢊ DŽ䇁⊩˖int outport_bit(int cardno,int bitno,int status)˗cardno˖ 㓪 ˈ 㣗 Ң1 㓪 ˗bitno˖㸼⼎㄀ Ͼ䕧 ˈ 㣗 Ў1~16DŽStatus˖䆒㕂ⱘ⢊ ˗˄1˖ON˗0˖OFF˅䗄˖MPC08 կ16Ͼ䗮⫼ⱘ ⬉䱨⾏䕧 ˈկ⫼ Փ⫼ˈ䆹16Ͼ䕧 䛑ԡѢEA1616 DŽ䗮䖛䆹 ҹ䆒㕂 ϔϾ䕧 ⱘ⢊ DŽ㒓㾕MPC08 ϔ㡖 DŽ䖨 ˖ℷ⹂䆒㕂䖨 0˗ 䫭 䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖outport_byteߑ᭄ৡ˖check_SFRⳂⱘ˖⫼Ѣ䇏 䚼 䗳ǃ䰤ԡ ⚍ ⢊ DŽ䇁⊩˖int check_SFR(int cardno)˗cardno˖ 㓪 ˗䇗⫼՟ ˖check_SFR˄1˅˗/*䇏 1 ⱘ 䚼 䗳ǃ䰤ԡ ⚍ */䗄˖䇗⫼䆹 䇏 ⱘ 䚼 䗳ǃ䰤ԡǃ ⚍ DŽ 䕈ⱘ 䚼 䗳ǃ䰤ԡǃ ⚍ 䆒㕂Ў ˈ ⱘ ⚍ 䕧 ッ ԰Ў䗮⫼䕧 Փ⫼ˈ䖭ѯッ ⱘ⢊ ϔϾ32ԡ Ёˈ↣ϔԡⱘН ϟ㸼 ⼎ˈՓ⫼ check_SFR 䇏 Ⳍ ッ ⢊ DŽ䖨 ˖䖨 䚼 䞣 ⱘ⢊ ˈ ⱘD0~D16ԡ 17Ͼ䕧 ˈⳌ ԡЎ1㸼⼎䕧 Ѣ催⬉ ⢊ ˈЎ0㸼⼎䆹䕧 ѢԢ⬉ ⢊˗ 䫭 䖨 -1DŽ 䇗⫼ ˈ 䖨 Ў0˗ 㢹䖨-1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP㾕˖enable_sdˈenable_elˈenable_orgD16ALM ALM ԰Ў䗮⫼䕧D15ORG4ORG4 ԰Ў䗮⫼䕧D14EL4+EL4+ ԰Ў䗮⫼䕧D13EL4-EL4- ԰Ў䗮⫼䕧D12SD4SD4 ԰Ў䗮⫼䕧D11ORG3ORG3 ԰Ў䗮⫼䕧D10EL3+EL3+ ԰Ў䗮⫼䕧D9EL3-EL3- ԰Ў䗮⫼䕧D8SD3SD3 ԰Ў䗮⫼䕧D7ORG2ORG2 ԰Ў䗮⫼䕧D6EL2+EL2+ ԰Ў䗮⫼䕧D5EL2-EL2- ԰Ў䗮⫼䕧D4SD2SD2 ԰Ў䗮⫼䕧5 䗄D3ORG1ORG1 ԰Ў䗮⫼䕧D2EL1+EL1+ ԰Ў䗮⫼䕧D1EL1-EL1- ԰Ў䗮⫼䕧D0SD1SD1 ԰Ў䗮⫼䕧5.7݊ᅗߑ᭄int set_backlash˄int chˈint backlash˅/*䆒㕂⬅Ѣ 䯈䱭ⱘ㸹 */ int start_backlash˄int ch˅˗/* 䯈䱭㸹 */int end_backlash˄int ch˅˗/*㒜ℶ䯈䱭㸹 ˄end backlash compensation˅*/int change_speed(int ch,double speed); /*䖤 Ё 䗳*/int Outport˄int portid,unsigned char byte˅˗/* Ͼ 䕧 ϔϾ 㡖*/int Inport˄int portid˅˗/*Ң Ͼ 䕧 ϔϾ 㡖*/int set_ramp_flag(int flag)˗/*⫼Ѣ 䖤 Ҹ䖲㓁 㸠 䖯㸠⡍⅞ 䰡䗳 ⧚ⱘ䆒㕂*/int get_lib_ver(long* major,long *minor1,long *minor2)˗/*⫼Ѣ 䆶 ⱘ⠜ */int get_sys_ver(long* major,long *minor1,long *minor2)˗/*⫼Ѣ 䆶偅 ⿟ ⱘ⠜ */int get_card_ver(long cardno,long *type,long* major,long *minor1,long *minor2)˗/*⫼Ѣ 䆶 ⱘ⠜ */ߑ᭄ৡ˖set_backlashˈstart_backlashˈend_backlashⳂⱘ˖⫼set_backlash䆒㕂㸹 ⬅Ѣ 䯈䱭ⱘ㸹 DŽ⫼start_backlash 㸹 ⬅Ѣ 䯈䱭㗠 㟈ⱘԡ㕂䇃 DŽ⫼end_backlash ℶ㸹 ⬅Ѣ 䯈䱭㗠 㟈ⱘԡ㕂䇃 DŽ䇁⊩˖int set_backlash˄int chˈint backlash˅˗int start_backlash˄int ch˅˗int end_backlash˄int ch˅ch˖ 䕈㓪 ˗backlash˖⬅Ѣ ⱘ䯈䱭 ˈ ԡЎ㛝 ˗䇗⫼՟ ˖set_backlash˄1ˈ12˅˗start_backlash˄1˅˗end_backlash˄1˅䗄˖ set_backlash䆒㕂ϔϾ㸹 ˈҹ ⍜䰸⬅Ѣ ⱘԡ㕂䇃 DŽ䇗⫼ start_backlash ˈ 䕈䖯㸠 䯈䱭㸹 DŽ㒜ℶ䕈ⱘ 䯈䱭㸹 䇗⫼end_backlashDŽ䖨 ˖ 䆒㕂 ˈset_backlashǃset_backlash end_backlash䖨 0ˈ 䖨 -1DŽ㋏㒳˖WINDOWS98ǃWINDOWS 2000ǃWINDOWS XP⊼䞞˖set_backlash ҙ 䆒㕂㸹 ˈⳳℷⱘ㸹 䇗⫼ start_backlash 䍋԰⫼DŽ set_backlash 䇗⫼start_backlash 䇗⫼ˈ ㋏㒳䞛⫼㔎ⳕ㸹 ˄㔎ⳕ Ў20Ͼ㛝 ˅DŽ。

基于运动控制卡的多轴联动控制系统设计

基于运动控制卡的多轴联动控制系统设计

基于运动控制卡的多轴联动控制系统设计摘要:现阶段,随着现代化建设的发展,工程领域的发展也越来越迅速。

基于PC机和运动控制卡的主从式控制结构,开发了一种面向多任务请求的多轴联动控制系统。

详细介绍了系统硬件架构。

借助VS集成开发环境,开发Windows环境下的多轴联动控制系统,并实现了多轴联动的任意轨迹插补运动,验证了该系统的可靠性和稳定性。

关键词:运动控制卡;多轴联动控制;系统设计引言伺服电机常见的控制方式多为单片机控制、DSP控制、ARM控制以及PLC控制等。

这些控制方式的实现较为复杂,需从底层开发做起,配线复杂,开发周期长。

而通讯运动控制的方式可以避免传统脉冲控制方式带来的系统兼容性和稳定性问题。

设计的多自由度煤样抓取系统作为机电一体化设备,其控制核心在于多轴联动插补运动。

本文设计了基于运动控制卡的开放式多轴联动控制系统,其核心技术在于开放式模块体系结构平台与多轴运动伺服控制系统。

控制系统的整体架构以PC机为支撑单元,以运动控制卡为控制单元,以伺服电机为执行单元。

采用DMCNET通讯控制的方式,实现多轴高速联动,以满足多工位、多任务、多目标的机械手动态调度需求。

基于MicrosoftVisualStudio开发平台,层次化构建各系统功能模块,开发了软件系统。

1硬件控制系统设计硬件控制系统主要包含PC机、运动控制卡、伺服系统以及各类反馈传感器。

该架构易于保证系统进行模块化和开放式设计,增强系统的扩展性。

PC机是系统的上位机管理层,负责搭建系统数据库,系统的控制指令以及数据信息均需经过数据库进行存储与处理。

用于内嵌PID控制算法实时处理运动数据信息,通过建立PC机与运动控制卡间的通讯,精确调整电机转速,完成机械手终端的路径规划。

此外PC机还用于机交互界面的管理以及多轴联动系统的监控。

运动控制卡通过PCI插槽内嵌在PC机中,系统采用PCI总线型运动控制卡-PCI-DMC-B01。

PCI总线传输效率高,支持即插即用,数据吞吐量大。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档