摘要:本文提出一种在PCNC控制系统中,借助CMOS数据区为PCNC设备增加工况记忆功能的方法,可以方便地实现数控设备工况信息的分析与保存,利用相对增量式编码器实现绝对增量式编码器的功能且无须修改或增添其它硬件。文中还指出了这一数据区的其它用途。
关键词:记忆功能,PCNC,工况,编码器
1 问题的提出
随着计算机应用技术在工业领域中的不断深入,借助计算机作为控制核心的数控设备在企业中已得到十分广泛的应用,其中微型机因其系统的开放性与软件的丰富性,近年来更有一大批专用接口与之配套,例如A/D、D/A、I/O、Amp.、通讯、SSR端口等。事实上基于微机的ISA总线、PCI总线的工业控制用计算机业已成为一种工业标准。记录工控设备的工况是工控设备的基本功能之一。例如机床刀架现在位置,设备现行加工模式,运动模式等均是保证设备加工质量以及设备安全的重要控制参数。又例如,在突发事件发生后,若造成设备断电,在断电前设备处于何种工况,也是控制系统启动后需要了解的工况信息。因此,作为工业控制用计算机或多或少总要保存一些信息,借以提高设备智能,减少人工干预时间。然而常用于伺服控制系统的伺服控制卡、相对增量式编码器、I/O卡等均无断电保存信息的功能。所以,为保存设备位置、工况等信息就要修改接口设计或采用绝对增量式编码器,由此造成控制系统成本增加是不可避免的,少则千余元,多则数千元。
虽然保存数据信息可以采用磁盘,但是磁盘的访问时间太长,实时控制性能较差。如果采用电子盘技术,虽然速度问题可以解决,但价格太高。因此,能否利用设备已有的资源来完成工况信息保存工作,就成为一个十分有研究意义的问题。
2 实现方法
资料表明,自80286微机问世以来,微机主板上就多了一块可用于保存系统时间与系统配置的专用CMOSRAM芯片,系统断电后由锂电池为其保持数据不丢失。在其存储空间中系统信息占用的数据长度为64个字节。然而,实践表明此芯片的存储容量一般为128个字节或更多。所以,用户至少还有64个字节可以支配,这一丰富的资源用于工业控制,可以保存多达15个轴的浮点位置信息,另外还可以将其余4个字节用于保存设备的多达上亿的工况状态编码,或者利用64个字节保存512路I/O信息等,这样的信息保存量对绝大多数采用微机为控制中心的数控设备来讲是完全可以满足要求的。
DOS技术资料表明,对微机中CMOSRAM数据区内容作读写操作要利用两个端口来实现,标准规定采用寻址端口0X70写入要访问的数据区地址,而由数据读写端口0X71完成读出或写入一个字节信息的操作[1][2]。下面用C语言编写的一小段程序来说明如何从芯片的存储区中读出或写入数据。
{
unsignedcharstate[64],index,last_state[64];
…//以下是读端口中的内容
disable();//关闭中断
for(index=0;index<64;index++){
outportb(0x70,0x40+index);//向寻址端口写入待访问地址
last_state[index]=inportb(0x71);
//读入CMOS中已存的数据
}
enable();//允许中断
//工况分析与设备工况调整
…//填写设备工况至数组state中
disable();
for(index=0;index<64;index++){
outportb(0x70,0x40+index);//向寻址端口写入待访问地址
outportb(0x71,state[index]);//将工况信息写入CMOS中
}
enable();
…
}
示例程序中在读写操作前关闭中断是为保证读写地址不被别的中断程序或系统程序更改读写地址,从而保证记录读写的准确性。
由以上的例子可以看出,即使要完成多个工况的记录耗时也是极为短暂的。由于在设备控制过程中,作为主控计算机主要工作在中断模式下[2],所以主控计算机有足够的时间来分析、保存实时工况信息,并作出相应的处理。
3 结束语
综上所述,借助微机的CMOS数据区,可以保证高效快速地存储与获取数据。必要时,将上述程序置于一中断程序中,并将用户保存机器工况的数组state说明成为全局变量,即能在定时中断时将主程序的执行结果进行刷新,从而达到保存信息的目的。
此外,在测控系统设计中,往往要求在两程序之间作信息的相互传递,此时也可以将CMOSRAM区作为一个信息存放站,用于说明两程序现在各自的工作状况及用于数据交换。除交换与保存信息之外,用户还可以利用这一块数据区中的某几个字节在软件安装时写入软件的特征代码,以便使软件及数据得到些许加密保护。
笔者在十余年来的工业测控系统研制与开发中,采用本技术节省的资金已达数万元,若推广使用,相信能为我国数控设备制造业带来一笔可观的利润,并且改善设备的性能。以年产一百台二坐标机床的中小企业为例,以每台二坐标设备用相对编码器替代绝对编码器节省硬件投资6000元计,每年就可以节省约60万元,其潜在社会效益和经济效益不容置疑。