0 引 言
目前开放式数控系统通常采用两个处理器:主控制器和DSP(数字信号处理器)。主控制器负责接受用户的数据输入,显示状态,系统管理功能等,一般用工控机(IPC)作主控制器,也可称为主机。DSP负责运动信号和伺服数据处理,可以是各种运动控制器。为了解决主处理器与DSP之间的通讯问题,数控系统采用了双端RAM,用于实现DSP与主控制处理器之间的高速重复不需握手的数据通信。
双端RAM,具有两套独立的地址、数据线及读/写控制线,它的控制逻辑与存储器集成在一片大规模集成电路内,实现了真正的双端口异步操作,可与多种CPU 接口,使得电路设计简化,集成度提高,数据交换更加快速、可靠。双端RAM 是一种特殊存贮器,其主要特点为:
1)能在两个CPU 之间建立数据通道。双端RAM 拥有两套互相独立的数据、地址和读/写控制总线,可分别与两个不同的CPU 相连,只要不同时操作同一存贮单元,两侧CPU就能互不相干地对其中任一单元进行读/写操作。
2)可作为CPU 外部RAM 使用,即每个CPU 都把双端RAM 作为自己的外部存贮器用。主控制器写入双端RAM中的数据可随时被DSP 读出,同样DSP 写入双端口RAM中数据也能随时被主控制器读出。
3)双端RAM 用于CPU 之间数据交换时,常采用中断方式或令牌方式。中断工作方式在传输数据时需发出中断请求,得到CPU 响应后,硬件发出中断向量,并打断原程序运行,转向执行数据传输中断服务程序。令牌工作方式约定只有得到令牌的一方才能传输数据。一旦令牌被两个CPU 中的一个得到,则另一个CPU 只能等到它用完再传输。
数控系统运行时主控制器将运动命令写入双端RAM,DSP 读取后执行,同时主控制器也从双端RAM 中读出DSP存放的运行状况反馈信息。双端RAM 是一个插在IPC 总线上的独立芯片,与DSP 用电缆连接。双端RAM 可用作快速从DSP 中读出或向DSP 写入数据和命令。
本系统向DSP 写入的典型用法是实时重复下载位置数据和循环程序信息。从DSP 中读出的典型用法是重复得到状态信息。对于本文采用的DSP 支持一些自动功能。自动功能包括DSP 可以自动或由PLC 程序将电机状态、位置、速度及错误信息等连续上载写入双端RAM 中。
1 双端RAM的地址分布
双端RAM在主机端和DSP 内存地址分布是不同的。本文采用了8K X 16bit 的双端RAM。对于DSP,一个字是16 位,双字为32 位,将双端RAM 按双字(32 位)取址,双端RAM 仅被认为是出现在地址空间$ D000 到$DFFF 上的一段多余内存。内存大小为4k 的双字(32位),或8k的单字(16 位)。每个单元的前16 位为该单元的Y分量,后16位为X 分量。DSP 将内存空间$ D000 到$D1FF保留作固定用途,$D200 到$ DFFF 范围内存开放为一般用途。对于主机端,双端RAM 为8k X 16 位的内存。由于大多数计算机按字节取址,这将要求16k的地址空间,即在主机总线上14 位(214 = 16k)。
双端RAM在DSP和主机之间的地址换算可用下式计算:
主机地址=主机起始地址+ 4*(DSP 地址- $D000)+偏移量
其中若要得到Y分量,偏移量=0;若要得到X 分量,偏移量=2。
在本系统中,主机的起始地址为$ 1FC000。反过来,可得到:
DSP地址=0.25*(主机地址-主机起始地址)+$D000
用C 语言写主机程序来读1 号电机的实际位置,可以利用DSP的自动功能将这些数据放在双端RAM的指定位置上。然后,主机程序就可以读取地址$D200的数据,重新装配位置信息以便C语言可以使用。$D200在IPC内存地址由上面的公式容易得到:
十六进制( $D200-$D000)*4+$D4000=$D4800