技术领域
[0001] 本发明涉及一种控制系统。
相关背景技术
[0002] 在工厂或车间等中的过程控制系统中,一般是传感器和执行器等现场设备直接与控制器连接的结构。在本发明中,将直接连接现场设备并作为与其他控制器的接口发挥功能的控制器称为IO节点。
[0003] 在控制器上运行的控制应用程序使用从传感器读取的过程数据进行控制运算,并且将运算结果输出到执行器来进行工厂控制。以往,现场设备或IO节点与搭载于确定的控制器的控制应用程序逻辑连接,不能变更现场设备、IO节点、控制器和控制应用程序的组合来进行运行。但是,在该方法中,在更换控制应用程序正在运行的控制器的硬件等的情况下,需要停止系统。因此,提出了一种不停止系统来更换控制器的硬件的方法(例如参照专利文献1、2)。
[0004] 现有技术文献
[0005] 专利文献1:日本专利第5561298号说明书
[0006] 专利文献2:美国专利申请公开第2018/0321662号说明书
[0007] 但是,在现有技术中存在应当改进的方面。本发明的目的在于提供一种能够使连接有现场设备的控制装置的处理负荷分散的控制系统。
具体实施方式
[0056] 在对本发明的实施方式进行说明之前,对基于现有技术的比较例进行说明。
[0057] [比较例]
[0058] 专利文献1提出了一种如下结构的过程控制系统:控制应用程序在没有连接现场设备的控制器上的虚拟硬件上运行,连接有现场设备的冗余化IO节点和控制器经由网络连接。根据该过程控制系统,冗余化IO节点进行由现场设备输入输出的信号和经由网络与控制器通信的信号的转换。由此,控制应用程序能够在任意的控制器上运行并与任意的现场设备连接。根据该过程控制系统,通过暂时变更控制应用程序与控制器的组合,能够在不停止系统的情况下更换控制器的硬件。但是,在专利文献1的控制系统中,冗余化IO节点未搭载控制应用程序,仅由控制器控制现场设备。因此,对现场设备的访问方法存在改进的余地。
[0059] 在专利文献2中与专利文献1同样公开了一种经由网络将连接有现场设备的IO节点和控制器连接的控制系统。在专利文献2中记载的IO节点构成为对与IO节点连接的现场设备进行控制的控制应用程序能够在其中运行。此外,专利文献2的未与现场设备连接的控制器上的控制应用程序构成为能够经由网络访问与IO节点连接的现场设备。为了控制器与IO节点的通信,例如使用OPC UA(OPC Unified Architecture OPC统一架构)那样的通信协议。在专利文献2的控制系统中,即使控制器的控制应用程序移动到其他控制器,控制应用程序也能够经由网络访问相同的现场设备。
[0060] 在专利文献2公开的控制系统中,为了访问与IO节点连接的现场设备,在控制器上运行的控制应用程序执行经由网络访问现场设备的步骤。在控制与自身装置连接的现场设备的IO节点上运行的控制应用程序直接访问为了现场设备的输入输出而分配的特定的存储地址而进行信息的输入输出。因此,如果将在控制器上运行的控制应用程序搭载于IO节点,则对现场设备的访问成为经由网络的访问。在这种情况下,与直接指定存储地址并对现场设备进行输入输出的情况相比,产生多余通信负荷或处理负荷。此外,由于在IO节点上运行的控制应用程序没有以经由网络访问现场设备为前提,所以不能搭载于控制器。为了在不停止系统的情况下进行硬件的更换或软件的更新,优选的是无论在控制器上还是在IO节点上,控制应用程序都能够以适当的方法对现场设备进行输入输出。
[0061] 因此,本发明提出与控制应用程序的位置无关而能够以适当的方法对现场设备进行输入输出的控制系统、控制装置和对现场设备的访问方法。此外,本发明提出一种能够容易进行控制装置的更换和负荷分散的控制系统。下面,参照附图对本发明的实施方式进行说明。
[0062] [参考方式]
[0063] 图1是表示参考方式的控制系统1的一例的示意图。控制系统1分别包括一个以上的现场设备10、IO节点20和控制器30以及网络40。控制系统1还可以包括监视装置45。现场设备10是第一现场设备。IO节点20是第一控制装置。控制器30是第二控制装置。
[0064] 现场设备10进行用于工厂控制的数据的取得和所述工厂的操作中的至少一方。现场设备10例如是温度传感器或流量计等传感器11、或者阀设备、风扇或电动机等执行器12。
[0065] IO节点20是直接连接现场设备10的装置且控制应用程序21(参照图2)在其中运行。IO节点20还作为现场设备10与控制器30的接口使用。在以下的说明中,在具有多个IO节点20的情况下,有时均标记为IO节点20。在需要说明的情况下,将多个IO节点20中的一个作为IO节点20A而与特定的IO节点20区分。此外,有时将与IO节点20A连接的现场设备作为现场设备10A(传感器11A和执行器12A)。
[0066] 本参考方式的控制器30未直接连接现场设备10,控制应用程序31(参照图2)在控制器30中运行。在本参考方式中,与现场设备10直接连接的设备为IO节点20。控制器30构成为经由网络40能够与IO节点20进行通信。控制器30能够按照控制应用程序31经由IO节点20访问现场设备10。控制器30能够进行与IO节点20连接的多个现场设备10的输入输出。
[0067] 网络40是能够连接工厂内的IO节点20、控制器30、监视装置45等信息设备的工厂内专用的通信网络。网络40可以包括有线或无线的区域内通信网(LAN:Local Area Network局域网)。有线的区域内通信网例如包括以太网。无线的区域内通信网包括例如依据Wi‑Fi(注册商标)和WiMAX(注册商标)等无线通信标准的无线网络。此外,也可以使用采用了OPC UA或PROFINET那样的标准化的协议的通信网络。
[0068] 监视装置45是用于监视工厂整体的运行状况的装置。可以从各IO节点20和控制器30向监视装置45发送应用程序的运行状态。应用程序的运行状态包括运行、停止、空闲、错误等。监视装置45具有显示装置和输入装置。监视装置45按照操作员的指示或按照编程的步骤,控制IO节点20和控制器30。监视装置45用于使控制应用程序21、31停止或调整应用程序的运行。
[0069] 接着,参照图2,进一步说明控制系统1的要部的构成例。
[0070] IO节点20可以包括控制应用程序21、IO访问路由部22、IO访问部23和通信部24而构成。控制应用程序21是第一控制应用程序。IO访问路由部22是第一访问路径控制部。另外,图1所示的IO节点20A也具有与IO节点20相同的构成要素。以下,有时对IO节点20A的构成要素赋予与IO节点20的构成要素相同的附图标记来进行说明。
[0071] 控制应用程序21能够控制与IO节点20连接的现场设备10。控制应用程序21也可以控制与其他IO节点20A连接的现场设备10A。控制应用程序21可以在操作系统上运行。控制应用程序21进行在进行过程控制方面所需的现场设备10的控制(例如来自现场设备10的测定数据的收集和控制数据向现场设备10的发送等)。
[0072] IO访问路由部22向控制应用程序21提供抽象化的IO访问方法。IO访问路由部22配合着搭载有IO访问路由部22的IO节点20与现场设备10的物理关系,对访问方法适应性地进行变更。为了对硬件进行抽象化,IO访问路由部22可以包含于IO节点20内的虚拟化部25。虚拟化部25在IO节点20的硬件上代替硬件而虚拟地运行。为了不变更控制应用程序21而能够进行IO节点20的硬件更换而设置虚拟化部25。但是,为了提供IO访问路由部22的功能,虚拟化部25不是必须的。即使没有虚拟化部25,也能够安装IO访问路由部22。
[0073] IO访问部23与连接于IO节点20的现场设备10之间进行数据的输入输出处理。IO访问部23可以包括IO访问用的端口和电路等。
[0074] 通信部24经由网络40与其他IO节点20A和控制器30进行通信。通信部24根据网络40的种类进行必要的通信处理。通信部24可以包括用于与网络40连接的物理接口和进行协议处理等的电路等。
[0075] 控制器30包括控制应用程序31、IO访问路由部32和通信部33而构成。控制应用程序31是第二控制应用程序。IO访问路由部32是第二访问路径控制部。控制应用程序31、IO访问路由部32和通信部33分别具有与IO节点20的控制应用程序21、IO访问路由部22和通信部24相同或类似的功能,因此省略说明。
[0076] IO访问路由部22和IO访问路由部32构成为进行协作,控制分别来自控制应用程序21和控制应用程序31的向现场设备10的输入输出的路径。在本发明中,“协作”例如表示如下状态:各装置的IO访问路由部知道相互的存在和通知目标,能够将有无与自身连接的控制应用程序(在“有”的情况下,将其信息或状态等)和有无与自身连接的现场设备(在“有”的情况下,将其信息或状态等)适当地与其他装置的IO访问路由部进行信息交换。因此,当从监视装置等具有指示时,能够对适当的对方(其他装置的IO访问路由部)执行或委托执行处理。IO访问路由部22和IO访问路由部32根据与现场设备10的物理上的位置关系,例如以如下方式确定访问方法。将IO访问路由部22和IO访问路由部32所提供的功能称为IO访问路由功能。
[0077] (1)存储地址指定:
[0078] 现场设备10的输入输出单位通常分配给IO节点20的存储区域。在IO节点20的控制应用程序21访问与IO节点20直接相连的现场设备10的情况下,IO访问路由部22指定与控制应用程序21以I/O名表示的现场设备10的输入输出单位对应的存储区域的地址,访问现场设备10。
[0079] (2)网络经由:
[0080] 在控制器30的控制应用程序31访问通过网络40相连的IO节点20上连接的现场设备10的情况下,IO访问路由部32从控制应用程序31将与I/O名一起表示的输入输出指示经由网络40传送到IO节点20。从控制器30接收到输入输出指示的IO节点20的IO访问路由部22指定与现场设备10的输入输出对应的存储地址并访问现场设备10。在IO节点20的控制应用程序21访问通过网络40相连的其他IO节点20A上连接的现场设备10A的情况下,IO访问路由部22也将来自控制应用程序21的输入输出指示经由网络传送到IO节点20A。
[0081] 输入输出单位是指对现场设备10进行一次数据的输入输出的单位。例如,在现场设备10为测量温度的传感器11的情况下,从现场设备10输出的温度信息能够成为输入输出单位。例如,在现场设备10是加热器(执行器12)并将使温度上升到规定的设定值的指示发送到现场设备10的情况下,输出到现场设备10的表示加热器的运转指示和设定温度的信息能够成为输入输出单位。能够以一个或多个输入输出单位访问现场设备10。将现场设备10的各输入输出单位的信息的输入输出目标称为I/O。I/O例如是存储地址。
[0082] (IO访问路由部的处理)
[0083] 参照图3和图4,说明IO访问路由部22、32执行的处理的例子。图3表示IO访问路由部22、32从控制应用程序21、31接收到指示而执行的处理。图4表示IO节点20的通信部24经由网络40接收到来自其他IO节点20A或控制器30的输入输出指示,IO访问路由部22从通信部24接收到该输入输出指示而执行的处理。
[0084] 首先,在图3中,IO访问路由部22、32从控制应用程序21、31与将现场设备10的I/O抽象化的固有的名称一起接收对现场设备10的输入输出指示(步骤S101)。作为固有的名称能够使用以在系统内成为唯一的方式定义的名称。以下将I/O的固有的名称称为I/O名。控制应用程序21、31不是指定现场设备10的物理上的位置或连接有现场设备10的IO节点20的IP地址,而是指定分配给I/O的I/O名并进行访问。由此,控制应用程序21、31能够不依赖于与现场设备10的物理位置关系或连接关系,而以相同的方法确定进行输入输出的现场设备10的I/O。
[0085] 接着,IO访问路由部22、32基于从控制应用程序21、31接收到的I/O名,确定对应的现场设备10的位置信息(步骤S102)。现场设备10的位置信息也可以称为与现场设备10相连的路径。现场设备10的位置信息包含连接现场设备10的IO节点20的信息。能够通过各种方法进行与I/O名对应的现场设备10及其位置信息的确定。例如,能够使各IO访问路由部22、32具有表示I/O名与现场设备10及其位置信息的对应关系的转换表。或者能够在网络40上设置存储I/O名与现场设备10及其位置信息的对应的管理服务器。管理服务器能够对来自IO访问路由部22、32的使用I/O名的询问返回现场设备10的位置信息。
[0086] IO访问路由部22、32如果基于I/O名确定对应的现场设备10的位置信息,则判断该现场设备10是否与自身装置连接(步骤S103)。
[0087] 在步骤S103中,在与I/O名对应的现场设备10与自身装置连接的情况下(步骤S103:是),IO访问路由部22、32前进至步骤S104。在这种情况下,自身装置是IO节点20。IO访问路由部22指定与I/O名对应的存储地址,访问I/O并进行数据的输入输出(步骤S104)。
[0088] 在步骤S103中,在与I/O名对应的现场设备10未与自身装置连接的情况下(步骤S103:否),IO访问路由部22、32前进至步骤S105。以下,假定与I/O名对应的现场设备10是图1的现场设备10A。在这种情况下,IO访问路由部22、32向连接有与I/O名对应的现场设备10A的其他IO节点20A的IO访问路由部22传送来自控制应用程序21、31的数据的输入输出指示(步骤S105)。换句话说,IO访问路由部22、32控制路径,以将来自控制应用程序21、31的输入输出转向连接有与I/O名对应的现场设备10A的IO节点20A。
[0089] 在接收到输入输出指示的其他IO节点20A中,IO访问路由部22根据从通信部24接收到的指示来执行对I/O的访问(参照图4)。作为自身装置的IO节点20或控制器30的IO访问路由部22、32从连接有与I/O名对应的现场设备10A的其他IO节点20A的IO访问路由部22取得数据的输入输出结果(步骤S106)。
[0090] 在步骤S104或步骤S106结束后,IO访问路由部22、32将数据的输入输出结果发送到控制应用程序21、31(步骤S107)。
[0091] 接着,基于图4,说明IO访问路由部22根据从通信部24接收到的指示而执行的处理。如果IO节点20的通信部24从其他IO节点20或控制器30接收到输入输出指示,则IO节点20的IO访问路由部22从通信部24接收数据的输入输出指示(步骤S201)。从通信部24接收到输入输出指示的IO访问路由部22确认该输入输出指示是对与自身装置连接的现场设备10的输入输出指示(步骤S202)。
[0092] 接着,从通信部24接收到输入输出指示的IO访问路由部22指定存储地址,访问I/O并进行数据的输入输出(步骤S203)。在步骤S203之后,IO访问路由部22经由通信部24将数据的输入输出结果发送到发送了输入输出指示的控制器30或IO节点20的IO访问路由部22、32(步骤S204)。
[0093] 例如,与图3的步骤S105对应,在图1的IO节点20A从IO节点20接收到对现场设备10A的输入输出指示的情况下,IO节点20A的IO访问路由部22根据从IO节点20A的通信部24接收到的指示,指定存储地址并进行数据的输入输出。IO节点20A的IO访问路由部22经由IO节点20A的通信部24,将数据的输入输出结果发送到发送了输入输出指示的IO节点20的IO访问路由部22。
[0094] 通过上述方式,控制应用程序21、31能够不确定现场设备10的位置信息或所连接的IO节点20而通过抽象化的I/O名来访问I/O。由此,控制应用程序能够以相同的方法访问I/O而不依赖于搭载的IO节点20或控制器30与现场设备10的物理位置关系。
[0095] (控制应用程序的移动)
[0096] 接着,参照图5的流程图,说明将控制应用程序21从连接有控制对象的现场设备10的IO节点20移动到控制器30时的处理。在这种情况下,对I/O的访问方法从指定存储地址变更为经由网络。控制应用程序21的移动本身能够利用一般的动态迁移的结构。移动的对象仅是控制应用程序21。虚拟化部25和IO访问路由部22不移动。
[0097] 首先,对IO节点20上的控制应用程序21指示移动(步骤S301)。移动的指示包括:控制系统1的操作员从监视装置45指示的情况;或者将控制系统1的任意一个装置的任意一个动作作为触发而从监视装置45自动发出指示的情况等。例如对IO节点20的虚拟化部25发出移动的指示。可以基于监视装置45的控制进行以下的各装置的处理。
[0098] 接收到移动的指示的IO节点20的虚拟化部25使控制应用程序21的运行暂时停止,将重新开始运行所需的数据复制到移动目标的控制器30(步骤S302)。
[0099] IO节点20的IO访问路由部22将访问现场设备10的控制应用程序31的位置设定为移动目标的控制器30,以使经由网络能够进行访问(步骤S303)。控制应用程序31在控制器30中执行与控制应用程序21相同的处理。步骤S303可以与步骤S302并行执行。
[0100] 如果所需的数据复制到移动目标的控制器30,则控制应用程序31重新开始处理(步骤S304)。控制应用程序31对IO访问路由部32进行与I/O名一起表示的输入输出指示。
[0101] IO访问路由部32基于控制应用程序31指定的I/O名,自动判断用于控制现场设备10的访问目标(步骤S305)。例如,I/O名与现场设备10的位置信息的对应通过转换表预先存储于IO访问路由部32。因此,在步骤S305中,不需要通过人工或专用制作的程序进行设定变更等。
[0102] 接着,参照图6的流程图,说明将控制应用程序31从控制器30移动到与控制对象的现场设备10连接的IO节点20时的处理。在这种情况下,对I/O的访问方法从经由网络变更为指定存储地址。在以下的说明中,省略与图5的流程图的说明相同的方面。
[0103] 首先,对控制器30上的控制应用程序31指示移动(步骤S401)。
[0104] 接收到移动的指示的控制器30的虚拟化部34使控制应用程序31的运行暂时停止,将重新开始运行所需的数据复制到移动目标的IO节点20(步骤S402)。
[0105] 如果所需的数据复制到移动目标的IO节点20,则在IO节点20中执行与控制应用程序31相同处理的控制应用程序21重新开始处理(步骤S403)。
[0106] 如果IO节点20的控制应用程序21重新开始处理,则IO节点20的IO访问路由部22基于控制应用程序21指定的I/O名,将访问目标判定为是与自身装置连接的现场设备10。IO访问路由部22将控制应用程序21的访问目标设定为与自身装置连接的现场设备10(步骤S404)。此后,IO访问路由部22将从控制应用程序21与I/O名一起接收到的输入输出指示针对与现场设备10连接的存储地址进行输入输出。
[0107] 由此,在控制系统1中,能够切换控制应用程序21访问现场设备10的状态(第一状态)和控制应用程序31访问现场设备10的状态(第二状态)。通过上述方式,能够在不同的IO节点20和控制器30之间切换控制应用程序21、31,而无需意识到控制应用程序21、31的位置变更。此外,控制应用程序的切换不限于IO节点20与控制器30之间。能够在不同的IO节点20之间或不同的控制器30之间切换运行的控制应用程序。
[0108] (强制)
[0109] 一般来说,已知如下功能:更换现场设备时,不能从IO节点访问对象的输入输出单位的信息,因此将IO节点内的由I/O取得的信息值重写为指定的值并固定,并且与实际的I/O对应的输入输出单位的信息值分离。这种功能被称为强制或I/O锁定等。控制应用程序在现场设备的更换中也像对I/O进行访问一样继续运行。
[0110] 在控制系统1中,通过使IO节点20的IO访问路由部22具有该强制功能,在控制器30和IO节点20通过网络40相连的系统构成中,也能够实现同样的功能。具体地说,在更换现场设备10的情况下,IO访问路由部22将与现场设备10的输入输出单位对应的IO节点20的I/O的存储区域中存储的输入输出数据固定。
[0111] 如上所述,按照本参考方式,控制应用程序21、31不需要考虑控制应用程序21、31自身的位置和对现场设备10的访问方法,通过指示I/O名就能够以适当的方式访问I/O。此外,即使控制现场设备10的控制应用程序21、31移动到或切换到任意的控制器30或其他IO节点20A,也能够继续对现场设备10的访问。此外,通过IO访问路由部22、32协作,选择用于访问I/O的最佳方法。由此,也不会因控制应用程序21、31的移动等产生不需要的处理负荷或通信负荷。
[0112] [第一实施方式]
[0113] 第一实施方式的控制系统1A在参考方式的控制系统1的构成的基础上,如图7所示,包括与网络40连接的高速缓存服务器50。高速缓存服务器50具有过去访问的输入输出数据的高速缓存功能。与网络40连接的控制器30能够经由高速缓存服务器50访问现场设备10。
[0114] 图8表示控制系统1A的要部的构成例。由于IO节点20和控制器30与图2所示的参考方式的IO节点20和控制器30相同,所以赋予与参考方式相同的附图标记并省略说明。
[0115] 高速缓存服务器50包括高速缓存数据库51、IO访问路由部52和通信部53。IO访问路由部52可以包含于虚拟化部54。高速缓存数据库51是存储部。IO访问路由部52是第三访问路径控制部。
[0116] 高速缓存数据库51能够存储对与一个以上的现场设备10的输入输出单位对应的I/O的输入输出数据。输入输出数据可以包含当前和过去的数据。高速缓存数据库51可以包括能够存储大容量数据的半导体存储器、磁存储装置和光磁存储装置等。
[0117] IO访问路由部52与其他装置的IO访问路由部22、32协作,控制向I/O的输入输出的路径,以使对IO节点20的访问的全部或一部分转向高速缓存服务器50。例如,IO访问路由部22将对现场设备10的输入输出数据发送到IO访问路由部52。IO访问路由部52将从IO访问路由部22接收到的输入输出数据存储于高速缓存数据库51。IO访问路由部22、32、52协作,将从控制应用程序31向现场设备10的输入输出指示传送到高速缓存服务器50。
[0118] 现场设备10或IO节点20有时与控制器30相比处理能力不高。因此,有时不能处理来自多个控制应用程序21、31的大量访问。在这种情况下,IO节点20的IO访问路由部22仅与高速缓存服务器50交接数据。此外,其他控制器30对高速缓存服务器50进行输入输出。高速缓存服务器50能够采用处理能力高、即使有大量的访问也能够毫无问题地进行处理的硬件。
[0119] 通信部53构成为与通信部24和通信部33相同或类似。
[0120] 例如以如下方式利用高速缓存服务器50。
[0121] 1.基于对I/O的访问负荷的高速缓存服务器的利用
[0122] IO节点20的IO访问路由部22监视所连接的现场设备10的输入输出负荷。在IO节点20的负荷满足规定条件的情况下,IO节点20的IO访问路由部22可以将对现场设备10的输入输出指示转向高速缓存服务器50。在来自多个控制应用程序21、31的输入输出集中于特定的IO节点20的情况下,IO节点20的处理负荷变高,因此有可能不能实时响应。在这种情况下,IO访问路由部22指示其他IO节点20A和控制器30,将访问方法变更为经由高速缓存服务器50。在以后的处理中,IO节点20将输入输出数据传送到高速缓存服务器50,而不与其他IO节点20A和控制器30进行通信。
[0123] IO节点20仅与高速缓存服务器50进行通信,在IO节点20能够处理的范围进行应对,因此能够不增加处理负荷而维持实时响应。虽然来自各控制应用程序21、31的访问集中于高速缓存服务器50,但是通过使用高速缓存的数据,能够降低与IO节点20之间的通信负荷。另外,在高速缓存数据服务器存储数据时赋予预先确定的优先顺序,因此IO节点20可以从优先顺序高的数据开始取入。
[0124] 2.基于对I/O的访问用途的访问的分散
[0125] IO节点20的IO访问路由部22能够基于对I/O的输入输出的访问用途使输入输出分散。例如,在将I/O用于控制的情况下,控制应用程序21、31能够设定成经由连接了现场设备10的IO节点20对现场设备10直接进行输入输出。在将I/O用于监视用途的情况下,控制应用程序21、31能够设定成参照存储于高速缓存服务器50的数据。
[0126] 在将I/O用于控制的情况下,特别是在为了操作而对I/O进行数据的输入或重写等的情况下,需要实时性,但访问不太集中。由此,控制应用程序21、31可以不经由高速缓存服务器50而直接访问IO节点20。在利用监视装置45等将I/O的输出数据用于监视的情况下,几乎不需要实时性,但来自多个装置的访问有时集中于同一IO节点20。由此,控制应用程序21、31只要能够经由高速缓存服务器50访问I/O的输出数据即可。
[0127] (强制)
[0128] 在本实施方式的控制系统1A中,能够使高速缓存服务器50具有更换IO节点20时的强制功能。参照图9,说明在控制系统1A中更换IO节点20的步骤。
[0129] 首先,从控制器30或监视装置45向其他IO访问路由部通知将对与更换对象的IO节点20连接的现场设备10的I/O的访问方法从IO访问路由部22变更为经由高速缓存服务器50(步骤S501)。IO节点20的IO访问路由部22将从I/O取得的输入输出单位的信息值依次传送到高速缓存服务器50。由此,从控制应用程序31向I/O的访问转向高速缓存服务器50。控制应用程序31经由高速缓存服务器50的高速缓存数据库51访问IO节点20的现场设备10的I/O。
[0130] 接着,在高速缓存服务器50上锁定与更换对象的IO节点20连接的现场设备10的输入输出单位的信息值(步骤S502)。即,高速缓存服务器50上的输入输出单位的信息值(输入输出数据)与从I/O取得的实际的输入输出单位的信息值分离,直到解除锁定为止将固定的值提供给控制应用程序31。
[0131] 控制系统1A的操作者或其他工作人员对更换对象的IO节点20进行更换(步骤S503)。
[0132] 如果IO节点20的更换完成,则根据操作者或工作人员的输入或控制系统1A检测到更换作业的完成,解除高速缓存服务器50上的I/O的锁定(步骤S504)。
[0133] 在解除高速缓存服务器50上的I/O的锁定之后,在IO访问路由部32中,对与现场设备10的输入输出单位对应的I/O的访问方法恢复原状(步骤S505)。由此,控制器30的控制应用程序31能够经由网络40访问IO节点20。
[0134] 通过上述方式,在第一实施方式的控制系统1A中,能够使连接有现场设备10的IO节点20的处理负荷在时间上和/或根据访问用途而分散。此外,在第一实施方式的控制系统1A中,能够在不停止整体的系统的情况下更换IO节点20。
[0135] [第二实施方式]
[0136] 图10表示第二实施方式的控制系统1B。在该控制系统1B中,除了参考方式的控制系统1的构成要素以外,现场设备10B(传感器11B、执行器12B)与网络40直接连接。此外,控制系统1B可以与第一实施方式同样包括高速缓存服务器50。现场设备10B是第二现场设备。作为现场设备10B假设IoT(Internet of Things,物联网)传感器等。在这种情况下,可以考虑使用廉价的通用设备,因此假设不能使现场设备10B本身具有IO访问路由功能。
[0137] 在这种情况下,IO节点20上的IO访问路由部22或控制器30上的IO访问路由部32中的任意一个可以构成为能够对现场设备10B以现场设备10B能够通信的通信协议进行访问并进行输入输出。现场设备10B能够通信的通信协议例如包括OPC UA、PROFINET、Modbus/TCP、MQTT和HTTP等。此外,IO访问路由部22、32构成为能够控制输入输出的路径,以便能够从控制应用程序21、31向现场设备10B进行输入输出。例如,不能对现场设备10进行输入输出的控制器30的IO访问路由部32可以将来自控制应用程序31的输入输出指示传送到能够对现场设备10B进行输入输出的IO节点20的IO访问路由部22。通过上述方式,能够将与网络40直接连接的IoT设备等现场设备10B加入到本发明的控制系统1B并进行控制。
[0138] 在控制系统1B包括高速缓存服务器50的情况下,高速缓存服务器50的IO访问路由部55也可以访问现场设备10B。IO节点20或控制器30经由高速缓存服务器50对现场设备10B进行输入输出。在这种情况下,只要仅在现场设备10B与高速缓存服务器50之间以上述通信协议进行通信即可,因此不需要在各IO节点20和控制器30中进行协议转换等处理。
[0139] [第三实施方式]
[0140] 如图11所示,在第三实施方式的控制系统1C中,各装置的IO访问路由部22、32、52构建在应用程序框架26、35、55上。控制系统1C可以与在第一实施方式的控制系统1A中在虚拟化部25、34、54包含IO访问路由部22、32、52的结构不同。
[0141] 应用程序框架26、35、55是用于安装应用程序的标准结构的库的集合。控制应用程序21、31和高速缓存数据库51能够使用应用程序框架26、35、55提供的API,对抽象化的I/O进行输入输出。应用程序框架26、35、55根据实际的现场设备10的位置信息来变更访问方法。控制应用程序21、31不需要意识到对现场设备10的访问方法。
[0142] 通过使用应用程序框架26、35、55来代替虚拟化部25、34、54,得到与使用虚拟化部的情况相同的效果。此外,由于应用程序框架26、35、55是库,所以容易进行系统的修正、变更。
[0143] (基于多个运算结果的输出值的确定)
[0144] 在上述各实施方式中,IO访问路由部22、32、52相互协作,针对来自控制应用程序21、31的向I/O的输入输出指示,进行了控制输入输出的路径而转向适当的装置的动作。也能够使IO访问路由部22、32、52具有基于来自多个控制应用程序21、31的运算结果来确定对现场设备10的控制内容的功能。
[0145] 例如,在上述各实施方式中,如图12所示,能够在IO节点20的IO访问路由部22设置判断部27。例如,基于传感器11的输出,包含控制应用程序21、31中的至少任意一方的多个控制应用程序进行相同的控制运算,并且指示计算出的输入值向执行器12的输入。判断部27对多个控制应用程序计算出的多个输入值进行比较,或者对多个输入值进行统计处理,确定最终的输入值。例如,判断部27可以将多个输出值的平均值确定为输入值。或者在具有三个以上的控制应用程序的情况下,判断部27可以从多个输入值中采用最多的输入值。
[0146] 通过上述方式,能够提高控制系统1、1A、1B的控制的可靠性。
[0147] 另外,判断部27也可以不包含于IO访问路由部22而位于IO访问路由部22与现场设备10之间。
[0148] 基于各附图和实施例对本发明的实施方式进行了说明,但是本领域技术人员容易基于本发明进行各种变形或修正。因此,需要注意的是本发明的具体构成并不限于本发明的实施方式,在不脱离本发明的宗旨的范围内包括各种变形或修正。