本发明涉及一种用于控制生产线控制系统的线计算机(Line Computer),更具体地说,是涉及安装在这种线计算机中的CPU的功能的改进,从而使计算机工作更平稳。 申请人曾经就一种使用线计算机的生产线控制系统递交了一个美国专利申请,该申请现已批准为第4870590号美国专利。该专利中描述的线计算机在本发明中被当作先有技术。
首先,解释一个线计算机的CPU板周围的外设电路的构成。
图1示出了一个常规的线计算机系统的主要部分,其中使用了以25MHZ或33MHZ工作的高速CPU68020或68030以及低速工作的I/O设备。
在图1中,CPU1通过数据总线DB、地址总线AB和其它信号线与主存贮块2和低速I/O设置31和32相连。地址信号ADR、读/写信号R/ W、地址选通信号 AS和数据选通信号 DS从CPU,送入至一个译码器4中。芯片选择信号 CS1和 CS2从译码器4输出至I/O设备31和32中。此外,每次当各个电路块发送或接收数据时,还向一根单独的信号线发送出数据选通应答信号DSACK,DSACK1和DSACK2。
图2是表示上述系统工作情况的时序图。假设CPU1已为I/O设备31开始了一个读周期,则CPU1先送出地址ADR。地址选通信号 AS(L)、和数据选通信号 DS(L)。译码器4对这些信号进行解释,然后向I/O设备引送出片选信号 CS1(L)。I/O设备31对上述信号作出反应,把与地址ADR相对应的读出数据送到数据总线DB上。CPU1根据数据选通应答信号 DSACK1(L)引入该读出数据。读周数到此结束。
下面,假定CPU为I/O设置32开始了一个写周期,CPU1先送出地址选通信号AS(L),过后又送出数据选通信号DS(L)。译码器4解释这些信号,然后向I/O32送出片选信号 CS2(L)。
另一方面,CPU1向数据总线DB送出写入数据。引入这个写入数据后,I/O设备32把数据选通应答信号 DSACK2改成“L”状态。写周期到此结束。
图中示出的系统就这样重复执行上面说过的读周期和写周期。这一常规系统有如下问题:
(1)在该常规系统中,地址选通信号AS(L)一旦周期开始就需建立,直至周期结束前才撤消。这样一来,地址信号ADR地建立时间t1和保持时间t2对低速I/O设备来说就太短了,不能保证可靠地工作。因此,对这些低速I/O设备而言,处理时间显得不足。
(2)在该常规系统中,在前一数据选通应答信号 DSACK1还没变成高阻抗时,下一个数据选通应答信号 DSACK2就已有效(L)。在这种情况下,在同一线上就会有冲突时间为t3的信号冲突。
(3)在该常规系统中,写周期偶尔也会在读周期以后执行。此刻,如果在上次的读出数据还在数据总线DB上存在时就从CPU1同一数据总线中送入写入数据的话,在时间t4期间就会在这二个数据之间发生冲突。
(4)写周期结束前,数据选通信号DS(L)就已被取消,这样,写入数据的保持时间t5对低速I/O设备而言就显得不足。
本发明的一个目的是克服先有技术中存在的上述缺点。
本发明的另一个目的是在一个使用高速CPU和低速I/O设备的系统中产生具有足够的时间空隙的总线时序。
图1.是表示一个常规的线计算机中的主要部分的方框图。
图2.是表示图1所示装置的工作的时序图。
图3.是表示根据本发明的线计算机中的一个主要部件的方框图。
图4.是表示根据本发明的装置的工作情况的时序图。
图5.是表示本发明的另一台线计算机的主要部件的方框图。
图6.是一个把本发明的线计算机用作生产线控制系统的总系统的示意图。
图7.是表示本发明的线计算机的一块CPU块的方框图。
图8.是表示本发明的线计算机中使用的一个日历时钟的部分电路结构的示意图。
图9和图10.是表示图8所示的日历时钟的工作情况的时序图。
图11.是表示本发明的线计算机中所使用的字符显示控制部分的结构的方框图。
图12.是表示图11中所示的字符显示控制部分的工作情况的时序图。
图13.是表示本发明的线计算机中安装的I/O板的连接情况的示意图。
图14.是表示本发明的线计算机中安装的I/O板的硬件概念的示意图。
图15.是表示本发明的线计算机中安装的I/O板的软件概念的示意图。
图16.是表示本发明的线计算机中安装的软盘驱动器的连接情况的示意图。
图17.是表示当不同语言的程序被装入本发明的线计算机中时用户存贮区域中软件程序的分配情况的示意图。
图18和19.是表示转换C库的工作情况的示意图。
图20.是表示装入编译型语言程序时系统的工作情况的流程图。
图3中示出了本发明的总线时序调整电路5的方框图。
这个总线时序调整电路的结构特征是在常规装置中安装译码器的地方安装了缓冲器5b和控制电路5c。
设置缓冲器5b是为了分割连接着I/O设备31和32的数据总线DB。S数据表示在CPU1和缓冲器5b之间传送的数据,而P数据则表示在缓冲器5b和I/O设备31,32之间传送的数据。有了缓冲器5b的存在,上述这些数据就不会在数据总线DB上发生冲突。
控制电路5c从CPU1接收地址选通信号AS(SAS)(L)和数据选通信号DS(SDS)(L),并起到使这些信号延迟的作用。此外,控制电路5c还把这些信号作为片选信号PCS1,PCS2(CS1,CS2)(L)送往I/O设备31和32。在比地址选通信号AS和地址选通信号DS都取消的时间快的一段固定时间内,片选信号PCS1,PCS2(L)的传送被禁止。读/写信号R/W也输入到控制电路5c中。当CPU1开始一个写循环时,控制电路5c根据地址选通信号AS(L)和数据选通信号DS(L)向缓冲器5b送出缓冲器使能信号BUFEN。当CPU1开始读循环时,控制电路5c除了缓冲器使能信号BUFEN还产生用于锁存从I/O设备31和32来的数据的锁存定时信号。
也就是说,根据缓冲器使能信号BUFEN和读/写信号R/W(DIR信号),可以确定缓冲器5c中的数据应该送至数据总线DB的那一侧。
另外,控制电路5c还接收数据选通应答信号PDSACK(DSACK1,DSACK2),并且向CPU1送出数据应答信号。缓冲器5b接收读/写信号R/W,并把这个信号用作DIR信号来确定缓冲器5b的输入或输出方向。具体地说,IC7464b可以用作缓冲器5b,同时可以用一块逻辑电路来作为设定上述逻辑的控制电路5c。
图4是表示总线时序调整电路5的工作情况的时序图。假定CPU1开始了一个读周期,它发出了地址信号ADR和读/写信号R/W(H),并且确定了地址选通信号AS(SAS)(L)和地址选通信号DS(SDS)(L)。此时,缓冲器5b的I/O方向DIR处于H(高)状态。控制电路5c的作用是把地址选通信号SAS(L)和数据选通信号SDS(L)延迟一段时间t1′,产生内部地址选通信号PAS(L)和内部数据选通信号PDS(L)。控制电路5b还根据地址ADR的值向I/O设备31或32送出片选信号PSC1(L)和PSC2(L)。
这样,读出的数据PData将根据地址ADR从一个指定的I/O设备送至数据总线DB。与此同时,数据选通应答信号PDSACK(DSACK1或DSACK2(L))也从该I/O设备送出。
控制电路5c还向缓冲器5b送出锁存定时信号BUFCK(H),使读出的数据PData存在缓冲器5b中。控制电路5c此时的作用是禁止内部地址选通信号PAS(L),内部数据选通信号PDS(L)和片选信号PCS1(L)。
接着,控制电路5b的作用是在必要的期间向缓冲器5b送出使能定时信号BUPEN(L)。这样,读出的数据SData将被送至CPU一侧的数据总线DB上,控制电路5C接着发出数据选通应答信号SDSACK(L)。根据这个信号,CPU1引入数据SData,读操作也就到此完成。
同样,现在假定CPU1开始写周期,CPU1先建立地址信号ADR,读/写信号R/W(L),地址选通信号SAS(L),稍过一会又建立起数据选通信号SDS(L)。接着,CPU1送出写入数据SData。控制电路5C的作用是使地址选通信号SAS(L)和数据选通信号SDS(L),并且与上面的读周期中同样的方式产生内部地址选通信号PAS(L)和内部数据选通信号PDS(L)。控制电路5C还根据地址信号ADR的值向I/O设备31或32送出片选信号PSC1(L)或PSC2(L)。由于存在上述的延时,信号线PDSACK的状态为高阻抗(时间t3′)。此时,缓冲器5b的I/O方向DIR被读/写信号R/W置为L状态。
接下来,控制电路5C向缓冲器5b送出使能信号BUFEN(L),使得写入数据SData通过缓冲器5b。这样,控制电路5c起到了把写入数据PData送至I/O设置一侧的数据总线DB中的作用。
I/O设备在引入写入数据PData以后送回数据选通应答信号PDSACK(L)。
接下来,控制电路5c撤消内部地址选通信号PAS(L)、内部数据选通信号PDS(L)和片选信号PCS1(L)或PCS2(L)。再接下来,控制电路5c撤消缓冲器使能信号BUFEN(L),并且向CPU1送出数据选通应答信号SDSACK。
由此而引起的结果是,CPU1撤消地址选通信号SAS(L),数据选通信号SDS(L),再撤消数据选通应答信号SDSACK(L)。写周期到此结束。
如上所述,控制电路5c的作用是使CPU1送出的地址选通信号SAS(L)和数据选通信号SDS(L)延迟从而产生片选信号PCS1(L)或PCS2(L),此外还在CPU1来的地址选通信号SAS(L)和数据选通信号SDS(L)被撤消之前禁止内部数据选通信号PDS(L)和片选信号PCS1(L)和PCS2(L)的发送。这样,本发明具有下列优点:
(1)地址信号ADR的设置时间t1和保持时间t2可以占据足够的时间。
(2)当前次的数据选通应答信号PDSACK(L)的发送结束时,将在足够的时间t3′内保持高阻抗状态。
(3)在写周期内,写入数据PData可以占据足够的保持时间t5′。
另外,由于在本发明中缓冲器5b是设置在CPU1与I/O设备31和32之间,因此,可使CPU1送出的和I/O设备31和32送出的数据分离,这样可以避免前一周期内的数据与当前周期内的数据在数据总线DB上发生冲突这一缺点。也就是说,可以时间t4′内确保高阻抗状态。
图5示出了总线时序调整电路51和52被用在一个装有高速缓冲存贮器的系统中的一个实例。在本例中,第一总线时序调整电路51设在高速总线B1′段(CPl11与高速缓冲存贮器6连接处)和中速总线B2′段(主存贮块2连接处)之间,第2总线时序调整电路52设置在中速总线B2′段和低速总线B3′段(I/O设备3与ROM7相连接处)之间。
上述的第一和第二总线时序调整电路51和52与图3中的电路结构相似,因而功能也相似。因此,CPU1能以最佳速度访问每一块。
根据本实施例,CPU1在高速总线B1′段能以高速度工作,因而可以发挥其最大性能。在一方面,在低速总线B3′段,低速I/O设备3可以低速工作,这样可以确保其操作。这样,可以构成一种具有优异的价格性能比的系统。
现在看图6,图中一台线计算机10与传输总线TB相连,与该总线相连的还有一台线控制线40。计算机10对通过生产线20的产品3进行各种各样的处理操作。
计算机10从线控制器40收集数据,也向它发出指令。计算机10如果需要的话还输出来自线控制器40的数据,用来通过打印机50进行注册。与总线B相接的线计算机10安置在一个中央控制室中,它与其它线计算机和中型或大型的宿主机60进行通信,从而能借助常规的标准信号传输线(如RS232C)传送生产线20的状态信息。
控制机40直接控制条形码阅读器21的操作,条形码阅读器通过RS232C读出通过生产线20(例如一条自动检验线)的产品码;CRT22显示输出结果;测试器23(比方说一个电压测试器)用于测试通过GP-IB线的产品的工作情况;视觉传感器24用于外观测试,致动器25用来根据视觉传感器的输出信号选择合格或者不合格的产品;计数器26用于对合格或者不合格的产品进行计数。
本发明是一台CPU板上装有总线时序调整电路的线计算机。
图7是这样CPU板100的方框图。
在本例中,上面提到的总线时序调整电路被用作32/16位转换器101。与32位高速总线B1连接的有:高速工作的主处理器102(时020,b8030)。控制主存贮器MM的存贮器控制器103,DMA控制器104、VME-总线控制器105和外设控制器106。DMA控制器104控制着数据从主存贮器MM至装有硬盘的SCSI控制器107或者至装有软盘的FDD控制器108或者方向相反的传输,VME-总线控制器105控制着与总线VME-总线B2相连的可选通信I/O板C1,C2,…Cn。这些可选I/O板C1,C2,…Cn可以用作BSC通信,以太网通信,GP-IB通信,或者MAP通信。
外设控制器106与8位总线B3相连,与这条8位总线相连的还有ROM109,从属处理器110,以及通信处理器111。通信控制器111的作用是用作打印机50,键盘KB和传输线RS232C的接口。
从属处理器110中装有日历-时钟112,该日历-时钟112具有日历功能、时钟功能以及用于中断软件时钟的中断功能。从属处理器110此处还处理用于检测冷却风扇或温升异常的异常检测装置113送来的信号。此外,从属处理器110还处理通过通信控制器111,串行通信处理(RS232C)送来的键盘输入,并根据打印机驱动指令控制打印机50。
由于从属处理器10的功劳,主处理器102的负担大大降低,这样,主处理器102可以平稳地工作。
另一方面,32/16位转换器101把接有低速I/O设备的16位总线B4与高速32位总线B1相连。在本例中,ROM114(128KB)、通信接口115、图形控制器116,CRT显示控制器117与16位总线B4相连。显示存贮器118与CRT显示控制器117相连。图形控制器116、CRT显示控制器117以及显示存贮器118构成了一个CRT显示控制块。
如上所述,32/16位转换器101能够调整高速主处理器102以及低速I/O设备的工作时序,从而确保足够的时间空隙。
实现软件时钟的中断是为了减少从属处理器110中放置的日历-时钟112的时间误差。
在常规结构中,一般使用分离的多个时钟发生器来为CPU产生一个实时时钟和产生一个运行软件程序的标准时钟。电源接通时,当前时间是通过把从软件计时器计数得到的一个值加在从时时钟读出的时间上计算得来的。因此,当计算机系统连续运行很长一段时间(几个月)时,在实时时钟指出的值和软件计时器计数得到的值之间会产生时间误差。这样,在常规结构中的这种情况下就很难识别出正确时间。
在本发明中,即使计算机系统运行很长时间甚至计算机系统的电源被开/关切换,用于识别软件程序的时钟仍能正常地工作。其原因是,在本发明中使用同一时钟为软件定时器产生标准时钟以及产生实时时钟,这样,软件计时器和实时时钟之间的软件误差不会积累起来。
在本发明中,由第一计时装置和第二计数装置构成的用于为软件计时器产生中断信号的装置被用来减少上面提到的时间误差。第一计数装置使软件计时器中断一段固定时间(第一设定值),接着,第二计数装置使软件计时器中断一段固定时间(第二设定值)。这两个第一和第二计数装置被交替地切换,从而消除上述的误差。
图8中示出了软件计时器中断信号产生装置的一个例子。假定每10ms执行一次软件计时器中断。标准时钟发生装置1211输出32.768KH2的时钟信号作为实时时钟。分频器1212对上述的32.768KH2的时钟信号进行4分频,输出8.192KH2的时钟信号。第一计数器1213,第二计数器1214,第三计数器1215和第四计数器1216是4位升值计数器。触发器电路1217用来切换工作模式,并给各个计数器发出改变初始计数值的指令。
电源监测装置1218监测电源的开/关状态、电源故障及恢复,并根据电源接通时产生的信号DCFAIL向各个计数器送出用来设定计数值的加载信号ID。
下面将描述分频后的时钟信号CK8.192KH2和中断软件计时器10ms的作用。
经分频的时钟信号CK(8.192KH2)的周期约为0.112ms。即使这个值被设成整数倍,结果却不会等于10ms.也就是说,对81个分频后的时钟信号计数需要9.887ms,另一方面对82个分频后的时钟信号进行计数需要10.009ms。中断是在计数计到81或82个分频后的时钟信号时执行的。这样,可把允许误差保持在1%之下。如果有23次计到了82个分频后的时钟CK,有2次计到了81个分频后的时钟CK,分频后的时钟信号的总个数为:
82×23+81×2=2048
如果这2048个分频后的时间信号被转换成时间,那就相当于250ms。如果中断是每250ms(2048个时钟信号)执行一次;中断周期将是10ms的整数信(25倍)。
在这种情况下,上面提到的小于1%的误差就不会积累起来。
图9是表示设备的初始状态的时序图。加电时,信号DCFAIL转为H,设备产生加载信号LD(L)。其结果是:第一计数器1213设定为“E(十六进制)”,第二计数器1214设定为“A(十六进制)”,第三计数器1215设定为“q(十六进制)”第四计数器1216设定为“E(十六进制)。”第一计数器1213和第二计数器1214构成模82计数器。第三计数器1215和第四计数器1216构成模23计数器。
图10是表示本发明中的日历时钟的工作情况的时序图。
模式1表示触发电路1217处于复位状态。在时间t1开始时,第一计数器1213设置为“E(十六进制),”第二计数器1214设置为“A(十六进制)”,此外,第三计数器1215设置为“9(十六进制)”,第四计数器1216设置为“E(1216)。”
本发明中的日历时钟从这个状态开始对分频后的时钟CK进行计数。第一计数器1213每当对时钟CK计数计到F时产生进位输出CACH)。第二计数器1214对第一计数器1213送来的进位输出进行计数。第一计数器1213和第二计数器1214在时间间隔t1内计到了82个经分频的时钟CK,从距开始经过10.009ms时发出10ms中断信号(H)。
第三计数器1215和第四计数器1216构成模23计数器,对第一计数器1213的进位输出和第二计数器1214的进位输出CA的AND(逻辑与)信号进行计数。也就是说,这个模23计数器在对82个经分频的时钟CK进行计数这一操作重复23次(第一设定值)时产生一个输出。
在第三计数器1215和第四计数器1216的进位输出的基础上,触发电路1217被从复位状态转换成置位状态,设备状态也改变成模式2。
在该模式下,第一计数器1213被设置成“F(十六进制)”,第二计数器1214被设置成“A(十六进制)”,这两个计数器形成了一个模81计数器。第三计数器1215被设置成“E(十六进制)”,第四计数器1216被设制成“F(十六进制)”。它们构成一个进制计数器。
在模式2下,第三计数器1215和第四计数器1216计数每计到81个经分频的时钟信号CK时,即每过9.887/ms向软件计时器发出一个10ms中断信号。第三计数器1215和第四计数器1216在计到81个经分频后的时钟CK这一操作重复2次(第二设定值)时都产生进位输出CA。
根据这些进位输出,触发器电路1217又从置位状态转换成复位状态,设备状态也改变为模式1。
简短地说,本发明中的日历时钟的工作情况如下:
在第一模式下,对82个经分频的时钟信号CK进行计数这一操作重复82次,每次操作还产生一个10.009ms的中断信号。接着,设备转入第二模式。在该模式下,对81个分频了的时钟信号CK进行计数这一操作重复2次,而且每次操作产生一个9.887ms的中断信号。
根据上述的操作,本发明的日历时钟可以为软件计时器产生没有时间误差的中断信号。
另外,本发明的日历时钟还可以根据电源监测电路1218送来的信号DCFAIL为设备设置初始状态,即使电源在操作时被切断,也能重新开始产生中断信号的操作。
正如上面所述那样,本发明中用来运行软件程序的日历时钟能够正确地工作,即使在计算机系统连续运行很长一段时间或者电源在操作中关断也不会产生误差。
回到图7,16位总线B4包括128KB的ROM114和与其他线计算机或者其它线控制器相连的通讯插口115,从而可以进行数据交换。16位总线B4还包括参与图形显示的图形控制器116和装有显示存贮器118的CRT显示控制器117。图形控制器116把图形数据写入显示存贮器118的一个帧缓冲区域中。显示存贮器118还有一个存贮字符的显示数据的区域,这样,CRT控制器117可以用图形数据和字符数据混合进行CRT显示控制。在本发明中,上述的目的是通过一个结构简单、使用少量的芯片和片电路的线计算机来实现的。
也就是说,在本发明中,单个存贮元件的存贮区域被划分成多个区域,每个区域中用于存贮字符编码、属性数据及字形图案。
显示操作开始时,字符控制装置在一个显示周期内执行分时操作,使得读编码区域、读属性区域、对CPU进行读/写访问,以及读字区域这些操作在一个显示周期内以分时的方式完成,或者使得读码区域和属性区域、对CPU进行读/写访问以及读字形区域这些操作在一个显示周期内以分时的方式同时进行。
图11是表示本发明的字符显示装置的结构的方框图。该实施例的结构特征是单一的RAM201被划分为3个存贮区域,即编码区域201a。属性区域201b及字形区域201C,各区域中分别存贮有上面说过的字符编码、属性数据和字形图案。
当主处理器102发出指令进行字符显示时,CRT控制器202产生用于扫描的显示地址信号。字形图案根据这个显示地址送至移位寄存器203。属性控制器204根据这些字形图案和属性信息进行CRT显示。
下面详细描述该装置的结构和功能。
CRT控制器202产生的显示地址n送至选择器S的SO端和属性地址转换器205。这个属性地址转换器205从CRT控制器202接收显示地址n,并在属性区域201b中产生扫描地址,从而读出与存贮在编码区域201a中的字符编码直接对应的属性数据。接下来,属性地址转换器205把一个经转换的地址送至选择器S的S1端。
选择器S的SO端的显示地址n送至RAM1041中的编码区域201a,从而读出相应的字符编码。读出的字符编码先被锁存在编码锁存器C2中,然后再送至字形地址转换器206。
字形地址编码转换器206把送来的字符编码转换成字形地址编码,从而从RAM201的字形区域201c中读出相应的字形图形,并把这个字形地址送至选择器S的S3端。
从RAM201中读出的属性数据和字形图案分别被锁存在属性锁存器AL和字形锁存器FL中。
另一方面,与CPU相连的地址总线AB选择器S的S2端相连,数据总线DB与总线驱动器BD相连。
时序控制器207是选择器S,属性锁存器AL,和字形锁存器FL的时序控制块。
下面根据图12中的时序图来描述该装置的功能。
显示周期T从显示地址n从CRT控制器207送来时开始。使用时序控制器207的时序输出信号,选中选择器S的SO端,接着根据显示地址n从RAM201的编码区域201a中读出字符编码CDn,读出的数据被锁存在编码锁存器CL中(时间t1)。
接下来,选中选择器S的S1端,把属性控制器204的输出(地址n为属性地址区域+偏移量)送至RAM201的属性区域201b中。根据这个属性地址把属性数据ATn用属性锁存器AL锁存起来、(时间t2)。在这种情况下,属性数据ATn被延迟鉴定串行显示图案数据所需的一段时间。
接着,选择器S的S2端口被选中,在周期t3中,主处理器1对RAM201根据从主处理器1送出的地址执行随机存取。另外,S3端口被选中,根据从字形地址转换器20b送出的字形地址对RAM中的字形区域201C进行访问。读出的字形图案np用字形锁存器FL锁存起来(周期4)。
在下一个显示周期T1(其显示地址为n+1)中,以与上面相同的方式从RAM201中读出显示数据。另一方面,字形锁存器FL中的字形图案np(np0,np1,np2…)加载在移位寄存器203中。这些字形图案np将和来自属性寄存器AL的属性数据ATn一起被送入属性控制器204中。再接下来,用CRT执行显示。
如上所述,在本发明的设备中,RAM201被分成多个区域,不同的数据分别存贮在这些区域中。在1个显示周期内,访问RAM通过分时处理的方式执行。如果数据的宽度足够大,则同时访问字符编码CDn和属性数据ATn。
在字符显示控制器中,存贮区域被分成多个区域。编码数据、属性数据以及字形数据就存贮在各个部分内。显示这些数据时,先把数据以分时的方式以各个区域中读出。这样,本发明中存贮元件的数量可以减少。
此外,在图11中,如果CRT控制器202,移位寄存器203、属性控制器204、属性地址转换器205、字形地址编码转换器206、时序控制器207、选择器S、编码锁存器CL、字形锁存器FL、属性锁存器AL以及总线BD可以由门电路阵列构成的话,插脚数可以做得最少,总线元件数量也能显著下降。
现在回到图7。下面再来描述与32位总线B1相连的VME-总线控制器105的外围设备。VME-总线是通过VME-总线B2控制I/O板C1,C2,…的控制块。上述的I/O板C1,C2,…是电路板形式的、用于处理通讯的可选设备。
具体地说,这些I/O板包括(比方说):
(1)一块具有能与其它线计算机相连的接口的I/O板,
(2)一块具有起低-电平控制器作用的接口的I/O板,这里的低电平控制器在场指令之间为下列信号如触点信号、模拟信号或数字信号等执行信号发送和信号接收。
(3)一块具有与辅助存贮器(如盒式磁带设备)或软磁盘设备的接口的I/O板,
(4)一块具有能与GP-IB装置工作的通讯设施的I/O板,
(5)一个具有满足下列标准如RS232C、RS422或RS485等等的接口的I/O板,
(6)一块在半导体制造设备的计算机之间根据SECS(SEMI Equipment Communication Standard,SEMI:Semiconductor Equipment and Materials Institute)等通讯步骤构成的I/O板,
(7)一块支持BSC(Binary Synchronoul Communicatien)通讯的I/O板,
(8)一块支持以太网通讯的I/O板,或者
(9)一块支持MAP(Manufacturing Automation Protocol)通讯的I/O板。
在常规设备中,装在每块I/O块上的电路板驱动器使用计时器监测主存贮器102访问的I/O板送来的响应,检测I/O板故障。但是在常规设备中,当I/O板由于硬件故障或软件故障而处于不工作状态时,主处理器那边直到计时器中时间到才能注意到I/O板的故障。
因此,常规设备就具有下列缺点:故障造成的后果会扩散至整个系统,造成整个系统瘫痪,或者引发某些故障。
在本发明中,有块I/O板的异常情况被及时通知给主处理器,这样故障的后果可以限制在最小范围内。也就是说,在本发明中,当I/O板自身检测到异常时,它就送出一个故障信号。板驱动器从主处理器收到该故障信号,接着把自诊断指令送给相应的I/O板。
如果自诊断的结果为异常,上述的I/O板将被隔离,上述的板驱动器也被视为有故障驱动器。
图13中的示意图示出了本发明异常检测的系统概念,图中包括了主处理器102,VME-总线控制器105,以及多个I/O板C1,C2,…Cn。图中,电路板100通过VME-总线控制器105与多个I/O板C1,C2,…Cn相连。用于向CPU板100输出故障信号PAIL的电路板控制电路CC被安装在每个I/O板上。
CPU板100中,装有用来检测电路板异常的装置1081,该装置1081的作用是当电路板控制电路CC送来FAIL信号时产生诊断请求信号,另外,每块I/O板C1,C2,…Cn上都装有电路板驱动器1082。
电路板驱动器是由图7中所示的主处理器1082、主存贮器MM和VME-总线控制器105执行的软件。该电路板驱动器1082包括下列功能:
(1)控制I/O板的常规操作的正常功能,
(2)自诊断功能1082a:根据自诊断请求RR进行诊断,异且接收自诊断结果ST,
(3)功能1082b:根据自诊断的结果ST把有故障的I/O板和CPU分离,把有关的板驱动器1082设为有错状态,从而中止该电路板驱动器的工作。
图14中的示意图示出了本发明的硬件的概念性结构。在这个结构中,VME-总线控制器105由门电路陈列构成,此外在每个I/O板上还装有门电路陈列BG。当安装的I/O板工作变得异常(或正常)时,I/O板上的门电路陈列BG产生(或者中止)故障信号FAIL,并通过一个内部寄存器发送出I/O板的正常(或异常)状态。
另外,故障信号线设置在VME-总线B2之内,从而也可以通知I/O板方面发出的故障信号PAIL。VME-总线控制器105的作用是把故障信号FAIL作为中断信号IR向主处理器102送出。
图15是表示本发明的软件的慨念性结构。这个软件慨念包含下列各项:
(1)把故障信号FAIL作为中断信号IR接收的故障信号检测驱动程序S1,
(2)由上述的故障信号检测驱动程序引发的板异常应答任务S2,
(3)由板异常应答任务S2要求自诊断操作的板驱动程序1082,
(4)操作板驱动器1082的用户程序S5。和寄存器S4是I/O板上的软件
固件和寄存器S4是I/O板上的软件块,板驱动器1082用它来执行自诊断操作。
下面描述上述结构的功能:
假设I/O板一侧出现异常,一个看守计时器发出异常通知,I/O板上的门陈列BG在总线B2送出故障信号FAIL。VME-总线控制器检测到了总线B2上的故障信号FAIL,即向主处理器102发出中断信号。
一旦主处理器102接收到中断信号IR,就执行图15中所示的软件。也就是说,信号检测驱动器1检测到中断信号IR,就把异常情况通知板异常应答任务82。当板异常应答任务S2检测到I/O板异常时,就把状态通知板驱动器1082,该板驱动器再要求相应的一块I/O板执行自诊断。自诊断由板驱动器1082执行。
板驱动器读I/O板上的门电路陈列BG电的一个内部寄存器,以确认I/O板是否处于异常状态。
当板驱动器1082应答上述的异常状态时,该板驱动器1082将影响门电路陈列BG,从而禁止故障信号FAIL发出。与此同时,板驱动器1082将它自己改变成误差状态,这样,它就不会访问有故障的I/O板。从硬件的角度也可以这样推定:板驱动器1082的作用是使上述的I/O板和CPU板分离开来。结果,即使用户程序S5对变成误差状态的板驱动器1082进行了访问,板驱动器1082也会答以误差信号。从软件的角度可以这样认为:板驱动器1082的作用是使I/O板与CPU板100分离开。
如上所述,在本发明中,从硬件和软件二个角度来看,有故障的I/O板可以及时地与CPU板100分离。这样,使用本发明可以把每块I/O板的异常及时地通知主处理器102,这样,故障(如系统停机或者暂停)所造成的影响可以限制在最小范围内。
回到图7,下面描述软盘驱动控制器108。举个例子来说,有一个3.5吋软盘驱动盘驱动盘FD1与软盘驱动控制器108相连。此外还常常有这样的要求:即要求有5吋软盘驱动器或8吋软盘驱动器作为系统扩展与之相连。一般来说,5吋软盘驱动器和8吋软盘驱动器均以菊花链连接方法与3.5吋软盘驱动器FD1相连。
但是,在常规的菊花链系统中,一旦具有端口电阻的尾端驱动器被去掉,该菊花链呈开放状态,因此有必要在新的尾端驱动器中新装一个端口电阻。另外,当把所有的软盘驱动器从菊花链上拆除时,在主体单元10的内部也必须装上一个端口电阻。
当尾端软盘驱动器的电源被切断时,该端口电阻上的信号也由上拉状态变为下拉状态。
在这种情况下,要想对3.5吋软盘驱动器FD1执行读/写访问是不可能的。
为了克服上述缺点,在本发明的菊花链系统中,在与该菊花链相连的所有软盘驱动器中都安装了端口电阻。这样,可使任何软盘驱动器都是可以自由拆卸的。另外,在每个软盘驱动器中,缓冲器是和内部接收器并行地设置的。这样,即使这些软盘驱动器中的任何一个被关断,也不会发生有害效应。
图1b是表示本发明中软盘驱动器的连接情况的示意图。
在本例中,5吋软盘驱动器FDZ和8吋软盘驱动器FD3通过菊花链结构通过连线L1和L2连接至主体10中为3.5吋软盘驱动器设置的传输/接收端口FD10中。
动器设置的传输/接收端口FD10中。
本系统的特征在于各个软盘驱动器中的端口电阻FD1Z,FD2Z和FD3Z与传输/接收端口中的FD1O,FD2O和FD3O的菊花链接收器FD1R,FD2R和FD3R相连。
另外,本系统的另一个特点在于:缓冲器(接收器FD1I和驱动器FD1A)与主体单元10中的菊花链FD1R并行连接。
5吋软盘驱动器FD2中的缓冲器(接收器FD2I和驱动器FD2A)也是以上面同样的方式和菊花链接收器FD2R并行连接的。
也就是说,在本系统中,在与菊花链相连的所有软盘驱动器中都装了端口电阻,每一个软盘驱动器都通过缓冲器(接收器和驱动器)以下一个软盘驱动器相连。
现在假定5英寸软盘驱动器FD2或8吋软盘驱动器FD3在操作中不再需要,当这些软盘驱动器中的一个被从系统中拆除时、被拆掉的软盘驱动器前面的软盘驱动器就变成新的尾端驱动器。此时,由于所有的软盘驱动器中都有端口电阻,因此,在新的尾端驱动器中没必要安装端口电阻。
现在假定把一个新的软盘驱动器与一个菊花链相连,由于这个驱动器也装有端口电阻,因此不会发生有害效应。
接下来,假定5吋软盘驱动器FD2或者8吋软盘驱动器FD3在工作中电源被切断,由于主体单元10中的软盘控制器108的驱动器108D送出的输出信号与该外部软盘驱动器的接收器FD1I和驱动器FD1A相隔离,由此软盘控制器108不会接收到因该外部软盘驱动器的电源被切断而产生的有害效应。
具体地说,外部软盘驱动器的信号输可以采用集电极开放型,这样主体10和各个软盘驱动器就不会接收到因其它软盘驱动器的电源被切断而产生的翻转效应。
采用上述这些软盘驱动器连接系统可得到下列优点:
(1)当尾端驱动器从菊花链中拆除时,在尾端驱动器前面的那驱动器中没必要安装单口电阻。
(2)另外,即使在外部软盘驱动器的电源被通断切换时,本发明的系统也不会接收到任何翻转效应。
(3)软盘驱动器可以自由地从主体上拆、装。
(4)因为电源可以随意地开关,因此系统结构的改变相当容易。
下面将描述装入上述硬件结构中的软盘程序。
在工厂自动化设备中,线计算机控制安装在生产线现场的各种设备,这种线计算机装有解释型语言,以便进行实时处理。在通常情况下这些控制程序使用BAS1C解释型语言写成的。当控制程序被输入时,安装在线计算机中的BAS1C解释程序产生中间码,接着通过对这些中间码解释的方式来执行控制程序。
程序语言也可以包括编译型语言(如C语言)或者上面提到的解释型语言以外的语言。在程序是用编译型语言写成的情况下,程序可以以很高的速度执行,这是因为编译程序已经把这些程序转换成了可以执行的程序。
在工厂自动化场合下,还会有这种需求,即在需要高速处理的地方必需使用编译型语言。实际上,用编译语言描述的控制语言与日俱增。
但是在常规的装置中,要使用存在于存贮器的用户区域中的解释型语言的中间字区域中的编译型语言把程序转变成可执行形势是很困难的。
其原因如下:
(1)系统的解释程序没有配备装入这种可执行型程序功能。
(2)由于从解释型程序向执行型程序中输送变量的方法与语言的类型有关,因此,其间的接口不能唯一的确定。
(3)和执行型程序中的与位置有关的编码相对应的地址值在解释型语言程序改变时会受到影响。
本发明中,编译型语言形成的执行型程序可包括在语言程序之中,使解释型语言构成的执行型程序包括在解释型语言程序中的方法如下:
(1)解释型语言程序中的变量,根据适配过程置入执行型程序中并维持设立主函数
(2)每次当解释型语言程序被执行时,执行型程序中的静态变量被从数据区域拷贝到第一静态区域。
(3)当解释型程序涉及在运行前处理中被修改过的地方时,执行型程序中由所有与位置有关的编码所提定的分支终点地址被重写。
经过上面的过程以后,系统就能允许各种程序共存。
图17.表示软件程序在用户存贮区域A中的分布。其中由编译型语言写成的执行型程序装在解释型程序的中间区域A1中。在本例中解释型语言用的是BASIC语言,编译型语言用的是C语言。
也就是说,存贮器的用户区域A由设置BASIC中间字的BASIC中间字区域、设置C语言库的C库区域A2和设置机器语言库的机器字库A3构成。
在通常的操作中BSI读取BASIC中间字区域并加以执行。
另外在C库区域A2中设置了适配区域A21,用于存贮用户实际使用的编码的编码区域A22、用于存贮初始值被设定的静态变量的第一静态变量区域A23、用于存贮初始值未被设置的静态变量的第2静态变量区域A24、用于存贮静态变量初始值的A25、用于重写编码区域A22中的与地址有关的编码的地址值的地址转换表A26。
在常规装置中,用户区域中的执行型C语言库由编码区域A22第1静态变换区域A23、第2静态变量区域A24构成。但是在本发明中该区域中还附加设置了适配区域A21、数据区域A25和地址转换表A26。
现在描述这些区域A21、A25、A26的详细功用:
BASIC解释程序BSI通过一个公共接口调用一个适配区域A21,该公共接口的作用是能把被编译过的执行程序当做子程序来调用。
适配区域A21中的程序能把BASIC中间字中的各种变量堆放在一个堆栈中,并且调用C库中的主函数。
用于设置在第一静态变量区域A23中的初始值数据被存贮在数据区域A25中,并且在BASIC解释程序ASI的预运行被执行时拷贝到第1静态变量区域A23中。第2静态变量区域A24中存贮的是没有设置初始值的静态变量。这些变量在上面的预运行被执行时被初始化至0。
BASIC解释程序BSI的预运行是指在程序执行之前为确保在执行期间要使用的数据或执行表区域而进行的处理。
这样,如果C语言程序装入BASIC中间字区域后,BASIC语言被修改的话,用户存贮区域A中的C语言库的位置有可能会移动,这是因为C语言库中包括与位置有关的编码(如:转移指令或跳转指令)。
当C语言库的位置移动时,由内部指令码所指定的转移终点地址也相应的从被实际执行的指令码的地址发生移动。这样就很难正确的执行C语言库。
在本发明中,由BASIC程序的运行前处理,根据地址转换表A26完成与位置有关的编码的转移终点地址的转换。
图18表示了地址转换表A26的结构。其中,为每个与位置有关的编码分配了一个表T。在表T中,X表示从顶点地址到C语言库A2中的上述与位置有关的编码地址的相对地址,Y表示从顶点地址到C语言库区域A2中的转移终点地址的相对地址。
在地址转换表A26中根据C语言库中与位置有关的变量数目设置了表T(xy)。
图19中,假定与位置有关的编码位于顶点地址为S的C语言库A2中的地址B上(S:是存贮区域的顶点地址和C语言库区域A2之间的相对地址,B:存贮区域的顶点地址和C语言库A2中的编码的位置寻址地址之间的相对地址)分支终点地址值根据图18中的表T由S+Y给出。当BASIC程序被修改C语言库区域A2的顶点地址从S变为S′时,分支终点地址就改写成S′+Y。
这样在本发明中,即使原始的BASIC程序被修改,C语言库中与位置有关的编码也不会受到有害影响。
如上所述,根据本发明,由编译语言写成的执行程序可以装入BASIC程序的中间字区域中。
图20是BASIC解释程序BSI调用C语言库的流程图。
当BASIC程序开始执行时,C语言库中的数据区域A25中的初始值数据被写入第一静态变量区域A23中,“0”被写入第2静态变量区域A24中。
编码区域A22中的与位置有关的编码的所有分支终点地址都在运行前处理中,根据地址转换表A26被矫正。
到此为止描述的是用于启动BASIC程序的运行前处理。
BASIC程序启动时C语言库作为子程序来调用。公共接口的作用是启动适配区域A21中的程序。这个适配区域A21中堆放有来自BASIC程序的中间字区域A1的变量,并且调用主函数。接着启动C语言库,执行被编译了的C语言程序。
如上所述在本发明中,用C语言写成的被编译了的执行型程序可以装入BASIC语言程序的中间字区域中。另外,本发明中的线计算机还能应高速处理的要求使用编译型语言而不是常规的解释型语言。