一、概述
移动平台控制器用于控制步进电机驱动的移动平台实现多种运动,也可用于使用两相步进电机驱动的其它设备的控制。自带摇杆可实现直接手动方式的运动控制;从控制软面版实现运动控制,或者由计算机编程实现更加灵活多样的控制方式。每台移动平台控制器多可独立或联合控制 4 台步进电机,实现多达四维空间的任意方式运动。移动平台的位置信息实时显示在 LCD 显示屏上。
同时内置运动控制和电机驱动模块,控制连接简单化;命令控制、 驱动程序等灵活多样的编程控制方式,可支持多种软件控制的开发。
二、连接方法
1.X 通道:用 DB9(孔)-DB9(针)连接电缆与移动平台 X 方向控制端连接;切不可带电拔插!
2.Y 通道:用 DB9(孔)-DB9(针)连接电缆与移动平台 Y 方向控制端连接;切不可带电拔插!
3.Z 通道:用 DB9(孔)-DB9(针)连接电缆与移动平台 Z 方向控制端连接;切不可带电拔插!
4.L 通道:用 DB9(孔)-DB9(针)连接电缆与移动平台 L 方向控制端连接;切不可带电拔插!
5.RS232:用附件中的 DB9(孔)-DB9(孔)连接电缆与 PC 机 RS232口连接;
6.电源:与附件中的电源适配器连接。
三、直接手动方式操作
1.按规定连接好 X、Y、Z、L 通道电缆;(切不可带电拔插!)
2.将电源适配器与移动平台控制器的“电源”插座连接;(只可使用本机自带的电源适配器,不可更改!)
3. 确认所有连接正确,平台移动所需空间足够,各设备放置平稳后, 将电源适配器的交流插头接入市电;
4.左/右摇动四维摇杆手柄,平台 X 方向电机正/反转动;
5.前/后摇动四维摇杆手柄,平台 Y 方向电机正/反转动;
6. 正/反旋转四维摇杆手柄,平台 Z 方向电机正/反转动;
7.按住摇杆手柄上的按钮同时左/右摇动摇杆手柄,平台 L 方向电机正/反转动;
8.摇动四维摇杆手柄,体会平台移动速度与摇杆关系;
9.四维摇杆手柄某一方向处于自由位置(零位)6 秒以上,相应方向的电机将自动变为“空闲”状态;
10.程控(含控制软面板)时,推动摇杆可解除推动方向的程控控制, 摇杆回位,该方向即可停止运行,可作为急停功能使用。
四、控制软面板实现运动控制
1. 移动平台控制器与计算机通信采用 RS232 接口;
2.用RS232 电缆连接计算机和移动平台控制器;
3.确认所有连接正确后,再给移动平台控制器上电;
4.再计算机上运行:PDV Controller.exe,得到如下介面:
上半部分为直接控制区,左下部为联动控制区,右下部分为面板数据存取、端口控制和退出部分。
5.直接控制区。
通道:指明后面控制数据所在的行所属的控制通道;
行进速度:让相应控制通道的电机以该速度运行,其值在-4096~
4095 之间。正值正转,负值反转,值不得大于后面的“z高速度”,否则速度的值为“z高速度”;
高速度:让相应控制通道的电机速度值的大值,其值在0~4096 之间,用以指定“行进速度”、“行进位移”和“点动位移” 模式时的高限速;
行进位移:以尽可能高的速度(不超过“高速度”)行进的距离。 其值与后续“位移比”的乘积应在-230~230-1 之间;
点动位移:点击 M-或 M+按钮时相应通道将反向或正向移动对应于设定值的位移量。其值与后续“位移比”的乘积应在-230~230-1 之间;
位移比:“行进位移”和“点动位移”模式下实际位移量与所设定位移量的比例系数。通过设定该比例系数可实现设定值为不同单位(如 mm、度等)时与实际位移量间的转换。
平台状态:显示平台当前位置信息和限位信息。数字为位置信息, “max”或“min”表示平台已到达远端或近端限位位置;
连续更新:勾选时“平台状态”信息将与移动平台控制器显示状态信息同步连续更新,未勾选时则不再更新“平台状态”;
6.“联动控制”区:联动控制功能是用被选中为联动的通道来实现空间任意曲线运动的。这里定义一种曲线表示方式(与四维空间曲线表示类似):一条“曲线”由一个或多个直“线段”连接而成。
模值:为“线段”的长度;其值在-231~231-1 之间;X 分量、Y 分量、Z 分量和 L 分量:每条“线段”在 X、Y、Z 和L 方向上的矢量长度与线段长度“模值”的比值的 32768倍(215 倍),其值在-32768~32767 之间;
添加线段:将上述“线段”添加到“曲线”上; 清除曲线:将“曲线”中的内容清除;
曲线:由一系列“线段”组成的“曲线”的数据;曲线上每条线段的数据表示为一行,分别为线段的“模值”、“X 分量”、“Y 分量”、“Z 分量”和“L 分量”,用“,”号分开,行尾也用“,”号。曲线有多少个线段就有多少行,也可按照此格式在该文本显示框中直接编辑曲线数据。
X 联动、Y 联动、Z 联动、L 联动:勾选则相应通道参加联动,未勾选中的可独立运动;
联动限速:在线段方向上的高速度,其值在 0~4096 之间;
重复次数:前述曲线运动的重复次数,其值在 0~65535 之间;0 表示只运行一次,不重复;1 表示运行一次,重复一次,共两次,依此类推。
如果重复曲线运动要求曲线的起点和终点是同一点,否则重复的曲线将形状相同而不能重合。
开始运行:将曲线数据下传到移动平台控制器,启动电机,开始曲线运动。
7.在运行中实现等待。在联动控制过程中,将需要等待的通道的“×分量”设为 0,则对应通道将停止运行。当“模值”的 256 倍不小于“联动限速”的平方时,等待时长为:(256×模值/联动限速+联动限速)×0.4096ms;当“模值”的 256 倍小于“联动限速”的平方时,等待时长约为:32×模值的平方根×0.4096ms。
8. 面板数据存取、端口控制和退出。
保存数据:保存面板上的各输入框及状态控制数据到数据文件中;但“曲线”数据不保存。
恢复数据:从数据文件中读取上述保存的数据,设置到面板上的各输入框及状态控制上,不含“曲线”数据。
通讯端口:设定计算机与移动平台控制器的串口号。退出(Exit):退出控制面板。
五、用命令实现运动控制
移动平台控制器从计算机接收命令,实现运动控制,前述控制软面板就是通过这些命令实现的。
1.RS232 接口协议:波特率 57600,无校验,8 数据比特,1 停止位;
2.传输形式:计算机主控传输,计算机每次向移动平台控制器传发送 1 字节后,需要等到移动平台控制器向计算机发送字节 0Dh,表示移动平台控制器确认收到该字节,计算机才能再向移动平台控制器传发送下 1 字节,再等到移动平台控制器向计算机发送字节 0Dh,表示移动平台控制器确认收到该字节,…….,依此类推; 3.命令格式:每个命令由字符串组成,字符采用 ASCII 编码。字符串总长度不超过 16 字节(含分隔符)。命令组成有两种方式:一种是: 两个字母+ “;”;另一种是:两个字母+数字+ “;”。字母区分大小写;“;”号就是命令的分隔符号。除此以外不能有其他符号(含空格)。
例:X 通道以 3000 速度反向行进:“SX-3000;”
4.命令集。
功能 | 命令形 式 | 功能说明 | 备注 | 举例 |
设定运行速度 | SXn; SYn; SZn; SLn; | X以速度n行进 Y以速度n行进 Z以速度n行进 L以速度n行进 | n=-4096~4095 速度V(转/秒)=n× 55/220 | SX100; SY-234; SZ1000; SL4095; |
上传数据 | UX; UY; UZ; UL; US; UM; UH; | 上传X位置数据 上传Y位置数据 上传Z位置数据 上传L位置数据 上传限位数据 上传运行模式数据 上传零位数据 | 返回9字节 返回9字节 返回9字节 返回9字节 返回1字节* 返回1字节* 返回1字节* | UX; UY; UZ; UL; US; UM; UH; |
设定运行位移 | DXn; DYn; DZn; DLn; | X行进位移n Y行进位移n Z行进位移n L行进位移n | n=-230~230-1 单位:微步。 1微步=360/12800度=0.028125度。 | DX350; DY-9987; DZ-3456; DL100020; |
设定高速度 | MXn; MYn; MZn; MLn; | X高限速为n Y高限速为n Z高限速为n L高限速为n | n=0~32767 速度V(转/秒)=n× 55/220 | MX2560; MY200; MZ1002;ML4096; |
任意速度模式 (说明见后续例) | NXn; NYn; NZn; NLn; | 准备速度控制数据下 传,n为时段数。 | n=0~682(仅X) n=0~341(仅用XY) n=0~170(XYZ或XYZL) | NX50; NL120; |
LTn; | 下传时长数据n | n=0~230 | LT100000; | |
LAn; | 下传加速度数据n | n=-32767~32767 | LA256; | |
RXn; RYn; RZn; RLn; | X重复次数 Y重复次数 Z重复次数 L重复次数 (重复次数=总运行次数-1) | n=0~65535 | RY132; RZ384; | |
TMn; | 开始运行任意速度过 程。n为通道控制值,处于任意速度模式下的通道的加权值之和。 定义:如参与任意速度模式: X通道加权值1; Y通道加权值2; Z通道加权值4; L通道加权值8; 不参与加权值为0; | n=0~15 | TM1;(X通道运 行) TM2;(Y 通道运行) TM4;(Z通道运行) TM8;(L通道运行) TM10;(YL通道运行) TM3;(XY 通道运行) TM7;(XYZ 通道运行) TM15;(XYZL通道运行) TM0;(XYZL通道 推出任意速度模式) | |
ARn; | 从SD 卡读取任意速度 模式数据。 | n=0~8192 | AR8; | |
ASn; | 保存任意速度模式数据 到SD卡
| n=0~8192 | AS10; | |
停止 | PA; | 立即停止所有运行。 |
*详细说明见后面的例
5.控制举例:
例1. 移动平台控制器向计算机上传上传限位数据。
(1)计算机向移动平台控制器下发字符串:“US;”。
每发送一个字符,都要等到移动平台控制器返回一个字节(0Dh),才可接着发送下一字节。
(2) 计算机得从移动平台控制器读取 1 字节, 这个字节表示平台位置信息:
如果bit0=0, 则 X 方向已到小位置; 如果bit0=1, 则 X 方向未到小位置;如果bit1=0, 则 X 方向已到大位置; 如果bit1=1, 则 X 方向未到大位置;如果bit2=0, 则 Y 方向已到小位置; 如果bit2=1, 则 Y 方向未到小位置;如果bit3=0, 则 Y 方向已到大位置; 如果bit3=1, 则 Y 方向未到大位置;如果bit4=0, 则 Z 方向已到小位置; 如果bit4=1, 则 Z 方向未到小位置;如果bit5=0, 则 Z 方向已到大位置; 如果bit5=1, 则 Z 方向未到大位置;如果bit6=0, 则 L 方向已到小位置;
如果bit6=1, 则 L 方向未到小位置; 如果bit7=0, 则 L 方向已到大位置;如果bit7=1, 则 L 方向未到大位置;
例2. 移动平台控制器向计算机上传联动状态。
(1)计算机向移动平台控制器下发字符串:“UJ;”。
每发送一个字符,都要等到移动平台控制器返回一个字节(0Dh),才可接着发送下一字节。
(2) 计算机得从移动平台控制器读取 1 字节, 这个字节表示平台位置信息:
如果bit0=1, 则 X 方向已参与联动; 如果bit0=0, 则 X 方向未参与联动; 如果bit1=1, 则 Y 方向已参与联动; 如果bit1=0, 则 Y 方向未参与联动; 如果bit2=1, 则 Z 方向已参与联动; 如果bit2=0, 则 Z 方向未参与联动; 如果bit3=1, 则 L 方向已参与联动; 如果bit3=0, 则 L 方向未参与联动;
例3. 在三维空间中,画出重原点 O(0,0,0)到P(1000,2000,-3000)的直线段 OP。
(1) 找出线段的“模值”。
可以将线段的长度作为“模值”,为计算简单也可找一个不小于值的分量的数作为“模值”。这里不妨就取值的分量作为模值,即 3000;
(2) 计算分量:
X 分量=X 位移量/模值×32768=1000/3000×32768=10922;
Y 分量=Y 位移量/模值×32768=2000/3000×32768=21845;
Z 分量=Z 位移量/模值×32768=-3000/3000×32768=-32768;
L 分量=L 位移量/模值×32768=0/3000×32768=0;
(3) 发送曲线数据:
JD7; //准备联动数据下传,X、Y、Z 联动,L 不联动。 JW1; //线段数量:1 段。
JL3000; //模值。
JW10922; // X 分 量 。
JW21845; // Y 分 量 。
JW-32768; // Z 分 量 。
JW0; // 不涉及 L 通道,L 分量也要设定,其值为 0 即可。
如有更多线段,可相应修改线段总数,并依次重复上述“模值”,
“X 分量”,“Y 分量”,“Z 分量”,“L 分量”设定过程,直至设定完所有线段为止。各参数设定必须依次顺序。
(4) 开始运行联动过程:
JT0; //运行一次,不重复。
重复运行时,当曲线的起点和终点在同位置时,重复运行时则会反复画同一曲线;起点和终点不在同位置时,一次运行的终点将成为 随后一次的起点,但都画同样的曲线。
(5)运行模值不为 0,而分量为 0 的“线段”时,即形成“等待”。等待时长:当“模值”的 256 倍不小于“联动限速”的平方时,等待时长为:(256×模值/联动限速+联动限速)×0.4096ms;当“模值”的 256 倍小于“联动限速”的平方时,等待时长约为:32×模值的平方根×0.4096ms。
六、运用库函数实现运动控制
系统提供动态链接库函数,用户可在自己的应用程序中调用这些函数,满足特定的应用。
头文件:Vector_dll.h
动态链接库:vector_generator.dll
函数定义:
1.初始化串口
int stdcall SetComPortn(int port_number);
//port_number=1:com1;
//port_number=2:com2;
该函数应该在所有函数之前调用,因为其它函数可能使用的串口,使用前应该先初始化。
2.关闭串口
int stdcall CloseCommPort(int port_number);
//port_number=1:com1;
//port_number=2:com2;
该函数应该在所有函数之后用,因为其它函数可能使用的串口, 只有在不再使用串口时才能关闭它。
3.设置行进速度
void stdcall SetSpeed(int Channel, int Speed);
//Channel = 0,1,2,3 对应 X,Y,Z,L 通道
//Speed =-4096~4095
4.设置行进距离
void stdcall SetDistance(int Channel, int Distance);
//Channel = 0,1,2,3 对应 X,Y,Z,L 通道
//Distance = -230~230-1
5.设置高速度
void stdcall SetMaxSpeed(int channel,int MaxSpeed);
//Channel = 0,1,2,3,4 对应 X,Y,Z,L,联合
//MaxSpeed =-4096~4095
6.取得位置数据
int stdcall GetDisplay(int Channel);
//Channel = 0,1,2,3 对应 X,Y,Z,L 通道
7.取得限位或联动数据
int stdcall GetStatus(int Content);
//Content = 0/1 = 限位/联动
8.联动数据下传联动数据
void stdcall SetJointData(int Joint[4],int Total_Seg,double Modulus[400],doubleCompnent[400][4]);
//Joint[0,1,2,3] = 1/0 = [X,Y,Z,L]通道是/否联动
//Total_Seg: 线段总数(0~330),
//Compnent[400][0,1,2,3] = [X,Y,Z,L] 分量;
我们很高兴你能和我们合作。为了节省你的时间,在选择产品时,请查看参数或与我们的销售沟通,避免你购买的产品,因参数与你的使用要求不一致,耽误你的工期进度。我们再次感谢你的支持。