可编程控制器、cpu单元、特殊功能模块以及双重化处理方法

文档序号:6285904阅读:336来源:国知局
专利名称:可编程控制器、cpu单元、特殊功能模块以及双重化处理方法
技术领域
本发明涉及可编程控制器、CPU单元、特殊功能模块以及双重化处理方法。
背景技术
采用可编程控制器(PLC)作为工厂自动化(FA)的控制装置。该PLC由多个单元构成。即,适当组合供电源的电源单元、控制整个PLC的CPU单元、安装在FA的生产装置和设备装置的适当位置的开关、输入传感器信号的输入单元、向激励器等输出控制输出的输出单元、用于连接到通信网络的通信单元等构成。
PLC的CPU单元的控制是将输入单元输入的信号读入CPU单元的I/O存储器(IN刷新),基于用预先登录的用户程序描述语言(例如,ラダ-语言)编写的用户程序进行逻辑运算(执行运算),将该运算执行结果写入I/O存储器并送给输出单元(OUT刷新),之后,经通信单元与通信网络上的其它PLC进行数据收发,和经CPU具有的通信端口与外围设备进行数据收发等(周边处理),循环重复上述处理。另外,有时集中进行IN刷新和OUT刷新(I/O刷新)。
但是,CPU单元通常构成为具有存储上述用户程序的RAM、存储系统程序的ROM、执行上述运算处理等的MPU、执行运算时使用的RAM(公共存储器,IO存储器、工作存储器)等。与此不同,还有在CPU单元内安装可拆装的、作为智能的高功能板的特殊功能模块(有时称为INNER板、内板、子板,以下称为“内板”)的类型。该内板具有例如执行生成的可执行用于与外部设备通信的专用处理的程序的功能,通过内板实施上述运算处理等的一部分,可以实现控制的高速化、高度化。
但是,为了提高系统的安全性、可靠性,对构成PLC的各单元进行双重化。例如,本发明对作为对象的CPU单元进行双重化时,设置2个CPU单元,同时利用CPU间总线连接这些2个CPU单元。这些2个CPU单元具有基本上相同的功能,执行存储在各CPU单元的相同内容的用户程序。
另外,2台CPU单元中,一个CPU单元成为主用CPU单元,实际进行循环处理,对存储器进行读写和与外部的I/O设备等之间进行控制数据(I/O数据)的收发,从而控制FA网络系统。另一个CPU单元成为备用CPU单元,待机中,执行与主用的用户程序相同内容的用户程序,但运算结果不反映到IO存储器。另外,从主用CPU单元接收处理结果等,进行备用CPU单元的存储器的更新。这样,确保备用CPU单元和主用CPU单元的存储器的同一性。
另外,在主用CPU单元发生了故障时,备用CPU单元转换为主用CPU单元,进行实际的控制等动作。从而,即使CPU单元发生了故障,系统也不会马上停止,继续运转,因此可以提高可靠性。
上述双重化系统中,确保CPU单元的IO存储器等在2个CPU单元之间的同一性,从而保证双重化系统。但是,在安装了上述内板的类型的CPU单元的情况下,虽然可以维持CPU单元主体侧具有的存储器的同一性,但不能连内板都双重化。
本发明的目的在于提供在具有2台安装了特殊功能模块的可编程控制器中,可以构筑包含特殊功能模块的双重化系统的可编程控制器、CPU单元、特殊功能模块、以及双重化处理方法。

发明内容
本发明的可编程控制器是一种具有2个CPU单元,上述2个CPU单元可以确认对方状态,一方成为主用时另一方成为备用,上述主用CPU单元故障停机时,上述备用CPU单元转换为主用并继续运转的可编程控制器。另外,上述2个CPU单元具有可拆装的、执行运算处理的特殊功能模块,同时这些各特殊功能模块中,安装在上述主用CPU单元的功能模块成为主用特殊功能模块,与上述主用CPU一起进行控制,安装在上述备用CPU单元的功能模块成为备用特殊功能模块。这样,可以进行还包含特殊功能模块的双重化,成为更安全、高功能、高可靠性的可编程控制器。
另外,最好是以上述结构为前提,上述2个CPU单元和、安装在各CPU的上述特殊功能模块之间的数据交换经公共存储器进行,上述2个特殊功能模块与上述2个CPU单元异步执行运算,同时在该运算执行中,不进行存储在上述公共存储器的I/O数据的写入,由上述运算执行得到的上述I/O数据在与被安装的CPU单元的同步处理中传送给上述CPU单元。
为了构筑相关的可编程控制器,本发明的CPU单元是例如可安装执行运算处理的特殊功能模块的对应双重化的CPU单元,采用2个模式,即基于用户程序进行控制的主用模式和、不进行上述控制的备用模式,上述备用模式时,若检测到对方CPU单元故障停机,则转换为主用并继续运转的CPU单元中,与自身安装的上述特殊功能模块之间的数据交换是通过公共存储器进行,具有执行完包含上述用户程序的运算执行的循环处理之后,与上述特殊功能模块之间取同步并进行数据的收发的内部服务处理功能,该内部服务处理功能可以将通过自身安装的上述特殊功能模块的运算执行而得到的I/O数据存储到上述公共存储器。
另外,用于构筑上述可编程控制器的本发明的特殊功能模块是在对应双重化的CPU单元可拆装的特殊功能模块,上述特殊功能模块和上述CPU单元之间的数据交换通过公共存储器进行,上述特殊功能模块与被安装的CPU单元异步地进行运算,同时在该运算执行中,不进行存储在上述公共存储器的I/O数据的写入,由上述运算执行得到的上述I/O数据在与被安装的CPU单元的同步处理中传送给上述CPU单元。
另外,上述可编程控制器,本发明相关的特殊功能模块,是在作为基于用户程序进行控制的主用CPU单元进行工作的模式和作为不进行所述控制的备用CPU单元进行工作的模式中的任意模式下工作的对应双重化的CPU单元中可拆装的安装的特殊功能模块;所述特殊功能模块具有在安装自己的所述对应双重化的CPU单元作为主用CPU单元工作的模式下,作为主用特殊功能模块进行工作;在安装自己的所述对应双重化的CPU单元作为备用CPU单元工作的模式下,作为备用特殊功能模块进行工作的功能,所述特殊功能模块和所述CPU单元之间的数据交换通过公共存储器进行,所述特殊功能模块与被安装的CPU单元异步地进行运算,同时在该运算执行中,不将该运算执行中得到的I/O数据向所述公共数据存储器中写入,在所述运算执行中得到的所述I/O数据在与被安装的CPU单元的同步处理中写入所述公共存储器。
本发明的双重化处理方法是具有2台备有执行运算的特殊功能模块的CPU单元、并且该2台CPU单元构成双重化系统的可编程控制器的上述双重化处理方法,可以控制为上述2个特殊功能模块中,安装在上述主用CPU单元的功能模块成为主用的特殊功能模块,与上述主用CPU单元一起进行控制,安装在上述备用CPU单元的功能模块成为备用的特殊功能模块。
另外,以有关结构为前提,上述2个CPU单元和、安装在各CPU单元的上述特殊功能模块之间的数据交换是通过公共存储器进行,上述2个特殊功能模块与上述2个CPU单元异步执行运算,该运算执行中,不进行存储在上述公共存储器的I/O数据的写入,由上述运算执行得到的上述I/O数据在与被安装的CPU单元的同步处理中传送给上述CPU单元。
在此,对上述存储器的运算执行结果的写入可以由CPU单元进行,也可以是根据来自CPU单元的命令,由特殊功能模块进行。
根据本发明,2个特殊功能模块分别异步地运算执行同一内容的程序。另外,由于构筑了双重化系统,处理对象的数据也相同,所以最终的运算结果也一致。
最好是,取得安装在上述CPU单元的上述特殊功能模块自己的运算执行结果和安装在对方CPU单元的上述特殊功能模块的运算执行结果,同时比较取得的2个运算执行结果,在不一致时,运算处理慢的特殊功能模块进行加快运算的补偿处理,使2个特殊功能模块的进展相等。
另外,作为用于构筑有关的可编程控制器的CPU单元,对上述公共存储器的上述I/O数据的存储是以自身安装的特殊功能模块和对方CPU单元安装的特殊功能模块的运算执行结果一致为条件进行的。
像这样,通过进行补偿处理,由于每次进行补偿处理后,2个特殊功能模块的运算处理的进行状态一致,所以写入的运算结果的数据也相同。
另外,本发明的可编程控制器中,上述主用特殊功能模块具有在根据来自外部的命令,存储在上述主用特殊功能模块的存储器的变量数据或参数数据变更时,对上述主用CPU单元请求双重化初始化处理的功能,上述主用CPU单元具有至少取得上述存储器的变更的内容,同时输出给上述备用的特殊功能模块,使上述主用的特殊功能模块的存储器内容和上述备用的特殊功能模块的存储器内容一致的功能。另外,存储在特殊功能模块的存储器的变量数据是例如由运算执行等循环重写的数据。存储在特殊功能模块的存储器的参数数据不是由运算执行等循环重写,而是利用工具等从外部重写的数据,例如是特殊功能模块的有关系统设定的数据和特殊功能模块用的用户程序等。
主用侧的特殊功能模块有时在运算处理中使用工具等从外部变更存储器的存储内容。此时,通过进行双重化初始化处理,可以将该变更内容传送给备用侧的特殊功能模块侧,可以确保同一性。另外,“上述向备用的特殊功能模块输出”在实施例中是经由备用的CPU单元传送给主用的特殊功能模块,但当然也可以是构筑直接传送给特殊功能模块的结构,由该结构进行传送。


图1是表示本发明的一实施例的图。
图2是表示本发明的一实施例的主要部分的图。
图3是表示CPU单元和内板的功能的流程图。
图4是表示CPU单元-INNER板I/F区域的数据结构的一例的图。
图5是表示CPU状态区的数据结构的一例的图。
图6是表示INNER板状态区的数据结构的一例的图。
图7是表示CPU-INNER命令响应区的数据结构的一例的图。
图8是表示CPU-INNER命令响应区所用的命令/响应的一例的图。
图9是表示同步开始处理的具体处理例的图。
图10是表示运算结果补偿处理的处理顺序的一例的图。
图11是表示运算结果传送开始处理的具体的处理例的图。
图12是表示运算结果补偿处理的具体的处理例的图。
图13是表示运算结果传送处理的具体的处理例的图。
图14是表示运算结果传送处理的具体的处理例的图。
图15是表示运算结果传送处理的具体的处理例的图。
图16是表示运算结果传送处理的具体的处理例的图。
图17是表示运算结果传送处理的具体的处理例的图。
图18是表示运算结果传送处理的具体的处理例的图。
图19是表示运算结果传送处理的具体的处理例的图。
图20是表示循环处理的具体的处理例的图。
图21是表示事件执行处理的具体的处理例的图。
图22是表示事件执行处理的具体的处理例的图。
图23是表示同步结束处理的具体的处理例的图。
图24是表示CPU单元和内板的功能(双重化初始化处理)的流程图。
图25是表示CPU单元和内板的双重化初始化处理的流程图。
图26是表示集中数据传送处理的具体的处理例的图。
图27是表示集中数据传送处理的具体的处理例的图。
图28是表示集中数据传送处理的具体的处理例的图。
图29是表示集中数据传送处理的具体的处理例的图。
图30是表示集中数据传送处理的具体的处理例的图。
图31是表示集中数据传送处理的具体的处理例的图。
图32是表示集中数据传送处理的具体的处理例的图。
具体实施例方式
图1示出本发明的可编程控制器(PLC)的一实施例。本发明的PLC10由多个单元构成,各单元双重化。即,对构成PLC10的各单元供电的2台电源单元11,运算执行用户程序、具有I/O刷新和循环执行外围处理的功能的第1、第2CPU单元12、13,控制这些第1、第2CPU单元12、13的动作的双工单元16、连接输入输出设备的I/O单元17等。
这些单元经系统总线19连接(参考图2)。当然,在该PLC10除了上述单元之外,还存在可安装的单元,根据需要增减连结的单元。
该PLC10中,电源单元11、第1、第2CPU单元12、13双重化。即,2台电源单元11通过并联连接向PLC10的各单元供电。因此,其中一方电源单元11发生故障、异常等而不能供电时,另一方电源单元11对各单元继续供电。
由于第1、第2CPU单元12、13执行同一内容的用户程序,所以实际在系统运行时,某一方成为控制系统(主用),另一方成为备用。成为控制系统的CPU单元进行的用户程序的运算结果反映到控制(经I/O单元输出到外部设备)。在备用CPU单元侧也执行同一内容的用户程序,但不输出其结果。备用CPU单元从控制系统的CPU单元接收运算执行结果,执行更新自己的存储器等的规定处理。这样,备用CPU单元维持与控制系统的CPU单元相同的状态。从而,在控制系统的CPU单元因异常而故障停机时,备用CPU单元可以马上转换为控制系统并执行控制动作,实现热备份方式的双重化系统。
第1、第2CPU单元12、13的转换是由作为双重化控制器单元的双工单元16进行。即,如图2所示,双工单元16具有双重化控制电路16a,利用该双重化控制电路16a操作总线转换器18而转换总线和进行在第1、第2CPU单元12、13之间的同步控制。另外,经该双工单元16,在第1、第2CPU单元12、13之间进行数据交换。
本实施例中,在第1、第2CPU单元12、13分别内置有第1、第2内板14、15。具体说来,通过安装在各CPU单元具有的槽,进行机械组合,同时经总线可以与CPU单元进行数据交换。另外,对该第1、第2内板14、15也可以择一选取主用和备用。即,在被安装的CPU单元为主用时,内板也成为主用,在被安装的CPU单元为备用时,内板也成为备用。
以下说明中,为了方便,以第1CPU单元12、第1内板14为主用,第2CPU单元13、第2内板15为备用进行说明。与第1、第2CPU单元12、13同样,第1内板14和第2内板15也具有相同的功能,执行同一处理。当然,第1、第2CPU单元12、13的硬件结构采用相同结构,第1、第2内板14、15的硬件结构也采用相同结构。
具体说来,如图2所示,第1、第2CPU单元12、13具有存储用户程序的用户存储器12a、13a,运算执行该用户存储器12a、13a中存储的用户程序、循环执行I/O刷新和外围处理的MPU12b、13b和在该运算执行时作为工作区使用的RAM12c、13c,IO存储器12d、13d以及I/F-ASIC12e、13e。
第1、第2内板14、15具有存储有内板用的系统程序等的ROM14a、15a,与对应的CPU单元进行通信、同时执行ROM14a、15a中存储的系统程序的MPU14b、15b和存储有内板上执行的内板用的用户程序、同时在该系统程序的执行中作为工作区等使用的RAM14c、15c。
上述ROM14a、15a、MPU14b、15b、以及RAM14c、15c经总线14d、15d连接。另外,经该总线14d、15d连接第1、第2内板14、15和、第1、第2CPU单元12、13的I/F-ASIC12e、13e。在第1、第2内板14、15的MPU14b、15b和、I/F-ASIC12e、13e之间设有中断信号线14e、15e。
IO存储器12d、13d除了具有存储作为通常的控制数据的I/O数据的IO存储器的功能之外,还作为第1、第2CPU单元12、13和、安装在这些CPU单元的第1、第2内板14、15间的公共存储器的功能。另外,第1、第2CPU单元12、13的I/F-ASIC12e、13e分别具有进行第1、第2CPU单元12、13内的MPU12b、13b和、第1、第2内板14、15内的MPU14b、15b访问对应的第1、第2CPU单元12、13内的IO存储器12d、13d时的仲裁的功能。这样,经IO存储器12d、13d,对应的内板和CPU单元之间进行数据交换。
另外,如上所述,第1、第2CPU单元12、13以及第1、第2内板14、15中,一方成为主用,另一方成为备用。
即,主用侧的第1CPU单元12的处理是CPU间同步处理,即与第2CPU单元13取同步,彼此执行各种处理,有关的各种处理是运算执行用户程序的处理、IO刷新处理、外围服务处理、内板服务处理等,循环执行有关处理。
另外,备用侧的第2CPU单元13的处理基本上与第1CPU单元12同样,执行用户程序,同时将运算执行的结果存储到IO存储器13d。具体说来,进行CPU间同步处理,即与第1CPU单元12取同步,彼此执行各种处理。有关的各种处理是运算执行用户程序的处理、外围服务处理、内板服务处理等,循环执行有关处理。像这样,与主用侧的第1CPU单元12相比,不执行IO刷新处理。另外,IO存储器13d的数据反映主用侧的第1CPU单元12的IO存储器13d的内容,两者的存储内容一致。
主用侧的第1内板14与第1CPU单元12之间进行同步处理,上述第1CPU单元12进行内板服务处理时,执行规定的处理,返回执行结果。即,使用IO存储器12d的公共存储区进行数据交换。
备用侧的第2内板15与第2CPU单元13之间进行同步处理,读出IO存储器13d的公共存储区的数据(反映第1CPU单元12侧的运算结果等),执行规定的处理。另外,第2内板15将自己的进行了运算处理的结果存储到IO存储器13d的公共存储区。
第2CPU单元13侧的数据交换流如图2所示,单方向进行。即,从第1CPU单元12侧,第1CPU单元12的IO存储器12d的存储内容(CPU单元用数据和内板用数据)传送并存储到第2CPU单元13的IO存储器13d的规定存储区。接着,内板用数据经I/F-ASIC13e传递给第2内板15。接着,基于该传来的内板用数据,第2内板15进行运算执行等。
这样,由于保证IO存储器13d与IO存储器12d具有同一性,所以第2CPU单元13和第2内板15也执行与第1CPU单元12、第1内板14相同的处理,运算结果也基板上相同。从而,在主用侧的第1CPU单元12和/或第1内板14侧发生了故障等时,在该时刻,第2CPU单元13和第2内板15转换为主用。像这样,第2CPU单元13、第2内板15成为主用时,这些执行上述主用的处理。从而,可以原样顺畅地继续执行运转、控制。
各CPU单元和内板的处理为如图3所示的流程。首先,主用的第1CPU单元12执行电源ON时的处理(ST1)。该电源ON时的处理例如是进行RAM12c的初始化,识别I/O单元的连接状态,进行IO存储器12d的清除等。
另外,若启动正常,则进行梯式(ラダ一)执行处理(ST2)。即,依次运算执行用户存储器12a中存储的用户程序。接着,进行I/O刷新处理(ST3)。即,将IO存储器12d的预先分配的输入单元用的数据区的数据更新为从输入单元接收的数据和将该输出单元用的数据区的数据发送给输出单元。这样,可以取得来自传感器之外的输入设备的输入数据和将进行梯式执行处理而得到的运算结果(输出数据等)提供给控制对象设备。另外,该I/O刷新的结果,即,更新的IO存储器12d的内容通过I/F-ASOC12e传送给备用侧的第2CPU单元13的IO存储器13d。
接着,与第2CPU之间取同步,同时与主用的第1内板14之间开始进行同步处理(ST4),执行INNER服务处理(ST5)。该INNER服务处理是取得后述的第1内板14运算而得到的运算结果和输出事件处理的请求。若一系列处理结束,则结束同步处理后(ST6),执行外围服务处理(ST7)。作为该外围服务有对通信单元等具有特殊功能的单元的数据交换处理等。以后,将上述步骤2至7作为一个周期,循环重复执行。
另一方面,主用的第1内板14执行电源ON时的处理(ST11)。该电源ON时的处理是例如进行RAM14c的初始化等。
接着,执行运算处理(ST12)。即,执行RAM14c中存储的该内板用的用户程序。该运算处理与第1CPU单元12的梯式执行等异步进行。一接收来自第1CPU单元12的同步命令信号,就开始同步(ST13),执行运算结果的传送处理(ST14)、循环处理(ST15)、以及事件处理(ST16)。该各处理在第1CPU单元12的INNER服务期间(ST5)执行。该同步处理一结束(ST17),就返回步骤12,开始运算处理。另外,步骤12的运算执行的期间禁止写入作为来自第1内板14侧的IO存储器12d上的控制数据的I/O数据。另外,在步骤12的运算执行中从第1CPU单元12没有接收到同步命令信号时,在运算执行结束状态下等待接收同步命令信号。
另外,上述第1内板14和第1CPU单元12之间的同步运转通过使用了公共存储器的数据传送来执行,以后具体说明第1内板14的同步运转中的各处理。
另一方面,备用侧的第2CPU单元13基本上与第1CPU单元12同样,首先进行了电源ON时的处理之后(ST21),进行梯式执行处理(ST22)。接着,不进行I/O刷新,与第1CPU电源12之间取同步,同时与备用的第2内板15之间开始同步处理(ST23),执行INNER服务处理(ST24)。该INNER服务处理是取得后述的第1内板14运算而得到的运算结果和输出事件处理的请求。若系列处理结束,则结束同步处理后(ST25),执行外围服务处理(ST26)。
另外,备用的第2内板15执行电源ON时的处理(ST31)。该电源ON时的处理例如进行RAM15c的初始化等。
接着,执行运算处理(ST32)。即,执行RAM15c中存储的该内板用的用户程序。该运算处理与第2CPU单元13的梯式执行等异步进行,运算内容与第1内板14相同。另外,在步骤32的运算执行中从第2CPU单元13没有接收到同步命令信号时,在运算执行结束状态下等待接收同步命令信号。
接着,一接收来自第2CPU单元13的同步命令信号,就开始同步(ST33),执行运算结果的传送处理(ST34)、循环处理(ST35)、以及事件处理(ST36)。该各处理在第2CPU单元13的INNER服务期间(ST24)执行。周期处理一结束(ST37),就返回步骤32,开始运算处理。
内板14、15的运算执行时如允许写入作为IO存储器12d、13d上的控制数据的I/O数据时,会有损坏两者的数据的同一性的危险。因此,运算执行时禁止写入作为IO存储器12d、13d上的控制数据的I/O数据,使用公共存储器将在一定的定时(循环处理(ST15)或事件处理(ST16))运算的结果、作为IO存储器12d、13d上的控制数据的I/O数据传送给CPU单元。CPU单元基于该传来的数据,写入作为IO存储器12d、13d上的控制数据的I/O数据。
下面,说明各处理步骤的具体处理顺序。首先,本实施例中,同步处理通过利用公共存储器(IO存储器12d、13d)的命令响应,与对方之间传送数据来执行。在此,说明分配给用于上述同步处理的IO存储器12d、13d的规定区域的CPU单元-内板I/F区域。该区域是用于CPU单元和内板的状态和CPU单元-内板间的命令响应,成为图4所示的存储器分配结构。CPU单元和内板可以对自己的区域进行读写(R/W),对对方区域只进行读(R)。
CPU状态区是CPU单元写的区域,内板利用该CPU状态区的规定标记进行运算、作业的启动、停止。具体说来,成为图5所示的结构。在此,“INNER板可以/不可以运转标记”是特定内板运转(0)还是不能运转(1)的标记。即,内板在各循环(“运算执行/运算结果传送/事件/循环”)的最初检查上述标记,“1”时,不进行运算。另外,该标记为“1”是如例如CPU待机中、或其它设备运转等待中、或后述的双重化初始化中(备用侧)等,不能保证主用侧和备用侧的数据的同一性的情况。
另外,在该CPU状态区写入传送给对方的数据的存储区的起始地址和、数据大小。这样,从在此指定的起始地址和数据大小特定应传送的数据区,进行传送处理。
另外,INNER状态区是内板写入的区域,CPU单元利用该INNER状态区的规定标记进行后述的双重化初始化启动、双重化核对。具体说来,成为如图6所示的结构。在此,“双重化初始化请求标记”是在内板要动态启动双重化初始化时使用的标记,在要将主用侧的内板(第1内板14)的变量数据或参数数据的内容传送给备用侧的内板(第2内板15)时为1。另外,忽视来自备用侧的内板的双重化初始化请求。双重化的运转开始时,由于无条件进行双重化初始化,所以实际上在双重化运转中要进行双重化初始化时设定为“1”即可。
核对数据区是为了第1、第2内板14、15同步运转,核对各种内部状态是否一致而使用的区域。预先定义好该核对数据区中存储的内容,各内板(MPU14b、15b)写入该定义的内容。这样,第1、第2CPU单元12、13对存储在核对数据区中的数据之间进行比较,在不一致(核对错误)时,双重化核对成为异常,不能进行双重化运转。另外,该核对数据的比较定时是电源ON时的内板识别时或、双重化初始化时。
CPU-INNER命令响应区是用于CPU单元-内板间的命令/响应的区域,成为如图7所示的存储区的分配。另外,在此使用的命令/响应有如图8所示的命令/响应。使用相关的区域和命令/响应,基于如下所示的具体的处理顺序进行同步处理。
即,同步处理开始步骤(ST4、ST23)中,首先,第1、第2CPU单元12、13分别向第1、第2内板14、15发出使用中断信号线14e、15e开始同步的中断通知。接着,发出同步开始命令。即,通过在IO存储器12d、13d上分配的公共存储器的CPU-INNER命令响应区的该区域写入规定的命令(0001)来进行(参考图9)。另外,对同步开始命令附加内板用自激振荡计数器,利用该计数器对准内板的时钟。
接收了上述同步开始的中断通知的第1、第2内板14、15执行同步开始处理(ST13、ST33)。即,访问对应的IO存储器12d、13d,取得命令之后,回复同步开始命令的响应。作为此时回复的响应有以下2种,①进行运算结果传送、事件、循环时(8001)②不进行运算结果传送、事件、循环时(4001)另外,上述响应②是内板的运算执行的进展与上一次循环相比没有变化时,即不需要传送时返回。另外,取得了该响应②的CPU单元跳过之后的有关运算结果传送、事件、循环的各处理步骤。另外,若正常,由于主用侧和备用侧进行同一处理,所以在此返回的响应的内容相同,但两者不一致时,将来自主用侧的内板的响应内容作为正确并进行处理。
执行上述同步开始处理(返回响应①)之后,执行运算结果传送处理。本实施例中,由于以热备份方式实现双重化,所以若在运算执行时允许内板14、15写入IO存储器12d、13d,则会损坏两者的数据同一性。因此,运算执行时禁止写入IO存储器12d、13d,以一定的定时传送运算结果,基于规定条件,写入IO存储器12d、13d。
此时,第1CPU单元12和第2CPU单元13取同步,在第1CPU单元12侧可以取得备用的第2CPU单元13和第2内板15的状态(存储器内容、第1内板执行步骤14而得到的当前运算结果)。另外,在第2CPU单元13侧利用来自第1CPU单元12的传送处理,可以取得主用的第1CPU单元12和第1内板14的状态(存储器内容、第1内板执行步骤14而得到的当前运算结果)。
从而,若比较第1内板14的运算结果和第2内板15的运算结果,就可以比较两个内板14、15的运算进展是否一致。即,第1、第2内板14、15一起执行相同的运算处理。从而,若彼此的程序的处理速度相同,处理同一命令,则该运算结果相同。因此,确认运算结果是否一致,在不一致时,通过进行为了一致而调整处理速度的补偿处理,该补偿处理后,第1、第2内板14、15成为处理到同一步骤命令的状态(使运算的进展一致的状态)。像这样,通过进行适当的补偿处理,可以将第1、第2内板14、15的处理的进展状态以每个循环单位校准,即使第2内板15转换为主用,也不需要从第1内板14突然改变伴随运算结果输出的控制量等,可以平滑地进行转换。
另外,使该运算进展一致的运算结果补偿处理为如图10所示。即,执行以下所示的(1)至(8)的处理。在此,带有括号的数字对应于图10所示的各处理步骤。
(1)主用的第1CPU单元12向主用和备用的第1、第2内板14、15发出运算结果传送开始命令。具体说来,如图11所示,执行在公共存储器的规定区域写入命令〔0002〕的处理。将在公共存储器的规定区域写入的命令〔0002〕,通过I/F-ASIC12e也写入备用侧的第2CPU单元13的公共存储器的规定区域。通过这样的处理,主用侧的第1CPU单元12,可对第1、第2内板发出运算结果传送开始的命令。
(2)主用和备用的第1、第2内板14、15发出运算结果传送开始响应。与该开始响应同时,在数据区设定运算结果信息。该运算结果信息是表示运算执行状况的信息(具体说来,表示内板用的用户程序的执行处理进行到哪儿的信息,例如相当于用户程序的步骤序号等),设计内板时定义。即,如图11所示,写入命令〔8002〕,同时登录运算信息。
(3)主用的第1CPU单元12一接收主用和备用的第1、第2内板14、15的运算结果传送开始命令,就将备用侧的运算结果信息复制到本机的运算结果信息,再将主用侧的运算结果信息传送给备用侧。
(4)接着,主用的第1CPU单元12向第1、第2内板发出运算结果补偿开始命令。具体来说,如图12所示,通过在公共存储器的规定区域写入命令〔0003〕来进行。将在公共存储器的规定区域写入的命令〔0003〕,通过I/F-ASIC12e也写入备用侧的第2CPU单元13的公共存储器的规定区域。通过这样的处理,主用侧的第1CPU单元12,可对第1、第2内板发出运算结果校正开始的命令。
(5)主用和备用的第1、第2内板14、15如收到运算结果校正开始的命令,基于本机和另一机的运算结果补偿运算的进展。即,进展慢的内板为了向进展快的内板对准进展,执行规定的运算。例如,运算结果信息若用用户程序的步骤序号的情况说明,则如下。在第1内板14的用户程序执行到步骤N1,第2内板15的用户程序执行到步骤N2(N2比N1小)的状态下,补偿运算的进展时,进展慢的第2内板15通过将用户程序执行到步骤N1,对准第1内板14的进展。
(6)主用和备用的第1、第2内板14、15发出对运算结果校正开始的响应(参考图12)。发出对运算结果校正开始的响应,具体来说是进行运算的内板通过在本机的命令区写入响应〔8003〕,慢的一侧的内板在补偿运算完成后,在本机的命令区写入响应〔8003〕来执行。
(7)主用的第1CPU单元12一接收主用和备用侧的运算结果补偿响应,就向主用和备用的第1、第2内板发出运算结果反映许可命令。在备用侧,也从主用侧发出运算结果反映许可命令。具体来说,主用的第1CPU单元2,通过在公共存储器的规定区域写入运算结果反映许可命令来进行,将在公共存储器的规定区域写入运算结果反映许可命令,通过I/F-ASIC12e也写入备用侧的第2CPU单元13的公共存储器的规定区域。通过这样的处理,主用侧的第1CPU单元12,可对第1、第2内板发出运算结果反映许可命令。
(8)主用和备用的第1、第2内板14、15在收到运算结果反映许可命令时反映运算结果。处理完成后,回复运算结果反映许可响应。
即,由于若从第1、第2内板发出运算结果步骤处理,则完成运算结果补偿,两者的进展状态变成一致,所以在该状态下,将内板的运算结果存储到IO存储器。另外,示出从相关的(1)到(8)的运算结果传送开始到运算结果反映许可的CPU-INNER命令响应区的数据变化的顺序的一例,如图13至图19所示。另外,各图中,ACT为主用、STB为备用侧。该处理中数据有变化的区域用网表示,通过从主用侧传来而写入的数据用下划线表示。
简单说明各处理,运算结果传送开始处理(图13)中,主用的第1CPU单元12在IO存储器12d中的STB用(备用侧用)的CPU-INNER命令响应区(+80)和、ACT用(备用侧用)的CPU-INNER命令响应区(+336)写入表示运算结果传送开始的命令(0002)。接着,写入+80的命令通过I/F-ASIC12e而在备用的第2CPU单元13的CPU-INNER命令响应区(+80)写入相同命令(0002)。
取得了该命令(0002)的内板向CPU-INNER命令响应区回复响应(8002),同时分别存储自己的运算结果信息(图14)。具体来说,主用的第1内板在CPU-INNER命令响应区(+336)中写入响应(8002),同时在接下来的区域中存储自己的运算结果信息。另一方面,备用的第2内板,在CPU-INNER命令响应区(+80)中写入响应(8002),同时在接下来的区域中存储自己的运算结果信息。
接着,复制另一机的运算结果信息(图15)。即,第1CPU单元12取得STB用INNER,即备用的第2内板的运算结果,并存储到自己的CPU-INNER命令响应区的规定区域,同时将ACT用INNER,即主用的第1内板的运算结果传送给第2CPU单元的IO存储器13d的CPU-INNER命令响应区的规定区域。
接着,运算结果补偿开始处理(图16)中,主用的第1CPU单元12在IO存储器12d中的STB用(备用侧用)的CPU-INNER命令响应区(+80)和、ACT用(主用侧用)的CPU-INNER命令响应区(+336)写入表示运算结果补偿开始的命令(0003)。接着,写入+80的命令通过I/F-ASIC12e而在备用的第2CPU单元13的CPU-INNER命令响应区(+80)写入相同命令(0003)。
接着,各内板一接收来自CPU单元的运算结果补偿开始命令,就基于自己的运算结果信息和对方侧内板的运算结果信息开始运算结果补偿,完成后回复响应(8003)(图17)。
接收该响应(8003),主用的第1CPU单元12在IO存储器12d中的STB用(备用侧用)的CPU-INNER命令响应区(+80)和、ACT用(主用侧用)的CPU-INNER命令响应区(+336)写入表示运算结果反映许可的命令(0004)。接着,写入+80的命令通过I/F-ASIC12e而在备用的第2CPU单元13的CPU-INNER命令响应区(+80)写入相同命令(0004)(图18)。
接收该许可,第1、第2内板14、15回复许可响应(8004),同时将运算结果写入作为公共存储器的IO存储器的规定区域(图19)。
下面,说明循环处理。步骤15、35的内板的循环处理中的处理开始利用同步对准,但实际处理中,在主用侧和备用侧分别执行,在两者间不进行循环数据的交换。具体说来,如图20所示,通过在CPU-INNER命令区写入通知循环有效开始的命令(0005)来开始。另外,该命令(0005),通过I/F-ASIC12e写入备用侧的第2CPU单元13的CPU-INNER命令响应区。通过执行该循环处理,在CPU单元和内板之间可以周期地进行数据交换。
下面,说明事件处理。步骤16、36的事件处理按以下顺序进行。即,CPU单元→内板的事件是通过主用侧CPU单元在备用侧CPU-INNER命令响应区写入事件执行开始命令,向备用侧的CPU-INNER命令响应区也传送事件执行开始命令,在第1、第2内板14、15同时执行。另外,在CPU单元丢弃备用侧的响应。通过执行该事件处理,在CPU单元和内板之间可以非周期地交换数据。
另一方面,内板→CPU单元的事件是该事件处理可以进行用时间片跨过多个周期的处理。即,有时在一个周期没有完成。事件执行结束后,也用命令通知。
具体说来,如图12所示,CPU单元写入通知事件执行开始的命令(0006),接收了该命令的内板通过回复响应(8006)来开始。接着,如图22所示,CPU单元写入通知事件执行结束的命令(0007),通过接收了该命令的内板回复响应(8007)来结束。另外,任一命令向通过I/F-ASIC12e写入备用侧的第2CPU单元13的CPU-INNER命令响应区。
如图23所示,CPU单元写入通知同步结束的命令(0008)(ST6、ST25),通过接收了该命令的内板回复响应(8008)来结束(ST17、ST37)。
下面,说明双重化内板处理。如上所述,通常的运转状态下,通过同步运转确保第1内板14和第2内板15的数据的同一性。但是,可以使用工具等从外部变更主用侧的第1内板14的RAM14c中存储的变量数据和参数数据和从外部变更主用的第1CPU单元12的用户程序和IO存储器12d中的数据(成为I/O刷新的对象的数据和、有关CPU单元的系统设定的数据)。这样,备有侧的第2CPU单元13和第2内板15中由于没有相关工具引起的变更,所以不能确保第1、第2内板14、15间、以及第1、第2CPU单元12、13间的数据同一性。
因此,进行双重化初始化处理,将第1内板14的变量存储器和参数数据等传送给第2内板15侧,同时将第1CPU单元12的用户程序等传送给第2CPU单元13,确保两者的同一性。该初始化处理如图24所示,执行完通常的同步运转的INNER服务处理(ST5、ST24)、事件(ST16、ST36)之后进行(ST8、ST18、ST27、ST38)。
另外,相关的INNER服务处理的更具体的顺序如图25所示。即,事件处理一结束,(10)主用的第1CPU单元12检查用户程序和IO存储器12d上的数据是否由外部变更,第1内板14检查变量数据和参数数据是否由外部变更。
(11)第1内板14判断为从外部有变更时,向第1CPU单元12通知双重化初始化请求。该通知通过立起双重化初始化请求标记(参考图6)来进行。(12)第1CPU单元12监视有无来自第1内板14的相关请求(实际上检查标记)。
接着,(13)接收到该双重化初始化请求的通知时,开始双重化初始化。另外,第1CPU单元12在自己的用户程序和IO存储器12d上的数据由外部变更时,也开始双重化处理。在相关的第1CPU单元12、第1内板14的任一个都没有变更时,不进行双重化初始化处理而结束。
(14)一开始双重化初始化,第1CPU单元12将用于数据传送的区域(双重化初始化传送数据存储区)通知给主用的第1内板14。该双重化初始化传送数据存储区是双重化初始化时存储传送数据的区域。另外,第1CPU单元12、第1内板14的双方都可以对该双重化初始化传送数据存储区进行读写。若进行了相关的通知,则等待来自第1内板14的应答。
(15)第1内板14向第1CPU单元12通知写入开始地址和数据大小,同时在该地址位置写入数据。数据的写入一完成,就向第1CPU单元12通知写入完成。
(16)接收了该通知的第1CPU单元12向第2内板15通知取得的写入开始地址和数据大小,等待来自第2内板15的读完命令。
(17)备用的第2内板基于来自第1CPU12的通知,读出在第1内板14侧变更的数据。若都读完数据,则向主用的第1CPU单元12通知数据读完。
(18)若第1CPU单元12确认了来自第2内板15的读完通知,则结束双重化初始化。
以上的采用了图25的INNER服务处理的说明只是有关从双重化初始化处理的主用侧内板向备用侧内板传送变量数据和参数数据。从双重化初始化处理的主用CPU向备用CPU的数据传送可以通过主用CPU将自己的用户存储器中的用户程序写入备用CPU的用户存储器来实现。
但是,上述(17)的第2内板15的数据读出实际上通过传送数据来执行。另外,本实施例中,有分割数据传送和集中数据传送的2种传送方法。使用哪一种方法是在设计内板时定义好。
集中数据传送是为了在双重化系统运转时,使主用侧和备用侧执行相同的运算,需要1个周期传送完时进行的传送方法。内板中,变量数据是应该在集中数据传送中传送的数据。
分割数据传送是是对主用侧和备用侧的第1、第2内板14、15的运算执行没有影响,用多个周期传送也可以时的传送方法。内板中,参数数据是应该在分割数据传送中传送的数据。
上述分割/集中传送通过CPU-INNER命令响应区进行,与上述相同在通常循环动作后执行,具体的公共存储器的命令响应的数据传送处理如图26以后所示。
集中数据传送按图26至图32所示的处理顺序进行。即,首先,CPU单元在命令响应区的规定区域写入指示集中数据传送的命令(0100),同时指定使用的集中传送数据存储区(图26(a))。该集中传送数据存储区在本实施例中有2处,即第1和第2,用该区域指定来指定某个区域(1或2)。这对应于图25的处理(14)。
接收该指定,内板在公共存储器存储开始地址(绝对地址/相对地址的任一个都可以)和、数据大小(byte单位/word单位等),同时,作为响应回复当前状态(未传送完4100,传送完8100)(图26(b)、(c))。这对应于图25的处理(15)。
接着,如接到收传送完成的命令(8100),主用的第1CPU单元12将接收到的第1内板的数据(参数数据、变量数据等)经由备用的第2CPU单元13传递给备用的第2内板15。在此,第1CPU单元12对传送的数据不进行检查,原样传送。
即,如图27(a)所示,主用的第1CPU单元12指定存储有传送的数据的传送源区域(1或2),同时写入开始地址和大小。接着,从对方侧接收响应(8101)。
另外,集中传送的具体的数据变更履历为图28以后所示。各图中,变更了数据的部分(写入的部分)用网表示,各图的标题中的括号内表示相关的网部分的数据的变更者。首先,如图28所示,主用的第1CPU单元输入采用传送区1(0001)进行集中传送数据的命令(0100)。
接收该命令,如图29所示,主用的第1内板14写入响应(8100),同时存储开始地址和大小。存储该响应的同时,应传送的数据存储到规定区域。
接着,如图30所示,主用的第1CPU单元12将取得的开始地址、大小复制到固定区域。这对应于图25的处理(16)。
通过I/F-ASIC12e,在备用侧的公共存储器的规定区域写入命令(0101)、使用区域(0001)、开始地址、以及大小。此时,也传送实际数据。这对应于图25的处理(17)。
另外,完成上述图30所示的复制,同时第1CPU单元12输入用于下一传送的命令(0100),同时指定传送区(0002)(参考图31)。使在此指定的区域为与前一次不同的区域。像这样,通过分开使用集中传送数据存储区,可以避免覆盖或消除数据。
随着该命令输入,备用的第2内板15回复CPU单元→内板集中数据传送响应(8101),主用的第1内板14回复内板→CPU单元集中数据传送响应(8100)(参考图32)。
另一方面,分割数据传送通过将主用的内板的参数数据内容经由CPU单元传递给备用的内板来实现。该处理是采用命令响应执行。
另外,如上所述,双重化初始化处理在利用工具等从外部接受了变更时当然进行,但例如在电源ON时等也进行。
如上所述,本发明是具有2台安装了特殊功能模块的CPU单元的可编程控制器中,可以构筑包含特殊功能模块的双重化系统。
权利要求
1.一种可编程控制器,具有2个CPU单元,所述2个CPU单元可以确认对方状态,一方成为主用时另一方成为备用,所述主用CPU单元故障停机时,所述备用CPU单元转换为主用并继续运转,其特征在于所述2个CPU单元具有可拆装的、执行运算处理的特殊功能模块,同时这些各特殊功能模块中,安装在所述主用CPU单元的功能模块成为主用特殊功能模块,与所述主用CPU一起进行控制,安装在所述备用CPU单元的功能模块成为备用特殊功能模块。
2.如权利要求1所述的可编程控制器,其特征在于所述2个CPU单元和安装在各CPU的所述特殊功能模块之间的数据交换经公共存储器进行,所述2个特殊功能模块与所述2个CPU单元异步执行运算,同时在该运算执行中,不将该运算执行中得到的I/O数据写入所述公共数据存储器中,在所述运算执行中得到的所述I/O数据在与被安装的CPU单元的同步处理中写入所述公共存储器。
3.如权利要求1或2所述的可编程控制器,其特征在于安装在所述CPU单元的所述特殊功能模块取得自己的运算执行结果和安装在对方CPU单元的所述特殊功能模块的运算执行结果,同时比较这些取得的2个运算执行结果,在不一致时,运算处理慢的特殊功能模块进行加快运算的补偿处理,使2个特殊功能模块的进展相等。
4.如权利要求1至3的任一项所述的可编程控制器,其特征在于所述主用特殊功能模块具有在根据来自外部的命令,存储在所述主用特殊功能模块的存储器的变量数据或参数数据变更时,对所述主用CPU单元请求双重化初始化处理的功能,所述主用CPU单元具有在被要求所述双重初始化时,至少取得所述存储器的变更的内容,同时输出给所述备用的特殊功能模块,使所述主用的特殊功能模块的存储器内容和所述备用的特殊功能模块的存储器内容一致的功能。
5.一种CPU单元,可安装执行运算处理的特殊功能模块对应双重化,采用2个模式,即基于用户程序进行控制的主用模式和不进行所述控制的备用模式,所述备用模式时,若检测到对方CPU单元故障停机,则转换为主用并继续运转,其特征在于与自身安装的所述特殊功能模块之间的数据交换是通过公共存储器进行,具有执行完包含所述用户程序的运算执行的循环处理之后,与所述特殊功能模块之间取同步并进行数据的收发的内部服务处理功能,该内部服务处理功能可以将通过自身安装的所述特殊功能模块的运算执行而得到的I/O数据存储到所述公共存储器。
6.如权利要求5所述的CPU单元,其特征在于对所述公共存储器的所述I/O数据的存储是以自身安装的特殊功能模块和对方CPU单元安装的特殊功能模块的运算执行结果一致为条件进行的。
7.一种特殊功能模块,在作为基于用户程序进行控制的主用CPU单元进行工作的模式和作为不进行所述控制的备用CPU单元进行工作的模式中的任意模式下工作的对应双重化的CPU单元中可拆装地安装,其特征在于所述特殊功能模块具有在安装自身的所述对应双重化的CPU单元作为主用CPU单元工作的模式下,作为主用特殊功能模块进行工作;在安装自身的所述对应双重化的CPU单元作为备用CPU单元工作的模式下,作为备用特殊功能模块进行工作的功能,所述特殊功能模块和所述CPU单元之间的数据交换通过公共存储器进行,所述特殊功能模块与被安装的CPU单元异步地进行运算,同时在该运算执行中,不将该运算执行中得到的I/O数据向所述公共数据存储器中写入,在所述运算执行中得到的所述I/O数据在与被安装的CPU单元的同步处理中写入所述公共存储器。
8.一种具有2台备有执行运算的特殊功能模块的CPU单元、并且该2台CPU单元构成双重化系统的可编程控制器的双重化处理方法,其特征在于所述2台CPU单元可按作为基于用户程序进行控制的主用CPU单元进行工作的模式和作为不进行所述控制的备用CPU单元进行工作的模式中的任何一个模式来工作;所述2个特殊功能模块中,安装在所述主用CPU单元的功能模块成为主用的特殊功能模块,与所述主用CPU单元一起进行控制,安装在所述备用CPU单元的功能模块成为备用的特殊功能模块;在所述主用侧的CPU单元或安装在该CPU单元的所述特殊模块发生了异常时,控制所述备用的CPU单元和特殊功能模块转换为主用。
9.一种具有2台备有执行运算的特殊功能模块的CPU单元、并且该2台CPU单元构成双重化系统的可编程控制器的双重化处理方法,其特征在于所述2台CPU单元在可按基于用户程序进行控制的主用CPU单元进行工作的模式和作为不进行所述控制的备用CPU单元进行工作的模式中的任何一个模式来工作,所述2个特殊功能模块中,安装在所述主用CPU单元的功能模块成为主用的特殊功能模块,与所述主用CPU单元一起进行控制,安装在所述备用CPU单元的功能模块成为备用的特殊功能模块,所述2个CPU单元和分别安装在该CPU单元的所述特殊功能模块之间的数据交换通过公共存储器进行,所述2个特殊功能模块与所述2个CPU单元异步执行运算,该运算执行中,不将该运算执行中得到的I/O数据写入所述公共数据存储器中,在所述运算执行中得到的所述I/O数据在与被安装的CPU单元的同步处理中写入所述公共存储器。
全文摘要
具有2台安装了内板的CPU单元的可编程控制器中,构筑内板的双重化系统。2个内板中,安装在主用CPU对应的内板成为主用内板,安装在备用CPU单元的内板成为备用内板。各内板与各CPU单元异步进行运算(ST12、ST13),该运算结果不在运算执行中写入存储器,而在与CPU单元的同步处理中,从内板传送给CPU单元(ST14、ST34)。CPU单元比较传来的运算执行结果,在不一致时,使慢的一方继续运算,在进展一致的状态下许可写入,这样,将运算执行结果写入存储器。
文档编号G05B19/05GK1477468SQ0314389
公开日2004年2月25日 申请日期2003年6月7日 优先权日2002年6月7日
发明者永野英辅, 福岛正则, 富田贤一郎, 冨田一彰, 一郎, 则, 彰 申请人:欧姆龙株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1