CN110231781A - 控制装置、存储介质、控制方法 - Google Patents
控制装置、存储介质、控制方法 Download PDFInfo
- Publication number
- CN110231781A CN110231781A CN201811510452.9A CN201811510452A CN110231781A CN 110231781 A CN110231781 A CN 110231781A CN 201811510452 A CN201811510452 A CN 201811510452A CN 110231781 A CN110231781 A CN 110231781A
- Authority
- CN
- China
- Prior art keywords
- program
- execution
- processor
- control device
- order
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 34
- 238000003860 storage Methods 0.000 title claims abstract description 18
- 238000012544 monitoring process Methods 0.000 claims abstract description 115
- 230000002452 interceptive effect Effects 0.000 claims abstract description 8
- 238000004064 recycling Methods 0.000 claims abstract 3
- 230000004087 circulation Effects 0.000 claims description 58
- 238000011156 evaluation Methods 0.000 abstract description 3
- 238000005457 optimization Methods 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 123
- 238000012545 processing Methods 0.000 description 76
- 230000033001 locomotion Effects 0.000 description 21
- 230000008569 process Effects 0.000 description 20
- 238000009826 distribution Methods 0.000 description 17
- 238000007726 management method Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 11
- 238000013468 resource allocation Methods 0.000 description 10
- 230000006854 communication Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 239000008186 active pharmaceutical agent Substances 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 4
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000005315 distribution function Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000002195 synergetic effect Effects 0.000 description 1
- 230000005428 wave function Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/056—Programming the PLC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/418—Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4818—Priority circuits therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/15—Plc structure of the system
- G05B2219/15079—Multitasking, real time multitasking
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/20—Pc systems
- G05B2219/25—Pc structure of the system
- G05B2219/25343—Real time multitasking
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Multimedia (AREA)
- Manufacturing & Machinery (AREA)
- Quality & Reliability (AREA)
- Programmable Controllers (AREA)
Abstract
本发明提供一种控制装置、存储介质及控制方法,使控制装置执行优先级不同的多个程序时,也能够适当地评价优先级相对较低的程序的执行状况。控制装置包括由处理器反复执行的执行优先级最高的第1程序、第2及第3程序与对使处理器执行的程序进行管理的排程器程序。排程器程序包含:用于以不妨碍第1程序的执行的方式,来使处理器执行第2及第3程序的命令;以及用于在预定的每个监控循环,基于来自第2程序的开始通知及结束通知,判断第2程序的执行状况的命令。
Description
技术领域
本技术涉及一种与执行优先级不同的多个程序的控制装置中的程序执行相关的控制方法,尤其涉及一种控制装置、存储介质及控制方法。
背景技术
在各种生产现场,使用可编程逻辑控制器(Programmable Logic Controller,PLC)(可编程控制器(programmable controller))等控制装置的工厂自动化(FactoryAutomation,FA)技术正广泛普及。伴随近年的信息通信技术(Information andCommunication Technology,ICT)的发展,在此类FA领域中的控制装置中,不仅执行以往的序列程序(sequence program),还执行各种应用程序(application program)。
例如,日本专利特开2012-194662号公报(专利文献1)揭示了一种结构:以第1用户程序(user program)执行循环(cycle),来反复执行用户程序及运动(motion)运算处理程序(processor)。
[现有技术文献]
[专利文献]
专利文献1:日本专利特开2012-194662号公报
发明内容
[发明所要解决的问题]
在日本专利特开2012-194662号公报(专利文献1)中,用户程序被分类为:以运动控制循环而反复执行的高优先用户程序、与以运动控制循环的周期的整数倍而反复执行的低优先用户程序(作为一例,为其他处理P、其他处理Q、其他处理R)。这样,作为低优先用户程序,有时包含多个程序,这些程序将以预定的顺序而执行。
但是,伴随作为低优先用户程序而执行的程序的高度化及信息化,产生了如下所述的新问题,即,低优先用户程序中所含的多个处理中的特定处理的执行要消耗较多的时间,因而无法充分确保用于执行剩余处理的时间。
本技术的目的在于提供一种结构,在使控制装置执行优先级不同的多个程序时,也能够适当地评价优先级相对较低的程序的执行状况。
[解决问题的技术手段]
根据本揭示的一例,提供一种用于对控制对象进行控制的控制装置。控制装置包括:处理器;第1程序,由处理器反复执行,且执行优先级最高;第2程序,执行优先级比第1程序低;第3程序,执行优先级比第2程序低;以及排程器(scheduler)程序,对使处理器执行的程序进行管理。第2程序包含一通知命令,所述通知命令根据处理器中的执行开始而输出开始通知,并且根据处理器中的执行完成而输出结束通知。排程器程序包含:用于以不妨碍第1程序的执行的方式,来使处理器执行第2及第3程序的命令;以及用于在预定的每个监控循环,基于来自第2程序的开始通知及结束通知,判断第2程序的执行状况的命令。
根据本揭示,排程器程序能够基于来自第2程序的开始通知及结束通知,来判断第2程序的执行状况,因此能够适当地掌握对第1程序分配有较多计算(computing)资源而无法适当执行第2程序的状况等。
在所述揭示中,控制装置还包括执行优先级比第2程序高的第4程序。排程器程序包含一命令,所述命令用于在第2程序的执行状况不满足预定的设定时,使第4程序的执行暂时中断。
根据本揭示,当判断为无法适当地执行第2程序的状况时,能够使第4程序的执行暂时中断而对第2程序分配更多的计算资源。
在所述揭示中,用于判断执行状况的命令包含对监控循环中的第3程序的执行状况进行判断的命令。排程器程序包含一命令,所述命令用于在第3程序的执行状况不满足预定的设定时,使第2程序的执行暂时中断。
根据本揭示,当判断为无法适当地执行第3程序的状况时,能够使第2程序的执行暂时中断而对第3程序分配更多的计算资源。
在所述揭示中,通知命令是利用应用程序设计接口(Application ProgrammingInterface,API)而编入第2程序。
根据本揭示,能够实现使用API来调用共用的库(library)的安装,因此能够容易地将本实施方式的功能安装至第2程序。
在所述揭示中,排程器程序是使第1程序在预定的每个控制循环反复执行。
根据本揭示,能够将本实施方式的功能适用于定周期执行的环境。
在所述揭示中,排程器程序使第2程序及第3程序在未执行第1程序的空闲时间内执行。
根据本揭示,能够在第1程序定周期执行本实施方式的功能,并且第2程序及第3程序在可能的范围内执行的环境下,适用本实施方式的功能。
在所述揭示中,用于判断执行状况的命令包含一命令,所述命令是算出监控循环中的第2程序的动作时间的比率。
根据本揭示,能够在每个监控循环,判断是否满足对第2程序预先设定的目标动作时间。
在所述揭示中,用于判断执行状况的命令还包含一命令,所述命令是算出比监控循环长的第2监控循环中的第3程序的动作时间的比率。
根据本揭示,能够在每个第2监控循环,判断是否满足对第3程序预先设定的目标动作时间。
根据本揭示的另一例,提供一种系统程序,由控制装置来执行,所述控制装置具有用于对控制对象进行控制的处理器。控制装置包括由处理器反复执行的执行优先级最高的第1程序、执行优先级比第1程序低的第2程序、及执行优先级比第2程序低的第3程序。第2程序包含一通知命令,所述通知命令根据处理器中的执行开始而输出开始通知,并且根据处理器中的执行完成而输出结束通知。系统程序包含对使处理器执行的程序进行管理的排程器程序。排程器程序包含:用于以不妨碍第1程序的执行的方式,来使处理器执行第2及第3程序的命令;以及用于在预定的每个监控循环,基于来自第2程序的开始通知及结束通知,判断第2程序的执行状况的命令。
根据本揭示,排程器程序能够基于来自第2程序的开始通知及结束通知,来判断第2程序的执行状况,因此能够适当地掌握对第1程序分配有较多计算资源而无法适当执行第2程序的状况等。
根据本揭示的又一例,提供一种控制方法,是控制装置的控制方法,所述控制装置具有用于对控制对象进行控制的处理器。控制装置包括由处理器反复执行的执行优先级最高的第1程序、执行优先级比第1程序低的第2程序、及执行优先级比第2程序低的第3程序。第2程序包含一通知命令,所述通知命令根据处理器中的执行开始而输出开始通知,并且根据处理器中的执行完成而输出结束通知。控制方法包括下述步骤:以不妨碍第1程序的执行的方式,来使处理器执行第2及第3程序;以及在预定的每个监控循环,基于来自第2程序的开始通知及结束通知,判断第2程序的执行状况。
根据本揭示,能够基于来自第2程序的开始通知及结束通知,来判断第2程序的执行状况,因此能够适当地掌握对第1程序分配有较多计算资源而无法适当执行第2程序的状况等。
[发明的效果]
根据本发明,在使控制装置执行优先级不同的多个程序时,也能适当地评价优先级相对较低的程序的执行状况。
附图说明
图1是表示本实施方式的控制装置中的程序执行的一例的示意图。
图2是表示本实施方式的控制系统的结构例的示意图。
图3是表示构成本实施方式的控制装置的运算单元的硬件(hardware)结构的一例的示意图。
图4是表示构成本实施方式的控制装置的运算单元的软件(software)结构的一例的示意图。
图5是表示本实施方式的运算单元中的与优先级相应的处理的一例的示意图。
图6是用于说明本实施方式的运算单元中的通知功能及监控功能的图。
图7是用于说明本实施方式的运算单元中的介入功能的图。
图8是用于说明本实施方式的针对系统服务(system service)的计算资源分配的管理功能的序列图。
图9是表示在本实施方式的运算单元中,设定有主任务(primary task)及次要任务(secondary task)时的执行状况的一例的图。
图10是表示在本实施方式的运算单元中,仅设定有主任务时的执行状况的一例的图。
图11是表示在本实施方式的运算单元中,设定有主任务及次要任务时的执行状况的另一例的图。
图12是表示在本实施方式的运算单元中,设定有主任务及次要任务时的执行状况的又一例的图。
图13是表示在本实施方式的运算单元中,非定周期执行主任务及次要任务时的执行状况的一例的图。
图14是表示本实施方式的运算单元中的处理流程的流程图。
符号的说明
1:控制装置
2:现场网络
3:伺服马达驱动器
4:伺服马达
5:远程IO终端
6:检测开关
7:继电器
8:支持装置
10:连接电缆
11:PLC系统总线
12:电源单元
13:运算单元
14、53:IO单元
15:特殊单元
51:远程IO终端总线
52:通信耦合器
100:处理器
102:芯片组
104:主存储器
106:非易失性存储器
108:系统计时器
110:USB连接器
120:PLC系统总线控制器
122、142:DMA控制电路
124:PLC系统总线控制电路
126、146:缓冲存储器
130:PLC系统总线连接器
140:现场网络控制器
144:现场网络控制电路
200:实时OS
210:系统程序
212:排程器程序
214:处理程序
216:输入处理程序
218:输出处理程序
220:系统服务程序
222:高优先级服务程序
224:通知功能程序
226:低优先级服务程序
230:控制程序
232:序列命令运算程序
234:运动运算程序
236:用户程序
240:主任务
242:次要任务
250:系统服务任务
252、252A、252B:高优先级服务
254:通知功能
256:低优先级服务
260:控制循环
262:监控循环
264:服务循环
270:开始通知
272:结束通知
274:介入委托
276:中断指令
278:介入结束委托
280:继续指令
2120:控制功能
2122:监控功能
2124:介入功能
SYS:控制系统
具体实施方式
参照附图来详细说明本发明的实施方式。另外,对于附图中的相同或相当的部分,标注相同的符号并不再重复其说明。
<A.适用例>
首先,对适用本发明的场景的一例进行说明。
图1是表示本实施方式的控制装置1中的程序执行的一例的示意图。参照图1,控制装置1是用于对任意的控制对象进行控制的计算机,具有一个或多个处理器。
图1中表示在控制装置1中,序列地(sequential)执行主任务240及系统服务任务250的示例。在本说明书中,“任务”这一术语是作为分配计算资源的控制对象的基本单位,在各任务中登记或设定有应执行的一个或多个程序。即,对任一任务分配计算资源,当所述任务成为能够执行的状态时,开始或者继续所述任务中登记或设定的一个或多个程序的执行。
主任务240包含由控制装置1的处理器所执行的执行优先级(以下也简称作“优先级”)最高的程序,例如包含输入/输出数据的更新处理(以下也称作“IO刷新”)及应最优先执行的序列运算处理等。当定周期执行主任务240时,保证主任务240的处理完成所需的时间为定周期执行的循环的长度以下。
另一方面,系统服务任务250包含优先级比主任务240低的一个或多个程序。本实施方式中,系统服务任务250包含优先级不同的多个程序。更具体而言,系统服务任务250包含高优先级服务252及低优先级服务256。高优先级服务252包含优先级比主任务240中所含的程序低的程序,低优先级服务256包含优先级比高优先级服务252中所含的程序低的程序。
这些任务(中所含的各程序)的执行时机是通过执行管理功能(以下也称作“排程器”)来管理,所述执行管理功能是通过由处理器来执行排程器程序212而实现。即,控制装置1包含对使处理器执行的程序进行管理的排程器程序212。
排程器程序212使主任务240中所含的程序反复执行,并且以不妨碍主任务240中所含的程序的执行的方式,来使处理器执行系统服务任务250中所含的程序(分别登记在高优先级服务252及低优先级服务256中的程序)。排程器程序212对程序的执行管理可通过在适时的时机及期间将计算资源分配给各程序而实现。
此处,系统服务任务250是使用为了执行主任务240而使用的计算资源以外的计算资源来执行,因此不保证执行循环,是根据执行时可利用的计算资源来执行。
本实施方式的控制装置1提供一种对于系统服务任务250也实现一定程度的执行时间管理的方法。具体而言,在高优先级服务252中所含的程序中安装有通知功能254,通知功能254根据高优先级服务252的对应程序在处理器中的执行开始而输出开始通知270,并且根据处理器中的执行完成而输出结束通知272。通知功能254能够利用在对应程序中编入必要的命令代码(command code)的方法来实现。
排程器程序212具有监控功能2122,所述监控功能2122用于在预定的每个监控循环262监控程序的执行状况。监控功能2122也可通过排程器程序212中所含的命令代码而实现。
监控功能2122基于来自高优先级服务252中所含的程序的通知功能254的开始通知270及结束通知272,在每个监控循环262,判断对应程序(高优先级服务252中所含的程序)的执行状况。作为执行状况,包含对应程序的动作有无、及每个监控循环262的动作时间比例等。
本实施方式的控制装置1中,通过使用图1所示的监控功能2122,对于以往无法保证动作时间等的、系统服务任务250中所含的程序,也能够控制计算资源的适当分配等。
<B.控制系统的结构>
首先,对本实施方式的控制系统SYS的结构进行说明。
图2是表示本实施方式的控制系统SYS的结构例的示意图。参照图2,控制系统SYS包含控制装置1、经由现场网络(field network)2而与控制装置1连接的伺服马达驱动器(servo motor driver)3及远程(remote)输入输出(Input Out,IO)终端(terminal)5、以及作为现场机器的检测开关6及继电器(relay)7。在控制装置1上,经由连接电缆(cable)10等而连接有支持装置8。
控制装置1包含执行主要的运算处理的运算单元13、一个以上的IO单元14及特殊单元15。这些单元构成为,可经由PLC系统总线(system bus)11来相互交换数据。对于这些单元,由电源单元12供给适当电压的电源。
IO单元14是与一般的输入/输出处理相关的单元,负责开/关(ON/OFF)等二值化数据的输入/输出。具体而言,IO单元14对检测开关6等传感器是检测到某些对象物的状态(开)及未检测到任何对象物的状态(关)中的哪一种状态的信息进行收集。而且,IO单元14也有时对继电器7或执行器(actuator)等输出目标,输出用于激活的指令(开)及用于禁用的指令(关)中的任一个。
特殊单元15具有模拟数据(analog data)的输入/输出、温度控制、基于特定通信方式的通信等IO单元14不支持的功能。
现场网络2传输与运算单元13交换的各种数据。作为现场网络2,典型的是能够使用各种工业用以太网(Ethernet)(注册商标)。作为工业用以太网(注册商标),例如已知有EtherCAT(注册商标)、Profinet IRT、MECHATROLINK(注册商标)-III、Powerlink、SERCOS(注册商标)-III、CIP Motion等,采用这些中的哪种皆可。进而,也可使用工业用以太网(注册商标)以外的现场网络。例如,若是不进行运动控制的情况,则也可使用DeviceNet、CompoNet/IP(注册商标)等。
图2中,例示具有PLC系统总线11及现场网络2这两者的控制装置1,但也能够采用仅搭载其中一个的系统结构。
伺服马达驱动器3经由现场网络2而与运算单元13连接,并且根据来自运算单元13的指令值来驱动伺服马达4。具体而言,伺服马达驱动器3以固定周期从控制装置1接收位置指令值、速度指令值、扭矩(torque)指令值等指令值。而且,伺服马达驱动器3从连接于伺服马达4的轴的位置传感器(旋转编码器(rotary encoder))或扭矩传感器等检测器,获取位置、速度、扭矩等与伺服马达4的动作相关的实测值,以对用于驱动伺服马达4的电流进行调整。另外,伺服马达驱动器3也有时被称作伺服马达放大器(servo motor amplifier)。
在图2所示的控制系统SYS的现场网络2上,进而连接有远程IO终端5。远程IO终端5基本上与IO单元14同样,进行与一般的输入/输出处理相关的处理。更具体而言,远程IO终端5包含:通信耦合器(coupler)52,用于进行与现场网络2上的数据传输相关的处理;以及一个以上的IO单元53。这些单元构成为,可经由远程IO终端总线51来相互交换数据。
<C.运算单元的硬件结构>
接下来,对构成图2所示的控制装置1的运算单元13的硬件结构进行说明。图3是表示构成本实施方式的控制装置1的、运算单元13的硬件结构的一例的示意图。
参照图3,运算单元13包含处理器100、芯片组(chip set)102、主存储器(mainmemory)104、非易失性存储器106、系统计时器(system timer)108、PLC系统总线控制器120、现场网络控制器140及USB连接器110。芯片组102与其他组件(component)之间经由各种总线而分别结合。
处理器100及芯片组102典型的是遵照通用的计算机架构(architecture)而构成。即,处理器100对从芯片组102依照内部时钟而依序供给的命令代码进行解释并执行。芯片组102与所连接的各种组件之间交换内部数据,并且生成处理器100所需的命令代码。进而,芯片组102具有对处理器100中的运算处理的执行结果获得的数据等进行高速缓存(cash)的功能。
图3中,为了便于说明,绘制了一个处理器100,但也可配置多个处理器100,还可在一个处理器100中安装多个核心。处理器100的性能或结构也可根据所要求的计算资源而决定。
运算单元13具有主存储器104及非易失性存储器106以作为存储部件。
主存储器104为易失性的存储区域(随机存取存储器(Random Access Memory,RAM)),保持在对运算单元13接通电源后应由处理器100来执行的各种程序。而且,主存储器104也被用作处理器100对各种程序的执行时的作业用存储器。作为此种主存储器104,使用动态随机存取存储器(Dynamic Random Access Memory,DRAM)或静态随机存取存储器(Static Random Access Memory,SRAM)等元件。
非易失性存储器106非易失性地保持实时(real time)操作系统(OperatingSystem,OS)、控制装置1的系统程序、用户程序、系统设定参数等数据。这些程序或数据根据需要被复制(copy)到主存储器104中,以便处理器100能够访问。作为此种非易失性存储器106,可使用快闪存储器(flash memory)之类的半导体存储器。或者,也可使用硬盘驱动器(hard disk drive)之类的磁记录介质等。
系统计时器108在每个固定周期产生中断信号并提供给处理器100。典型的是构成为,根据硬件的规格,在多个不同的周期分别产生中断信号,但也可设定为,根据操作系统(Operating System,OS)或基本输入输出系统(Basic Input Output System,BIOS)等,在任意周期产生中断信号。利用所述系统计时器108所产生的中断信号,实现如后所述的每个控制循环的控制动作。
运算单元13具有PLC系统总线控制器120及现场网络控制器140以作为通信电路。这些通信电路发送任意的指令值等输出数据,并且接收从任意传感器获得的检测值等输入数据。
PLC系统总线控制器120对经由PLC系统总线11的数据交换进行控制。更具体而言,PLC系统总线控制器120包含动态存储器存取(Dynamic Memory Access,DMA)控制电路122、PLC系统总线控制电路124及缓冲存储器(buffer memory)126。PLC系统总线控制器120经由PLC系统总线连接器130而与PLC系统总线11内部连接。
缓冲存储器126作为经由PLC系统总线11而输出至其他单元的数据(输出数据)用的发送缓冲器、及经由PLC系统总线11而从其他单元输入的数据(输入数据)用的接收缓冲器发挥功能。DMA控制电路122进行从主存储器104向缓冲存储器126的输出数据的转发、及从缓冲存储器126向主存储器104的输入数据的转发。PLC系统总线控制电路124进行与连接于PLC系统总线11的其他单元之间发送缓冲存储器126的输出数据的处理、及接收输入数据并保存至缓冲存储器126的处理。
现场网络控制器140对经由现场网络2的数据交换进行控制。即,现场网络控制器140依照所使用的现场网络2的规格,对输出数据的发送及输入数据的接收进行控制。更具体而言,现场网络控制器140包含DMA控制电路142、现场网络控制电路144及缓冲存储器146。
缓冲存储器146作为经由现场网络2而输出至其他装置等的数据(输出数据)用的发送缓冲器、及经由现场网络2而从其他装置等输入的数据(输入数据)用的接收缓冲器发挥功能。DMA控制电路142进行从主存储器104向缓冲存储器146的输出数据的转发、及从缓冲存储器146向主存储器104的输入数据的转发。现场网络控制电路144进行与连接于现场网络2的其他装置之间发送缓冲存储器146的输出数据的处理、及接收输入数据并保存至缓冲存储器146的处理。
USB连接器110是用于连接支持装置8与运算单元13的接口。典型的是,将从支持装置8转发的、可由运算单元13的处理器100所执行的程序等经由USB连接器110而导入至控制装置1。
<D.运算单元的软件结构>
接下来,对构成图2所示的控制装置1的运算单元13的软件结构进行说明。图4是表示构成本实施方式的控制装置1的运算单元13的软件结构的一例的示意图。图4中,表示用于提供本实施方式的各种功能的软件群的一例。这些软件群中所含的命令代码在适当的时机被读出,并由运算单元13的处理器100来执行。
参照图4,作为由运算单元13执行的软件,基本上为实时OS200、系统程序210与用户程序236这三层。另外,当适用虚拟技术时,可由多个OS来共享同一硬件资源,在采用此种结构的情况下,将追加管理程序(hypervisor)层。
实时OS200是根据运算单元13的计算机架构而设计,提供处理器100用于执行系统程序210及用户程序236的基本执行环境。典型的是,所述实时OS是由控制装置的制造商(marker)或者专业软件公司等提供。
系统程序210是用于提供作为控制装置1的功能的软件群。具体而言,系统程序210包含排程器程序212、IO处理程序214(包含输入处理程序216及输出处理程序218)、序列命令运算程序232、运动运算程序234及系统服务程序220。
用户程序236是根据用户的控制目的而制作。即,是根据使用控制系统SYS来控制的控制对象,而任意制作的程序。
用户程序236包含序列命令及运动命令等命令代码。典型的是,用户程序236为可由运算单元13的处理器100来执行的目标程序(object program)格式。用户程序236是通过在支持装置8等中,对利用梯形语言(ladder language)等而记述的源程序(sourceprogram)进行编译(compile)而生成。并且,所生成的目标程序格式的用户程序236从支持装置8经由连接电缆10而转发至运算单元13,并保存于非易失性存储器106等中。
序列命令运算程序232是在执行用户程序236中所使用的某种序列命令时被调用,为了实现此命令的内容而执行的程序。运动运算程序234是根据用户程序236的指令来执行,算出对伺服马达驱动器3或脉冲马达驱动器等马达驱动器输出的指令值的程序。
序列命令运算程序232及运动运算程序234提供命令、函数、功能模块等。通过由运算单元13的处理器100来执行用户程序236,从而协同序列命令运算程序232及运动运算程序234,来实现由用户所指定的控制目的。
这样,用户程序236、序列命令运算程序232及运动运算程序234彼此联动地实现控制目的,因此也有时将这些程序总称作控制程序230。
系统服务程序220是将图4中各别地表示的程序以外的、用于实现控制装置1的各种功能的程序群汇总表示者。系统服务程序220例如设想实现与外部装置之间收发文件或数据的处理的程序(即,与通信处理相关的程序)、或者实现异常监控处理或各种分析处理等的程序等。
本实施方式的运算单元13中,系统服务程序220中所含的程序至少划分有两个优先级。图4中,作为一例,系统服务程序220包含高优先级服务程序222与低优先级服务程序226。高优先级服务程序222设定有比低优先级服务程序226高的优先级。
排程器程序212根据对每个任务设置的优先级,来使处理器100执行各任务中所含的程序。即,排程器程序212对于IO处理程序214、控制程序230及系统服务程序220,控制各执行循环内的处理开始及处理中断后的处理继续。
具体而言,排程器程序212包含控制功能2120、监控功能2122及介入功能2124。控制功能2120负责用于对各处理分配计算资源的控制。监控功能2122监控系统服务程序220中所含的各程序的执行状况。监控功能2122基于系统服务程序220中所含的高优先级服务程序222的通知功能程序224的通知等,来掌握各服务的执行状况。
介入功能2124在基于监控功能2122的监控结果,而判断为系统服务程序220中所含的一个或多个服务的处理的执行受到阻碍时,介入妨碍到与所述其他服务相关的处理的执行的、处理的执行。即,介入功能2124是使与比跟其他服务相关的处理消耗相对较多时间的服务相关的处理暂时中断,以确保执行与所述其他服务相关的处理的时间。
本实施方式的运算单元13中,通过排程器程序212中所含的监控功能2122及介入功能2124,对如上所述的系统服务程序220中所含的各程序的执行时间进行管理。对于系统服务程序220中所含的各程序的执行时间的管理,将在后文详述。
IO处理程序214负责对在运算单元13中可利用的数据(输入数据及输出数据)进行更新的处理。IO处理程序214的输入处理程序216将由PLC系统总线控制器120和/或现场网络控制器140所接收的输入数据,重新配置成适合于控制程序230使用的格式。
输出处理程序218将通过用户程序236(控制程序230)的执行而生成的输出数据,重新配置成适合于转发至PLC系统总线控制器120和/或现场网络控制器140的格式。在PLC系统总线控制器120或现场网络控制器140需要来自处理器100的、用于执行发送的指令时,输出处理程序218发布此种指令。
另外,也可取代通过处理器100执行图4所示的程序而实现如后所述的功能及处理的实现形态,而使用专用集成电路(Application Specific Integrated Circuit,ASIC)或现场可编程门阵列(Field-Programmable Gate Array,FPGA)等硬连接(hard wired)的电路来实现其一部分或全部。
<E.与优先级相应的处理>
接下来,对本实施方式的运算单元13中的与优先级相应的处理的一例进行说明。
图5是表示本实施方式的运算单元13中的与优先级相应的处理的一例的示意图。参照图5,在运算单元13中,除了保证执行循环的主任务240及次要任务242以外,还执行未必保证执行循环的系统服务任务250。即,图5中表示至少使主任务240定周期执行的结构。
在实现此种定周期执行时,处理器100可提供的计算资源首先被分配给主任务240,随后被分配给次要任务242。然后,剩余的计算资源被分配给系统服务任务250。另外,计算资源的分配是由通过排程器程序212提供的排程器来管理。
在主任务240中,登记有IO处理程序214(图4)及用户程序236(图4)的全部或一部分,在预定的每个控制循环260执行对应的处理。控制循环260是在运算单元13中管理的最短的周期,例如设定为数百微秒至数毫秒的范围。图5所示的示例中,表示控制循环260为1ms的示例。即,主任务240的执行循环是与控制循环260一致,在每个控制循环260,执行主任务240中所含的程序整体。
另一方面,次要任务242的优先级被设定为比主任务240的优先级低,虽可保证执行循环,但一般而言,其执行循环为控制循环260的多倍。例如,在主任务240的执行循环被设定为控制循环260的4倍的情况下,在4次的控制循环260的期间,将次要任务242中所含的程序执行一次。
而且,在系统服务任务250中,登记有定时执行性的要求相对较低的程序。图5所示的处理例中,系统服务任务250包含高优先级服务252及低优先级服务256。低优先级服务256的优先级比高优先级服务252的优先级低。
例如,当使用单核(single core)处理器100来并列执行如图5所示的设定有不同优先级的多个任务时,排程器程序212使主任务240中所含的程序在预定的每个控制循环260反复执行。并且,排程器程序212使次要任务242以及系统服务任务250(高优先级服务252及低优先级服务256),在未执行主任务240中所含的程序的空闲时间内执行。
作为高优先级服务252中所含的处理,设想根据来自控制装置1的指令来控制机器人时的针对机器人的指令值的计算处理、或者将控制装置1中的控制动作视觉化的模拟器(simulator)用的数据生成处理等。对于高优先级服务252中所含的处理,有下述要求,即,欲在每一个执行循环(与控制循环260相比而足够长)完成处理的执行。
作为低优先级服务256中所含的处理,设想用于进行人机接口(Human MachineInterface,HMI)的画面更新的数据生成处理、或者从控制装置1向数据库的数据发送处理等。对于低优先级服务256中所含的处理,有下述要求,即,欲对任意服务循环264(与控制循环260相比而足够长)中的规定时间分配计算资源。
考虑到此种系统服务任务250中所含的高优先级服务252及低优先级服务256各自的要求,本实施方式中,除了服务循环264以外,还规定监控循环262。
图5中,表示监控循环262被设定为20ms(控制循环260的20倍),服务循环264被设定为100ms(控制循环260的100倍)的示例。监控循环262的长度例如也可根据应对登记在高优先级服务252中的程序的执行结果进行更新的周期等来决定。服务循环264的长度例如也可根据HMI所要求的响应时间性能等来决定。
本实施方式的运算单元13中,进行控制,以将计算资源在每个监控循环262分配给高优先级服务252,并且进行控制,以在每个服务循环264中,以规定的时间比例将计算资源分配给低优先级服务256。这样,本实施方式的运算单元13具有针对系统服务任务250的计算资源分配的管理功能。
<F.针对系统服务的计算资源分配的管理功能>
接下来,对本实施方式的运算单元13中的、针对系统服务任务250的计算资源分配的管理功能进行说明。
图6是用于说明本实施方式的运算单元13中的通知功能254及监控功能2122的图。参照图6,高优先级服务252具有通知功能254,将高优先级服务252中所含的处理的执行开始通知给监控功能2122(开始通知270),并且当所述处理完成时,对其进行通知(结束通知272)。这样,高优先级服务252的通知功能254将自身的处理开始及处理结束通知给监控功能2122。
在高优先级服务252中,也有时会配置多个处理(即,多个通知功能254),因此也可将用于确定各处理的识别信息编入开始通知270和/或结束通知272。
也可通过将用于实现通知功能254的应用程序设计接口(ApplicationProgramming Interface,API),编入应作为计算资源分配监控对象的高优先级服务252中所含的处理而实现。即,用于实现通知功能254的命令代码也可利用API而编入高优先级服务程序222的通知功能程序224中。或者,也可将用于实现通知功能254的命令代码直接嵌入高优先级服务252中所含的处理的命令代码自身中。
监控功能2122是作为排程器程序212的一部分或排程器程序212的附加功能而安装,基于来自通知功能254的开始通知270及结束通知272,监控高优先级服务252的执行状况。排程器程序212对主任务240及次要任务242的执行状况进行管理,因此监控功能2122能够算出控制进程(process)(主任务240及次要任务242)、高优先级服务252、及低优先级服务256的各执行时间。基于此种算出的执行时间,监控功能2122能够监控系统服务任务250(高优先级服务252及低优先级服务256)是否能以预定的时间比率而动作。
更具体而言,监控功能2122能够监控:在监控循环262的期间内,高优先级服务252能以多少时间比率来动作。图6中,监控功能2122监控高优先级服务252能在每个监控循环262(20ms)中动作百分之多少。同样,监控功能2122能够监控在任意的服务循环264的期间内,低优先级服务256能以多少时间比率来动作。图6中,监控功能2122监控低优先级服务256能在每个服务循环264(100ms)中动作百分之多少。
这样,监控功能2122也可算出监控循环262中的、高优先级服务252中所含的程序的动作时间的比率。一并地,监控功能2122也可算出比监控循环262长的另一监控循环即服务循环264中的、低优先级服务256中所含的程序的动作时间的比率。
另外,作为由监控功能2122所监控的执行状况的具体例,并不限于如上所述的动作时间的比率,也可为高优先级服务252和/或低优先级服务256的动作有无。
图7是用于说明本实施方式的运算单元13中的介入功能2124的图。参照图7,与监控功能2122相关联地配置有介入功能2124。监控功能2122及介入功能2124是作为排程器程序212的一部分或排程器程序212的附加功能而安装。
介入功能2124在系统服务任务250(高优先级服务252及低优先级服务256)无法以预定的时间比率来动作的情况下,介入其他处理或服务来限制执行时间,由此来确保系统服务任务250的执行时间。介入功能2124接受来自监控功能2122的介入委托,开始向其他处理或服务的介入。
本实施方式的运算单元13的介入功能2124是在高优先级服务252无法以预定的时间比率来动作的情况下,对优先级比高优先级服务252高的次要任务242的动作进行介入。而且,在低优先级服务256无法以预定的时间比率来动作的情况下,对优先级比低优先级服务256高的高优先级服务252的动作进行介入。
这样,介入功能2124在判断为某处理或服务未能适当执行时,对优先级比所述处理或服务高的处理或服务进行介入。
为了便于说明,以下,主要表示在高优先级服务252无法以预定的时间比率来动作的情况下,对次要任务242的动作进行介入的示例,但也可在低优先级服务256无法以预定的时间比率来动作的情况下,对高优先级服务252的动作进行介入。
图7中,作为一例,表示次要任务242的执行时间长,高优先级服务252无法执行的情况。在此种执行状况下,监控功能2122在每个监控循环262确认系统服务任务250的执行状况,当判断为系统服务任务250无法以预定的时间比率来动作时,对介入功能2124输出介入委托274。
介入功能2124接受来自监控功能2122的介入委托274,对次要任务242输出中断指令276。通过此中断指令276,次要任务242的执行暂时中断,或者,在此之后的控制循环260中实质上不执行。
通过此种次要任务242的执行中断,对系统服务任务250的高优先级服务252分配计算资源。当系统服务任务250开始执行时,系统服务任务250的通知功能254向监控功能2122输出开始通知270。随后,当系统服务任务250的执行完成时,系统服务任务250的通知功能254向监控功能2122输出结束通知272。而且,通过次要任务242的执行中断,也对低优先级服务256分配计算资源。
随后,监控功能2122在当前的监控循环262结束的时机,确认系统服务任务250的执行状况。由于之前通过使次要任务242的执行中断,来执行系统服务任务250中所含的各处理,因此判断为系统服务任务250能以预定的时间比率来动作。并且,监控功能2122对介入功能2124输出介入结束委托278。
介入功能2124接受来自监控功能2122的介入结束委托278,对次要任务242输出继续指令280。通过此继续指令280,次要任务242的执行继续。即,与从介入功能2124输出中断指令276之前同样地执行次要任务242。
这样,在正在执行具有比高优先级服务252高的优先级的次要任务242的状况下,介入功能2124在高优先级服务252的执行状况不满足预定的设定时,也可使次要任务242中所含的程序的执行暂时中断。
而且,在监控功能2122对低优先级服务256的执行状况进行监控的情况下,介入功能2124在低优先级服务256的执行状况不满足预定的设定时,也可使高优先级服务252中所含的程序的执行暂时中断。
另外,中断指令276对次要任务242的执行中断也可通过排程器程序212中止对次要任务242的计算资源分配而实现,还可通过次要任务242自身在各执行时机,不执行实质上的处理,而是将处理完成通知给排程器程序212来实现。
通过使用如上所述的介入功能2124,即使在针对控制进程(主任务240及次要任务242)的计算资源的分配多,系统服务任务250(高优先级服务252及低优先级服务256)无法以预定的时间比率来动作的情况下,也能够通过暂时变更计算资源的分配,来确保针对系统服务任务250的计算资源。
图8是用于说明针对本实施方式的系统服务的、计算资源分配的管理功能的序列图。图8所示的序列图是以与图7所示的时间图(time chart)对应的方式而绘制。为了便于说明,图8中未图示主任务240。
参照图8,次要任务242在分配有计算资源时,将处理开始通知给排程器程序212(监控功能2122)(序列SQ2),执行处理(序列SQ4)。当次要任务242的处理的执行完成时,将处理完成通知给排程器程序212(监控功能2122)(序列SQ6)。
监控功能2122在当前的监控循环262结束时,在下个监控循环262开始之前,算出所述当前的监控循环262中的系统服务任务250(高优先级服务252及低优先级服务256)的处理时间。监控功能2122基于所算出的系统服务任务250的处理时间,而探测到高优先级服务252的未执行(序列SQ8)时,对介入功能2124输出介入委托274(序列SQ10)。
介入功能2124接受来自监控功能2122的介入委托274,对次要任务242输出中断指令276(序列SQ12)。通过中断指令276,次要任务242的执行暂时中断。
于是,对高优先级服务252分配计算资源,高优先级服务252(通知功能254)将开始通知270通知给监控功能2122(序列SQ14),执行处理(序列SQ16)。当与高优先级服务252相关的处理的执行完成时,高优先级服务252(通知功能254)将结束通知272通知给监控功能2122(序列SQ18)。
而且,当对低优先级服务256分配有计算资源时,低优先级服务256将处理开始通知给排程器程序212(监控功能2122)(序列SQ20),执行处理(序列SQ22)。当低优先级服务256的处理的执行完成时,将处理完成通知给排程器程序212(监控功能2122)(序列SQ24)。
监控功能2122在当前的监控循环262结束时,在下个监控循环262开始之前,算出所述当前的监控循环262中的系统服务任务250(高优先级服务252及低优先级服务256)的处理时间。监控功能2122在基于所算出的系统服务任务250的处理时间,而探测到高优先级服务252已执行(序列SQ26)时,对介入功能2124输出介入结束委托278(序列SQ28)。
介入功能2124接受来自监控功能2122的介入结束委托278,对次要任务242输出继续指令280(序列SQ30)。通过继续指令280,次要任务242的执行恢复。
于是,对次要任务242分配计算资源,次要任务242将处理开始通知给排程器程序212(监控功能2122)(序列SQ32),执行处理(序列SQ34)。当次要任务242的处理的执行完成时,将处理完成通知给排程器程序212(监控功能2122)(序列SQ36)。以下,重复与图8所示的处理同样的处理。
<G.计算资源分配的管理功能的动作例>
接下来,对与控制进程(主任务240及次要任务242)、高优先级服务252及低优先级服务256的执行状况相应的、计算资源分配的管理功能的动作例进行说明。为了便于说明,以下所示的执行状况表示由单核处理器100所执行的示例。
(g1:未输出开始通知270的情况)
首先,对未从高优先级服务252输出开始通知270的情况进行说明。在未从高优先级服务252输出开始通知270的情况下,可判断为,相对于优先级更高的处理或服务,计算资源被分配给控制进程。
图9是表示在本实施方式的运算单元13中,设定有主任务240及次要任务242时的执行状况的一例的图。参照图9,表示对主任务240、次要任务242、系统服务任务250(高优先级服务252及低优先级服务256)依序设定优先级而执行的示例。
在图9所示的执行状况中,在未从高优先级服务252输出开始通知270的情况下,在监控循环262的结束时间点,探测到高优先级服务252未能在监控循环262内执行,为了执行高优先级服务252,对优先级比高优先级服务252高的次要任务242指示执行中断。
并且,当通过次要任务242的执行中断而高优先级服务252(及低优先级服务256)的执行得到确认时,指示中断的次要任务242的执行继续。
图10是表示在本实施方式的运算单元13中,仅设定有主任务240时的执行状况的一例的图。参照图10,表示对主任务240及系统服务任务250(高优先级服务252及低优先级服务256)依序设定优先级而执行的示例。
图10中,表示对主任务240设定的处理无法在控制循环260内结束的执行状况。此种执行状况中,由于也未从高优先级服务252输出开始通知270,因此在监控循环262的结束时间点,探测到高优先级服务252未能在监控循环262内执行。但是,在此执行状况下,无法对主任务240指示执行中断。
图10所示的示例表示下述执行状况,即:在一次控制循环260内,即便使用可利用的计算资源,来无法对主任务240的整体进行处理。因此,基本上,要重新探讨主任务240的设定自身。
另外,不仅进行每个监控循环262的探测,还输出例如任务的执行周期超过、任务的执行超时(time out)、IO刷新周期超过、系统服务时间不足等与排程器程序212的基本时间管理相关的异常。
(g2:未输出结束通知272的情况)
接下来,对尽管从高优先级服务252输出了开始通知270,但未继而输出结束通知272的情况进行说明。在未从高优先级服务252输出结束通知272的情况下,可判断为所述高优先级服务252的处理正在继续(执行状态正在继续)。
图11是表示在本实施方式的运算单元13中,设定有主任务240及次要任务242时的执行状况的另一例的图。参照图11,表示对主任务240、次要任务242、系统服务任务250(高优先级服务252及低优先级服务256)依序设定优先级而执行的示例。
在图11所示的执行状况下,在从高优先级服务252输出开始通知270后,未输出结束通知272的情况下,在监控循环262的结束时间点,探测到高优先级服务252的执行仍在继续,低优先级服务256未能在监控循环262内执行。接下来,为了执行低优先级服务256,对优先级比低优先级服务256高的高优先级服务252指示执行中断。
并且,当通过高优先级服务252的执行中断而低优先级服务256的执行得到确认时,指示中断的高优先级服务252的执行继续。
所述说明中,列举了在系统服务任务250中包含高优先级服务252及低优先级服务256这两种的示例,但也有时在系统服务任务250中包含多个高优先级服务252。在此情况下,也对针对各服务的计算资源的分配进行管理。
图12是表示在本实施方式的运算单元13中,设定有主任务240及次要任务242时的执行状况的又一例的图。参照图12,表示对主任务240、次要任务242、系统服务任务250(高优先级服务252A、高优先级服务252B及低优先级服务256)依序设定优先级而执行的示例。
在图12所示的执行状况中,在从高优先级服务252A输出开始通知270后,未输出结束通知272的情况下,在监控循环262的结束时间点,探测到高优先级服务252A的执行仍在继续,高优先级服务252B未能在监控循环262内执行。接下来,为了执行高优先级服务252B,对高优先级服务252A指示执行中断。
并且,当通过高优先级服务252A的执行中断而高优先级服务252B及低优先级服务256的执行得到确认时,指示中断的高优先级服务252A的执行继续。
<H.变形例>
所述实施方式中,以主任务240在每个控制循环260内反复执行的执行状况(定周期执行)为中心进行了说明,但也可适用于主任务240在非特定的每个周期反复执行的执行状况(非定周期执行)。
图13是表示在本实施方式的运算单元13中,非定周期执行主任务240及次要任务242时的执行状况的一例的图。参照图13,在非定周期执行中,主任务240取决于运算单元13中的计算资源等,而在尽力服务(best-effort)的循环内反复执行。因此,从某循环中的主任务240的执行完成,直至在下个循环中开始主任务240的执行为止的时间的长度并非固定而会变动。
此种执行状况下,也能够在每个监控循环262,基于从来自高优先级服务252的开始通知270直至结束通知272为止的时间,来算出系统服务任务250的执行时间,因此能够根据所述算出的执行时间,利用使用介入功能2124的、对处理或服务的介入,来对系统服务任务250管理适当的计算资源的分配。
<I.处理流程>
接下来,对本实施方式的运算单元13中的处理流程进行说明。
图14是表示本实施方式的运算单元13中的处理流程的流程图。典型的是,图14所示的各步骤是通过运算单元13的处理器100执行系统程序210(参照图4)而实现。尤其,图14所示的处理是通过排程器程序212(参照图4)中所含的命令代码群而实现。因此,图14中,是以通过执行排程器程序212而实现的排程器作为执行主体来记述各处理。
参照图14,当新的控制循环到来时(步骤S100中为是(YES)),排程器对主任务240分配计算资源(步骤S102)。当登记在主任务240中的程序的执行完成时(步骤S104中为是),排程器判断是否对次要任务242给予了中断指令276(步骤S106)。
若未对次要任务242给予中断指令276(步骤S106中为否(NO)),则排程器对次要任务242分配计算资源(步骤S108)。
若对次要任务242给予了中断指令276(步骤S106中为是),则当登记在次要任务242中的程序的执行完成时(步骤S110中为是),或者,当对次要任务242分配的计算资源的时间结束时(步骤S112中为是),排程器对系统服务任务250分配计算资源(步骤S114)。然后,排程器在收到开始通知270或结束通知272时(步骤S116中为是),暂时记录所收到的开始通知270或结束通知272(步骤S118)。
当新的控制循环到来时(步骤S120中为是),排程器对系统服务任务250结束计算资源的分配(步骤S122)。
此时,若之前的控制循环的结束时机为监控循环262的结束时机(步骤S124中为是),则排程器基于所收到的开始通知270及结束通知272,来算出监控循环262中的高优先级服务252的动作时间比例(步骤S126)。
若所算出的监控循环262中的高优先级服务252的动作时间比例不满足预定的设定(步骤S128中为否),则排程器发布介入委托274,对次要任务242输出中断指令276(步骤S130)。
若所算出的监控循环262中的高优先级服务252的动作时间比例满足预定的设定(步骤S128中为是),且针对次要任务242的中断指令276的输出仍在继续(步骤S132中为是),则排程器对次要任务242输出继续指令280(步骤S134)。
而且,若之前的控制循环的结束时机为服务循环264之前的控制循环的结束时机(步骤S136中为是),则排程器基于所收到的开始通知270及结束通知272,来算出服务循环264中的低优先级服务256的动作时间比例(步骤S138)。
若所算出的服务循环264中的低优先级服务256的动作时间比例不满足预定的设定(步骤S140中为否),则排程器发布介入委托274,对高优先级服务252输出中断指令276(步骤S142)。
若所算出的服务循环264中的低优先级服务256的动作时间比例满足预定的设定(步骤S140中为是),且针对高优先级服务252的中断指令276的输出仍在继续(步骤S144中为是),则排程器对高优先级服务252输出继续指令280(步骤S146)。
以下同样地重复步骤S102以下的处理。
<J.附注>
如上所述的本实施方式包含如下所述的技术思想。
[结构1]
一种控制装置1,用于对控制对象进行控制,所述控制装置1包括:
处理器100;
第1程序240,由所述处理器反复执行,且执行优先级最高;
第2程序252,执行优先级比所述第1程序低;
第3程序256,执行优先级比所述第2程序低;以及
排程器程序212,对使所述处理器执行的程序进行管理,
所述第2程序包含通知命令224,所述通知命令224根据所述处理器中的执行开始而输出开始通知270,并且根据所述处理器中的执行完成而输出结束通知272,
所述排程器程序212包含:
用于以不妨碍所述第1程序的执行的方式,来使所述处理器执行所述第2及第3程序的命令2120;以及
用于在预定的每个监控循环262,基于来自所述第2程序的所述开始通知及所述结束通知,判断所述第2程序的执行状况的命令2122。
[结构2]
根据结构1所述的控制装置,还包括:
第4程序242,执行优先级比所述第2程序高,
所述排程器程序包含命令2124,所述命令2124用于在所述第2程序的执行状况不满足预定的设定时,使所述第4程序的执行暂时中断。
[结构3]
根据结构1或2所述的控制装置,其中
用于判断所述执行状况的命令包含对所述监控循环中的所述第3程序的执行状况进行判断的命令,
所述排程器程序包含命令2124,所述命令2124用于在所述第3程序的执行状况不满足预定的设定时,使所述第2程序的执行暂时中断。
[结构4]
根据结构1至3中任一项所述的控制装置,其中
所述通知命令是利用应用程序设计接口(Application Programming Interface,API)而编入所述第2程序。
[结构5]
根据结构1至4中任一项所述的控制装置,其中
所述排程器程序是使所述第1程序在预定的每个控制循环260反复执行。
[结构6]
根据结构5所述的控制装置,其中
所述排程器程序使所述第2程序及所述第3程序在未执行所述第1程序的空闲时间内执行。
[结构7]
根据结构1至6中任一项所述的控制装置,其中
用于判断所述执行状况的命令包含一命令,所述命令是算出所述监控循环中的所述第2程序的动作时间的比率。
[结构8]
根据结构7所述的控制装置,其中
用于判断所述执行状况的命令还包含一命令,所述命令是算出比所述监控循环长的第2监控循环264中的所述第3程序的动作时间的比率。
[结构9]
一种系统程序210,由控制装置1来执行,所述控制装置1具有用于对控制对象进行控制的处理器100,其中
所述控制装置包括由所述处理器反复执行的执行优先级最高的第1程序240、执行优先级比所述第1程序低的第2程序252、及执行优先级比所述第2程序低的第3程序256,
所述第2程序包含通知命令224,所述通知命令224根据所述处理器中的执行开始而输出开始通知270,并且根据所述处理器中的执行完成而输出结束通知272,
所述系统程序具备对使所述处理器执行的程序进行管理的排程器程序212,
所述排程器程序包含:
用于以不妨碍所述第1程序的执行的方式,来使所述处理器执行所述第2及第3程序的命令2120;以及
用于在预定的每个监控循环262,基于来自所述第2程序的所述开始通知及所述结束通知,判断所述第2程序的执行状况的命令2122。
[结构10]
一种控制方法,是控制装置1的控制方法,所述控制装置1具有用于对控制对象进行控制的处理器100,其中
所述控制装置包括由所述处理器反复执行的执行优先级最高的第1程序240、执行优先级比所述第1程序低的第2程序252、及执行优先级比所述第2程序低的第3程序256,
所述第2程序包含通知命令224,所述通知命令224根据所述处理器中的执行开始而输出开始通知270,并且根据所述处理器中的执行完成而输出结束通知272,
所述控制方法包括:
步骤(S108、S114),以不妨碍所述第1程序的执行的方式,来使所述处理器执行所述第2及第3程序;以及
步骤(S126),在预定的每个监控循环,基于来自所述第2程序的所述开始通知及所述结束通知,判断所述第2程序的执行状况。
<K.优点>
根据本实施方式,对于并非执行时间受到管理的控制进程(主任务240及次要任务242)的系统服务任务250,也能够确认程序的执行状况。更具体而言,对于系统服务任务250中所含的高优先级服务252,能够在预定的每个监控循环262监控执行状况,且在监控循环262内,能够监控对高优先级服务252分配了多少计算资源。
进而,提供下述结构:在判断为针对高优先级服务252的计算资源的分配不够充分的情况下,能够对高优先级服务252优先分配计算资源。
通过采用此种结构,用户无须手动调整针对控制进程(主任务240及次要任务242)的计算资源的分配,而能够根据状况来对系统服务任务250中所含的高优先级服务252实现适当的计算资源的分配。
例如,通过利用本实施方式的计算资源的分配功能,除了针对系统服务任务250中所含的高优先级服务252的、计算资源的分配要求(例如每隔20ms而动作)以外,还能够满足针对低优先级服务256的、计算资源的分配要求(例如必须每隔100ms动作一次)。
而且,通过利用本实施方式的计算资源的分配功能,即使在采用单核处理器的情况下,也能够有效地利用处理器所提供的计算资源,来适当地执行控制进程(主任务240及次要任务242)及系统服务任务250这两者。进而,在使用多核处理器的情况、或能够利用多个处理器的情况下,即使将更多的程序登记在系统服务任务250中,也能够实现计算资源的高效分配。
应认为,此次揭示的实施方式在所有方面仅为例示,并非限制者。本发明的范围是由权利要求而非所述说明所示,且意图包含与权利要求均等的含义及范围内的所有变更。
Claims (10)
1.一种控制装置,用于对控制对象进行控制,所述控制装置的特征在于,包括:
处理器;
第1程序,由所述处理器反复执行,且执行优先级最高;
第2程序,执行优先级比所述第1程序低;
第3程序,执行优先级比所述第2程序低;以及
排程器程序,对使所述处理器执行的程序进行管理,
所述第2程序包含一通知命令,所述通知命令根据所述处理器中的执行开始而输出开始通知,并且根据所述处理器中的执行完成而输出结束通知,
所述排程器程序包含:
用于以不妨碍所述第1程序的执行的方式,来使所述处理器执行所述第2程序及所述第3程序的命令;以及
用于在预定的每个监控循环,基于来自所述第2程序的所述开始通知及所述结束通知,判断所述第2程序的执行状况的命令。
2.根据权利要求1所述的控制装置,其特征在于,还包括:
第4程序,执行优先级比所述第2程序高,
所述排程器程序包含一命令,所述命令用于在所述第2程序的执行状况不满足预定的设定时,使所述第4程序的执行暂时中断。
3.根据权利要求1或2所述的控制装置,其特征在于,
用于判断所述执行状况的命令包含对所述监控循环中的所述第3程序的执行状况进行判断的命令,
所述排程器程序包含一命令,所述命令用于在所述第3程序的执行状况不满足预定的设定时,使所述第2程序的执行暂时中断。
4.根据权利要求1或2所述的控制装置,其特征在于,
所述通知命令是利用应用程序设计接口而编入所述第2程序。
5.根据权利要求1或2所述的控制装置,其特征在于,
所述排程器程序是使所述第1程序在预定的每个控制循环反复执行。
6.根据权利要求5所述的控制装置,其特征在于,
所述排程器程序使所述第2程序及所述第3程序在未执行所述第1程序的空闲时间内执行。
7.根据权利要求1或2所述的控制装置,其特征在于,
用于判断所述执行状况的命令包含一命令,所述命令是算出所述监控循环中的所述第2程序的动作时间的比率。
8.根据权利要求7所述的控制装置,其特征在于,
用于判断所述执行状况的命令还包含一命令,所述命令是算出比所述监控循环长的第2监控循环中的所述第3程序的动作时间的比率。
9.一种存储介质,用以存储一系统程序,所述系统程序由控制装置来执行,所述控制装置具有用于对控制对象进行控制的处理器,所述系统程序的特征在于,
所述控制装置包括由所述处理器反复执行的执行优先级最高的第1程序、执行优先级比所述第1程序低的第2程序、及执行优先级比所述第2程序低的第3程序,
所述第2程序包含一通知命令,所述通知命令根据所述处理器中的执行开始而输出开始通知,并且根据所述处理器中的执行完成而输出结束通知,
所述系统程序具备对使所述处理器执行的程序进行管理的排程器程序,
所述排程器程序包含:
用于以不妨碍所述第1程序的执行的方式,来使所述处理器执行所述第2程序及第3程序的命令;以及
用于在预定的每个监控循环,基于来自所述第2程序的所述开始通知及所述结束通知,判断所述第2程序的执行状况的命令。
10.一种控制方法,是控制装置的控制方法,所述控制装置具有用于对控制对象进行控制的处理器,所述控制方法的特征在于,
所述控制装置包括由所述处理器反复执行的执行优先级最高的第1程序、执行优先级比所述第1程序低的第2程序、及执行优先级比所述第2程序低的第3程序,
所述第2程序包含一通知命令,所述通知命令根据所述处理器中的执行开始而输出开始通知,并且根据所述处理器中的执行完成而输出结束通知,
所述控制方法包括下述步骤:
以不妨碍所述第1程序的执行的方式,来使所述处理器执行所述第2程序及第3程序;以及
在预定的每个监控循环,基于来自所述第2程序的所述开始通知及所述结束通知,判断所述第2程序的执行状况。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018038665A JP6927089B2 (ja) | 2018-03-05 | 2018-03-05 | 制御装置、システムプログラム、制御方法 |
JP2018-038665 | 2018-03-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110231781A true CN110231781A (zh) | 2019-09-13 |
CN110231781B CN110231781B (zh) | 2022-04-05 |
Family
ID=64900742
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811510452.9A Active CN110231781B (zh) | 2018-03-05 | 2018-12-11 | 控制装置、存储介质、控制方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10877803B2 (zh) |
EP (1) | EP3557345B1 (zh) |
JP (1) | JP6927089B2 (zh) |
CN (1) | CN110231781B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7141905B2 (ja) * | 2018-10-12 | 2022-09-26 | 株式会社日立産機システム | コントロール装置及びコントロール方法 |
JP7063292B2 (ja) * | 2019-03-15 | 2022-05-09 | オムロン株式会社 | 制御システム、設定装置、および設定プログラム |
JP7380390B2 (ja) | 2020-03-31 | 2023-11-15 | オムロン株式会社 | 制御装置、プログラムおよび制御方法 |
WO2022137577A1 (ja) * | 2020-12-23 | 2022-06-30 | オムロン株式会社 | 制御装置、制御方法および制御プログラム |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1580994A (zh) * | 2003-08-01 | 2005-02-16 | Kw-软件有限公司 | 用于工业自动化的cil代码程序的在线修改 |
CN101313284A (zh) * | 2005-12-22 | 2008-11-26 | 英特尔公司 | 用于提供对处理器状态转换进行检测的方法和装置 |
CN101872315A (zh) * | 2009-04-24 | 2010-10-27 | 勒斯塔尔技术有限责任公司 | 用于多处理器的中断最优化 |
US20120239172A1 (en) * | 2011-03-15 | 2012-09-20 | Omron Corporation | Cpu unit of plc, system program for plc, and recording medium storing system program for plc |
CN103080858A (zh) * | 2011-01-31 | 2013-05-01 | 丰田自动车株式会社 | 安全控制装置及安全控制方法 |
JP2013097719A (ja) * | 2011-11-04 | 2013-05-20 | Toyota Motor Corp | 制御装置および制御方法 |
CN103403628A (zh) * | 2011-01-31 | 2013-11-20 | 丰田自动车株式会社 | 安全控制装置以及安全控制方法 |
CN103403684A (zh) * | 2011-03-15 | 2013-11-20 | 欧姆龙株式会社 | 可编程逻辑控制器的cpu单元、可编程逻辑控制器用的系统程序以及存储了可编程逻辑控制器用的系统程序的记录介质 |
CN103592894A (zh) * | 2012-07-11 | 2014-02-19 | Dmg森精机株式会社 | 工作机械的控制装置 |
JP2016194830A (ja) * | 2015-03-31 | 2016-11-17 | オムロン株式会社 | 制御装置 |
CN107577185A (zh) * | 2017-09-14 | 2018-01-12 | 浙江国自机器人技术有限公司 | 一种任务执行方法及基于多核处理器的控制器 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5423635B2 (ja) * | 2009-11-09 | 2014-02-19 | 株式会社デンソー | スケジューリング方法,スケジューリングプログラム,スケジューリング装置 |
JP5747584B2 (ja) * | 2011-03-15 | 2015-07-15 | オムロン株式会社 | 制御装置およびシステムプログラム |
JP4973792B1 (ja) * | 2011-03-15 | 2012-07-11 | オムロン株式会社 | 演算ユニット、出力制御方法、およびプログラム |
JP4877423B1 (ja) * | 2011-03-15 | 2012-02-15 | オムロン株式会社 | Plcのcpuユニット、plc用システムプログラムおよびplc用システムプログラムを格納した記録媒体 |
JP6540166B2 (ja) * | 2015-03-31 | 2019-07-10 | オムロン株式会社 | 制御装置 |
-
2018
- 2018-03-05 JP JP2018038665A patent/JP6927089B2/ja active Active
- 2018-12-11 EP EP18211652.5A patent/EP3557345B1/en active Active
- 2018-12-11 CN CN201811510452.9A patent/CN110231781B/zh active Active
- 2018-12-17 US US16/221,589 patent/US10877803B2/en active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1580994A (zh) * | 2003-08-01 | 2005-02-16 | Kw-软件有限公司 | 用于工业自动化的cil代码程序的在线修改 |
CN101313284A (zh) * | 2005-12-22 | 2008-11-26 | 英特尔公司 | 用于提供对处理器状态转换进行检测的方法和装置 |
CN101872315A (zh) * | 2009-04-24 | 2010-10-27 | 勒斯塔尔技术有限责任公司 | 用于多处理器的中断最优化 |
CN103080858A (zh) * | 2011-01-31 | 2013-05-01 | 丰田自动车株式会社 | 安全控制装置及安全控制方法 |
CN103403628A (zh) * | 2011-01-31 | 2013-11-20 | 丰田自动车株式会社 | 安全控制装置以及安全控制方法 |
US20120239172A1 (en) * | 2011-03-15 | 2012-09-20 | Omron Corporation | Cpu unit of plc, system program for plc, and recording medium storing system program for plc |
CN103403684A (zh) * | 2011-03-15 | 2013-11-20 | 欧姆龙株式会社 | 可编程逻辑控制器的cpu单元、可编程逻辑控制器用的系统程序以及存储了可编程逻辑控制器用的系统程序的记录介质 |
JP2013097719A (ja) * | 2011-11-04 | 2013-05-20 | Toyota Motor Corp | 制御装置および制御方法 |
CN103592894A (zh) * | 2012-07-11 | 2014-02-19 | Dmg森精机株式会社 | 工作机械的控制装置 |
JP2016194830A (ja) * | 2015-03-31 | 2016-11-17 | オムロン株式会社 | 制御装置 |
CN107577185A (zh) * | 2017-09-14 | 2018-01-12 | 浙江国自机器人技术有限公司 | 一种任务执行方法及基于多核处理器的控制器 |
Also Published As
Publication number | Publication date |
---|---|
JP2019153144A (ja) | 2019-09-12 |
EP3557345A1 (en) | 2019-10-23 |
US20190272197A1 (en) | 2019-09-05 |
EP3557345B1 (en) | 2020-07-08 |
US10877803B2 (en) | 2020-12-29 |
JP6927089B2 (ja) | 2021-08-25 |
CN110231781B (zh) | 2022-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110231781A (zh) | 控制装置、存储介质、控制方法 | |
CN107111308B (zh) | 在工业过程控制和自动化系统中使用功能块进行高级控制的方法和装置 | |
RU2487388C2 (ru) | Исполнительный механизм для систем hvac и способ его функционирования | |
JP2019067440A (ja) | フィールドデバイス | |
US10410493B2 (en) | Method to configure control system alarms by associating alarms to tags | |
US11061377B2 (en) | Control device | |
US20080147206A1 (en) | Control system for Real Time Applications for Cooperative Industrial Robots | |
JP2018181315A (ja) | 制御装置、制御方法および制御プログラム | |
EP3489777A1 (en) | Control device, control method, and program | |
US11599081B2 (en) | Method and apparatus for proxy execution and computation with an industrial controller | |
US6779174B2 (en) | Industrial controller with clock-synchronous running level model | |
US20220402121A1 (en) | Control and monitoring of a machine arrangement | |
JP7081593B2 (ja) | 機器管理システム、モデル学習方法およびモデル学習プログラム | |
US11500429B2 (en) | Input signal coordination and method for use with an expansion module | |
US6941175B2 (en) | Method of operating an industrial controller | |
US6978190B2 (en) | Programming of cyclical machines | |
WO2022168336A1 (ja) | 制御装置、制御方法および制御プログラム | |
US20230401090A1 (en) | Control device, control method, and non-transitory computer readable medium | |
JP7455239B2 (ja) | 数値制御システム、タスク割り当て変更装置及び数値制御方法 | |
JP3956206B2 (ja) | エンジニアリング装置 | |
CN102193537A (zh) | 用于装置功能块的多重布尔输入和输出 | |
Zamai et al. | Hardware and software prototype for supervision, monitoring and control structure | |
JPH0895802A (ja) | マルチタスク処理装置 | |
JP2006276951A (ja) | データ取得装置、分散システムおよび分散システムのデータ更新方法 |
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 |