该文章仅供参考,编写人不对任何实验设备、人员及测量结果负责!!!
0 引言
文章主要介绍PI位移台的硬件连接、软件配置以及软件控制。文章中提到的内容在产品手册中都有说明,强烈建议在操作前通读产品手册,这里以《C-863_UserManual_MS205E.pdf》
为例,简要介绍该产品手册内容
页码 | 内容 | 页码 | 内容 |
---|---|---|---|
21 | 前面板接口介绍 | 22 | 后面板接口介绍 |
26 | 可操作的选项 | 28 | 开/闭环模式 |
30 | 物理单位选择 | 31 | 移动指令 |
32 | 速度/加速度指令 | 38 | 到达目标位置状态检测 |
39 | 参考点检测 | 40 | 限位检测 |
41 | 行程与软件限位 | 46 | 参考点定义 |
55 | 上电调试 | 76 | 地址/波特率设置 |
157 | 通用指令集 | 255 | 错误代码 |
306 | I/O接口引脚定义 | 307 | Joystick接口引脚定义 |
309 | RS-232 In/Out接口引脚定义 | 310 | 电源接口 |
常用指令说明
指令 | 说明 | 指令 | 说明 |
---|---|---|---|
DIN | 获取设备ID | CTO | 配置触发输出 |
FNL | 快速移动到参考零点 | MOV | 移动到指定位置(绝对) |
MVR | 移动到指定位置(相对) | ONT | 达到目标位置状态判断 |
TMN | 获取最大位置 | TMX | 获取最小位置 |
TRO | 设置触发状态(使能/禁用) | VER | 获取当前固件版本 |
指令操作说明
// 指令分为三类,分别为执行指令、查询指令和状态指令,例如 MOV 移动指令
MOV :执行指令,对给定轴进行绝对位置移动
qMOV :查询指令,查询给定轴的绝对位置
HasMOV :状态指令,查询当前控制器/位移平台是否支持 MOV 指令
// 以下两种执行方式相同
self.c863Master.MVR(('1') , self.stepLen)
self.c863Master.MVR(self.c863Master.axes[0] , self.stepLen)
// 以下两种查询方式相同
self.c863Master.qMOV('1')['1'])
self.c863Master.qMOV(self.c863Master.axes[0])['1'])
1 硬件连接(单台)
测试中以C-863.11控制器和M-410.DG位移平台 (已停产,官网无相关产品)搭建一维系统,设备连接图如下所示
2 控制环境搭建
以测试位移台为例,配件盒中通常会有一张资料CD,其中包含相关文档和软件,若CD遗失可直接搜索PI官网(中国),找到相应的设备后提交表单即可,PI中国代理会将资料发送到邮箱中,文末附本套设备的相关资料,可选择下载
拿到资料后解压 PI_CD-Mirror-C-990.CD1,以管理员运行 PISoftwareSuite.exe,基本没有需要注意的,中途会有弹窗是关于驱动的,选择安装,等待几分钟就可,最后一步中有涉及关联其他软件(NI,美国国家仪器的),可以根据需要安装,本人使用的是PIPython因此并无过多关注,软件安装是默认目录C:\Program Files (x86)\Physik Instrumente (PI)
关于PIMikroMove的使用这里不做讲解,手册中有详细说明,本人使用的是PI提供的PIPython接口进行开发,因此主要以PIPython示例讲解为主,PI还提供C、C++、C#、Python、Matlab、IN LabVIEW编程接口
,可根据条件选择软件控制接口PI编程接口
打开PI官网的PIPython安装网页,从仓库中下载PIPython例程,并win+r
打开命令行后输入cmd后回车,执行
pip install PIPython
// 若网速慢可使用国内镜像安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple PIPython
安装相应开发库,例程中可能需要其他依赖库,可依此方法安装,至此,开发环境搭建完成
3 例程测试
上电之前需要注意以下几个问题:
- RS-232 In与Mini-USB type B 不可同时和电脑连接
- 注意看电源适配器的输出电压/电流与位移平台是否匹配(部分型号位移平台需要独立供电,注意电源适配器的电压/功率)
- 原装电源适配器与插排的接线插头比较特殊(插头内置保险丝),无法与一般国内插排匹配,在实际使用时,直接使用常见电源线(台式机的电源线),系统工作正常,仅供参考
上电后可通过win+x
打开设备管理器,可看到:
// 端口(COM和LPT)
// 设备型号与端口号和自己的设备相关,不尽相同
PI C-863(COM4)
// 通用串行总线控制器
// 如果有感叹号!说明驱动有问题,重新安装一遍
PI C-863
为使本文章可读性更强,这里定义如下变量,可以理解为类似于“宏”的东西
// 文件1
C-863_UserManual_MS205E(英文).pdf
// 文件2
M-5x1-UserManual-MP113-EN.pdf
// 指令1
PIPython-master\PIPython\PIPython\PIPython-2.9.0.4\pipython\pidevice\common\gcsbasecommands.py
// PATH1
PIPython-master\PIPython\PIPython\PIPython-2.9.0.4\samples\
3.1 示例1
使用vs code打开PATH1\advanced\connect_serial.py
- (line 31) 将 port=‘COM1’ 改为自己设备管理器中的端口号
- (line 32) 将 baudrate=115200改为38400,与控制器的拨码相关,可查看《文件1,P70》,设备默认Baud为38400(拨码为S5:OFF,S6:ON)
运行程序后会在终端看到返回的配置和设备信息:
interface: PISerial(port=COM4, baudrate=38400)
connected: (c)2013 Physik Instrumente(PI) Karlsruhe, C-863.11,0,1.3.0.7
到此说明软硬件连接、配置环境正常,可以进行后续开发
3.2 示例2
使用vs code打开PATH1\quickstart.py
- 注释(line 29)
- 释放(line 31),将comport修改为自己的串口号,只写数字(如COM4只写4),buadrate改为相应值
运行程序后位移平台移动并且终端返回如下:
connected: (c)2013 Physik Instrumente(PI) Karlsruhe, C-863.11,0,1.3.0.7
version info: PI PI_GCS2_DLL.dll: V3.21.0.0
PIBase: 22.16.1.0
Path: xxx\PI\GCSTranslator\PISTAGES3.DB Version: V3.0.68.0
FW_DSP: V1.3.0.7
PIPython: 2.9.0.5
done - you may now continue with the simplemove.py example...
3.3 示例3
使用vs code打开PATH1\simplemove.py
根据自己的控制器选择控制器宏定义,此处注释(line 21,22,23,53),释放(38,39,40,55)
- (line 38) 将 CONTROLLERNAME 修改为自己控制器型号,(如’C-863.11’)
- (line 39) 将 STAGES 修改为位移平台,(如’M-410.DG’)
- (line 55) 将comport修改为自己的串口号,只写数字(如COM4只写4),buadrate改为相应值
运行程序后位移平台移动并且终端返回如下:
connected: (c)2013 Physik Instrumente(PI) Karlsruhe, C-863.11,0,1.3.0.7
version info:
PI PI_GCS2_DLL.dll: V3.21.0.0
PIBase: 22.16.1.0
Path: xxx\PI\GCSTranslator\PISTAGES3.DB Version: V3.0.68.0
FW_DSP: V1.3.0.7
PIPython: 2.9.0.5
initialize connected stages...
move axis 1 to 0.00
current position of axis 1 is -0.00
move axis 1 to 15.00
current position of axis 1 is 15.00
done
3.4 示例4
使用vs code打开PATH1\datarecorder.py
注释(line 27,28,29) ,添加宏定义如下
- (line 31) CONTROLLERNAME = ‘C-863.11’
- (line 32) STAGES = [‘M-111.1DG’,] # connect stages to axes
- (line 33) REFMODES = [‘FNL’,] # reference the connected stages
- 注释(line 42),释放(44),并配置
在程序中添加相应代码对设备进行查询操作(详见代码)
程序运行完成后会在PIPython-master根目录下创建文件gcsarray.dat保存数据,可以用记事本查看
注:有任何指令上的问题都可在《文件1》和《指令1》中查找
3.5 示例5
使用vs code打开PATH1\connect_enumerate.py
不做任何修改直接运行程序,可以查询当前PC连接的任何PI设备,返回:
search for controllers...
0 - PI C-863 Mercury SN 0145500061
select device to connect:
// 此时在终端输入 0 (或是返回中的其他设备编号)
select device to connect:0 // 敲回车,返回:
connected: (c)2013 Physik Instrumente(PI) Karlsruhe, C-863.11,0,1.3.0.7
3.6 示例6
使用vs code打开PATH1\connect_daisychain.py
本程序测试至少需要两套设备(两个控制器+两个位移平台),使用测试设备如下:
- Master 控制器:C-863.11 + 位移平台:M-410.DG (已停产,官网无相关产品)
- Slave 控制器:C-863.11 + 位移平台:M-531.DD1
这里将第一组定义为主机,第二组定义为从机,daisychain中设备地址需要是唯一的,相关设置规则与控制器上拨码有关,详见《文件1》,此处设置Master地址为1,Slave地址为2
连接设备时先将所有设备断电!!!
首先按照下图连接设备
注:不论怎么连接,同一时刻一台控制器上【RS-232 In】和【Mini-USB type B】只有一个在使用
程序中ConnectDaisyChainDevice(self, deviceid, daisychainid=None)使用如下:
@param deviceid : 此处就是对应控制器上的拨码
程序中其他修改见源码
运行程序后返回如下:
RS-232 daisy chain at COM4, 38400 Baud; daisy chain 0, device 1:
(c)2013 Physik Instrumente(PI) Karlsruhe, C-863.11,0,1.3.0.7
daisy chain 0, device 2:
(c)2013 Physik Instrumente(PI) Karlsruhe, C-863.11,0,1.3.0.7
3.7 其他示例
PATH1\simplemove_gcs30.py
该程序无法适配 C-863.11,程序中可使用查询指令看指令是否支持(如: if device.HasqSPV( ): ),相关查询指令可以在《指令1》中查找
PATH1\setparameter_gcs30.py
该程序无法适配 C-863.11
PATH1\advanced\connect_serial.py
修改对应的串口号与波特率后直接运行即可
PATH1\advanced\targets_from_csv.py
将 PATH1\advanced\targets_from_csv.csv 复制到PIPython-master根目录下,修改对应的串口号与波特率后直接运行即可
PATH1\advanced\TrajectorySample.py
此程序需要两个维度的移动平台,暂时没有测试
PATH1\advanced\wavegenerator_circle.py
此程序需要两个维度的移动平台,暂时没有测试
PATH1\samples\advanced\wavegenerator_pnt.py
此程序需要两个维度的移动平台,暂时没有测试,(line 23) 另外此程序应该只适配 C-887 控制器
PI在例程包中还提供了一些其他功能测试程序,由于本人并末使用到,因此也并末全部测试,文末将会提供上述程序修改前/后的代码
,可以自行下载使用对比软件查看
4 扩展
PI位移台还提供了一个非常有用的功能——定点触发,假设有这样任务:你手中有一根10cm的样片,你需要每隔0.1mm使用某种传感器对这个样片表面进行采样,那如何每移动0.1mm触发一次采样?此时你需要了解CTO与TRO
这两个指令,参考P172和P246,对这两个指令完成相应配置后,每移动相应位移,Mini-DIN socket接口的5,6,7,8
引脚(根据程序中所配置的引脚)将会产生一个50us的脉冲,参考P107,此时使用单片机的外部中断触发捕捉到这个脉冲并做出相应动作,由于项目原因不做过多解释,程序也不便公开,有需要此功能的可在手册中查找实现方法,下图为实现简图,仅供参考
5 总结
由于该设备属于精密且贵重仪器,使用时一定要小心操作,有任何问题都可以在手册中查解决方案,切勿盲目操作,另外本人行文草率,可能有未提及/错误示范之处,需自行甄别!
[1] CD资料BaiduPan( pwd : 21p4)
[2] PI中国官网编程接口
[3] Python接口与例程
[4] Git代码仓库(修改后代码)