设于一个组件上的 缓冲电路 本发明涉及一种设于一个组件上的用于暂存数据的缓冲电路。
在自动化技术领域越来越多地采用分布式系统。其中由控制技术的分布外设组件读入一个被控制的技术过程的各输入信号并传送到一个远离外设组件设置的上级计算单元。计算单元可以是例如一个可编程控制器的中央单元。计算单元对这些输入信号进行处理,并由输入信号(必要时利用计算单元的内部值)计算出输出信号,这些输出信号经系统总线(Feldbus)重新被传送到各分布外设组件。这些外设组件然后将各输出信号输出到被控制的技术过程。
在外设组件中借助智能单元,例如微处理器,从技术过程读入输入信号以及向技术过程输送输出信号。这些智能单元基本上只用于读入和输出信号。
通常,各外设组件的智能单元读入输入信号和给出输出信号所需的周期时间与上级计算单元读入输入信号和给出输出信号的两个访问周期之间的时间明显不同。因此输入和输出信号不能立即从外设组件的智能单元传送到上级计算单元并返回,而必须暂存在分布外设组件中。
本发明的目的在于提供一种电路,借助这种电路,一方面使上级计算单元和分布外设组件在数据暂存的情况下也能完全互不依赖地将数据写入暂存器并从暂存器读出数据,另一方面又保证两者不相互阻碍。
本发明的目的通过具有权利要求1所述特征的缓冲电路得以实现。
该缓冲电路一般设在一个集成开关电路,即一个通信ASIC(专用用途集成电路)中。通常,该通信ASIC还有其它通信作用,因而同样须为其提供存储位置。由于ASIC的存储位置至今仍是较昂贵和紧缺的资源,因而如果缓冲电路的存储范围具有可变长度,可最大限度地扩大它的可供使用地存储范围。
以下将结合附图所示实施例详细描述本发明,其中:
图1为分布自动化系统;
图2为一缓冲电路。
参照图1,一可编程控制器的中央单元1通过系统总线2与分布外设组件3连接。为明了起见,在图1中仅示出一个外设组件3。外设组件3具有一个专用用途集成电路(ASIC)4,其一方面与系统总线2相连,另一方面通过单元内部的连接线5与微处理器6相连。微处理器6即是设于单元3中的智能单元。
微处理器6通过输入线7与技术过程8(例如一燃烧器控制过程)中未示出的过程传感元件连接。同样,微处理器6通过输出线9与技术过程8中未示出的过程执行机构连接。
图2详细示出通信ASIC 4。其包括用于暂存输入、输出信号的缓冲电路。如图2所示,ASIC 4具有三个输入信号存储范围10、10′、10″和三个输出信号存储范围11、11′、11″。这些存储范围10、10′、10″和11、11′、11″通过总线12与一选择电路13连接,选择电路13又通过总线14和控制线15、16与一总线接口17和组件接口18连接。
由微处理器6从技术过程8读入的输入信号在输入信号存储范围10、10′、10″通过组件接口18和总线14-1被传送到选择电路13,选择电路13将输入信号存储到存储范围10、10′、10″中的一个。然后将输入信号通过选择电路13,总线14-2和总线接口17从上述存储范围传送给系统总线2和中央单元1。相反,输出信号通过系统总线2、总线接口17、总线14-3和选择电路13从中央单元1被存储到存储范围11、11′和11″。然后,微处理器6通过选择电路13、总线14-4和组件接口18调用上述输出信号并将其输出到技术过程8。
从上面的描述中可以看出,每个接口17、18都可与存储范围10、10′、10″、11、11′、11″中的一个连接。但总线接口17在任一意时刻只能与输入信号存储范围10、10′、10″中的一个和输出信号存储范围11、11′、11″中的一个连接。同样,组件接口18只能与输入信号存储范围10、10′、10″中的另一个和输出信号存储范围11、11′、11″中的另一个连接。例如,在某一特定时刻,总线接口17可与存储范围10和11连接,而组件接口18与存储范围10″和11″连接。
正如控制技术中公知的那样,在数据传输时,不是更新单个数据而是不断更新全部输入和输出信号。这是为保持输入和输出信号的一致性所必须的。因而,假设只有一个输入信号存储范围10、10′、10″时,在通过微处理器6写信号的过程中不能同时向中央单元1传输数据,因而中央单元1必须等候,直到微处理器6完成写过程。同样,当从输入信号存储范围10读出数据时,微处理器6只能等候,直到读过程结束。也就是说,处理器6和中央单元1在传送输入信号时必须互相等候。当从中央单元1向微处理器6传送输出信号时也出现类似问题。
当有两个输入信号存储范围时,微处理器6可以将输入信号存放到一个输入信号存储范围(例如存储范围10′),同时从另一个存储范围(例如存储范围10)读出信号并传送到中央单元1。从表面上看,从微处理器6向存储范围10、10′以及进一步向中央单元1进行的数据传输彼此隔离。
但是这种隔离只是表面上的。例如假设在时刻t。从存储范围10读出输入信号并传送到中央单元1,同时与之相反,微处理器6向存储范围10′写入输入信号。在这一时刻,写入和读出输入信号是彼此隔离的。然而写循环与读循环几乎不能同时结束。例如在时刻t1,微处理器6结束写循环,而此时中央单元1的读循环仍在进行。当微处理器6在时刻t1读入新的输入信号并欲进行暂存时,中央单元1从中读出数据的存储范围(即存储范围10)还不能供微处理器6使用,这是因为否则会影响数据的一致性。反之,如果微处理器6向其之前刚写过的第二存储范围,即存储范围10′写入数据,就可能导致在写循环中中止中央单元1的读出。这样,中央单元1不能再开始下一个读出循环,因为它或者必须重新读出已经读过的已知数据(这是毫无意义的)或者必须从一个正在被重写的存储范围读出数据,由于可能存在的数据不一致性,这种方式是不允许的。也就是说,每个传输方向使用两个存储范围也不能使数据交流彼此隔离。
通过为每个传输方向提供一个第三存储范围,即三个输入信号存储范围10、10′、10″和三个输出信号存储范围11、11′、11″,可以解决上述问题。在这种情况下保证了在每一时刻总有一个存储范围可供使用,新的数据可写入该范围,而不会覆盖之前刚写入的数据。
可采用以下方式由选择电路13选择存储范围10、10′、10″和11、11′、11″。即,通过控制线15和16通知选择电路13新的读过程和写过程的开始和结束时刻。选择电路13可以例如通过将一适当的偏移地址增加到目前要读出的存储位置,从而保证从存储范围10、10′、10″和11、11′、11″中从希望的存储位置中读出数据。
如上所述,该缓冲电路通常设置在一个通信ASIC4中。通信ASIC除了具有过程参数传递,即传递输入信号和输出信号外,还具有其它的通信任务,这些任务同样需要存储位置。为了优化该通信ASIC,宜将存储范围10、10′、10″、11、11′和11″设置成变长。这样就能使存储长度适配于实际需要,而不被需要的存储范围可供其它通信任务使用。例如,可向选择电路13指定,输入信号存储范围10、10′、10″的每个需要多少字节以及输出信号存储范围11、11′、11″的每个需要多少字节。