推广 热搜: csgo  vue  2023  angelababy  gps  信用卡  新车  htc  落地  控制 

EtherCAT运动控制卡的PWM与模拟量输出和运动速度同步

   2023-08-20 网络整理佚名2530
核心提示:今天,正运动小助手给大家分享一下运动控制卡之如何使用C#实现PWM输出与模拟量输出和运动速度的同步。通过DA设置的生效按钮的事件处理函数来设置模拟量输出。所以需要通过软件写一个Basic的程序用于实时监控插补运动的速度变化然后更新PWM的占空比设置和模拟量输出。模拟量输出与PWM输出和运动速度的同步。但是想要保证在每点的激光量要一致,所以要实现模拟量输出或PWM的占空比要和速度保持步。

今天正运动助手给大家分享一下运动控制卡如何使用C#实现PWM输出、模拟量输出和运动速度的同步。 本文的应用场景包括激光切割和激光打标的能量控制,以及其他应用场景。

1. 硬件介绍

该系列运动控制卡最多支持16轴线性插补、任意圆弧插补、空间圆弧、螺旋插补、电子凸轮、电子齿轮、同步跟随、虚拟轴和机械手指令等; 优化的网络通讯协议可以实现实时运动控制。

该系列运动控制卡支持以太网,232通讯接口与计算机连接,接收计算机指令运行。 它可以通过总线和CAN总线连接各个扩展模块,以扩展输入输出点或运动轴的数量。

该系列运动控制卡的应用程序可以使用VC、VB、VS、C++、C#软件进行开发,程序运行时需要动态库.dll。 调试时,可将软件同时连接至控制器,方便调试和观察。

两种用于运动控制开发的C#语言

1.新建工程并添加函数

1. 在菜单“文件”→“新建”→“项目”中,启动项目创建向导。

2. 选择开发语言“C#”和.NET 4,并形成应用程序。

3、在厂家提供的光盘中找到C#函数库,路径如下(以64位库为例):

A、输入厂家提供的光盘信息找到“8.PC功能”文件夹,点击进入。

B. 选择“函数库2.1”文件夹。

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

D、根据需要选择相应的函数库。 在这里,选择 64 位库。

E、解压C#的压缩包,其中包含C#对应的函数库。

F、函数库具体路径如下。

4、将厂商提供的C#库文件及相关文件复制到新建的工程中。

A. 将 .cs 文件复制到新创建的项目中。

B. 将zaux.dll 和.dll 文件放入bin\debug 文件夹中。

5、用VS打开新建的项目文件,在右侧的 中点击Show All,然后右键点击.cs文件,点击In in the 。

6、双击Form1.cs中的Form1,出现代码编辑界面,在文件开头写入using,并声明控制器句柄。

至此,新项目完成,可以进行C#项目开发了。

2 查看PC功能手册

1. PC 功能手册也在 CD-ROM 中。 具体路径如下:“CD-ROM\8.PC \ 2.1\ 编程手册V2.1.pdf”。

2、上位机编程,一般是网口连接控制器和工控机。 网口链接功能接口为(); 如果链接成功,接口将返回链接句柄。 通过操作连杆手柄即可控制控制器。

3 实现IO动作与运动控制的同步

1、C#开发实现IO动作与运动控制同步例程接口如下。

2、应用场景:激光切割能量控制、激光打标能量控制等运动过程中需要控制能量和速度同步的场合。

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

//链接控制器

无效 ( , e)

.(.文本,输出);

如果(!=()0)

。 =真;

//设置链接状态按钮

。 = ..颜色.绿色;

.Text = "已链接";

别的

.Show("控制器连接失败,请检查IP地址!", "警告");

//设置链接状态按钮

。 = ..颜色.红色;

.Text = "已断开连接";

4、通过定时器监控控制器的AD/DA状态信息。

//定时器1

无效 ( , e)

//AD状态监控

.(, 0, 参考[0]);

[0]=[0]/4096*10;

AD0.Text = "ADO:" + .([0]).("0.00") + "v";

.(, 1, 参考[1]);

[1] = [1] / 4096 * 10;

AD1.Text = "AD1:" + .([1]).("0.00") + "v";

//DA状态监控

.(, 0, 参考[0]);

[0]=[0]/4096*10;

DA0.Text = " " + .([0]).("0.00") + "v";

.(, 1, 参考[1]);

[1] = [1] / 4096 * 10;

DA1.Text = " " + .([1]).("0.00") + "v";

5、通过DA设置的活动按钮的事件处理函数设置模拟输出。

//设置DA0

无效 ( , e)

浮动=0;

= (浮动).(.文本.());

= /10*4096;

//.();

.(, 0, );

//设置DA1

无效 ( , e)

浮动=0;

= (浮动).(.文本.());

= /10*4096;

//.();

.(, 1, );

6、通过测试按钮启动测试功能,设置运动的前瞻参数,然后控制X、Y轴进行连续插补运动并走出的轨迹。

//测试按钮

无效 ( , e)

int[] = 新 int[2];

浮点[] = 新浮点[2];

float[] 标志 = 新 float[1];

标志[0] = 1;

[0] = 0;

[1] = 1;

.(, 0, 1, 标志);

//轴坐标清零

.(, 0, 0);

.(, 1, 0);

//设置轴参数(可以设置插补运动的主轴参数)

.(, 0, 100); //速度

.(, 0, 2000); //加速度

.(, 0, 2000); //减速度

.(, 0, 50); //S曲线时间

.(, 0, 1); //启用连续插值

//设置运动前瞻参数

// 拐角处减速

整型模式 = 0;

众数=众数+2;

.rMode(, 0, 模式);

.Angle(, 0, (float)(45 * Math.PI / 180));

.ngle(, 0, (浮点)(135 * Math.PI / 180));

.速度(, 0, 50);

// 小圈限速

众数=众数+8;

.rMode(, 0, 模式);

.(, 0, 120);

.速度(, 0, 50);

//触发示波器捕获图像

.();

// 跑到B点

[0] = 100;

[1] = 100;

.(, 2, , );

//跑到C点

.2Abs(, 2, , 160, 80, 200, 0);

//跑到D点

.2Abs(, 2, , 240, -80, 300, -100);

//跑到E点

[0] = 300;

[1] = -150;

.(, 2, , );

// 跑到A点

[0] = 0;

[1] = 0;

.(, 2, , );

.e(, 0, 0, 0);

7、由于系统不是实时操作系统,实时性能不高。 因此,需要通过软件编写Basic程序来实时监控插补运动的速度变化,进而更新PWM占空比设置和模拟量输出。 基本程序如下:

'有3个线程,线程号为0、1、1,'启动线程1,运行实时扫描程序

结尾

: 温度昏暗

而1

(0) 和 (0) 温度

然后

'表示各轴插补运动的实时复合速度

AOUT(0) = 10*(0) '实时更新模拟输出值

( 0)=( 0)/ 100 '实时更新PWM的占空比

温度=(0)

?"插补运动的总速度为:",(0)

?"PWM0的占空比为:",(0)*100,"%"

万一

温德

结尾

四、调试与监控

编译并运行例程,连接软件进行调试,监控控制器的状态。

1.控制器状态监控。

2.模拟输出、PWM输出和运动速度同步。

模拟激光加工的相关过程,按照下图轨迹从A点(0,0)到B点(100,100)进行插补运动,在B点走1/4圈到C点(200,0)然后走1/4圈到D点(300,-100),最后经过E点(300,-150)进行直线插补运动,然后移动到A点(0,0)。

因为设置了一些前瞻参数,所以不同角度的运动速度是不同的。 但是,如果要保证每个点的激光光量必须一致,就必须与速度保持同步,以实现模拟输出或PWM占空比。

3. 常规演示

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON