今天正运动助手给大家分享一下运动控制卡如何使用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. 常规演示