3 软件设计
软件设计包括2部分内容:下位机CAN通信软件和上位机服务器软件。CAN 通信软件主要有两方面功能: 一是对C8051F040内部CAN控制器的相关寄存器进行初始化配置,包括协议寄存器,消息对象接口寄存器,消息处理器寄存器等;二是控制收发缓冲区的读写,完成数据交换。
处理器将上位机送来的控制指令或NC程序,通过写入内部的CAN数据寄存器来传送给下位机数控机床,又可读取机床写入寄存器的数据发送给控制服务器。因此, CAN通信软件主要包括系统初始化程序、发送程序、接收程序等。采用C结构化程序设计方案,具有较好的模块性和可移植性,对不同系统功能或应用环境,可方便进行编程重组。
3.1 系统初始化程序
初始化程序主要完成初始化设置CAN 控制寄存器(CANOCN) 、位定时寄存器(B ITREG) ,初始化发送报文对象和接收报文对象。其中,位定时寄存器的设置较复杂,使用8MHz外部晶振, CAN通信速率为500 k / s,得到B ITREG的初始值为0x2301。对象初始化、发送和接收初始化完成后启动CAN处理机制(对B ITREG和CAN0CN初始化) 。下面为初始化程序结构:
void start2CAN ( void)
{
SFPRAGE =CAN02 PAGE; / /指向CAN0页面
CAN0CN I = 0x41; / /置位CCE和Init开始初始化
CAN0ADR =B ITREG; / /指向位定时寄存器进行配置
CAN0DAT = 0x2301; / /位率为500 k / s
CAN0CN I = 0x06; / /允许全局中断,置位IE和SIE
CAN0CN& = ~0x41; / /清CCE和IN IT位启动CAN状态机制
}
3.2 发送程序
CAN报文发送由CAN控制器自动完成,只需根据接收的远程帧识别符将对应数据转移到发送缓冲寄存器,将此报文对象编码写入命令请求寄存器启动发送即可。使用定时更新发送报文对象中的数据,数据的发送由控制器硬件自动完成,当其收到一个远程帧时,就将相同识别符的数据帧发送出去。发送程序结构如下:
void send2message ( charMsgNum)
{
uchar j;
SFRPAGE =CAN02PAGE; / /指向CAN0页面
CAN0ADR = IF1CMDMSK; / /向IF1命令屏蔽寄存器写入命令
CAN0DAT = 0x0083; / /位率为500 k / s
CAN0ADR = IF1ARB2; / /指向IF1仲裁寄存器2
CAN0DATH = 0x80;
CAN0ADR = IF1DATA1; / /指向数据场首字节
for( i = 0; i < 4; i ++ )
{CAN0DATH = can2 temp [ i ] ; } / /将4 Byte数据写入发送Buffer
CAN0ADR = IF1CMDRQST;
CAN0DATL =MsgNum; / /写入报文对象编号,数据发送到对应报文对象
}
3.3 接收程序
CAN报文的接收与发送一样,由CAN控制器自动完成,接收程序只需从接收缓存器中读取接收的数据,再进行相应处理即可。基本方法与发送程序一致,只是接收程序采用中断方式。此应用中,主要接收上位机对机床编号的选择,参数设置和NC控制程序以及相反流程的机床状态信息等。接收程序结构如下:
void receive2data ( void)
{
SFRPAGE =CAN02 PAGE; / /指向CAN0页面
CAN0ADR = IF2CMDMSK; / /向IF2命令屏蔽寄存器写命令
CAN0DATH = 0x00;
CAN0DATL = 0x3F; / /位率为500 k / s
CAN0ADR = IF2CMDRQST; / /将报文对象编号写入命令请求寄存器,对应接收
CAN0DATL =MsgNum; / /得到数据就从报文RAM移到数据Buffer中
CAN0ADR = IF2DATA1; / /指向数据场首字节
for( i = 0; i < 4; i ++ )
{ CAN2RX[ i] =CAN0DAT; } / /读取4Byte数据
}
3.4 上位机服务器软件
上位机服务器软件主要功能有NC程序文件数据管理,数控机床的编号管理,数据发送,通信接点及下位机状态监测,下位机数据的上传等,软件功能结构图见图5。软件的规模较大,属于典型的C \S(客户\服务器)模式软件。采用Delphi7. 0进行开发。利用Delphi下安装SPCOMM控件实现串口通信[ 4 ]。由于涉及到文件管理,需要管理多个文件,按加工顺序传输,需要建立数据库系统。采用MicrosoftOffice Access数据库软件建立数据库管理系统。
图5 上位机软件结构