(2) 上下位机通信程序编制
为了便于PMAC与上层Windows进行通信,Delta Tau公司提供r PComm32动态链接库作为上层应用程序与PMAC之间通信的桥梁。PComm32是一个非常有效的开发工具,它包括了所有与PMAC的通信方法,并且与VC++等开发软件有很好的兼容性,开发者只需要往VC程序中调用动态链接库就能完成上位机同PMAC之间的数据交换。下面介绍在VC++6.0环境下调用PComm32动态链接库及库函数的方法。PComm32共包含丁250多个函数,但常用的并不多,只要掌握了下面几个就可以完成大部分的通信功能:
Open Pmac Device()//为应用程序使用PMAC打开一个通道;
Close Pmac Device()//当程序运行完毕后关闭所打开的通道;
Pmac Get PesponseA()//发送一个命令字符串给PMAC,并从缓冲区得到PMAC的反馈;
Pmac Configure()//调出配置对话框并修改PMAC的参数;
Pmac Down LoadA()//将程序从Pc下载到PMAC;
Pmac Send CommandA()//发送一个命令字符串给PMAC。
掌握了这几个函数的使用方法,就可在VC++6.0环境下凋用PComm32动念链接库,还需要用到Windows的几个API函数:
LoadLibrary//加载动态库;
GetProcAddress//取得相应函数地址、FreeLibrary//卸载动态库。
要调用动态库函数,首先要在头文件巾为所需的函数定义函数指针类型,其参数要和动态库的函数原型相同。接下来要在该文件中定义3个函数指针:
Open Pmac open、Close Pmac close、Pmac Get pmaeget,然后在执行文件中加载动态库,获得相应的函数地址并赋值给所定义的函数指针,程序段如下:
hMyD1 1=LoadLibrary(“pmac”)//加载动态库;
open=(OpenPmac)GetProcAddress(hMy D1 1),“Open Piilac Device”//得到函数地址并赋给函数指针;
close = (ClosePmac)GetProcAddress(hMyD1 1,“ClosePmac Device”)
pmacget= (PmacGet)GetProcAddress(hMyD 1 1,“Pmac Get ResponseA”)//通过指向函数的指针调用该函数;
if(open!=NULL)
{
( opeil)(0)//初始化函数;
SetTimer(1,lo,NULL)//设定定时器采集时间为lOOms:
︳
void CP comm Dig::On Timer(UINT nlDEvent)//定时器响应函数;
︳
( pmacget)(0,buf,255,“rx0”)//读取PMAC寄存器xO的值并存放在buf中;
Update(FALSE)
CDialog::On Timer(nIDEvent)
︳
//在退出程序的时候要卸载动态库;
BOOL CPcommDlg::Destroy Window()
{
( close)(0)//关断与PMAC的通信;
Free Library(hMy DLL)//卸载动态库;
Return CDialog::Destroy Window()
}
(3) PLC程序的编制
系统的PLC程序主要完成系统的初始化和对各种输入输出量进行监控,主要包括限位、冷却、润滑、指示灯管理、主轴电机启停等子程序。PMAC带有内置的软PLC功能,其运行是由PMAC来实现的。当运动程序在前台有序运行时,PMAC可以在后台运行多达32个异步PLC程序。PLC程序可以以极高的采样速率监视模拟和数字输入、设定输出值、发送信息、改变增益,命令运动停止/启动等作业。PLC程序的语法采用IF—ELSE结构的类C语言,开发者很容易就能写出所需的PLC程序,然后可利用PMAC自带的软件开发平台进行编辑、编译,最后下载到PMAC卡中运行。
3、结束语
(1) 采用直线电机驱动和直线导轨保证了非圆车削的快速响应性和高刚度要求。
(2) 基于IPC+PMAC结构的活塞车床数控系统,充分利用了PMAC控制器强大的伺服控制功能、直线电机的高频响应特性和PC机高效灵活的编程功能,硬件组成简单,软件开发方便,整个系统开发周期短,开放性和可扩展性较强,适合于多品种、小批量活塞的开发和生产。
作者:张冰蔚 黄彬 王佳
|