CN111095138B - 控制装置、控制装置的控制方法、信息处理程序及记录介质 - Google Patents

控制装置、控制装置的控制方法、信息处理程序及记录介质 Download PDF

Info

Publication number
CN111095138B
CN111095138B CN201880056330.9A CN201880056330A CN111095138B CN 111095138 B CN111095138 B CN 111095138B CN 201880056330 A CN201880056330 A CN 201880056330A CN 111095138 B CN111095138 B CN 111095138B
Authority
CN
China
Prior art keywords
task
variables
variable
tasks
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201880056330.9A
Other languages
English (en)
Other versions
CN111095138A (zh
Inventor
小岛达矢
德隆宏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Omron Corp
Original Assignee
Omron Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Omron Corp filed Critical Omron Corp
Publication of CN111095138A publication Critical patent/CN111095138A/zh
Application granted granted Critical
Publication of CN111095138B publication Critical patent/CN111095138B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/056Programming the PLC
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/054Input/output
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0421Multiprocessor system
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/12Plc mp multi processor system
    • G05B2219/1204Multiprocessing, several plc's, distributed logic control
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/12Plc mp multi processor system
    • G05B2219/1211Exchange control, I-O data to other plc, using separate synchronizing
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/12Plc mp multi processor system
    • G05B2219/1214Real-time communication between plc, Ethernet for configuration, monitor
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Programmable Controllers (AREA)

Abstract

在多任务执行中,读出确保了同步性的多个变量的更新后的值。PLC(10)以完成变量A~C各自的更新后的值的读出的时刻全部包含在周期的间隔最小的任务的、从一个周期的开始时刻至结束时刻之间的方式,读出变量A~C各自的更新后的值。

Description

控制装置、控制装置的控制方法、信息处理程序及记录介质
技术领域
本发明涉及用于控制机械及设备等的动作的控制装置。
背景技术
目前,关于可编程控制器(Programmable Logic Controller,以下简称为“PLC”)等工业用控制装置,已知用于使信息化(即,工业用控制装置获取、生成的信息在外部装置中的利用等)和高性能化并存的各种尝试。
例如,在下述的专利文献1中,作为对PLC的信息化的尝试,公开有遵循工业用的设备间通信的协议即OPCUA(OPC Unified Architecture),将作为服务器装置的PLC等与客户端装置连接的技术。
另外,在专利文献2中,作为对PLC的高性能化的尝试,公开有通过分时并行执行多个任务,并且以与各任务对应的周期执行各任务,即以多任务执行处理的PLC。
现有技术文献
专利文献
专利文献1:日本国公开专利公报“特开2017-84143号公报(2017年5月18日公开)”
专利文献2:日本国公开专利公报“特开2009-181443号公报(2009年8月13日公开)”
发明要解决的问题
在此,关于专利文献2中公开的PLC,希望掌握在并行执行的多个任务各自中大致同时更新的多个变量各自的更新后的值,即掌握确保了同步性的多个变量各自的更新后的值。
但是,在专利文献1的现有技术中,对于并行周期性执行多个任务的工业用控制装置,在任务执行中一并询问多个变量各自的更新后的值的情况下,存在不能保证响应中的多个变量各自的值的同步的问题。换言之,在上述现有技术中,存在对于并行周期性执行多个任务的工业用控制装置“分别在至少一个任务中更新的”多个变量不能控制读出多个变量各自的更新后的值的时刻的问题。
发明内容
本发明一方面的目的在于,在并行周期性执行多个任务的工业用控制装置中,在任务执行中一并询问多个变量各自的更新后的值的情况下,实现所述工业用控制装置响应的多个变量各自的更新后的值之间的同步。
用于解决问题的技术方案
为了解决上述技术问题,本发明一方面提供一种控制装置,通过将多个任务以各自任务的周期反复并行执行,对控制对象设备进行控制,其中,具备:接收部,其从外部接收请求,该请求为对将各值在所述多个任务的至少一个中更新的多个变量一并询问在所述任务的执行中的各值的请求;读出部,其在所述接收部接收到所述请求时,以完成所述多个变量各自的值的读出的时刻全部包含在所述多个任务中所述周期的间隔最小的任务的、从一个周期的开始时刻至结束时刻之间的方式,读出所述多个变量各自的在所述多个任务的至少一个中更新的值;输出部,其向外部输出所述读出部读出的所述多个变量各自的值。
为了解决上述技术问题,本发明一方面提供一种控制方法,为控制装置的控制方法,该控制装置通过将多个任务以各自任务的周期反复并行执行,对控制对象设备进行控制,其中,该控制方法包括:接收步骤,从外部接收请求,该请求为对将各值在所述多个任务的至少一个中更新的多个变量一并询问在所述任务的执行中的各值的请求;读出步骤,在所述接收步骤中接收到所述请求时,以完成所述多个变量各自的值的读出的时刻全部包含在所述多个任务中所述周期的间隔最小的任务的、从一个周期的开始时刻至结束时刻之间的方式,读出所述多个变量各自的在所述多个任务的至少一个中更新的值;输出步骤,向外部输出所述读出步骤中读出的所述多个变量各自的值。
发明效果
根据本发明的一方面,实现如下效果:在并行周期性执行多个任务的工业用控制装置中,在任务执行中一并询问多个变量各自的更新后的值的情况下,实现上述工业用控制装置响应的多个变量各自的更新后的值之间的同步。
附图说明
图1是表示本发明实施方式1的CPU单元的主要部分构成等的框图。
图2是表示包含具备图1的CPU单元的PLC的管理系统的整体概况的图。
图3是表示图1的CPU单元的硬件结构的图。
图4是表示图1的CPU单元执行的处理的概要的图。
图5是表示本发明实施方式2的CPU单元的主要部分构成等的框图。
图6是表示图5的CPU单元的存储部中存储的变量管理表的数据结构的图。
图7是表示图5的CPU单元执行的处理的概要的图。
图8是对于图7所示的处理说明其详细情况的图。
图9是表示对于图5的CPU单元执行的处理,存在多个更新某一个变量的值的任务的情况下的处理的概要的图。
图10是对于图9所示的处理说明其详细情况的图。
具体实施方式
[实施方式1]
以下,基于附图说明本发明一方面的实施方式(以下也记载为“本实施方式”),首先,基于图1~图4详细说明本发明的实施方式1。此外,对图中的相同或相当部分标注相同符号,不重复其说明。在本实施方式中,将控制机械及设备等控制对象的PLC(可编程逻辑控制器、Programmable Logic Controller)作为控制装置(控制器)的典型例进行说明。
§1.应用例
为了便于对本发明一方式的PLC10(控制装置)的理解,首先,关于应用本发明的情况的一例,具体而言,使用图2对包含PLC10的管理系统1的概要进行说明。
图2是表示管理系统1的整体概要的图。管理系统1包含以下两个系统。即,通过一个以上的PLC10控制生产设备内的输入设备及输出设备的控制系统2、对控制系统2中获取、生成的各种信息实施存储、分析等并利用到控制系统2的运用等的信息系统3。
PLC10连接于控制系统2和信息系统3两者,实现从信息系统3对控制系统2(特别是控制系统2中使用的数据(变量))的访问。PLC10和客户端装置80例如利用OPCUA协议相互连接。
信息系统3的客户端装置80针对PLC10执行控制处理时使用的变量,在PLC10中一并询问PLC10运行中的“多个变量各自的确保同步性的更新后的值”。换言之,客户端装置80针对在PLC10执行控制处理时更新值的变量,根据掌握多个变量之间的关系等目的,在PLC10中一并询问更新时刻大致同时刻的多个变量各自的更新后的值。例如,客户端装置80针对变量A、B及C(以下简称为“变量A~C”),在PLC10中一并询问更新时刻大致同时刻的变量A~C各自的更新后的值。
在此,如果是只重复执行一个任务的控制装置,则在该任务中各值被更新的多个变量各自的更新后的值通过在该任务的1周期的结束时刻(或者开始时刻)全部读出,能够确保读出的值之间的同步。
但是,在控制系统2中,对PLC10进行的控制要求严格的实时性,PLC10为了响应该请求,在多任务中执行处理。而且,在多任务中执行处理的情况下,对于多个变量,仅仅“在各任务的1周期的结束时刻(或开始时刻),读出在该任务中更新的变量的值”,不能确保读出的值之间的同步。例如,在变量A及B被更新的任务Tp和变量C被更新的任务Ts并行执行的情况下,仅“在各任务的1周期的结束时刻(或开始时刻),读出在该任务中被更新的变量的值”,可能发生以下事态。
即,在完成变量A及B的更新后的值的读出的时刻(例如任务Tp的第一周期的结束时刻)到完成变量C的读出的时刻(例如任务Ts的第一周期的结束时刻)之间,有时任务Tp执行1次以上。
PLC10读出多个变量各自的更新后的值,以防止这种事态发生,且确保读出的多个变量各自的更新后的值之间的同步,并将读出的值输出到客户端装置80。
即,PLC10使完成多个变量各自的值的读出的时刻全部包含在多个任务中的周期的间隔最小的任务的周期内,读出这些多个变量各自的更新后的值。例如,PLC10从在任务Tp中更新的变量A及B的更新后的值的读出完成时刻至在任务Ts中更新的变量C的更新后的值的读出完成时刻的期间,执行读出,以使任务Tp及Ts各自一次也不执行。而且,PLC10将读出的“多个变量各自的更新后的值”输出到客户端装置80。
由此,客户端装置80能够一并从PLC10获取“确保了同步(即,更新时刻大致同时刻)的”多个变量各自的更新后的值。即,在管理系统1中,信息系统3能够一并掌握控制系统2中使用的多个变量各自的更新后的值、且确保了各值之间的同步的更新后的值。
在读出的多个值之间确保“同步”,例如是指在完成变量P的更新后的值P1的读出之后直到完成变量Q的更新后的值Q1的读出为止的期间,变量P及Q的至少一个值没有被更新。即,将“从完成P1的读出之后直到完成Q1的读出为止的期间,没有变量P的值被更新为P2、或者变量Q的值未被更新为Q2的情况”,称作“确保读出的变量P及Q各自的更新后的值之间的同步”。
此外,“以多任务执行处理”是指“并行执行多个任务”,具体而言,包含“同时并行执行多个任务”的情况和“根据分时并行执行多个任务”的情况。在下面的说明中,说明PLC10“通过分时并行执行多个任务”的情况。然而,即使在“同时并行执行多个任务”的情况下,PLC10也一并读出多个变量各自的更新后的值、且确保了各值之间的同步的更新后的值。
PLC10例如采用单核心,在对于多任务进行在某个任务执行中未执行其它任务的“并行执行”的情况下,一并读出多个变量各自的更新后的值、且确保了各值之间的同步的更新后的值。另外,PLC10例如在采用多核心,在对于多任务进行在某一任务执行中执行其它任务的“并排执行”的情况下,一并读出多个变量各自的更新后的值、且确保了各值之间的同步的更新后的值。即,PLC10对于多任务,无论是进行并行执行的情况还是并排执行的情况,均一并读出多个变量各自的更新后的值、且确保了各值之间的同步的更新后的值。对于PLC10,“以各自任务的周期反复并行执行多个任务”包含进行并行执行的情况和进行并排执行的情况两者。
§2.构成例
(控制系统的概要)
控制系统2包含PLC10、经由现场网络20与PLC10连接的伺服驱动器33及34以及远程IO终端35、作为现场机器的设备31及32。另外,支持装置60经由连接电缆50连接于PLC10。在控制系统2中,负责生产设备内的输入设备和输出设备的控制的一个以上的PLC10和由PLC10控制动作的设备连接于现场网络20等控制系统的网络。PLC10和设备经由该控制系统的网络进行循环通信,由此进行IN数据和OUT数据(下称“IO数据”)的收发,控制生产设备。
PLC10是控制系统2中控制机械及设备等控制对象的控制装置,是控制系统2中的管理经由现场网络20的数据传输的主装置。PLC10包含执行主要运算处理的CPU单元100、电源单元101、一个以上的IO单元(在图2的例子中,IO单元102~104)和特殊单元105。CPU单元100和IO单元102~104各自和特殊单元105构成为能够经由PLC系统总线106彼此交换数据。
CPU单元100执行控制对象的状态等的各种处理,例如执行“通过反复输出数据的发送、输入数据的接收和使用输入数据生成输出数据的控制程序的执行,来控制控制对象”的处理。参照图1后述CPU单元100的详细情况。
电源单元101向CPU单元100、IO单元102~104及特殊单元105供给适当的电压的电源。
IO单元102~104分别是与一般的输入输出处理有关的单元,且负责接通/断开的数据(即,二进制化的数据)的输入输出。具体而言,IO单元102~104分别收集作为传感器等输入设备的设备31检测某些对象的状态(接通)及没有检测到任何对象的状态(断开)的信息。另外,IO单元102~104分别对继电器、促动器之类的输出设备即设备32输出用于激活的指令(接通)及用于非激活的指令(断开)的任一种指令。
特殊单元105具有与IO单元102~104处理的数据不同的数据(例如,模拟数据)的输入输出、温度控制、特定的通信方式下的通信之类的IO单元102~104不支持的功能。
设备31及32分别是由PLC10控制的输入输出设备。作为输入设备的设备31例如是温度传感器、光传感器等“检测器”、“开关(按压开关、限制开关、压力开关等)”等。作为输出设备的设备32例如是“促动器”、“继电器”、“电磁阀”、“显示器”、“显示灯”等。
现场网络20传输在CPU单元100和现场机器(伺服驱动器33及34以及远程IO终端35)之间交换的各种数据。作为现场网络20,典型而言可以使用各种工业用以太网(注册商标)。作为工业用以太网(注册商标),例如已知有EtherCAT(注册商标)、Profinet IRT、MECHATROLINK(注册商标)-III、Powerlink、SERCOS(注册商标)-III、CIP Motion等,也可以可以采用这些中的任何一个。此外,也可以使用工业用以太网(注册商标)以外的现场网络。例如,如果是不进行运动控制的情况,则也可以使用DeviceNet、CompoNet/IP(注册商标)等。在控制系统2中,典型地示例将作为工业用以太网(注册商标)的EtherCAT(注册商标)作为现场网络20的情况的结构。
此外,PLC10通过使CPU单元100具有IO单元102~104各自的功能及伺服驱动器33及34的功能,对于以这样的内置功能能够实现的范围,CPU单元100也可以直接控制对象。
伺服驱动器33及34分别经由现场网络20连接于CPU单元100,并且根据来自CPU单元100的指令值分别驱动伺服电动机41及42。
更具体而言,伺服驱动器33及34分别以恒定的时间间隔从PLC10重复(即,周期)接收位置指令值、速度指令值、扭矩指令值等指令值。另外,伺服驱动器33及34分别从与伺服电动机41及42分别连接的各种检测器(设备31)获取伺服电动机41及42各自的动作的各种检测值(实测值)。例如,从连接于伺服电动机41及42各自的轴的位置传感器(旋转编码器)及扭矩传感器等检测器获取位置、速度、扭矩之类的伺服电动机41及42各自的动作的实测值。速度的实测值也可以根据本次位置与上次位置之间的差来计算。
而且,伺服驱动器33及34分别将来自CPU单元100的指令值设定为目标值,且将实测值作为反馈值进行反馈控制。即,伺服驱动器33及34分别调节用于驱动伺服电动机41及42各自的电流以使实测值接近目标值。此外,伺服驱动器33及34各自也可以称为伺服电动机放大器。
此外,图2示出了将伺服电动机41及42各自与伺服驱动器33及34各自组合的系统例,但也可以采用将其它结构、例如脉冲电动机和脉冲电动机驱动器组合的系统。
远程IO终端35基本上与IO单元102~104相同,进行与一般的输入输出处理有关的处理。更具体而言,远程IO终端35包含用于进行现场网络20下的数据传输的处理的通信耦合器36、一个以上的IO单元(在图2的示例中,IO单元37及38)。通信耦合器36和IO单元37及38分别构成为能够经由远程IO终端总线39相互交换数据。
支持装置60是能够连接于PLC10的信息处理装置。支持装置60经由例如USB(Universal Serial Bus)电缆即连接电缆50与PLC10连接,在与PLC10之间执行各种参数的设定、编程、监视、调试等处理。
由支持装置60执行的各种程序也可以存储在CD-ROM61中流通。存储在CD-ROM61中的程序也可以通过支持装置60的CD-ROM(Compact Disk-Read Only Memory)驱动器读取,并存储在支持装置60的硬盘(HDD)等中。或者,支持装置60也可以通过网络从上位的主计算机等下载由支持装置60执行的程序。
支持装置60例如是个人计算机,执行在PLC10中执行的用户程序的创建、编辑处理。另外,支持装置60执行从PLC10下载用户程序的处理,并且执行将用户程序上传到PLC10的处理。
用户可以使用支持装置60来设定PLC10(特别是CPU单元100)中的程序的执行单位即任务。PLC10(特别是CPU单元100的控制部130)构成为通过执行任务来控制控制对象,任务包含用于控制对象的用户程序等的执行。用户程序是用于控制控制对象设备的控制程序之一。用户可以使用支持装置60来定义任务的执行周期及执行时刻、任务中执行的程序、任务中执行的输入输出的更新、任务间共享的变量等(全局变量等)的各种设定。支持装置60向PLC10通知(上传)由用户定义的上述各种设定。
(信息系统的概述)
信息系统3包含PLC10和客户端装置80。PLC10和客户端装置80通过任意的通信电缆70连接,例如也可以通过EtherIP(注册商标)进行通信连接。PLC10和客户端装置80能够经由通信电缆70相互收发数据。例如,根据用于面向工业的数据交换的通信协议即OPCUA(OPC Unified Architecture)来进行两者的数据交换。OPCUA是从厂商及平台独立的、安全、可靠性高的工业用的设备间通信的协议。OPCUA是将现有的OPC(Object Linking andEmbedding for Process Control)设为通用化、广范围的架构。
PLC10在信息系统3中支持OPCUA,具备OPCUA服务器功能(与OPCUA客户端的连接功能)。具体而言,PLC10基于作为OPCUA客户端的客户端装置80和OPCUA标准进行连接,对来自客户端装置80的服务请求(例如数据读取请求)执行该服务而进行响应。
客户端装置80在管理系统1(信息系统3)中支持OPCUA,向作为OPCUA服务器的PLC10发出服务请求(例如,数据读取请求)。在客户端装置80中也可以安装SCADA(Supervisory Control And Data Acquisition)软件。另外,客户端装置80也可以是用于实现MES(Manufacturing Execution System,制造执行系统)的装置。
PLC10(特别是CPU单元100)支持同时实现连接方式的通用性和安全风险对应的OPCUA通信。因此,PLC10能够对从作为SCADA、MES等与OPCUA对应的上位系统的客户端装置80向制造进度信息采集的请求,输出安全响应。另外,PLC10能够安全地接收来自客户端装置80的制造指示等。另一方面,作为OPCUA客户端的客户端装置80经由通信电缆70与作为OPCUA服务器的PLC10(特别是CPU单元100)连接,使用OPCUA通信,读写CPU单元100内的变量。
具体而言,客户端装置80例如以遵循OPCUA标准的连接方式向PLC10输出“一并询问PLC10执行任务中的多个变量(例如变量A~C)各自的值”的请求。PLC10在接收到上述请求时,以在控制处理的执行中确保读出的值之间的同步的方式读出在该请求中指定的多个变量(例如,变量A~C)各自的值。然后,PLC10将读出的多个变量各自的值一并以例如遵循OPCUA标准的连接方式输出到客户端装置80。客户端装置80能够一并获取PLC10在控制处理中使用的多个变量各自的值、特别是通过控制处理的执行而更新值后的多个变量各自的值。
到此为止,使用图2说明了包含PLC10的管理系统1的整体概要。接着,参照图3,对PLC10中的CPU单元100的硬件结构进行说明。
(CPU单元的硬件结构)
图3是表示本实施方式的CPU单元100的硬件结构的一例的图。CPU单元100包含处理器151、芯片组152、非易失性存储器153、主存储器154、时钟155、上位通信控制器156、PLC系统总线控制器157、现场总线控制器158、USB连接器161、上位通信连接器162、PLC系统总线连接器163、存储卡接口164以及现场总线连接器165。芯片组152和其它组件之间通过各种总线分别结合。
处理器151及芯片组152典型而言根据通用的计算机架构而构成。即,处理器151解释并执行根据内部时钟从芯片组152依次供给的指令代码。
芯片组152在与所连接的各种组件之间交换内部数据,同时生成处理器151所需的指令代码。进而,芯片组152具有缓存处理器151中执行运算处理的结果得到的数据等的功能。
CPU单元100具备主存储器154及非易失性存储器153作为存储单元。主存储器154是易失性的存储区域(RAM),保存在向CPU单元100接通电源后应由处理器151执行的各种程序。另外,主存储器154也被用作处理器151执行各种程序时的作业用存储器。作为这样的主存储器154,例如可以使用DRAM(Dynamic Random Access Memory)、SRAM(Static RandomAccess Memory)等。
另一方面,非易失性存储器153非易失性地保持IO(输入输出)控制等的系统程序、用户程序、动作运算程序、各种应用及系统设定参数之类的数据。这些程序及数据根据需要被复制到主存储器154以允许处理器151访问。这样的非易失性存储器153可以使用如闪存那样的半导体存储器。或者,也可以使用硬盘驱动器那样的磁记录介质、DVD-RAM(DigitalVersatile Disk Random Access Memory)那样的光学记录介质等。
时钟155产生预定的周期的系统时钟并将其提供给处理器151,具体而言,每隔一定的时间间隔(周期)产生中断信号,并将中断信号提供给处理器151。时钟155典型而言构成为根据硬件规格以多个不同的时间间隔分别产生中断信号。但是,时钟155也可以通过OS(Operating System)、BIOS(Basic Input Output System)等设定为以任意的时间间隔产生中断信号。利用时钟155产生的中断信号,实现如下所述的每个执行周期的控制动作。
CPU单元100具有上位通信控制器156、PLC系统总线控制器157及现场总线控制器158作为通信单元。上位通信控制器156、PLC系统总线控制器157及现场总线控制器158分别包含未图示的缓冲存储器(收发缓冲存储器)、通信控制电路和DMA(Dynamic MemoryAccess)控制电路。这些通信单元向CPU单元100以外的单元及PLC10以外的装置发送输出数据,另外,接收来自CPU单元100以外的单元和PLC10以外的装置的输入数据。此外,这些通信单元在与主存储器154之间执行数据的收发。
在上位通信控制器156、PLC系统总线控制器157及现场总线控制器158各自中,DMA控制电路从主存储器154向各缓冲存储器传送输出数据。另外,DMA控制电路还从各缓冲存储器向主存储器154传输输入数据。在上位通信控制器156、PLC系统总线控制器157及现场总线控制器158各自中,缓冲存储器实现以下两个功能。即,缓冲存储器实现作为PLC10以外的装置及向CPU单元100以外的单元输出的数据(输出数据)的发送缓存的功能。另外,缓冲存储器实现作为PLC10以外的装置及从CPU单元100以外的单元输入的数据(输入数据)的接收缓存的功能。
上位通信控制器156经由上位通信连接器162与通信电缆70连接,例如基于OPCUA标准与作为OPCUA客户端的客户端装置80进行连接。具体而言,上位通信控制器156接收来自客户端装置80的服务请求(例如,数据读出请求),并将该服务的执行结果发送到客户端装置80(对客户端装置80作出响应)。
PLC系统总线控制器157经由PLC系统总线连接器163与PLC系统总线106连接,控制经由PLC系统总线106的数据交换。PLC系统总线控制器157例如提供PLC系统总线106中的物理层及数据链路层的功能。即,PLC系统总线控制器157控制与PLC系统总线106连接的CPU单元100以外的单元与CPU单元100之间的收发。
PLC系统总线控制器157经由PLC系统总线106向IO单元102~104及特殊单元105各自发送存储于自身的缓冲存储器中的数据(输出数据)。另外,PLC系统总线控制器157经由PLC系统总线106接收从IO单元102~104及特殊单元105分别输入的数据(输入数据),并将其存储于自身的缓冲存储器中。
现场总线控制器158经由现场总线连接器165与现场网络20连接,控制经由现场网络20的数据的交换。例如,现场总线控制器158提供现场网络20中的物理层及数据链路层的功能。即,现场总线控制器158根据所使用的现场网络20的标准来控制输出数据的发送及输入数据的接收。具体而言,现场总线控制器158在与连接于现场网络20的现场机器之间发送自身的缓冲存储器的输出数据,并且接收输入数据并将其存储于自身的缓冲存储器中。
USB连接器161是用于连接支持装置60和CPU单元100的接口,供连接电缆50连接。例如,从支持装置60传送的可执行的程序等经由连接电缆50被取入CPU单元100中。存储卡接口164连接相对于CPU单元100可装拆的存储卡90和处理器151。
到此为止,使用图3说明了CPU单元100的硬件结构。接着,参照图1,使用图1等说明具备CPU单元100的PLC10的结构及处理的内容等。在参照图1说明详细内容之前,为了促进对PLC10的理解,对其概要进行如下整理。
(关于控制装置的功能结构的概要)
PLC10(控制装置)是通过将多个的上述任务以各自任务的周期反复并行执行来控制控制对象设备的控制装置,具备:OPCUA输入部111(接收部),其对在上述多个任务的至少一个中更新各值的多个变量从外部(例如客户端装置80)接收一并询问上述任务的执行中的各自的值;读出部112,当OPCUA输入部111接收到上述请求时,该读出部112以完成上述多个变量各自的值的读出的时刻全部包含在读出在上述多个任务中上述周期的间隔最小的任务的(例如任务Tp)、从一个周期的开始时刻至结束时刻之间的方式,读出上述多个变量各自的在上述多个任务的至少一个中更新的值;OPCUA输出部113(输出部),其将读出部112读出的上述多个变量各自的值输出到外部。
根据上述结构,PLC10通过以每个所述任务的周期反复并行执行多个任务,控制控制对象设备。另外,PLC10在接收到上述请求时,以完成上述多个变量各自的值的读出的时刻全部包含在上述多个任务中上述周期的间隔最小的任务的、从一个周期的开始时刻至结束时刻的期间的方式,读出上述多个变量各自的在上述多个任务的至少一个中更新的值。然后,PLC10将读出的上述多个变量各自的值输出到外部。
因此,PLC10能够并行周期性地执行多个任务,且如果从外部接收到在任务执行中一并询问多个变量各自的更新后的值的请求,则实现能够响应多个变量各自的更新后的值、且同步的值的效果。
在此,在上述多个变量各自的更新后的值的读出完成时刻跨越两个以上的“上述周期的间隔最小的任务的周期”(下称“基本周期”)的情况下,在读出的多个值之间不能确保同步。即,在上述多个变量各自的更新后的值的读出完成时刻之间的时间间隔为上述基本周期的间隔以上的情况下,在读出的多个值之间不能确保同步。
这例如在假设将“对应于上述基本周期,更新变量A的值”任务Tp和“对应于与上述基本周期不同的周期,更新与变量A不同的变量C的值”任务Ts并行周期性地执行的情况时变得明确。
即,在变量A的更新后的值的读出完成时刻和变量C的更新后的值的读出完成时刻之间的时间间隔为,上述基本周期的间隔以上的情况下,在上述时间间隔执行1次以上任务Tp。因此,用户将获得(1)变量A的值和(2)“在读出变量A的值之后,更新变量A的值的任务Tp执行了一次以上之后的变量C的值”。因此,不能确保所读出的变量A的值和变量C的值之间的同步,用户无法掌握同步的“多个变量各自的更新后的值”之间的关系。换言之,用户无法掌握在并行周期性执行的任务Tp及Ts各自中大致同时更新的变量A及变量C各自的更新后的值。在上述例子中,用户获取的是(1)变量A的值和(2)“在读出变量A的值之后,更新变量A的值的任务Tp执行了一次以上之后的变量C的值”。
与此相对,PLC10以完成上述多个变量各自的值的读出的时刻全部包含在上述多个任务中上述周期的间隔最小的任务的一个周期内的方式,读出在上述多个变量各自的上述多个任务的至少一个中更新的值,并将读出的上述多个变量各自的值输出到外部。即,PLC10以读出上述多个变量各自的更新后的值的读出完成时刻之间的时间间隔比上述基本周期的时间间隔小的方式,读出上述多个变量各自的更新后的值,并将读出的上述多个变量各自的值输出到外部。
根据上述例子,PLC10以变量A的更新后的值的读出完成时刻和变量C的更新后的值的读出完成时刻之间的时间间隔小于上述基本周期的时间间隔的方式,读出变量A及变量C各自的更新后的值。PLC10读出变量A和C各自的更新后的值,以在从PLC10完成变量A的更新后的值的读出的时刻至完成变量C的更新后的值的读出的时刻之间,PLC10也不执行任务Ts。
因此,通过PLC10,用户能够掌握在并行执行的多个任务各自中大致同时更新的多个变量各自的更新后的值,即,能够掌握确保了同步性的多个变量各自的更新后的值。换言之,在任务执行中对PLC10一并询问了多个变量各自的更新后的值的情况下,实现PLC10响应的多个变量各自的更新后的值之间的同步。
根据上述例子,通过PLC10,用户能够掌握在任务Tp中更新的变量A的更新后的值和与变量A被更新的时刻大致同时在任务Ts中更新的变量C的更新后的值。即,通过PLC10,用户能够对于变量A和变量C分别掌握“确保了同步性的更新后的值”。
在此,PLC10的读出部112在从上述多个任务各自的周期一致的时刻减去作为全部读出上述多个变量各自的值所需的期间所预测的预测读出期间的时刻为止,开始上述多个变量各自的值的读出。
根据上述结构,PLC10在从上述多个任务各自的周期一致的时刻减去作为全部读出上述多个变量各自的值所需的期间所预测的读出期间的时刻为止,开始上述多个变量各自的值的读出。
即,PLC10使用关于上述多个任务各自的周期一致的时刻的信息和关于作为全部读出上述多个变量各自的值所需的期间所预测的预测读出期间的信息,读出上述多个变量各自的更新后的值。换言之,PLC10为了读出上述多个变量各自的更新后的值,无需掌握“在上述多个任务中的哪一个任务中更新上述多个变量各自的值”。
因此,PLC10与掌握“上述多个变量各自的值在上述多个任务中的哪个任务中被更新”的情况相比,通过容易实现的处理,实现能够读出上述多个变量各自的更新后的值的效果。
PLC10具备OPCUA服务器功能,OPCUA输入部111从客户端装置80(OPCUA客户端装置)以遵循OPCUA标准的连接方式接收上述请求,OPCUA输出部113对客户端装置80以遵循OPCUA标准的连接方式输出多个变量各自的值。
根据上述的结构,PLC10具备OPCUA服务器功能,从客户端装置80以遵循OPCUA标准的连接方式接收上述请求,对客户端装置80以遵循OPCUA标准的连接方式输出上述多个变量各自的值。
因此,PLC10以遵循独立于厂商及平台的、安全且可靠性高的工业用的设备间通信的协议即OPCUA标准的连接方式来接收上述请求,实现能够以遵循OPCUA标准的连接方式输出上述多个变量各自的值的效果。
对于PLC10,上述多个任务可包含基准任务(例如任务Tp)和基准任务以外的任务(例如任务Ts),上述基准任务以外的任务的周期也可以设定为上述基准任务的周期的整数倍。
根据上述的结构,在PLC10中,上述多个任务包含基准任务和基准任务以外的任务,上述基准任务以外的任务的周期设定为上述基准任务的周期的整数倍。
因此,PLC10实现能够容易同步上述多个任务,即能够容易使上述多个任务各自的周期一致的效果。
对于到此为止整理了概要的PLC10,接着使用图1等说明PLC10的结构等的详细情况、特别是CPU单元100的结构等的详细情况。
(控制装置的功能结构的详细情况)
图1是表示本发明实施方式1的CPU单元100的主要部分结构的框图。如图1所示,CPU单元100作为功能块具备OPCUA服务器部110、存储部120及控制部130。CPU单元100是控制控制对象设备的控制处理的执行主体。控制部130执行包含程序的任务,特别是并行执行多个任务(例如,任务Tp及Ts),且以与各任务对应的周期执行多个任务的每一个。存储部120存储可在程序中参照及更新的变量。OPCUA服务器部110在由控制部130执行包含程序的任务时,收集存储部120的变量表122中存储的变量等,与客户端装置80进行通信,执行从客户端装置80请求的处理。
此外,为了确保记载的简洁性,与本实施方式没有直接关系的结构从说明及框图省略。但是,根据实施的实际情况,CPU单元100也可以具备该省略的结构。图1所示的OPCUA服务器部110及控制部130例如可以通过图3所示的处理器151(CPU、central processingunit)等在由RAM等实现的主存储器154中读出并执行由ROM(read only memory)、NVRAM(non-Volatile random access memory)等实现的非易失性存储器153(存储部120)中存储的程序来实现。以下,对CPU单元100中的各功能块进行说明。
(存储部以外的功能块的详细情况(1)-OPCUA服务器功能)
OPCUA服务器部110实现信息系统3(特别是客户端装置80)和控制系统2(特别是PLC10)之间的通信,例如实现使PLC10作为“OPCUA服务器”动作的OPCUA服务器功能。具体而言,OPCUA服务器部110接收来自客户端装置80的OPCUA的服务请求,根据接收到的服务请求执行OPCUA的服务处理,并将表示执行结果的响应输出到请求源的客户端装置80。
在本实施方式中,从客户端装置80请求PLC10执行的OPCUA的服务(处理)例如是被称为“订阅(Subscription)”的处理。“订阅(Subscription)”是指“读出与PLC10(特别是控制部130)执行的控制处理有关的数据(特别是在控制处理中使用的变量的值,具体而言,在控制处理中更新值的变量的值)的处理”。此外,在以下的说明中,将“更新变量的值”处理称为“写入(Write)”,将“读出变量的值”处理称为“读出(Read)”。
客户端装置80请求PLC10执行的“订阅(Subscription)”例如可以是“将多个变量各自的值一并读出(即、Read)”。在以下的说明中,有时客户端装置80请求PLC10执行的“将变量A~C各自的值一并读出”的订阅(Subscription)简写为“SubX”。
图1所示的OPCUA服务器部110作为功能块,包含OPCUA输入部111、读出部112、OPCUA输出部113、读出期间计算部114及读出时刻确定部115。OPCUA服务器部110的OPCUA输入部111是本发明的“接收部”的一例,读出部112是本发明的“读出部”的一例,OPCUA输出部113是本发明的“输出部”的一例。
客户端装置80和CPU单元100的信息的交换经由OPCUA输入部111及OPCUA输出部113进行。即,OPCUA输入部111及OPCUA输出部113是基于OPCUA标准与具有OPCUA客户端功能的客户端装置80连接而进行通信的功能块。
OPCUA输入部111经由通信电缆70从客户端装置80接收规定处理的执行请求,并指示读出部112执行与接收到的执行请求对应的规定处理。OPCUA输入部111例如接收来自客户端装置80的OPCUA的服务请求(OPCUA的请求消息),并指示读出部112执行与接收到的服务请求对应的处理。在本实施方式中,OPCUA的服务请求例如是对PLC10(特别是CPU单元100)执行控制处理时使用的变量(特别是执行控制功能时更新值的变量)的读出等的伴随向系统内数据的访问的请求。具体而言,OPCUA输入部111从客户端装置80接收SubX的执行请求(请求消息),即“一并读出(Read)变量A~C各自的值”处理的执行请求。
OPCUA输出部113将与OPCUA输入部111从客户端装置80接收到的规定处理的执行请求(服务请求)对应的处理的执行结果作为对该执行请求的响应,经由通信电缆70发送到客户端装置80。具体而言,OPCUA输出部113从读出部112获取OPCUA输入部111指示读出部112的处理的执行结果,将获取的执行结果发送给客户端装置80。OPCUA输出部113以例如遵循OPCUA标准的连接方式将从读出部112获取的执行结果发送给客户端装置80。
当OPCUA输入部111从客户端装置80接收到SubX的请求消息时,OPCUA输出部113将SubX的执行结果发送给客户端装置80。即,OPCUA输出部113将读出部112读出的“控制部130执行控制处理中的变量A~C各自的值”一并发送到客户端装置80。
读出部112、读出期间计算部114及读出时刻确定部115执行与OPCUA输入部111从客户端装置80接收到的“规定处理的执行请求”对应的处理,例如执行OPCUA的服务处理(在此为SubX)。即,由读出部112、读出期间计算部114及读出时刻确定部115执行“控制部130执行控制处理中的变量A~C各自的值”的读出(Read)。
读出部112是与读出变量值有关的OPCUA服务的执行单元,在从读出时刻确定部115通知的读出时刻,收集在各任务中更新值的变量的值(特别是更新后的值),即,读出变量的值。特别是,在由控制部130(特别是运算部131)执行任务时,读出部112在从读出时刻确定部115通知的读出时刻读出(即Read)在各任务中更新了值的变量的值。具体而言,读出部112在从读出时刻确定部115指示的读出时刻参照存储部120的变量表122,读出变量A~C各自的值。换言之,读出部112在从读出时刻确定部115指示的读出时刻,参照存储部120的变量表122,开始变量A-C各自的值的读出处理。
读出期间计算部114计算“读出部112参照变量表122执行所希望的变量(例如变量A~C)的值的读出处理”所需的时间(期间)即预测读出期间。读出期间计算部114例如也可以基于读出部112读出值的各变量的数据类型(具体而言,Byte、Int、Long等),计算预测读出期间。另外,读出期间计算部114例如也可以基于读出部112读出值的变量(具体而言,如果读出部112读出值的变量是变量A~C,则是“3”)来计算预测读出期间。另外,读出期间计算部114例如也可以基于读出部112读出值的各变量的数据型和读出部112读出值的变量的数量,计算预测读出期间。
例如,读出期间计算部114计算“读出部112参照变量表122读出变量A~C各自的值所需的时间Ya、Yb及Yc”之和作为读出部112执行SubX所需的时间。若将“读出部112执行SubX所需的时间”设为“预测读出期间Y”μs(“μs”为单位),则读出期间计算部114设为“预测读出期间Y=Ya+Yb+Yc”,计算出预测读出期间Y。读出期间计算部114将计算出的预测读出期间Yμs通知给读出时刻确定部115。
读出时刻确定部115确定读出部112执行的读出处理的开始时刻即读出时刻,将确定的读出时刻通知给读出部112。读出时刻确定部115在控制部130进行的控制处理执行中,确定读出部112执行的读出处理的开始时刻即读出时刻,以满足以下条件。
即,读出时刻确定部115确定变量P及Q各自的读出时刻,使得从作为读出处理的对象的多个变量内的某一个变量P的值的读出完成时刻至与变量P不同的变量Q的值的读出完成时刻为止,不更新变量P或Q的值。换言之,读出时刻确定部115确定变量P及Q各自的读出时刻,使得从变量P的值的读出完成时刻至变量Q的值的读出完成时刻为止,不执行更新变量P或Q的值的任务(特别是程序)。
具体而言,在控制部130将多个任务以各自任务的周期反复并行执行的情况下,读出时刻确定部115如下那样确定变量P及Q各自的读出时刻。即,以从变量P的值的读出完成时刻至变量Q的值的读出完成时刻为止的时间间隔比这些多个任务中的周期的间隔最小的任务的周期(在上述的例子中为“1ms”)小的方式,确定变量P及Q各自的读出时刻。
特别是,在控制部130通过分时以各自任务的周期反复并行执行多个任务的情况下,读出时刻确定部115如下确定变量P及Q各自的读出时刻。即,以从变量P的值的读出完成时刻至变量Q的值的读出完成时刻为止的时间间隔比这些多个任务中优先级最高的任务的周期(在上述的例子中为“1ms”)小的方式,确定变量P及Q各自的读出时刻。
具体而言,读出时刻确定部115对于读出部112执行的SubX(“控制部130进行的控制处理的执行中的变量A~C各自的值”的读出(Read)),如下确定作为该执行开始时刻的读出时刻。即,读出时刻确定部115确定读出时刻,使得读出部112完成变量A~C各自的值的读出的时刻全部包含在从任务Tp的一个周期的开始时刻至结束时刻为止之间。即,读出时刻确定部115确定读出时刻,使得变量A~C的值的读出完成时刻全部包含在由控制部130执行的多个任务中周期的间隔最小的任务即任务Tp的一个周期的开始时刻至结束时刻之间。
在此,特别是,读出时刻确定部115使用从读出期间计算部114通知的预测读出期间Yμs,确定读出时刻。具体而言,读出时刻确定部115将从由控制部130执行的多个任务各自的周期一致的时刻减去作为全部读出变量A~C各自的值所需的期间所预测的预测读出期间Yμs的时刻,确定为读出时刻。例如,读出时刻确定部115将从任务Tp及Ts各自的周期一致的时刻即“t=2ms”减去预测读出期间Yμs的时刻确定为读出时刻。详细情况将在后面使用图4进行说明,但是,通过在“从由控制部130执行的多个任务各自的周期一致的时刻减去预测读出期间Yμs的时刻”由读出部112读出变量A~C各自的值,保证读出的值之间的同步。
(存储部以外的功能块的详细情况(2)-控制功能)
控制部130是控制机械及设备等控制对象的控制处理的执行主体,通过反复输出数据的发送、输入数据的接收、使用输入数据生成输出数据的控制程序的执行,控制对象。控制部130包含:“运算器131,其执行使用输入数据生成输出数据的控制程序”;“现场通信部132,其执行输出数据的发送和输入数据的接收”。控制部130与不具备OPCUA服务器功能的现有的CPU单元(PLC)的控制部(控制机械及设备等控制对象的控制处理的执行主体)相同。
运算部131使用现场通信部132获取的输入数据,执行控制程序等各种程序,生成输出数据,并将生成的输出数据输出到现场通信部132。运算部131作为“各种程序的执行”,具体而言,并行执行多个任务,并且以与各任务对应的周期执行各任务。运算部131例如通过分时并行执行多个任务,并且以与各任务对应的周期执行各任务。即,运算部131在多任务中执行处理。此外,任务包含执行与各任务对应的用户程序等控制程序。
运算部131例如通过分时并行执行任务Tp及Ts。另外,运算部131以1ms的周期执行任务Tp,以2ms的周期执行任务Ts。此外,运算部131也可以以4ms的周期执行与任务Tp及Ts的任意一个不同的任务Tt。
此外,运算部131执行的任务除了定期反复执行的任务(周期性执行的任务、具体地说,任务Tp及Ts)之外,还可以包含在预先设定的执行条件成立的情况下执行的任务。在预先设定的执行条件成立的情况下执行的任务例如被称为“事件任务”,具体而言,任务Te也可以是事件任务。
现场通信部132经由PLC系统总线106及现场网络20中的至少一方在各种现场机器(例如,设备31、设备32、伺服驱动器33及伺服驱动器34等)之间处理数据。这些现场机器包含用于对控制对象进行某些处理的促动器、用于从控制对象获取各种信息的传感器等。
例如,现场通信部132从作为输入设备的设备31获取输入数据,并将输出数据输出到作为输出设备的设备32、伺服驱动器33及伺服驱动器34等。
(存储部的详细情况)
存储部120是存储CPU单元100使用的各种数据的存储装置。存储部120也可以暂时存储CPU单元100执行的(1)控制程序、(2)OS程序、(3)用于执行CPU单元100具有的各种功能的应用程序及(4)执行该应用程序时读出的各种数据。存储部120还存储程序表121、变量表122及任务表123。
程序表121是由控制部130(特别是运算部131)执行的各种程序。此外,由OPCUA服务器部110执行的程序也可以与程序表121分开,作为例如应用程序(实现OPCUA服务器功能的应用程序)存储在存储部120中。
通过控制部130(特别是运算部131)执行的各种程序即程序表121也可以为实时OS、系统程序和用户程序这三层程序。
实时OS是根据CPU单元100的计算机架构而设计的,处理器151提供用于执行系统程序及用户程序的基本执行环境。该实时OS通常由PLC的厂商或专业软件公司等提供。
系统程序是用于提供作为PLC10(特别是CPU单元100)的功能的软件组。具体而言,系统程序包含调度程序、输出处理程序、输入处理程序、序列命令运算程序、动作运算程序和其它的系统程序。输出处理程序包含用于执行将CPU单元100的运算结果输出到作为输出单元的IO单元102~104的处理的程序。输入处理程序包含用于执行将输入到作为输入单元的IO单元102~104的信号取入到CPU单元100的处理的程序。此外,通常,输出处理程序及输入处理程序被连续(作为一体)执行,因此,输出处理程序及输入处理程序也可以统称为IO处理程序。
用户程序是根据用户的控制目的而创建的,换言之,是根据使用控制系统2控制的对象的线路(过程)等而任意设计的程序。用户程序构成为由连接于CPU单元100的支持装置60可编辑,例如,可在梯形图语言、SFC语言、结构文本等中描述,且也可以混合有多种语言。
用户程序与序列命令运算程序及动作运算程序协作来实现用户的控制目的。即,用户程序通过利用由序列命令运算程序及动作运算程序提供的指令、函数、功能模块等来实现被编程的动作。因此,用户程序、序列命令运算程序及动作运算程序也可统称为控制程序。
变量表122是由程序(特别是用户程序等的控制程序)使用的变量,即,变量表122中的各变量的值在执行用户程序等控制程序时被更新(即,写入)。
任务表123是与任务相关的信息,例如包含各任务的名称、各任务的优先级、执行各任务的周期(控制循环)、在各任务中执行的用户程序等程序的结构。另外,在CPU单元100中,也可以将预先设定的时间间隔(例如1ms)的控制循环作为处理整体的共通周期。该共通周期有时被称为“基准周期”,控制循环(即周期)为“基准周期”的任务有时被称为“基准任务”。
PLC10(CPU单元100)的运算部131以“任务”这一执行单位执行程序表121中的各种程序。即,在PLC10中,对每个任务分配用户程序等控制程序并执行。例如,用户程序整体由多个用户程序构成,各用户程序被分配给多个任务中的每一个。另外,在PLC10中,任务大致分为周期性执行的周期性执行任务和发生某些事件时执行的事件执行任务。
运算部131能够在“任务”中执行的处理、程序即程序表121如上述包含“IO处理程序”、“控制程序”以及“除此之外的处理、程序”。
用户可以使用支持装置60来设定作为程序的执行单位即任务。具体而言,能够设定、定义任务的执行周期及执行时刻、在任务中执行的程序(例如控制程序)、在任务内的IO控制是否执行等。用户也可以使用支持装置60对每个任务分配例如最大128的程序。任务的设定例如经由连接电缆50从支持装置60传送到CPU单元100,并存储在由非易失性存储器153等实现的存储部120的任务表123中。
在此,用户可以使用支持装置60在多个任务之间设定优先顺序。具体而言,用户也可以使用支持装置60设定优先顺序互不相同的“作为主定周期任务的任务Tp”、“作为定周期任务的任务Ts”、“作为事件任务的任务Te”这三种任务。对于任务处理,在同时期执行了优先级高的任务的用户程序和优先级比该任务低的任务的用户程序的情况下的重叠的时间中,PLC10的运算部131也可以执行以下的处理。即,运算部131也可以进行中断分配给优先级低的任务的程序的执行,执行分配给优先级高的任务的程序的中断控制。
主定周期任务和定周期任务都是周期执行型任务,主定周期任务的优先级高于定周期任务的优先级。换言之,主定周期任务的优先级的值小于定周期任务的优先级的值。此外,运算部131也可以优先执行多个任务中优先级的值小的任务。
任务Tp例如也可以将“IO控制、用户程序、动作运算程序(及系统服务)作为主要的处理内容(执行内容)。任务Ts例如也可以是将“IO控制、用户程序(及系统服务)”作为主要的处理内容。任务Te例如也可以将“用户程序(及系统服务)”作为主要的处理内容。PLC10的运算部131也可以以最优先执行任务Tp,且用户也能够指定任务Ts与任务Te之间的优先关系。此外,周期性执行的周期执行任务并不限于任务Tp及任务Ts这两个任务。可以在三个以上的周期执行型任务(例如任务Tp、Ts及Tt)之间设定与执行顺序有关的优先级,也可以针对各周期执行型任务设定周期(执行周期)。
对于到此为止说明了构成的PLC10(特别是CPU单元100),接着使用图4说明其处理(动作)的概要。
§3.动作例
(控制装置执行的处理的概要)
图4是表示PLC10(特别是CPU单元100)执行的处理的概要的图。参照图4,首先说明PLC10执行的多任务处理。
(关于多任务)
CPU单元100(特别是运算部131)通过分时并行以各任务的周期重复执行多个任务(在图4所示的例子中,任务Tp及Ts)。即,CPU单元100在多任务中执行处理,CPU单元100执行的各任务的周期不同。
在图4的例子中,任务Tp比任务Ts优先执行,并且例如以1ms的周期执行。即,任务Tp将一次的控制循环(1ms的时间间隔)作为执行周期。另外,任务Tp包含用户程序等程序Pp,即,用户程序等程序Pp被分配给任务Tp。此外,任务Tp是本发明的“基准任务”的一例。
另外,任务Ts比任务Tp靠后执行,并且例如以2ms的周期执行,即,将2次的控制循环(2ms的时间间隔)作为执行周期。另外,任务Ts的周期设定为任务Tp的周期的整数倍(例如2倍)。另外,任务Ts包含用户程序等程序Ps,即,用户程序等程序Ps被分配给任务Ts。此外,任务Ts是本发明的“基准任务以外的任务”的一例。
此外,CPU单元100(特别是运算部131)可以以4ms的周期执行比任务Tp及Ts靠后的任务Tt。即,CPU单元100也可以将4次的控制循环(4ms的时间间隔)作为执行周期,执行任务Tt。在此,任务Tt的周期也可以设定为任务Tp的周期的整数倍(例如4倍)。另外,任务Tt也可以包含程序(用户程序等)。此外,任务Tt是本发明的“基准任务以外的任务”的一例。
在此,通过使任务Ts及Tt的周期为任务Tp的周期的整数倍,可以容易地使任务Tp、Ts及Tt同步。“任务Tp、Ts及Tt同步”是指“任务Tp、Ts及Tt的周期(执行循环)同时开始(开始时刻相同)”,或者“任务Tp、Ts及Tt的周期同时结束(结束时刻相同)”。
(关于图中的表现)
在图4中,用单点划线表示的是作为主定周期任务的任务Tp的周期,特别是任务Tp的周期的开始时刻,且是结束时刻。另外,由双点划线表示的是作为定周期任务的任务Ts的周期,特别是任务Ts的周期的开始时刻,且是结束时刻。在图4中,竖条纹所示的区域表示在作为主定周期任务的任务Tp中执行的程序Pp,即分配给任务Tp的程序Pp被执行的期间。另外,横条纹所示的区域表示在作为定周期任务的任务Ts中执行的程序Ps,即分配给任务Ts的程序Ps被执行的期间。此外,相互交叉的两个以上的斜线所示的区域表示执行“将变量A~C一并读出(订阅:SubX)”的期间。
在图4所示的例子中,任务Tp以1ms的周期执行,任务Ts以2ms的周期执行。在图4中,将从控制部130(特别是运算部131)进行的控制处理的开始时刻(t=0)在任务Tp的第一次的周期(开始时刻:t=0到结束时刻:t=1ms之间)执行的程序Pp表现为“程序Pp1”。同样,将在任务Tp的第二次的周期(开始时刻:t=1ms到结束时刻:t=2ms之间)执行的程序Pp表现为“程序Pp2”,将在第三次的周期执行的程序Pp表现为“程序Pp3”。即,将“n”作为自然数,将在任务Tp的第n次的周期(开始时刻:t=“n-1”ms到结束时刻:t=“n”ms之间)执行的程序Pp表现为“程序Ppn”。
另外,特别是,将从控制部130进行的控制处理的开始时刻(t=0)在任务Ts的第一次的周期(开始时刻:t=0到结束时刻:t=2ms之间)执行的程序Ps表现为“程序Ps1”。同样,将在任务Ts的第二次的周期(开始时刻:t=2ms到结束时刻:t=4ms之间)执行的程序Ps表现为“程序Ps2”,将在第三次从周期执行的程序Ps表现为“程序Ps3”。即,将“n”作为自然数,将在任务Ts的第n次的周期(开始时刻:t=“2×(n-1)”ms到结束时刻:t=“2×n”ms之间)执行的程序Ps表现为“程序Psn”。
(关于变量的读出处理的概要)
以下,对在图4所示的管理系统1中执行的处理的概要进行说明。
第一,客户端装置80将“一并读出变量A~C(订阅:SubX)”的服务请求输出至PLC10。PLC10接收来自客户端装置80的该服务请求(SubX)(Step1)。
第二,当PLC10的OPCUA输入部111接收到服务请求:SubX时,PLC10的读出期间计算部114计算SubX的执行时间、即作为“变量A~C的读出所需的时间”的读出期间(Proc:Yμs)(Step2)。
读出时刻确定部115使用从读出期间计算部114通知的预测读出期间Yμs,确定读出时刻点。即,PLC10的读出时刻确定部115将“距任务Tp及Ts的周期一致的时间(时刻)预测读出期间Yμs前的时刻”确定为读出时刻。
在图4所示的例子中,任务Tp以1ms的周期执行,任务Ts以2ms的周期执行,“在控制部130的控制处理的执行中,‘任务Tp及Ts的周期一致的时刻’”例如是“t=2ms、4ms、6ms、……”。即,在图4所示的例子中,由控制部130执行的多个任务的执行循环(周期)一致的时刻(多个任务同步的时刻)例如是“t=2ms、4ms、6ms、……”。
因此,在图4所示的例子中,读出时刻确定部115将“距t=2ms预测读出期间Yμs前的时刻”、即“从2ms减去Yμs的时刻(t=2ms-Yμs的时刻)”确定为读出时刻。读出时刻确定部115将确定的读出时刻指示给读出部112。
第三,读出部112在从读出时刻确定部115指示的读出时刻、即“距t=2ms预测读出期间Yμs前的时刻”,参照存储部120的变量表122,读出变量A~C各自的值(读出)。即,PLC10的OPCUA服务器部110在从多个任务的周期一致的时间到Yμs前插入中断,执行SubX(Step3)。
第四,PLC10的OPCUA输出部113将读出部112读出的“变量A~C各自的值”一并发送到客户端装置80。即,PLC10的OPCUA服务器部110将SubX的执行结果(读出(Read)结果)返回客户端装置80(Step4)。
以上说明了概要的PLC10执行的处理可以如下进行整理。即,PLC10执行的控制方法是通过以上述每个任务的周期反复并行执行多个任务来控制控制对象设备的控制装置的控制方法,包括:接收步骤(Step1),从外部接收对将各值在上述多个任务的至少一个中更新的多个变量一并询问上述任务的执行中的各值的请求;读出步骤(Step3),在上述接收步骤中接收到上述请求时,以完成上述多个变量各自的值的读出的时刻全部包含在上述多个任务中上述周期的间隔最小的任务的、从一个周期的开始时刻至结束时刻之间的方式,读出上述多个变量各自的在上述多个任务的至少一个中更新的值;输出步骤(Step4),向外部输出上述读出步骤中读出的上述多个变量各自的值。
根据上述方法,上述控制方法通过以上述每个任务的周期反复并行执行多个任务,来控制控制对象设备。另外,上述控制方法中,在接收到上述请求时,以完成上述多个变量各自的值的读出的时刻全部包含在上述多个任务中上述周期的间隔最小的任务的、从一个周期的开始时刻至结束时刻之间的方式,读出上述多个变量各自的在上述多个任务的至少一个中更新的值,且将读出的上述多个变量各自的值输出到外部。
因此,上述控制方法实现如下效果:能够并行周期性地执行多个任务,且如果从外部接收到在任务执行中一并询问多个变量各自的更新后的值的请求,则能够响应多个变量各自的更新后的值、即同步的值。
在此,在上述多个变量各自的更新后的值的读出完成时刻横跨两个以上的基本周期的情况下,在读出的多个值之间不能确保同步。即,在上述多个变量各自的更新后的值的读出完成时刻之间的时间间隔为上述基本周期的间隔以上的情况下,在读出的多个值之间不能确保同步。
这例如明确为,假设并行周期性地执行“对应于上述基本周期,更新变量A的值”任务Tp和“对应于与上述基本周期不同的周期,更新与变量A不同的变量C的值”任务Ts的情况。
即,在变量A的更新后的值的读出完成时刻和变量C的更新后的值的读出完成时刻之间的时间间隔为上述基本周期的间隔以上的情况下,在上述时间间隔中执行1次以上的任务Tp。因此,用户将获得变量A的值和“在读出变量A的值之后,更新变量A的值的任务Tp被执行一次以上之后的、变量C的值”。因此,不能确保所读出的变量A的值和变量C的值之间的同步,用户无法掌握同步的“多个变量各自的更新后的值”之间的关系。换言之,用户无法掌握在并行周期性执行的任务Tp及Ts各自中大致同时更新的变量A及变量C各自的更新后的值。在上述例子中,用户获取的是变量A的值和“在读出变量A的值之后,更新变量A的值的任务Tp被执行一次以上之后的、变量C的值”。
与之相对,上述控制方法中,以完成上述多个变量各自的值的读出的时刻全部包含在上述多个任务中上述周期的间隔最小的任务的、一个周期内的方式,读出上述多个变量各自的在上述多个任务的至少一个中更新的值,且将读出的上述多个变量各自的值输出到外部。即,上述控制方法以上述多个变量各自的更新后的值的读出完成时刻之间的时间间隔小于上述基本周期的时间间隔的方式,读出上述多个变量各自的更新后的值,且将读出的上述多个变量各自的值输出到外部。
根据上述例子,上述控制方法以变量A的更新后的值的读出完成时刻和变量C的更新后的值的读出完成时刻之间的时间间隔小于上述基本周期的时间间隔的方式,读出变量A及变量C各自的更新后的值。上述控制方法读出变量A及C各自的更新后的值,使得在从上述控制方法完成变量A的更新后的值的读出的时刻至完成变量C的更新后的值的读出的时刻之间,任务Tp及任务Ts均不执行。
因此,通过上述控制方法,用户能够掌握在并行执行的多个任务中的每一个任务中大致同时更新的多个变量各自的更新后的值,即,能够掌握确保了同步性的多个变量各自的更新后的值。换言之,在任务执行中对PLC10一并询问多个变量各自的更新后的值的情况下,通过上述控制方法实现响应中的多个变量各自的更新后的值之间的同步。
根据上述例子,通过上述控制方法,用户能够掌握在任务Tp中更新的变量A的更新后的值和与更新变量A的时刻大致同时地在任务Ts中更新的变量C的更新后的值。即,通过上述控制方法,用户能够对于变量A及变量C分别掌握“确保了同步性的更新后的值”。
(关于变量的读出处理的详细情况)
下面,更详细地说明图4。在图4中,通过控制部130(特别是运算部131),在t=0的时刻,即控制处理的开始时刻,同时开始任务Tp及Ts的执行循环(即,周期)。
具体而言,首先在t=0的时刻,通过运算部131,开始优先级比任务Ts高的任务Tp的处理。此时,任务Ts与任务Tp相比,优先级低,因此,不开始实际的处理而成为待机状态。
而且,运算部131执行包含任务Tp的用户程序的程序Pp(特别是,Pp1),在完成任务Tp的处理后,运算部131开始任务Tp之后的优先级高的任务Ts的处理。即,运算部131执行包含任务Ts的用户程序的程序Ps(特别是,Ps1)。在此,在图4所示的例子中,运算部131在任务Tp及Ts的执行循环同时开始之后经过1ms之前,即,在t=1ms之前完成任务Ts的处理。
接着,在同时开始任务Tp及Ts的执行循环之后经过1ms时(t=1ms),由于任务Tp的执行循环经过,所以由运算部131开始任务Tp的执行。即,从“t=1ms”的时刻开始执行任务Tp的程序Pp(特别是Pp2),完成任务Tp的处理。
如上所述,读出时刻确定部115将“距任务Tp及Ts的周期一致的时间(时刻)预测读出期间Yμs前的时刻”确定为读出时刻。在图4所示的例子中,读出时刻确定部115将“距任务Tp及Ts的周期一致的‘t=2ms’的时刻预测读出期间Yμs前的时刻”确定为读出时刻,读出部112在该读出时刻读出变量A~C各自的值。
因此,读出部112读出在任务Tp中更新的变量A及B各自的更新后的值(特别是通过程序Pp1的执行而更新的变量A及B各自的更新后的值)。另外,读出部112读出在任务Ts中更新的变量C的更新后的值(特别是通过程序Ps1的执行而更新的变量C的更新后的值)。特别是,读出部112从更新变量A~C各自的值的程序的执行完成时刻至包含更新变量A~C各自的值的程序的任务的下一个开始时刻为止,读出变量A~C各自的值。具体而言,读出部112从更新变量A~C各自的值的程序Pp及Ps各自的执行完成时刻至包含程序Pp及Ps各自的任务Tp及Ts各自的下一个开始时刻为止,读出变量A~C各自的值。
在此,在读出部112完成变量A及B各自的值的读出之后至完成变量C的值的读出的期间,变量A~C均未通过任务Tp或Ts更新值。即,读出部112读出变量A~C各自的同步的更新后的值。
[实施方式2]
以下对本发明的其它实施方式进行说明。此外,为了便于说明,对于具有与上述实施方式中说明的部件相同的功能的部件,标注相同的符号,省略其说明。
图5是表示本发明实施方式2的PLC11的CPU单元200的主要部分构成等的框图。本实施方式的CPU单元200除了上述实施方式1中的CPU单元100所具备的构成之外,还具备获取部210作为功能块,另外,在存储部220中存储有变量管理表221。CPU单元200具备获取部210,除了在存储部220中存储有变量管理表221这一点以外,是与上述CPU单元100相同的结构,以下对获取部210及变量管理表221进行重点说明。
(控制装置的概要)
首先,为了便于对PLC11的理解,对其概要进行如下整理。即,PLC11使用与“对于读出对象的多个变量(例如变量A~C),各变量的值在哪个任务中被更新”有关的信息(即,对应信息),确定读出这些多个变量各自的更新后的值的时刻。
更详细而言,PLC11还具备获取部210,其获取使上述变量和更新上述变量的值的上述任务对应的对应信息,读出部112使用获取部210获取的上述对应信息,在更新上述多个变量各自的值的上述任务的上述周期读出上述多个变量各自的值。
根据上述的结构,PLC11获取使上述变量和更新上述变量的值的上述任务对应的对应信息,使用获取的上述对应信息,在上述任务的上述周期读出更新上述多个变量的各自的值。
因此,PLC11实现能够利用上述对应信息,在更新上述多个变量各自的值的上述任务的上述周期中读出上述多个变量各自的值的效果。
对于PLC11,在上述对应信息中,在相对于上述多个变量中的某个变量(例如变量C)对应两个更新上述某个变量的值的上述任务的情况下,读出部112也可以在更新上述某个变量的值的两个以上的上述任务各自的上述周期一致的时刻之前,完成上述某个变量的值的读出。
根据上述结构,在上述对应信息中,在相对于上述多个变量中的某个变量对应两个更新上述某个变量的值的上述任务的情况下,PLC11在更新上述某个变量的值的两个以上的上述任务各自的上述周期一致的时刻之前,完成上述某个变量的值的读出。
在此,对于上述某个变量,在更新上述某个变量的值的两个以上的上述任务中、上述周期的间隔最小的任务中,在读出了上述某个变量的更新后的值的情况下,产生以下事态。即,在读出的值在再执行“上述周期的间隔最小的任务”之前,在“上述周期的间隔最小的任务”以外的任务中进一步被更新值。
与此相对,PLC11在更新上述某个变量的值的两个以上的上述任务各自的上述周期一致的时刻之前,读出上述某个变量的值。因此,PLC11实现防止如下事态的效果:在读出上述某个变量的在某个任务中更新后的值后,再执行上述某个任务之前,在“上述某个任务”以外的任务中,上述某变量的值被更新。
(控制装置的详细情况)
获取部210从支持装置60等获取使多个变量各自和更新各变量的值的任务对应的对应信息,并将获取的对应信息存储到存储部220的变量管理表221中。
例如,在编译由用户创建的控制程序来创建执行文件时,支持装置60生成对应信息,并将生成的对应信息输出到获取部210。支持装置60对于通过用户程序等控制程序更新值的变量,掌握通过哪个控制程序更新多个变量各自的值,且将该控制程序分配给哪个任务,生成对应信息。
读出时刻确定部115使用变量管理表221中存储的对应信息,将“读出部112读出变量A~C各自的更新后的值的时刻”确定在更新变量A~C各自的值的任务Tp及Ts各自的周期内。读出时刻确定部115将确定的“变量A~C各自的更新后的值的读出时刻”通知给读出部112。
读出部112在从读出时刻确定部115通知的“变量A~C各自的更新后的值的读出时刻”,读出变量A~C各自的更新后的值。
图6是表示存储于CPU单元200的存储部220中的变量管理表221的数据结构的图。在变量管理表221中存储由获取部210获取的对应信息,例如存储获取部210从支持装置60获取的对应信息。对应信息是表示对变量表122中存储的多个变量分别更新各变量的值的任务的信息。例如,对应信息是“关于变量A、B、C(用户变量A、B、C)分别由在哪个任务中执行的用户程序写入(write)(即,在哪个任务中更新值)的信息”。对应信息还可以针对在变量表122中存储的多个变量分别表示各变量的数据类型。
图6(A)中示例的对应信息表示“在主定周期任务即任务Tp中更新变量A”,并且还表示“变量A的数据类型为‘Int’”。另外,图6(A)中示例的对应信息表示“在主定周期任务即任务Tp中更新变量B”,并且还表示“变量B的数据类型为‘Int’”。此外,图6(A)中示例的对应信息表示“在定周期任务即任务Ts中更新变量C”,并且还表示“变量C的数据类型为‘Long’”。
在此,更新某个变量值的任务不限于某一个任务。也有时多个任务更新某个变量的值。
例如,图6(B)中示例的对应信息表示变量A及B与图6(A)中示例的对应信息相同的内容,但表示变量C在多个任务中被更新(变量C的值在两个以上的任务中被更新)。即,图6(B)中示例的对应信息表示“变量C在‘作为主定周期任务的任务Tp’及‘作为定周期任务的任务Ts’中被更新”,进而表示“变量C的数据型为‘Long’”。
此外,对应信息对于在多个任务中更新值的变量,也可以将与该变量对应的任务(任务名)设为“未知(Unknown)”。图6(C)中示例的对应信息将对应于变量C的任务(任务名)设为“未知”,其表示在多个任务中更新变量C的值。
获取部210是本发明的“获取部”的一例,变量管理表221中存储的对应信息是本发明的“对应信息”的一例。
(关于控制装置执行的处理)
(1.各变量的值在一个任务中被更新的情况)
图7是表示PLC11(特别是CPU单元200)执行的处理的概要的图。在图7所示的例子中,在存储于PLC11(CPU单元200)的存储部220中的变量管理表221中存储有图6A中示例的对应信息。即,在图7所示的例子中,变量A及B在作为主定周期任务的任务Tp中被更新,变量C在作为定周期任务的任务Ts中被更新。
(关于图中的表现)
对于图7中的表现与图4相同,省略说明。在图7中,用从纸面左上向右下延伸的斜线表示的区域表示执行通过在作为主定周期任务的任务Tp中执行的程序Pp更新值的变量A及B的读出的期间。用从纸面右上向左下延伸的斜线表示的区域表示执行通过在作为定周期任务的任务Ts中执行的程序Ps更新值的变量C的读出的期间。
在图7中,任务Tp比任务Ts优先执行,并且例如以1ms的周期执行。另外,任务Ts在任务Tp之后执行,并且例如以2ms的周期执行。
(关于变量的读出处理的概要)
以下,对图7中示例的PLC11执行的处理的概要进行说明。
第一,支持装置60将任务和变量的对应信息通知给PLC11。如上述,在图7所示的示例中,支持装置60向PLC11通知与“变量A及B在作为主定周期任务的任务Tp中被更新,变量C在作为定周期任务的任务Ts中被更新”的对应信息。获取部210将该对应信息存储于存储部220的变量管理表221。
第二,客户端装置80向PLC10输出“将变量A~C一并读出(订阅:SubX)的服务请求”。
第三,当PLC11的OPCUA输入部111接收到服务请求:SubX时,PLC11基于变量管理表221中存储的对应信息,在写入各变量A~C的任务中,读出各变量A~C。
具体而言,读出时刻确定部115如下确定“读出部112读出各变量A~C”的时刻。
(1)对于在任务Tp中更新值的变量A及B,读出时刻确定部115如下确定“读出部112读出各变量A及B”的时刻。即,读出时刻确定部115在任务Tp的周期内、且程序Pp的执行完成后的时刻,确定“读出部112读出各变量A及B”的时刻。换言之,读出时刻确定部115在任务Tp的周期内的时刻确定读出变量A及B各自的更新后的值的时刻。
(2)对于在任务Ts中更新值的变量C,读出时刻确定部115如下确定“读出部112读出变量C”的时刻。即,读出时刻确定部115在任务Ts的周期内、且程序Ps的执行完成的时刻,确定“读出部112读出变量C”时刻。换言之,读出时刻确定部115在任务Ts的周期内的时刻确定读出变量C的更新后的值的时刻。
在此,读出时刻确定部115确定读出时刻,使得变量A~C的值的读出完成时刻全部包含在由控制部130执行的多个任务中周期的间隔最小的任务即任务Tp的一个周期的开始时刻至结束时刻之间。例如,读出时刻确定部115确定变量A~C各自的读出时刻,使得在从变量A及B各自的更新后的值的读出完成时刻至变量C的更新后的值的读出完成时刻之间,变量A及B的至少一个值不被更新。换言之,读出时刻确定部115对于变量A~C的各更新后的值,确定各更新后的值的读出时刻,以确保读出的变量A~C各自的更新后的值之间的同步。
在图7中,读出时刻确定部115确定如下变量A~C各自的更新后的值的读出时刻。即,在图7中,通过控制部130(特别是运算部131),在t=0的时刻,即控制处理的开始时刻,同时开始任务Tp及Ts的执行循环(即,周期)。具体而言,首先在t=0时,通过运算部131,开始优先级比任务Ts高的任务Tp的处理。此时,任务Ts因为优先级比任务Tp低,所以在没有开始实际的处理之前成为待机状态。而且,运算部131执行包含任务Tp的用户程序的程序Pp(特别是Pp1),当完成任务Tp的处理时,运算部131在任务Tp之后开始优先级高的任务Ts的处理。即,运算部131执行包含任务Ts的用户程序的程序Ps(特别是Ps1)。在此,在图7所示的例子中,运算部131在任务Tp及Ts的执行循环同时开始之后至经过1ms为止、即至t=1ms为止完成任务Ts的处理。
读出时刻确定部115在任务Ts的周期内(即,T=0ms~2ms)、且在程序Ps(例如程序Ps1)的执行完成后的时刻,确定在任务Ts中更新值的变量C的读出时刻。读出部112在由读出时刻确定部115确定的读出时刻,参照存储部120的变量表122,开始变量C的值的读出(Read)(在图7中,以纸面右上向左下延伸的斜线表示的区域的开始)。
在此,在读出部112读出变量C的中途,在到达“t=1ms”的时刻时,经过任务Tp的执行循环,因此,从“t=1ms”的时刻开始,由运算部131开始任务Tp的执行。即,在“t=1ms”的时刻,中断读出部112进行的变量C的读出(Read),由运算部131开始任务Tp的程序Pp(特别是Pp2)的执行,由运算部131完成任务Tp的处理。即,在读出部112读出变量C的中途,在到达“t=1ms”的时刻时,读出部112进行的变量C的读出(Read)完成的时刻尽早成为“t=1ms~2ms”之间。
读出时刻确定部115确定变量A及B各自的值的读出时刻,以使变量A及B各自的值的读出完成时刻和变量C的读出完成时刻之间比“任务Tp的1周期量(即,1ms)”小。具体而言,读出时刻确定部115在任务Tp的周期内(图7所示的例子为“t=1ms~2ms”)、且程序Ps2的执行完成后的时刻,确定在任务Tp中更新值的变量A及B各自的值的读出时刻。即,在图7的“由纸面左上至右下延伸的斜线表示的区域”中,读出部112读出变量A及B的更新后的值。
此外,在从读出部112进行的变量C的读出被中断至重新开始读出部112进行的变量C的读出为止的期间,不执行更新变量C的值的任务Ts(特别是程序Ps)。因此,在读出部112进行的变量C的读出中,不通过任务Ts(特别是程序Ps)更新变量C的值。
如上所示,在图7中,读出部112读出(1)变量A及B各自的“由程序Pp2更新后的值”,另外,读出(2)变量C的“由程序Ps1更新后的值”。因为变量A及B各自的值的读出完成时刻和变量C的读出完成时刻之间比“任务Tp的1周期量”小,所以在此期间不执行任务Tp,即,确保读出的变量A~C各自的更新后的值之间的同步。
第四,PLC11的OPCUA输出部113将读出部112读出的“变量A~C各自的值”一并发送到客户端装置80。即,PLC11的OPCUA服务器部110将SubX的执行结果(读出结果)返回客户端装置80。
在图7所示的例子中,由于变量C的读出完成时刻为“t=1ms~2ms”之间,所以变量A及B各自的值的读出时刻成为任务Tp的周期内(具体而言,“t=1ms~2ms”)、且程序Ps2的执行完成后的时刻。在至“t=1ms”的时刻为止完成变量C的读出的情况下,变量A及B各自的值的读出时刻成为任务Tp的周期内(具体而言,“t=0ms~1ms”)、且程序Ps1的执行完成后的时刻。
即,读出时刻确定部115确定变量P及Q各自的读出时刻,以在从作为读出处理的对象的多个变量内的某一个变量P的值的读出完成时刻开始至与变量P不同的变量Q的值的读出完成时刻为止,不更新变量P或Q的值。换言之,读出时刻确定部115确定变量P及Q各自的读出时刻,以在从变量P的值的读出完成时刻至变量Q的值的读出完成时刻为止,不执行更新变量P或Q的值的任务(特别是程序)。
(关于变量的读出处理的详细情况)
图8是对图7所示的处理说明其详细情况的图。
支持装置60预先将任务与变量的对应信息通知给PLC11(S1)。具体而言,支持装置60在构建用户程序等的控制程序时,搜索(检索)“变量A~C分别以在哪个任务中执行的控制程序写入(值被更新)”(S11)。支持装置60生成对应信息,例如在用户变量管理表中与变量A~C分别对应地存储“写入各变量A~C的任务”的信息(S12)。支持装置60将包含对应信息(例如,变量管理表)的各种设定信息下载到PLC11,即输出到PLC11(S13)。
接着,客户端装置80向PLC11输出“一并读出变量A~C(订阅:SubX)”的服务请求(S2)。具体而言,客户端装置80将SubX的执行请求输出到PLC11(S14)。
当PLC11的OPCUA输入部111接收到服务请求:SubX时,读出部112基于由S1从支持装置60获取的对应信息,在写入各变量的任务内读出变量A~C各自的值(S3)。
具体而言,读出时刻确定部115从变量管理表221导出写入各变量A~C的任务(S15)。即,读出时刻确定部115根据变量管理表221中存储的对应信息,获取写入各变量A~C的任务,换言之,掌握变量A~C各自的值在哪个任务中被更新。
OPCUA服务器部110参照变量管理表221,在写入各变量A~C的任务内执行SubX,即在写入各变量A~C的任务内读出各变量A~C(S16)。即,首先,读出时刻确定部115使用变量管理表221中存储的对应信息,在更新变量A~C各自的值的任务Tp及Ts各自的周期内确定“读出部112读出变量A~C各自的更新后的值的时刻”。然后,读出部112在读出时刻确定部115确定的“变量A~C各自的更新后的值的读出时刻”,读出变量A~C各自的更新后的值。关于读出时刻确定部115进行的“变量A~C各自的更新后的值的读出时刻”的确定方法,已经使用图7进行了说明,因此省略详细说明。
最后,PLC11的OPCUA输出部113向客户端装置80返回SubX的执行结果(S4)。具体而言,OPCUA输出部113将变量A~C各自的读出结果输出到客户端装置80(S17)。
(2.在两个以上的任务中更新各变量的值时)
图9是表示对PLC11(特别是CPU单元200)执行的处理有多个更新某一个变量的值的任务的情况下的处理的概要的图。在图9所示的例子中,在存储于PLC11(CPU单元200)的存储部220中的变量管理表221中存储有图6(C)所示的对应信息。即,在图7所示的例子中,(1)变量A及B在作为主定周期任务的任务Tp中被更新,(2)变量C在作为主定周期任务的任务Tp及作为定周期任务的任务Ts中被更新。
(关于图中的表现)
图9中的表现与图4或图7相同,省略说明。在图9中,任务Tp比任务Ts优先执行,并且例如以1ms的周期执行。另外,任务Ts在任务Tp之后执行,并且例如以2ms的周期执行。
(关于变量的读出处理的概要)
以下,对图9所示的PLC11执行的处理的概要进行说明。
第一,支持装置60将任务和变量的对应信息通知给PLC11。如上述,在图9所示的例子中,支持装置60向PLC11通知与“变量A及B在任务Tp中更新,变量C在任务Tp和Ts中更新”的对应信息。获取部210将该对应信息存储在存储部220的变量管理表221中。
第二,客户端装置80向PLC10输出“一并读出汇总变量A~C(订阅:SubX)”的服务请求。
第三,当PLC11的OPCUA输入部111接收到服务请求:SubX时,PLC11基于变量管理表221中存储的对应信息,在写入各变量A~C的任务中,读出各变量A~C。
具体而言,读出时刻确定部115如下确定“读出部112读出各变量A~C”的时刻。
(1)对于在任务Tp中更新值的变量A及B,读出时刻确定部115如下确定“读出部112读出各变量A及B”的时刻。即,读出时刻确定部115在任务Tp的周期内、且程序Pp的执行完成后的时刻,确定“读出部112读出各变量A及B”的时刻。换言之,读出时刻确定部115在任务Tp的周期内的时刻确定读出变量A及B各自的更新后的值的时刻。
(2)对于在任务Tp和Ts中更新值的变量C,读出时刻确定部115如下确定“读出部112读出变量C”的时刻。即,读出时刻确定部115将任务Tp及Ts的周期一致的时间的之前的时间确定为“读出部112读出变量C”的时刻。
在图9所示的例子中,任务Tp以1ms的周期执行,任务Ts以2ms的周期执行,因此,“在控制部130的控制处理的执行中,任务Tp及Ts的周期一致的时刻”例如是“t=2ms、4ms、6ms、……”。即,在图9所示的例子中,由控制部130执行的多个任务的执行循环(周期)一致的时刻(多个任务同步的时刻)例如是“t=2ms、4ms、6ms、……”。因此,在图9所示的例子中,读出时刻确定部115将任务Tp及Ts的周期一致的时间即“t=2ms”之前确定为“读出部112读出变量C”的时刻。
在图9中,通过控制部130(特别是运算部131),在t=0的时刻,即控制处理的开始时刻,任务Tp及Ts的执行循环(即,周期)同时开始。具体而言,首先在t=0的时刻,通过运算部131,开始优先级比任务Ts高的任务Tp的处理。此时,任务Ts因为优先级比任务Tp低,所以没有开始实际的处理而成为待机状态。而且,运算部131执行包含任务Tp的用户程序的程序Pp(特别是Pp1),当完成任务Tp的处理时,运算部131开始接着任务Tp优先级高的任务Ts的处理。即,运算部131执行包含任务Ts的用户程序的程序Ps(特别是Ps1)。在此,在图9所示的例子中,运算部131在任务Tp及Ts的执行循环同时开始之后至经过1ms为止,即t=1ms为止,完成任务Ts的处理。
读出时刻确定部115在任务Tp及Ts的周期一致的时间即“t=2ms”之前,确定任务Tp及Ts中更新值的变量C的读出时刻。具体而言,读出时刻确定部115从读出期间计算部114获取“读出部112执行变量C的值的读出处理”所需的时间即预测读出期间Yc。然后,读出时刻确定部115将从任务Tp及Ts各自的周期一致的时刻即“t=2ms”减去预测读出期间Yc的时刻确定为变量C的值的读出时刻。读出部112在由读出时刻确定部115确定的读出时刻,参照存储部120的变量表122开始变量C的值的读出(Read)(在图9中,以从纸面右上向左下延伸的斜线表示的区域的开始)。
另外,读出时刻确定部115确定变量A及B各自的值的读出时刻,以使变量A及B各自的值的读出完成时刻和变量C的读出完成时刻之间比“任务Tp的1周期量(即,1ms)”小。具体而言,读出时刻确定部115在任务Tp的周期内(在图9所示的例子中为“t=1ms~2ms”)、且程序Ps2的执行结束后的时刻,确定变量A及B各自的值的读出时刻。即,在图9的“以纸面左上向右下延伸的斜线表示的区域”中,读出部112读出变量A及B的更新后的值。
此外,变量C的值在任务Tp和Ts中被更新,因此,在图9中,通过程序Pp2的执行,变量C的值被更新。
如上所示,在图9中,读出部112读出(1)变量A及B各自的“由程序Pp2更新后的值”,另外,读出(2)变量C的“由程序Pp2更新后的值”。因为变量A及B各自的值的读出完成时刻和变量C的读出完成时刻之间比“任务Tp的1周期量”小,所以在该期间不执行任务Tp,即,确保读出的变量A~C各自的更新后的值之间的同步。
第四,PLC11的OPCUA输出部113将读出部112读出的“变量A~C各自的值”一并发送到客户端装置80。即,PLC11的OPCUA服务器部110将SubX的执行结果(读出结果)返回到客户端装置80。
即,读出时刻确定部115确定变量P及Q各自的读出时刻,使得在从作为读出处理的对象的多个变量内的某一个变量P的值的读出完成时刻开始至与变量P不同的变量Q的值的读出完成时刻为止,不更新变量P或Q的值。换言之,读出时刻确定部115确定变量P及Q各自的读出时刻,使得在从变量P的值的读出完成时刻至变量Q的值的读出完成时刻,不执行更新变量P或Q的值的任务(特别是程序)。
(关于变量的读出处理的详细情况)
图10是对图9所示的处理说明其详细情况的图。
与图8所示的内容相同,支持装置60预先将任务和变量的对应信息通知给PLC11(S1)。具体而言,支持装置60在构建用户程序等控制程序时,搜索(检索)“变量A~C各自以在哪个任务中执行的控制程序写入(更新值)”(S11)。支持装置60生成对应信息,例如在用户变量管理表中与变量A~C分别对应地存储“写入各变量A~C的任务”的信息。在此,支持装置60使任务:未知与从多个任务(例如,任务Tp及Ts)写入的变量(例如,变量C)相对应(S12′)。支持装置60将包含对应信息(例如,变量管理表)的各种设定信息下载到PLC11中,即输出到PLC11(S13)。
接着,客户端装置80向PLC11输出“一并读出变量A~C的(订阅:SubX)”的服务请求(S2)。具体而言,客户端装置80向PLC11输出SubX的执行请求(S14)。
当PLC11的OPCUA输入部111接收到服务请求:SubX时,读出部112基于由S1从支持装置60获取的对应信息,在写入各变量的任务内读出变量A~C各自的值(S3)。
具体而言,读出时刻确定部115从变量管理表221导出写入各变量A~C的任务(S15)。即,读出时刻确定部115基于变量管理表221中存储的对应信息,获取写入各变量A~C的任务,换言之,掌握变量A~C各自的值在哪个任务中被更新。
OPCUA服务器部110参照变量管理表221,在写入各变量A~C的任务内执行SubX,即,在写入各变量A~C的任务内读出各变量A~C。在此,对应任务:未知的变量C在多个任务的周期一致的时刻被读出(S16′)。
即,当读出时刻确定部115使用变量管理表221中存储的对应信息掌握“变量C的值在任务Tp及Ts中被更新”时,如下确定变量C的读出时刻。在任务Tp及Ts的周期一致的时刻(例如,“t=2ms”)之前,读出时刻确定部115确定在任务Tp及Ts中更新值的变量C的读出时刻。
读出部112在读出时刻确定部115确定的“变量A~C各自的更新后的值的读出时刻”,读出变量A~C各自的更新后的值。关于读出时刻确定部115进行的“变量A~C各自的更新后的值的读出时刻”的确定方法,已经使用图9进行了说明,因此省略详细说明。
最后,PLC11的OPCUA输出部113向客户端装置80返回SubX的执行结果(S4)。具体而言,OPCUA输出部113将变量A~C各自的读出结果输出到客户端装置80(S17)。
§4.变形例
(关于控制装置)
在到此为止说明的实施方式中,作为本发明的控制装置(控制器)对PLC10及PLC11进行了说明,但本发明的控制装置不限于PLC,能够应用于各种控制装置。
(关于控制装置的台数)
在图2所示的管理系统1中,一台PLC10连接于客户端装置80和控制系统2内的输入设备及输出设备。但是,在管理系统1中,PLC10无需为一台,管理系统1也可以包含多台PLC10。在管理系统1中,多台PLC10分别也可以经由现场网络20相互通信地连接。
例如,主体上承担控制系统2中的控制的PLC10、在信息系统3中接收来自客户端装置80的服务请求(例如,SubX的执行请求)的PLC10无需是一台相同的PLC10。从客户端装置80接收到SubX的执行请求的PLC10A也可以使主体上承担控制系统2中的控制的PLC10B执行SubX,PLC10A将SubX的执行结果输出到客户端装置80。在该情况下,PLC10A和PLC10B例如也可以经由现场网络20相互通信地连接。
(关于多任务)
PLC10及PLC11只要可以“以多任务执行处理”即可,不仅可以“通过分时并行执行多个任务”,还可以“同时并行执行多个任务”。例如,处理器151可以是单核心,并且通过分时并行执行多个任务,即,处理器151也可以通过多任务执行处理。另外,处理器151也可以是多核心,并行执行多个任务,即,处理器151也可以通过多任务执行处理。处理器151通过同时并行执行多个任务,能够实现任务的处理能力的提高。
PLC10及PLC11采用单核心,关于多任务,也可以在某个任务的执行中进行未执行其它任务的“并行执行”。另外,PLC10及PLC11采用多核心,关于多任务,也可以在某个任务的执行中进行执行其它任务的“并排执行”。PLC10及PLC11对于多任务,无论是进行并行执行的情况还是进行并排执行的情况,都是一并读出多个变量各自的更新后的值、且确保了各值之间的同步的更新后的值。
[软件的实现例]
PLC10及11(特别是CPU单元100及CPU单元200)的功能块(特别是OPCUA服务器部110、控制部130及获取部210)可以通过形成在集成电路(IC芯片)等上的逻辑电路(硬件)实现,也可以通过软件实现。
在后者的情况下,PLC10及11具备执行实现各功能的软件即程序的命令的计算机。该计算机例如具备一个以上的处理器,并且具备存储有上述程序的计算机可读取的记录介质。而且,在上述计算机中,通过上述处理器从上述记录介质中读取并执行上述程序,实现本发明的目的。作为上述处理器,例如可以使用CPU(Central Processing Unit)。作为上述记录介质,除“非临时的有形介质”、例如ROM(Read Only Memory)等之外,还可以使用磁带、磁盘、卡、半导体存储器、可编程逻辑电路等。另外,还可以具备展开上述程序的RAM(RandomAccess Memory)等。另外,上述程序也可以经由能够传输该程序的任何的传输介质(通信网络或广播波等)供给到上述计算机。此外,本发明的一方面也可以通过上述程序通过电子传输实现的、嵌入到载波中的数据信号的形式来实现。
(附记事项)
本发明的一方面提供一种控制装置,通过以各自任务的周期反复并行执行多个上述任务,控制控制对象设备,其中,具备:接收部,其从外部接收对将各值在上述多个任务的至少一个中更新的多个变量一并询问上述任务的执行中的各值的请求;读出部,其在上述接收部接收到上述请求时,以完成上述多个变量各自的值的读出的时刻全部包含在上述多个任务中上述周期的间隔最小的任务的、从一个周期的开始时刻至结束时刻之间的方式,读出上述多个变量各自的在上述多个任务的至少一个中更新的值;输出部,其向外部输出上述读出部读出的上述多个变量各自的值。
根据上述结构,通过以每个上述任务的周期反复并行执行多个任务,来控制控制对象设备。另外,上述控制装置在接收到上述请求时,以完成上述多个变量各自的值的读出的时刻全部包含在上述多个任务中上述周期的间隔最小的任务的、从一个周期的开始时刻至结束时刻之间的方式,读出上述多个变量各自的在上述多个任务的至少一个中更新的值,并向外部输出上述读出部读出的上述多个变量各自的值。
因此,上述控制装置实现如下效果:能够并行周期性地执行多个任务,且如果从外部接收到在任务执行中一并询问多个变量各自的更新后的值的请求,则能够响应多个变量各自的更新后的值、且同步的值。
在此,在上述多个变量各自的更新后的值的读出完成时刻横跨两个以上的“上述周期的间隔最小的任务的周期”(下称“基本周期”)的情况下,在读出的多个值之间不能确保同步。即,在上述多个变量各自的更新后的值的读出完成时刻之间的时间间隔为上述基本周期的间隔以上的情况下,在读出的多个值之间不能确保同步。
这例如明确为,假设并行周期性地执行“对应于上述基本周期,更新变量A的值”任务Tp和“对应于与上述基本周期不同的周期,更新与变量A不同的变量C的值”任务Ts的情况。
即,在变量A的更新后的值的读出完成时刻和变量C的更新后的值的读出完成时刻之间的时间间隔为上述基本周期的间隔以上的情况下,在上述时间间隔中执行1次以上的任务Tp。因此,用户将获得变量A的值和“在读出变量A的值之后,更新变量A的值的任务Tp被执行一次以上之后的、变量C的值”。因此,不能确保所读出的变量A的值和变量C的值之间的同步,用户无法掌握同步的“多个变量各自的更新后的值”之间的关系。换言之,用户无法掌握在并行周期性执行的任务Tp及Ts各自中大致同时更新的变量A及变量C各自的更新后的值。在上述例子中,用户获取的是变量A的值和“在读出变量A的值之后,更新变量A的值的任务Tp被执行一次以上之后的、变量C的值”。
与之相对,上述控制装置中,以完成上述多个变量各自的值的读出的时刻全部包含在上述多个任务中上述周期的间隔最小的任务的、一个周期内的方式,读出上述多个变量各自的在上述多个任务的至少一个中更新的值,且将读出的上述多个变量各自的值输出到外部。即,上述控制装置以上述多个变量各自的更新后的值的读出完成时刻之间的时间间隔小于上述基本周期的时间间隔的方式,读出上述多个变量各自的更新后的值,且将读出的上述多个变量各自的值输出到外部。
根据上述例子,上述控制装置以变量A的更新后的值的读出完成时刻和变量C的更新后的值的读出完成时刻之间的时间间隔小于上述基本周期的时间间隔的方式,读出变量A及变量C各自的更新后的值。上述控制装置读出变量A及C各自的更新后的值,使得在从上述控制装置完成变量A的更新后的值的读出的时刻至完成变量C的更新后的值的读出的时刻之间,任务Tp及任务Ts均不执行。
因此,通过上述控制装置,用户能够掌握在并行执行的多个任务中的每一个任务中大致同时更新的多个变量各自的更新后的值,即,能够掌握确保了同步性的多个变量各自的更新后的值。换言之,在任务执行中对上述控制装置一并询问多个变量各自的更新后的值的情况下,实现上述控制装置响应的多个变量各自的更新后的值之间的同步。
根据上述例子,通过上述控制装置,用户能够掌握在任务Tp中更新的变量A的更新后的值和与更新变量A的时刻大致同时地在任务Ts中更新的变量C的更新后的值。即,通过上述控制装置,用户能够对于变量A及变量C分别掌握“确保了同步性的更新后的值”。
关于本发明的一方面的控制装置,也可以是,上述读出部在从上述多个任务各自的周期一致的时刻减去作为全部读出上述多个变量各自的值所需的期间所预测的预测读出期间的时刻为止,开始上述多个变量各自的值的读出。
根据上述结构,上述控制装置在从上述多个任务各自的周期一致的时刻减去作为全部读出上述多个变量各自的值所需的期间所预测的预测读出期间的时刻为止,开始上述多个变量各自的值的读出。
即,上述控制装置使用关于上述多个任务各自的周期一致的时刻的信息和作为全部读出上述多个变量各自的值所需的期间所预测的预测读出期间的信息,读出上述多个变量各自的更新后的值。换言之,为了读出上述多个变量各自的更新后的值,上述控制装置无需掌握“上述多个变量各自的值在上述多个任务中的哪个任务中被更新”。
因此,上述控制装置与掌握“上述多个变量各自的值在上述多个任务中的哪个任务中被更新”的情况相比,通过容易实现的处理,实现能够读出上述多个变量各自的更新后的值的效果。
本发明一方面的控制装置中,也可以是,还具备获取部,其获取使上述变量和更新上述变量的值的上述任务对应的对应信息,上述读出部使用上述获取部获取的上述对应信息,在更新上述多个变量各自的值的上述任务的上述周期中,读出上述多个变量各自的值。
根据上述结构,上述控制装置获取使上述变量和更新上述变量的值的上述任务对应的对应信息,使用获取的上述对应信息,在更新上述多个变量各自的值的上述任务的上述周期中,读出上述多个变量各自的值。
因此,上述控制装置实现能够利用上述对应信息,在更新上述多个变量各自的值的上述任务的上述周期中,读出上述多个变量各自的值的效果。
关于本发明一方面的控制装置,也可以是,在上述对应信息中,在相对于上述多个变量中的某个变量对应两个以上的更新上述某个变量的值的上述任务的情况下,上述读出部在更新上述某个变量的值的两个以上的上述任务各自的上述周期一致的时刻之前,完成上述某个变量的值的读出。
根据上述结构,上述控制装置在上述对应信息中,在相对于上述多个变量中的某个变量对应两个以上的更新上述某个变量的值的上述任务的情况下,在更新上述某个变量的值的两个以上的上述任务各自的上述周期一致的时刻之前,完成上述某个变量的值的读出。
在此,对于上述某个变量,在更新上述某个变量的值的两个以上的上述任务中、上述周期的间隔最小的任务中,在读出上述某个变量的更新后的值的情况下,发生以下事态。即,读出的值在重新执行“上述周期间的隔最小的任务”之前,在“周期间隔最小的任务”以外的任务中进一步更新值。
与之相对,上述控制装置在更新上述某个变量的值的两个以上的上述任务各自的周期一致的时刻之前,读出上述某个变量的值。因此,上述控制装置实现如下效果,能够防止在读出上述某变量的在某个任务中更新后的值后,在上述某个任务被重新执行之前,在“上述某个任务”以外的任务中,上述某变量的值被更新这样的事态。
本发明一方面的控制装置中,也可以是,具备OPCUA服务器功能,上述接收部从OPCUA客户端装置,以遵循OPCUA标准的连接方式接收上述请求,上述输出部以遵循OPCUA标准的连接方式向上述OPCUA客户端装置输出上述多个变量各自的值。
根据上述结构,上述控制装置具备OPCUA服务器功能,从OPCUA客户端装置,以遵循OPCUA标准的连接方式接收上述请求,以遵循OPCUA标准的连接方式向上述OPCUA客户端装置输出上述多个变量各自的值。
因此,上述控制装置实现如下效果,能够以遵循独立于厂商及平台的、安全且可靠性高的、工业用的设备间通信协议即OPCUA标准的连接方式接收上述请求,并以遵循OPCU标准的连接方式输出上述多个变量各自的值。
关于本发明一方面的控制装置,也可以是,上述多个任务包含基准任务和基准任务以外的任务,除上述基准任务以外的任务的周期被设定为上述基准任务的周期的整数倍。
根据上述结构,在上述控制装置中,上述多个任务包含基准任务和基准任务以外的任务,除上述基准任务以外的任务的周期被设定为上述基准任务的周期的整数倍。
因此,上述控制装置实现能够容易使上述多个任务同步,即能够容易使上述多个任务各自的周期一致的效果。
本发明一方面提供一种控制方法,是控制装置的控制方法,该控制装置通过以各自任务的周期反复并行执行多个上述任务,控制控制对象设备,其中,包括:接收步骤,从外部接收对将各值在上述多个任务的至少一个中更新的多个变量一并询问上述任务的执行中的各值的请求;读出步骤,在上述接收步骤中接收到上述请求时,以完成上述多个变量各自的值的读出的时刻全部包含在上述多个任务中上述周期的间隔最小的任务的、从一个周期的开始时刻至结束时刻之间的方式,读出上述多个变量各自的在上述多个任务的至少一个中更新的值;输出步骤,向外部输出上述读出步骤中读出的上述多个变量各自的值。
根据上述方法,通过以每个上述任务的周期反复并行执行多个上述任务,控制控制对象设备。另外,上述控制方法中,在接收到上述请求时,以完成上述多个变量各自的值的读出的时刻全部包含在上述多个任务中上述周期的间隔最小的任务的、从一个周期的开始时刻至结束时刻之间的方式,读出上述多个变量各自的在上述多个任务的至少一个中更新的值,并向外部输出读出的上述多个变量各自的值。
因此,上述控制方法实现如下效果:能够并行周期性执行多个任务,并且,如果从外部接收到在任务执行中一并询问多个变量各自的更新后的值的请求,则能够响应多个变量各自的更新后的值、且同步的值。
在此,在上述多个变量各自的更新后的值的读出完成时刻横跨两个以上的基本周期的情况下,在读出的多个值之间不能确保同步。即,在上述多个变量各自的更新后的值的读出完成时刻之间的时间间隔为上述基本周期的间隔以上的情况下,在读出的多个值之间不能确保同步。
这例如明确为,假设并行周期性地执行“对应于上述基本周期,更新变量A的值”任务Tp和“对应于与上述基本周期不同的周期,更新与变量A不同的变量C的值”任务Ts的情况。
即,在变量A的更新后的值的读出完成时刻和变量C的更新后的值的读出完成时刻之间的时间间隔为上述基本周期的间隔以上的情况下,在上述时间间隔中执行1次以上的任务Tp。因此,用户将获得变量A的值和“在读出变量A的值之后,更新变量A的值的任务Tp被执行一次以上之后的、变量C的值”。因此,不能确保所读出的变量A的值和变量C的值之间的同步,用户无法掌握同步的“多个变量各自的更新后的值”之间的关系。换言之,用户无法掌握在并行周期性执行的任务Tp及Ts各自中大致同时更新的变量A及变量C各自的更新后的值。在上述例子中,用户获取的是变量A的值和“在读出变量A的值之后,更新变量A的值的任务Tp被执行一次以上之后的、变量C的值”。
与之相对,上述控制方法中,以完成上述多个变量各自的值的读出的时刻全部包含在上述多个任务中上述周期的间隔最小的任务的、一个周期内的方式,读出上述多个变量各自的在上述多个任务的至少一个中更新的值,且将读出的上述多个变量各自的值输出到外部。即,上述控制方法以上述多个变量各自的更新后的值的读出完成时刻之间的时间间隔小于上述基本周期的时间间隔的方式,读出上述多个变量各自的更新后的值,且将读出的上述多个变量各自的值输出到外部。
根据上述例子,上述控制方法以变量A的更新后的值的读出完成时刻和变量C的更新后的值的读出完成时刻之间的时间间隔小于上述基本周期的时间间隔的方式,读出变量A及变量C各自的更新后的值。上述控制方法读出变量A及C各自的更新后的值,使得在从上述控制方法完成变量A的更新后的值的读出的时刻至完成变量C的更新后的值的读出的时刻之间,任务Tp及任务Ts均不执行。
因此,通过上述控制方法,用户能够掌握在并行执行的多个任务中的每一个任务中大致同时更新的多个变量各自的更新后的值,即,能够掌握确保了同步性的多个变量各自的更新后的值。换言之,在任务执行中对上述控制装置一并询问多个变量各自的更新后的值的情况下,通过上述控制方法实现响应中的多个变量各自的更新后的值之间的同步。
根据上述例子,通过上述控制方法,用户能够掌握在任务Tp中更新的变量A的更新后的值和与更新变量A的时刻大致同时地在任务Ts中更新的变量C的更新后的值。即,通过上述控制方法,用户能够对于变量A及变量C分别掌握“确保了同步性的更新后的值”。
本发明不限于上述的各实施方式,在请求项所示的范围内可以进行各种变更,对于能够适当组合在不同的实施方式中分别公开的技术方案的实施方式,也包含在本发明的技术范围内。
符号说明
10、10A、10B、11 PLC(控制装置)
80 客户端装置(OPCUA客户端装置)
111 OPCUA输入部(接收部)
112 读出部
113 OPCUA输出部(输出部)
210 获取部
Tp 任务(基准任务)
Ts 任务(基准任务以外的任务)
Yμs 预测读出期间
Step1 接收步骤
Step3 读出步骤
Step4 输出步骤

Claims (8)

1.一种控制装置,通过将多个任务以各自任务的周期反复并行执行,对控制对象设备进行控制,其特征在于,具备:
接收部,其从外部接收请求,该请求为对将各值在所述多个任务的至少一个中更新的多个变量一并询问在所述任务的执行中的各值的请求;
读出部,其在所述接收部接收到所述请求时,以完成所述多个变量各自的值的读出的时刻全部包含在所述多个任务中所述周期的间隔最小的任务的、从一个周期的开始时刻至结束时刻之间的方式,读出所述多个变量各自的在所述多个任务的至少一个中更新的值;
输出部,其向外部输出所述读出部读出的所述多个变量各自的值。
2.如权利要求1所述的控制装置,其特征在于,
所述读出部在从所述多个任务各自的周期一致的时刻减去作为全部读出所述多个变量各自的值所需的时间而预测的预测读出时间的时刻为止,开始所述多个变量各自的值的读出。
3.如权利要求1或2所述的控制装置,其特征在于,
还具备获取部,其获取使所述变量和更新所述变量的值的所述任务对应的对应信息,
所述读出部使用所述获取部获取的所述对应信息,在更新所述多个变量各自的值的所述任务的所述周期读出所述多个变量各自的值。
4.如权利要求3所述的控制装置,其特征在于,
在所述对应信息中,在相对于所述多个变量中的某个变量对应两个以上的更新所述某个变量的值的所述任务的情况下,
所述读出部在更新所述某个变量的值的两个以上的所述任务各自的所述周期一致的时刻之前,完成所述某个变量的值的读出。
5.如权利要求1所述的控制装置,其特征在于,
具备OPCUA服务器功能,
所述接收部从OPCUA客户端装置,以遵循OPCUA标准的连接方式接收所述请求,
所述输出部以遵循OPCUA标准的连接方式向所述OPCUA客户端装置输出所述多个变量各自的值。
6.如权利要求1所述的控制装置,其特征在于,
所述多个任务包含基准任务和基准任务以外的任务,
除所述基准任务以外的任务的周期被设定为所述基准任务的周期的整数倍。
7.一种控制方法,为控制装置的控制方法,该控制装置通过将多个任务以各自任务的周期反复并行执行,对控制对象设备进行控制,其特征在于,该控制方法包括:
接收步骤,从外部接收请求,该请求为对将各值在所述多个任务的至少一个中更新的多个变量一并询问在所述任务的执行中的各值的请求;
读出步骤,在所述接收步骤中接收到所述请求时,以完成所述多个变量各自的值的读出的时刻全部包含在所述多个任务中所述周期的间隔最小的任务的、从一个周期的开始时刻至结束时刻之间的方式,读出所述多个变量各自的在所述多个任务的至少一个中更新的值;
输出步骤,向外部输出所述读出步骤中读出的所述多个变量各自的值。
8.一种计算机可读取的记录介质,其记录信息处理程序,该信息处理程序用于使计算机作为权利要求1~6中任一项所述的控制装置起作用,且用于使计算机作为所述各部分起作用。
CN201880056330.9A 2017-10-24 2018-10-05 控制装置、控制装置的控制方法、信息处理程序及记录介质 Active CN111095138B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2017205426A JP6859922B2 (ja) 2017-10-24 2017-10-24 制御装置、制御装置の制御方法、情報処理プログラム、および記録媒体
JP2017-205426 2017-10-24
PCT/JP2018/037462 WO2019082627A1 (ja) 2017-10-24 2018-10-05 制御装置、制御装置の制御方法、情報処理プログラム、および記録媒体

Publications (2)

Publication Number Publication Date
CN111095138A CN111095138A (zh) 2020-05-01
CN111095138B true CN111095138B (zh) 2023-03-10

Family

ID=66246395

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880056330.9A Active CN111095138B (zh) 2017-10-24 2018-10-05 控制装置、控制装置的控制方法、信息处理程序及记录介质

Country Status (5)

Country Link
US (1) US11287793B2 (zh)
EP (1) EP3702852B1 (zh)
JP (1) JP6859922B2 (zh)
CN (1) CN111095138B (zh)
WO (1) WO2019082627A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3942777B1 (de) * 2019-05-06 2023-02-22 Siemens Aktiengesellschaft Konfigurieren eines kommunikationsnetzwerks für das zyklische übertragen von nachrichten
CN112327740B (zh) * 2020-10-28 2021-10-22 中国工程物理研究院计算机应用研究所 集成Tango设备服务的嵌入式运动控制器
JP7422959B1 (ja) 2023-02-17 2024-01-26 三菱電機株式会社 表示プログラム、クライアント装置、ネットワークシステム及び表示制御方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1211005A (zh) * 1997-03-04 1999-03-17 松下电器产业株式会社 多异步运行任务中也能高效率地执行异步事件任务的处理器
JP2002099433A (ja) * 2000-09-22 2002-04-05 Sony Corp 演算処理システム及び演算処理制御方法、タスク管理システム及びタスク管理方法、並びに記憶媒体
CN101976247A (zh) * 2010-09-30 2011-02-16 北京新媒传信科技有限公司 Rss数据采集方法及系统
CN102804086A (zh) * 2011-03-15 2012-11-28 欧姆龙株式会社 控制装置和系统程序以及记录介质
CN102907058A (zh) * 2010-04-08 2013-01-30 伊什特万·沃达斯 在没有中央控制的全网状网络中利用动态多路径路由的基于单元数据传输
CN103154894A (zh) * 2010-09-21 2013-06-12 法国大陆汽车公司 用于管理微处理器中的或微处理器组件中的任务的方法
CN103617472A (zh) * 2013-07-09 2014-03-05 成都希盟泰克科技发展有限公司 多项目多任务管理中的资源平衡自适应调度方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7328370B2 (en) * 2003-09-12 2008-02-05 Rockwell Automation Technologies, Inc. Safety controller with simplified interface
JP4454455B2 (ja) * 2004-09-28 2010-04-21 株式会社デジタル エディタ装置、コンピュータをエディタ装置として機能させるためのプログラム、そのプログラムを格納した記録媒体、制御システム、および表示器
JP4770664B2 (ja) * 2006-09-20 2011-09-14 株式会社デンソー マイクロプロセッサおよびそれを用いたマイクロコンピュータ
JP4993208B2 (ja) 2008-01-31 2012-08-08 オムロン株式会社 産業用コントローラ用機器
JP2009245009A (ja) * 2008-03-28 2009-10-22 Fujitsu Ten Ltd 車両制御装置及びマルチコアプロセッサ
JP5252014B2 (ja) * 2011-03-15 2013-07-31 オムロン株式会社 制御装置、制御システム、ツール装置および収集指示プログラム
JP5218585B2 (ja) * 2011-03-15 2013-06-26 オムロン株式会社 制御装置およびシステムプログラム
US10156837B2 (en) * 2014-03-14 2018-12-18 Omron Corporation Control systems for setting sampling timing
JP6666583B2 (ja) 2015-10-29 2020-03-18 横河電機株式会社 電子機器

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1211005A (zh) * 1997-03-04 1999-03-17 松下电器产业株式会社 多异步运行任务中也能高效率地执行异步事件任务的处理器
JP2002099433A (ja) * 2000-09-22 2002-04-05 Sony Corp 演算処理システム及び演算処理制御方法、タスク管理システム及びタスク管理方法、並びに記憶媒体
CN102907058A (zh) * 2010-04-08 2013-01-30 伊什特万·沃达斯 在没有中央控制的全网状网络中利用动态多路径路由的基于单元数据传输
CN103154894A (zh) * 2010-09-21 2013-06-12 法国大陆汽车公司 用于管理微处理器中的或微处理器组件中的任务的方法
CN101976247A (zh) * 2010-09-30 2011-02-16 北京新媒传信科技有限公司 Rss数据采集方法及系统
CN102804086A (zh) * 2011-03-15 2012-11-28 欧姆龙株式会社 控制装置和系统程序以及记录介质
CN103617472A (zh) * 2013-07-09 2014-03-05 成都希盟泰克科技发展有限公司 多项目多任务管理中的资源平衡自适应调度方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
中断驱动控制系统的有界模型检验技术;周筱羽等;《软件学报》;20151015(第10期);全文 *

Also Published As

Publication number Publication date
EP3702852A1 (en) 2020-09-02
JP6859922B2 (ja) 2021-04-14
EP3702852A4 (en) 2021-07-14
US11287793B2 (en) 2022-03-29
WO2019082627A1 (ja) 2019-05-02
US20200264578A1 (en) 2020-08-20
CN111095138A (zh) 2020-05-01
EP3702852B1 (en) 2022-06-22
JP2019079256A (ja) 2019-05-23

Similar Documents

Publication Publication Date Title
JP6540166B2 (ja) 制御装置
JP4894961B1 (ja) Plcのcpuユニット、plc用システムプログラムおよびplc用システムプログラムを格納した記録媒体
JP6488830B2 (ja) 制御装置
US10908577B2 (en) Control device
CN111095138B (zh) 控制装置、控制装置的控制方法、信息处理程序及记录介质
EP2515189A1 (en) Plc cpu unit, system program for plc, and storage medium having system program for plc stored therein
US10579031B2 (en) Controller
US9753447B2 (en) Control unit, output control method and program
US8504176B2 (en) CPU unit of PLC, system program for PLC, and recording medium storing system program for PLC
EP2682830B9 (en) Control device and system program, and recording medium
JP2019106225A (ja) 制御装置
JP2018132829A (ja) 制御装置
JP4993208B2 (ja) 産業用コントローラ用機器
US11269313B2 (en) Controller and control system that stores data in current control cycle for output in next control cycle
US20190187669A1 (en) Control unit, data refresh method, and data refresh program

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant