浅谈CNC动态卡在总线方式下的实现
indows中,win23应用程序对vxd的通讯方法只有一种,利用设备输入输出控制函数deviceiocontrol()来实现,利用createfile()函数加载vxd获得vxd设备句柄,如果调用成功,win32应用程序就可以调用deviceiocontrol()程序与vxd进行通讯。
vxd的命令代码需要根据其固定格式进行定义,程序中共定义了2个命令代码,分别用于对双口静态ram的读写操作和vxd对win32应用程序异步过程调用时回调函数地址传输。
另外,由于采用中断方式对dsp处理的数据进行读取,所以中断事件发生时, 需要vxd异步通知win32应用程序,设计时在应用程序中创建了两个线程,一个用于等待中断事件,当中断事件发生时,读取dsp送到双口ram中数据,另一个用于显示数据。
5.3 访问i/o以及内存
在s599的串行存储器中,将pci配置基础地址寄存器badr1配置为4k,16位寄存器空间,badr2设置为8个自己的i/o空间,基地址寄存器badro对应s5933内部16个双字节pci总线操作寄存器,当利用查找方式获得配置空间数据时,即可得到存储器空间基地址和i/o端口基地址。
5.4 处理中断
当dsp处理数据写满2k的存储器空间时pci将产生中断,中断信号从配置空间寄存器中读出,pci设备分配的硬件中断信号是共享中断,必须使用类vsharedhardwareint的中断通知事件处理函数onsharedhardwareint()。
6 应用程序的编写
6.1 人机接口模块
使用vc编写基于pci总线动态控制器板卡的应用程序,主要利用设备输入输出控制函数deviceiocontrol(),将界面上对数控机床的各个参数转换数据送到底层的vxd进行通信。
6.2 解决程序模块
对从应用程序中人机界面模块中传入的参数进行解释,完成将上位机输入信息解释成下位机dsp能够执行的语言,程序解释模块固化到pci板卡的dsp片内rom中。
6.3 plc接口模块
实现pci控制卡与现场总线上的plc模块之间的通讯,由于can总线的特点是可以将对plc模块的控制作为一个应用模块做在pci控制卡上,从而实现了模块化控制。
6.4 插补模块
在加工信息解释的基础上,调用运动学算法模块,将运动平台在操作空间的运动转变为空间的伺服运动,实时生成刀具的运动轨迹,并将各伺服轴的移动指令送给伺服模块。
6.5 运动算法模块
主要为伺服驱动提供逆解、速度映射算法,为加工状态的实时仿真及精度补偿提供正解算法。
7 结语
采用pc+动态控制卡模式,实现数控系统的放开式设计方法开发周期短,系统可靠性高,便于机床功能扩展,由于软件采用了模块化,同时基于组件技术,界面友好,操作方便,进行软件升级以及用户进行二次开发都比较方便。
- 基于总线方式的钻井模拟器设计(10-24)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)