三、技术改造方法
将经济型数控系统上的RS232接口改造成USB接口,需要从软、硬件两个方面进行。
1. 硬件改造
在PC端,一般时下主流机型都支持USB接口,部分高档PC甚至支持USB2.0。对于不支持USB的PC也可以采用主板插入USB扩展卡的办法解决。关键改造在于DNC接口板。一种方法是采用USB/RS232的转换器,其结构如图3所示。
图3 USB/RS232的转换器结构图
USB/RS232转换器一般由USB接口模块、UART接口模块、数据缓冲区和协议控制单元组成。USB接口模块主要提供与USB总线的连接,它实现一般USB设备的所有功能,与PC上的USB口相连;UART接口则实现标准RS232接口的所有功能,与DNC接口板的RS232接口相连;协议控制单元通过接受USB接口的命令,对UART接口进行配置(配置通信波特率、数据位、校验位、起始/停止位、流控信号等)。数据缓冲区用来临时保存双方的数据传输工程中的数据。
另一种改造方法是直接改造DNC接口板,增加USB模块。图4是改造后的硬件结构。
图4 改造后的DNC接口板结构
其中,SIE是串行接口引擎,是USB接口的核心模块。如果CPU包含了USB接口,则CPU直接与负责实现USB协议要求主要功能的SIE核心模块连接,否则,CPU则需通过串行总线,如I2C或数据地址线I/O口与SIE相连。
两种硬件改造在USB接口实现上有本质的区别:前者USB/RS232转换器所用的USB芯片属于USB接口芯片,从硬件结构上来说仅包含USB的串行接口引擎(SIE)、FIFO内存、收发器以及电压调整器等芯片;后者则属于内含USB单元的微处理器(MPU),即芯片包含了增强版的8051核心,可以通过I/O与原有CPU相连,甚至可以直接去驱动步进电机,完成数控任务。
3. 软件设计
(1) USB/RS232
这种结构可以直接使用,不需要另外编制驱动程序。
(2) 对直接改造DNC接口板的,要采用EZ-USB的固件开发
可以使用Cypress USB仿真器软件——Cypress Lab中的Keil C Complier工具。该应用程序是由Cypress半导体公司为配合USB芯片组的开发所研制出来的。通过编制相应程序,可将编译后的文件直接烧录至EEPROM中,从而完成USB的固件设计。也可以采用CYASM汇编语言,这是一种只有38个精简指令的编译器程序,同样将编译好的16进制格式文件(.hex)烧录至EEPROM中使用。其主要功能是控制EZ-USB芯片接受并处理USB驱动程序的请求(请求设备描述符、请求或设置设备状态、请求设备设置、请求或设置设备接口等共11种USBl.1标准请求);控制EZ-USB芯片接受应用程序的控制指令;控制A/D模块的数据采集;通过EZ-USB存储数据并实时上传PC机。
(3) 在Windows系统下编制USB驱动程序
USB总线是支持热插拔的,当Windows检测到一个新的USB外设时,必须做的一件事情是找出应该使用哪个设备驱动应用软件来与设备通信,然后再载入选定的驱动。这是Windows设备管理器的工作,设备管理器使用类、设备安装器和INF文件来找到这个匹配。当Windows列举新的USB设备时,设备管理器把所有INF文件中的数据(设备供应商和产品的ID,也称作VID和HD,以及制造商、供应商名字和描述符等)与在列举时从设备获得的描述符中的信息做比较。找到匹配之后,Windows系统注册表将保存所有已安装设备的信息。在位置HKEY_L0CAL_ MACHINEEnum USB处,将列出所有的USB设备。
由于在Windows 98中提供了USBD(USB系统驱动程序),且USBD又给用户提供了直接支持的USB DI,用户在编写USB驱动程序时,只需配置满足USB要求的URB(USB请求块),并通过USB DI发送下去,即可实现对USB设备的控制。设备驱动是保证应用程序访问硬件设备的软件组件,一个设备驱动使得应用程序不必知道物理连接、信号和与一个设备通信需要的协议等的细节。应用程序可以使用一套操作系统支持的函数与设备驱动进行通信。用于读写USB设备的API函数是Creat Ne、Device Io Control或Read File和Write File。
把所有与设备有关的驱动操作编译为DLL,提供给应用程序使用。应用程序无需知道操作设备的细节,只需知道DLL的接口函数即可。下面给出对USB设备基本操作函数的例子。
CreateFile(TEXT(".Ez-USB"),GENERIC_READ,FILE_SHARE_ READ|FIlE_SHARE_WRITE,NULL,OPEN_EXISTING, FILE_FLAG_OVERLAPPED,NULL)
第1个参数是需打开的设备名;第2和第3个参数分别为授权读写和共享模式;第4个参数为安全属性,一般为NULL;第5个参数为打开方式(对USB设备来说应该是打开已存在的);第6个参数是异步交替模式;第7个参数为模板文件,这里并不需要。函数返回值为设备指针。
Device Io Control(hUSB, (DWORD)wFuncNum, (PVOID)pParam, (DWORD) dwSize,NULL,0,&Returned,NULL)
hUSB为通过CreatFile所获得的设备指针;wFunHum为设备操作代码,具体可查阅CYPRESS公司或USBD提供的标准代码;pParam为执行操作的请求数据缓冲区指针;dwSize为数据缓冲区大小,紧跟其后的两个参数分别为操作的输出数据接收缓冲区指针和大小,一般为NULL和0即可;Returned为操作返回指针;最后一个参数为异步操作,为NULL即可。
使用前先定义好请求数据缓冲区,获得设备指针后即可用相应的操作代码对USB设备进行操作了。
以上的设备驱动程序和上层应用软件已在VC6.0下调试通过。
四、总结
通过上述的软硬件改造,使经济型数控与PC之间具备了一个新的接口——USB接口。这种改造有助于提高经济数控系统与PC相配置的灵活性和多样性,甚至我们可以用1台PC来控制一条小型流水线上的所有NC。这不仅大大减少了安装、配置时间,降低了故障率,减少了操作工人数量,更可以与相关软件配合,实现并行制造,使NC的利用率达到最大,并使经济型数控系统扩展了网络功能,可以通过PC连入Internet/Intranet,实现网络化制造。