最新新闻
我要投稿
联系电话:027-87592219/20/21转188
投稿邮箱:tb@e-works.net.cn
您所在的位置:首页 > 智库 > 智能装备

基于双端RAM的数控软件的设计与开发

发布时间:2014-06-15 作者:张 彤 邝子奇  来源:万方数据
关键字:数控软件 数控系统 
数控系统中采用双端RAM实现了DSP与主控制器之间的高速重复不需握手的数据通信。根据双端RAM的通信功能、数据格式及内存地址分布设计出模块化数控软件,主要包括:手动编程模块、程序下载模块、参数设置模块、手动调整模块、自动加工模块等。

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

2
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。