CN103403684B - 可编程逻辑控制器的cpu单元 - Google Patents

可编程逻辑控制器的cpu单元 Download PDF

Info

Publication number
CN103403684B
CN103403684B CN201180068881.5A CN201180068881A CN103403684B CN 103403684 B CN103403684 B CN 103403684B CN 201180068881 A CN201180068881 A CN 201180068881A CN 103403684 B CN103403684 B CN 103403684B
Authority
CN
China
Prior art keywords
control program
state
buffering device
sync buffering
execution
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
CN201180068881.5A
Other languages
English (en)
Other versions
CN103403684A (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 CN103403684A publication Critical patent/CN103403684A/zh
Application granted granted Critical
Publication of CN103403684B publication Critical patent/CN103403684B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/13Plc programming
    • G05B2219/13005Subroutine
    • 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/13Plc programming
    • G05B2219/13067Use of variables, symbols in instructions, to indicate mechanisms, interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/52Indexing scheme relating to G06F9/52
    • G06F2209/523Mode

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)
  • Programmable Controllers (AREA)

Abstract

系统程序作为控制程序的执行控制处理而包含:用于使所有者侧控制程序开始执行的所有者侧开始处理;如果所有者侧控制程序的执行结束,则将通过该所有者侧控制程序改写的全局变量从全局变量区域复制到与该全局变量对应的同步缓冲器的复制处理;以及用于使参照者侧控制程序开始执行的参照者侧开始处理。

Description

可编程逻辑控制器的CPU单元
技术领域
本发明涉及在用于控制机械、设备等的动作而使用的PLC(可编程逻辑控制器。也被称为可编程控制器)中执行多个控制程序时的全局变量的同步。
背景技术
PLC例如由具备用于执行控制程序的微处理器的CPU(中央处理单元)单元、负责来自外部的开关或传感器的信号输入以及对外部的继电器或执行机构(actuator)的信号输出的IO(输入输出)单元等的多个单元构成。CPU单元通过重复执行包含以下操作的控制程序从而控制控制对象,即对其他单元的输出数据的发送、来自其他单元的输入数据的接收、使用输入数据生成输出数据。控制程序包含根据用户的控制目的而生成的用户程序。控制程序也可以包含在用户程序中指示执行的动作控制程序。
已知在PLC中以分时方式执行多个控制程序。
例如,在专利文献1(特开2007-140655号公报)中记载了以下内容:在由一个CPU处理用于控制电机的动作控制功能和用于执行时序运算的PLC功能的装置中,在基本时钟的每个循环执行“固定周期动作控制处理以及各轴处理”和“高速时序处理”,进而在各基本时钟循环内的剩余时间中执行“低速时序处理”或者“非固定周期动作控制处理”。此外,记载了当低速时序处理在基本时钟循环内不结束的情况下,在相应于规定的基本时钟次数的时间停止后执行剩余的处理。
现有技术文献
专利文献
专利文献1:特开2007-140655号公报
发明内容
发明要解决的课题
在PLC中执行多个控制程序时,除了各控制程序仅用于自身的处理的局部变量之外,有时还需要被多个控制程序所参照的全局变量。
一个控制程序从开始执行到结束为止的期间,该控制程序只要不是自己改写全局变量的内容,那么就算对同一个全局变量参照了几次也应当得到相同的内容。但是,在该控制程序的执行开始到结束为止的期间,如果其他的控制程序改写了全局变量的内容,则该控制程序无法进行利用了全局变量的具有一贯性的运算。
在这样的情况下,考虑控制程序本身在使用全局变量之前将全局变量的内容复制到自身的局部变量,实际的运算中参照局部变量来进行。或者,关于改写全局变量的时间,考虑等待至对于其他控制程序而言改写不方便的时机后执行改写。为此,控制程序的编程人员必须决定全局变量在使用上的过程并按它进行编程,以便进行那样的处理,成为对于控制程序的编程人员的负担。
PLC的系统程序如果进行在使用全局变量的一个控制程序从开始执行到结束为止的期间使其他控制程序不能使用该全局变量的排他控制,则确保控制程序的运算的一贯性。但是,如果进行排他控制,则在获得了对全局变量的访问权的控制程序执行结束之前无法执行使用全局变量的其他的控制程序,因此在重视实时性的PLC中,进行伴随这样的长时间的访问限制的排他控制是不现实的。
本发明的目的在于,在PLC中,控制程序本身不需要进行用于确保全局变量的一贯性的过程的处理,多个控制程序的并行执行不受妨碍,并且多个控制程序能够参照确保了一贯性的全局变量。
用于解决课题的方案
根据本发明的一个方面,提供对控制对象进行控制的PLC的CPU单元。PLC的CPU单元包括微处理、存储部件以及通信电路。PLC的CPU单元通过重复输出数据的发送、输入数据的接收、以及使用输入数据生成输出数据的控制程序的执行,从而控制控制对象。存储部件用于存储控制程序、控制控制程序的执行的系统程序、以及有关控制程序使用的变量的属性数据。微处理器执行在存储部件中存储的系统程序以及控制程序。通信电路发送输出数据以及接收输入数据。在变量为由多个控制程序参照的全局变量时,属性数据能够包含能够改写该变量的一个所有者侧控制程序的指定、以及只能参照该变量的一个或者多个参照者侧控制程序的指定。系统程序作为控制程序的执行准备处理而包含:在存储部件内生成用于存储全局变量的全局变量区域的处理;以及关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,在存储部件内生成在该参照者侧控制程序参照全局变量时代替全局变量区域而设为参照目的地的同步缓冲器的处理。系统程序作为控制程序的执行控制处理而包含:用于使所有者侧控制程序开始执行的所有者侧开始处理;如果所有者侧控制程序的执行结束,则将通过该所有者侧控制程序改写的全局变量从全局变量区域复制到与该全局变量对应的同步缓冲器的复制处理;以及用于使参照者侧控制程序开始执行的参照者侧开始处理。
优选的是,生成同步缓冲器的处理是关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将第1同步缓冲器以及第2同步缓冲器作为同步缓冲器的组来生成的处理。第1同步缓冲器以及第2同步缓冲器被不重复地赋予写入目的地状态以及参照目的地状态的其中一个状态,其中,写入目的地状态是能够从全局变量区域复制全局变量的状态,参照目的地状态是能够从参照者侧控制程序进行参照的状态。复制处理是复制到处于写入目的地状态的同步缓冲器的处理。
更优选的是,生成同步缓冲器的处理是关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将第1同步缓冲器、第2同步缓冲器以及第3同步缓冲器作为同步缓冲器的组来生成的处理。第1同步缓冲器、第2同步缓冲器以及第3同步缓冲器被不重复地赋予写入目的地状态、参照目的地状态、待机状态的其中一个状态。复制处理还包含用于调换成为复制目的地的处于写入目的地状态的同步缓冲器以及在与该同步缓冲器相同的组中处于待机状态的同步缓冲器的写入目的地状态和待机状态的第1调换处理。参照者侧开始处理还包含对于执行开始的参照者侧控制程序的同步缓冲器,以存储着最新数据的同步缓冲器为待机状态作为条件,调换处于待机状态的同步缓冲器以及处于参照目的地状态的同步缓冲器的待机状态和参照目的地状态的第2调换处理。
或者优选的是,系统程序作为控制程序的执行准备处理而还包含:对通过全局变量相关联的所有者侧控制程序和参照者侧控制程序的每个组合,在存储部件内生成最新数据更新标志的处理。复制处理还包含将与该复制处理关联的最新数据更新标志设为开通的处理。参照者侧开始处理还以与执行开始的参照者侧控制程序的同步缓冲器关联的最新数据更新标志为开通作为条件,包含第2调换处理以及将该最新数据更新标志设为关闭的处理。由此,实现以存储着最新数据的同步缓冲器为待机状态作为条件来执行的第2调换处理。
或者优选的是,系统程序作为控制程序的执行准备处理而还包含在存储部件内生成最新状态记录区域的处理。复制处理还包含在最新状态记录区域中记录复制目的地的同步缓冲器为最新状态的情况的处理。参照者侧开始处理还包含以通过最新状态记录区域的内容所确定的处于最新状态的同步缓冲器为待机状态作为条件来执行的第2调换处理。
或者优选的是,参照者侧开始处理还包含对于执行开始的参照者侧控制程序的同步缓冲器,以存储着最新数据的同步缓冲器为写入目的地状态作为条件,调换处于写入目的地状态的同步缓冲器以及处于参照目的地状态的同步缓冲器的写入目的地状态和参照目的地状态的第3调换处理。
更优选的是,系统程序作为控制程序的执行准备处理而还包含:对通过全局变量相关联的所有者侧控制程序和参照者侧控制程序的每个组合,在存储部件内生成最新数据更新标志的处理。复制处理还包含将与该复制处理关联的最新数据更新标志设为开通的处理。参照者侧开始处理还以与执行开始的参照者侧控制程序的同步缓冲器关联的最新数据更新标志为开通作为条件,包含第3调换处理以及将该最新数据更新标志设为关闭的处理。由此,实现以存储着最新数据的同步缓冲器为写入目的地状态作为条件来执行的第3调换处理。
或者更优选的是,系统程序作为控制程序的执行准备处理而还包含在存储部件内生成最新状态记录区域的处理。复制处理还包含在最新状态记录区域中记录复制目的地的同步缓冲器为最新状态的情况的处理。参照者侧开始处理还包含以通过最新状态记录区域的内容所确定的处于最新状态的同步缓冲器为写入目的地状态作为条件来执行的第3调换处理。
优选的是,生成同步缓冲器的处理是关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将第1同步缓冲器以及第2同步缓冲器作为同步缓冲器的组来生成的处理。系统程序作为控制程序的执行准备处理而还包含在存储部件内生成最新状态记录区域的处理。复制处理还包含在最新状态记录区域中记录复制目的地的同步缓冲器为最新状态的情况的处理。参照者侧开始处理还包含将通过最新状态记录区域的内容所确定的处于最新状态的同步缓冲器设为在该参照者侧控制程序的执行中参照的参照目的地状态的处理。
更优选的是,生成同步缓冲器的处理是关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将第1同步缓冲器、第2同步缓冲器以及第3同步缓冲器作为同步缓冲器的组来生成的处理。第1同步缓冲器、第2同步缓冲器以及第3同步缓冲器被不重复地赋予能够从全局变量区域复制全局变量的状态即写入目的地状态、参照目的地状态、待机状态的其中一个状态。复制处理是复制到处于写入目的地状态的同步缓冲器的处理,并且还包含用于调换成为复制目的地的处于写入目的地状态的同步缓冲器以及在与该同步缓冲器相同的组中处于待机状态的同步缓冲器的写入目的地状态和待机状态的第1调换处理。参照者侧开始处理还包含将属于与设为参照目的地状态的同步缓冲器相同的组并且不是写入目的地状态的同步缓冲器设为待机状态的处理。
或者优选的是,第1同步缓冲器以及第2同步缓冲器被不重复地赋予能够从全局变量区域复制全局变量的状态即写入目的地状态、以及参照目的地状态的其中一个状态。复制处理是复制到处于写入目的地状态的同步缓冲器的处理。参照者侧开始处理还包含将属于与设为参照目的地状态的同步缓冲器相同的组的另一个同步缓冲器设为写入目的地状态的处理。
或者优选的是,参照者侧开始处理还包含将通过最新状态记录区域的内容所确定的处于最新状态的同步缓冲器设为写入禁止状态的处理。系统程序作为控制程序的执行控制处理还包含:如果参照者侧控制程序的执行结束,则解除处于写入禁止状态的同步缓冲器的写入禁止状态的写入禁止解除处理。复制处理是将第1同步缓冲器以及第2同步缓冲器中不是写入禁止状态的其中一个同步缓冲器作为复制目的地进行复制的处理。
优选的是,参照者侧开始处理还包含将在其执行中参照的同步缓冲器设为写入禁止状态的处理。系统程序作为控制程序的执行控制处理还包含:如果参照者侧控制程序的执行结束,则解除处于写入禁止状态的同步缓冲器的写入禁止状态的写入禁止解除处理。复制处理是以复制目的地的同步缓冲器不是写入禁止状态作为条件而执行的处理。
更优选的是,生成同步缓冲器的处理是关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量生成一个同步缓冲器的处理。
更优选的是,生成同步缓冲器的处理是关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将第1同步缓冲器以及第2同步缓冲器作为同步缓冲器的组来生成的处理。系统程序作为控制程序的执行准备处理而还包含在存储部件内生成最新状态记录区域的处理。复制处理是将第1同步缓冲器以及第2同步缓冲器中不是写入禁止状态的其中一个同步缓冲器作为复制目的地进行复制的处理,进而包含在最新状态记录区域中记录复制目的地的同步缓冲器为最新状态的情况的处理。参照者侧开始处理还包含将通过最新状态记录区域的内容所确定的处于最新状态的同步缓冲器设为在该参照者侧控制程序的执行中参照的参照目的地状态的处理。
优选的是,生成同步缓冲器的处理是关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将第1同步缓冲器以及第2同步缓冲器作为同步缓冲器的组来生成的处理。第2同步缓冲器是参照者侧控制程序参照全局变量时设为参照目的地的同步缓冲器。复制处理是复制到第1同步缓冲器的处理。参照者侧开始处理还包含将第1同步缓冲器中存储的数据复制到第2同步缓冲器的处理。
根据本发明的另一方面,提供一种PLC用的系统程序,用于在PLC的CPU单元中被存储到存储部件并且通过微处理器执行,PLC的CPU单元包括微处理器、存储部件以及通信电路,PLC的CPU单元通过重复输出数据的发送、输入数据的接收、以及使用输入数据生成输出数据的控制程序的执行,从而控制控制对象。存储部件用于存储控制程序、控制控制程序的执行的系统程序、以及有关控制程序使用的变量的属性数据。微处理器除了执行系统程序之外,执行控制程序。通信电路发送输出数据以及接收输入数据。在变量为由多个控制程序参照的全局变量时,属性数据能够包含能够改写该变量的一个所有者侧控制程序的指定、以及只能参照该变量的一个或者多个参照者侧控制程序的指定。系统程序使微处理器作为控制程序的执行准备处理而执行以下处理:在存储部件内生成用于存储全局变量的全局变量区域的处理;以及关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,在存储部件内生成在该参照者侧控制程序参照全局变量时代替全局变量区域而设为参照目的地的同步缓冲器的处理。系统程序使微处理器作为控制程序的执行控制处理而执行以下处理:用于使所有者侧控制程序开始执行的所有者侧开始处理;如果所有者侧控制程序的执行结束,则将通过该所有者侧控制程序改写的全局变量从全局变量区域复制到与该全局变量对应的同步缓冲器的复制处理;以及用于使参照者侧控制程序开始执行的参照者侧开始处理。
优选的是,生成同步缓冲器的处理是关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将第1同步缓冲器以及第2同步缓冲器作为同步缓冲器的组来生成的处理。第1同步缓冲器以及第2同步缓冲器被不重复地赋予写入目的地状态以及参照目的地状态的其中一个状态,其中,该写入目的地状态是能够从全局变量区域复制全局变量的状态,该参照目的地状态是能够从参照者侧控制程序进行参照的状态。复制处理是复制到处于写入目的地状态的同步缓冲器的处理。
更优选的是,生成同步缓冲器的处理是关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将第1同步缓冲器、第2同步缓冲器、第3同步缓冲器作为同步缓冲器的组来生成的处理。第1同步缓冲器、第2同步缓冲器以及第3同步缓冲器被不重复地赋予写入目的地状态、参照目的地状态、待机状态的其中一个状态。复制处理还包含用于调换成为复制目的地的处于写入目的地状态的同步缓冲器以及在与该同步缓冲器相同的组中处于待机状态的同步缓冲器的写入目的地状态和待机状态的第1调换处理。参照者侧开始处理还包含对于执行开始的参照者侧控制程序的同步缓冲器,以存储着最新数据的同步缓冲器为待机状态作为条件,调换处于待机状态的同步缓冲器以及处于参照目的地状态的同步缓冲器的待机状态和参照目的地状态的第2调换处理。
或者优选的是,参照者侧开始处理还包含对于执行开始的参照者侧控制程序的同步缓冲器,以存储着最新数据的同步缓冲器为写入目的地状态作为条件,调换处于写入目的地状态的同步缓冲器以及处于参照目的地状态的同步缓冲器的写入目的地状态和参照目的地状态的第3调换处理。
优选的是,生成同步缓冲器的处理是关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将第1同步缓冲器以及第2同步缓冲器作为同步缓冲器的组来生成的处理。系统程序还使微处理器作为控制程序的执行准备处理而执行在存储部件内生成最新状态记录区域的处理。复制处理还包含在最新状态记录区域中记录复制目的地的同步缓冲器为最新状态的情况的处理。参照者侧开始处理还包含将通过最新状态记录区域的内容所确定的处于最新状态的同步缓冲器设为在该参照者侧控制程序的执行中参照的参照目的地状态的处理。
优选的是,参照者侧开始处理还包含将在其执行中参照的同步缓冲器设为写入禁止状态的处理。系统程序还使微处理器作为控制程序的执行控制处理而执行以下处理:如果参照者侧控制程序的执行结束,则解除处于写入禁止状态的同步缓冲器的写入禁止状态的写入禁止解除处理。复制处理是以复制目的地的同步缓冲器不是写入禁止状态作为条件而执行的处理。
优选的是,生成同步缓冲器的处理是关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将第1同步缓冲器以及第2同步缓冲器作为同步缓冲器的组来生成的处理。第2同步缓冲器是参照者侧控制程序参照全局变量时设为参照目的地的同步缓冲器。复制处理是复制到第1同步缓冲器的处理。参照者侧开始处理还包含将第1同步缓冲器中存储的数据复制到第2同步缓冲器的处理。
根据本发明的又一方面,提供一种存储了PLC用的系统程序的记录介质,该系统程序用于在PLC的CPU单元中被存储到存储部件并且通过微处理器执行,PLC的CPU单元包括微处理器、存储部件以及通信电路,PLC的CPU单元通过重复输出数据的发送、输入数据的接收、以及使用输入数据生成输出数据的控制程序的执行,从而控制控制对象。存储部件用于存储控制程序、控制控制程序的执行的系统程序、以及有关控制程序使用的变量的属性数据。微处理器除了执行系统程序之外,执行控制程序。通信电路发送输出数据以及接收输入数据。在变量为由多个控制程序参照的全局变量时,属性数据能够包含能够改写该变量的一个所有者侧控制程序的指定、以及只能参照该变量的一个或者多个参照者侧控制程序的指定。系统程序使微处理器作为控制程序的执行准备处理而执行以下处理:在存储部件内生成用于存储全局变量的全局变量区域的处理;以及关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,在存储部件内生成在该参照者侧控制程序参照全局变量时代替全局变量区域而设为参照目的地的同步缓冲器的处理。系统程序使微处理器作为控制程序的执行控制处理而执行以下处理:用于使所有者侧控制程序开始执行的所有者侧开始处理;如果所有者侧控制程序的执行结束,则将通过该所有者侧控制程序改写的全局变量从全局变量区域复制到与该全局变量对应的同步缓冲器的复制处理;以及用于使参照者侧控制程序开始执行的参照者侧开始处理。
优选的是,生成同步缓冲器的处理是关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将第1同步缓冲器以及第2同步缓冲器作为同步缓冲器的组来生成的处理。第1同步缓冲器以及第2同步缓冲器被不重复地赋予写入目的地状态以及参照目的地状态的其中一个状态,其中,该写入目的地状态是能够从全局变量区域复制全局变量的状态,该参照目的地状态是能够从参照者侧控制程序进行参照的状态。复制处理是复制到处于写入目的地状态的同步缓冲器的处理。
更优选的是,生成同步缓冲器的处理是关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将第1同步缓冲器、第2同步缓冲器、第3同步缓冲器作为同步缓冲器的组来生成的处理。第1同步缓冲器、第2同步缓冲器以及第3同步缓冲器被不重复地赋予写入目的地状态、参照目的地状态、待机状态的其中一个状态。复制处理还包含用于调换成为复制目的地的处于写入目的地状态的同步缓冲器以及在与该同步缓冲器相同的组中处于待机状态的同步缓冲器的写入目的地状态和待机状态的第1调换处理。参照者侧开始处理还包含对于执行开始的参照者侧控制程序的同步缓冲器,以存储着最新数据的同步缓冲器为待机状态作为条件,调换处于待机状态的同步缓冲器以及处于参照目的地状态的同步缓冲器的待机状态和参照目的地状态的第2调换处理。
或者优选的是,参照者侧开始处理还包含对于执行开始的参照者侧控制程序的同步缓冲器,以存储着最新数据的同步缓冲器为写入目的地状态作为条件,调换处于写入目的地状态的同步缓冲器以及处于参照目的地状态的同步缓冲器的写入目的地状态和参照目的地状态的第3调换处理。
优选的是,生成同步缓冲器的处理是关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将第1同步缓冲器以及第2同步缓冲器作为同步缓冲器的组来生成的处理。系统程序还使微处理器作为控制程序的执行准备处理而执行在存储部件内生成最新状态记录区域的处理。复制处理还包含在最新状态记录区域中记录复制目的地的同步缓冲器为最新状态的情况的处理。参照者侧开始处理还包含将通过最新状态记录区域的内容所确定的处于最新状态的同步缓冲器设为在该参照者侧控制程序的执行中参照的参照目的地状态的处理。
优选的是,参照者侧开始处理还包含将在其执行中参照的同步缓冲器设为写入禁止状态的处理。系统程序还使微处理器作为控制程序的执行控制处理而执行以下处理:如果参照者侧控制程序的执行结束,则解除处于写入禁止状态的同步缓冲器的写入禁止状态的写入禁止解除处理。复制处理是以复制目的地的同步缓冲器不是写入禁止状态作为条件而执行的处理。
优选的是,生成同步缓冲器的处理是关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将第1同步缓冲器以及第2同步缓冲器作为同步缓冲器的组来生成的处理。第2同步缓冲器是参照者侧控制程序参照全局变量时设为参照目的地的同步缓冲器。复制处理是复制到第1同步缓冲器的处理。参照者侧开始处理还包含将第1同步缓冲器中存储的数据复制到第2同步缓冲器的处理。
发明效果
根据本发明,在PLC中多个控制程序能够参照确保了一贯性的全局变量。此时,控制程序本身不需要进行用于确保全局变量的一贯性的过程的处理。此外,由于对全局变量的访问权长时间处于开放等待,因此多个控制程序的分时执行或者并行执行不受妨碍。
附图说明
图1是表示本发明的实施方式的PLC系统的概略结构的示意图。
图2是表示本发明的实施方式的CPU单元的硬件结构的示意图。
图3是表示本发明的实施方式的由CPU单元执行的软件结构的示意图。
图4是表示本发明的实施方式的CPU单元的主存储器的区域结构的示意图。
图5是表示本发明的实施方式的CPU单元中的系统程序的整体处理的流程图。
图6是表示实施方式1的执行动作的时序图。
图7是针对图6所示的控制循环1以及2放大示出的时序图。
图8是表示实施方式1的执行动作的流程图。
图9是表示实施方式1的另一执行动作的时序图。
图10是表示实施方式1的另一执行动作的流程图。
图11是表示实施方式2的执行动作的时序图。
图12是表示实施方式2的执行动作的流程图。
图13是表示实施方式2的另一执行动作的时序图。
图14是表示实施方式2的另一执行动作的流程图。
图15是表示实施方式3的执行动作的时序图。
图16是表示实施方式3的执行动作的流程图。
图17是表示实施方式3的另一执行动作的时序图。
图18是表示实施方式3的另一执行动作的流程图。
图19是表示实施方式3的多核的微处理器下的执行动作的时序图。
图20是表示实施方式3的多核的微处理器下的执行动作的时序图。
图21是表示实施方式3的执行动作的流程图。
图22是表示实施方式3的多核的微处理器下的另一执行动作的时序图。
图23是表示实施方式3的另一执行动作的流程图。
图24是表示实施方式4以及5的多核的微处理器下的执行动作的时序图。
图25是表示实施方式4以及5的多核的微处理器下的执行动作的时序图。
图26是表示实施方式4的执行动作的流程图。
图27是表示实施方式4以及5的多核的微处理器下的另一执行动作的时序图。
图28是表示实施方式4的另一执行动作的流程图。
图29是表示实施方式5的执行动作的流程图。
图30是表示实施方式5的另一执行动作的流程图。
图31是表示实施方式6以及7的多核的微处理器下的执行动作的时序图。
图32是表示实施方式6以及7的多核的微处理器下的执行动作的时序图。
图33是表示实施方式6的执行动作的流程图。
图34是表示实施方式6的多核的微处理器下的另一执行动作的时序图。
图35是表示实施方式6的另一执行动作的流程图。
图36是表示实施方式7的执行动作的流程图。
图37是表示实施方式7的另一执行动作的流程图。
图38是表示本发明的实施方式的连接到CPU单元使用的PLC支援装置的硬件结构的示意图。
图39是表示本发明的实施方式的连接到CPU单元使用的PLC支援装置的软件结构的示意图。
具体实施方式
参照附图详细说明本发明的实施方式。另外,针对图中相同或者相应部分附上相同标号并且不重复其说明。
<A.系统结构>
本实施方式的PLC控制机械或设备等的控制对象。本实施方式的PLC包含作为其构成元素的CPU单元。CPU单元包含微处理器、存储部件、通信电路。存储部件用于存储控制程序、用于控制程序的执行的系统程序、以及针对控制程序使用的变量的属性数据。微处理器执行在存储部件中存储的系统程序以及控制程序。通信电路发送输出数据以及接收输入数据。当变量为被多个控制程序所参照的全局变量时,属性数据可包含能够改写该变量的一个所有者侧控制程序的指定、以及只能参照该变量的一个或者多个参照者侧控制程序的指定。首先,参照图1说明本实施方式的PLC1的系统结构。
图1是表示本发明的实施方式的PLC系统的概略结构的示意图。参照图1,PLC系统SYS包含PLC1、经由现场网络2与PLC1连接的伺服电机驱动器3以及远程IO终端5、作为现场设备的检测开关6以及继电器7。此外,在PLC1中经由连接线缆10等连接PLC支援装置8。
PLC1包含执行主要的运算处理的CPU单元13、一个以上的IO单元14、特殊单元15。这些单元构成为能够经由PLC系统总线11相互交换数据。此外,这些单元中通过电源单元12被提供适当的电压的电源。另外,作为PLC1而构成的各单元由于是PLC厂家提供,因此PLC系统总线11通常由每个PLC厂家独立开发并使用。相对于此,如后述那样针对现场网络2,为了不同厂家的产品之间能够连接,其标准等已公开的情况也较多。
针对CPU单元13的细节,参照图2在后面叙述。
IO单元14是有关通常的输入输出处理的单元,负责如导通/截止这样的二值化的数据的输入输出。即,IO单元14收集表示检测开关6等的传感器是正在检测某种对象物的状态(导通)以及没有检测任何对象物的状态(截止)中的哪一个的信息。此外,IO单元14对如继电器7或执行机构这样的输出目的地,输出用于激活的指令(导通)以及用于失活的指令(截止)的其中一个。
特殊单元15具有如模拟数据的输入输出、温度控制、基于特定的通信方式的通信这样的在IO单元14中不支持的功能。
现场网络2传输与CPU单元13交换的各种数据。作为现场网络2,典型地,可使用各种工业用以太网(注册商标)。作为工业用以太网(注册商标),例如已知EtherCAT(注册商标)、Profinet IRT、MECHATROLINK(注册商标)-III、Powerlink、SERCOS(注册商标)-III、CIP Motion等,可以采用这其中的任一个。进而,也可以使用工业用以太网(注册商标)以外的现场网络。例如,如果是不进行动作控制的情况,则也可以使用DeviceNet、CompoNet/IP(注册商标)等。在本实施方式的PLC系统SYS中,典型地在本实施方式中,例示采用工业用以太网(注册商标)的EtherCAT(注册商标)作为现场网络2时的结构。
另外,在图1中例示具有PLC系统总线11以及现场网络2的双方的PLC系统SYS,但也可以采用仅搭载其中一方的系统结构。例如,也可以通过现场网络2来连接所有的单元。或者,也可以不使用现场网络2,将伺服电机驱动器3直接连接到PLC系统总线11。进而,也可以将现场网络2的通信单元连接到PLC系统总线11,从CPU单元13经由该通信单元进行与连接到现场网络2的设备之间的通信。
另外,PLC1也可以是如下的结构:使CPU单元13具有IO单元14的功能和伺服电机驱动器3的功能,从而CPU单元13不经由IO单元14或伺服电机驱动器3等而直接控制控制对象。
伺服电机驱动器3经由现场网络2与CPU单元13连接,并且根据来自CPU单元13的指令值来驱动伺服电机4。更具体地说,伺服电机驱动器3从PLC1以一定周期接受如位置指令值、速度指令值、转矩指令值这样的指令值。此外,伺服电机驱动器3从连接到伺服电机4的轴上的位置传感器(旋转编码器)和转矩传感器这样的检测器,取得如位置、速度(典型地,根据本次位置和上次位置之差而算出)、转矩这样的伺服电机4的动作相关的实测值。然后,伺服电机驱动器3将来自CPU单元13的指令值设定为目标值,并将实测值作为反馈值而进行反馈控制。即,伺服电机驱动器3调整用于驱动伺服电机4的电流使得实测值接近目标值。另外,伺服电机驱动器3有时也被称为伺服电机放大器。
此外,在图1中示出对伺服电机4和伺服电机驱动器3进行了组合的系统例,但也能够采用其他结构,例如对脉冲电机和脉冲电机驱动器进行了组合的系统。
在图1所示的PLC系统SYS的现场网络2中,进一步连接了远程IO终端5。远程IO终端5基本上与IO单元14同样地,进行有关通常的输入输出处理的处理。更具体地说,远程IO终端5包含用于进行在现场网络2下的数据传输相关的处理的通信耦合器(Coupler)52、一个以上的IO单元53。这些单元构成为能够经由远程IO终端总线51相互交换数据。
关于PLC支援装置8在后面叙述。
<B.CPU单元的硬件结构>
接着,参照图2说明CPU单元13的硬件结构。图2是表示本发明的实施方式的CPU单元13的硬件结构的示意图。参照图2,CPU单元13包含微处理器100、芯片组102、主存储器104、非易失性存储器106、系统定时器108、PLC系统总线控制器120、现场网络控制器140、USB连接器110。芯片组102和其他的组件(component)之间经由各种总线而分别耦合。
微处理器100以及芯片组102典型地按照通用的计算机架构构成。即,微处理器100对从芯片组102按照内部时钟而依次提供的命名代码进行解释后执行。芯片组102在与所连接的各种组件之间交换内部数据,并且生成微处理器100所需的命令代码。进而,芯片组102具有对在微处理器100中执行运算处理的结果所得到的数据等进行缓存的功能。
微处理器100在以下说明的实施方式1~7中,在没有明示是多核的情况下,设为是单核。多核意味着核数目为2以上的情况(也包含核数目为2的情况)。
CPU单元13作为存储部件而具有主存储器104以及非易失性存储器106。
主存储器104是易失性的存储区域(RAM),保持在对CPU单元13接通电源之后应由微处理器100执行的各种程序。此外,主存储器104作为基于微处理器100执行各种程序时的工作用存储器来使用。作为这样的主存储器104,使用如DRAM(动态随机接入存储器)或SRAM(静态随机接入存储器)这样的设备。
另一方面,非易失性存储器106非易失性地保持如实时OS(操作系统)、PLC1的系统程序、用户程序、动作运算程序、系统设定参数这样的数据。这些程序或数据被复制到主存储器104使得微处理器100能够根据需要来访问。作为这样的非易失性存储器106,可使用闪速存储器那样的半导体存储器。或者,也能够使用硬盘驱动器那样的磁记录介质、DVD-RAM(数字视频盘随机接入存储器)那样的光学记录介质等。
系统定时器108按照一定周期产生中断信号而提供给微处理器100。典型地,根据硬件的规格而构成为以多个不同的周期分别产生中断信号,但也能够设定为根据OS(操作系统)或BIOS(基本输入输出系统)等,以任意的周期产生中断信号。利用该系统定时器108产生的中断信号,实现后述那样的每个控制循环的控制动作。
CPU单元13作为通信电路而具有PLC系统总线控制器120以及现场网络控制器140。这些通信电路进行输出数据的发送以及输入数据的接收。
另外,在使CPU单元13本身具有IO单元14或伺服电机驱动器3的功能的情况下,基于通信电路的输出数据的发送以及输入数据的接收,成为将负责这些功能的部分作为通信对方而在CPU单元13的内部进行的发送以及接收。
PLC系统总线控制器120控制经由PLC系统总线11的数据交换。更具体地说,PLC系统总线控制器120包含DMA(动态存储器接入)控制电路122、PLC系统总线控制电路124、缓冲存储器126。另外,PLC系统总线控制器120经由PLC系统总线连接器130与PLC系统总线11以内部方式连接。
缓冲存储器126作为经由PLC系统总线11输出到其他单元的数据(以下也称为“输出数据”)的发送缓冲器、以及经由PLC系统总线11从其他单元输入的数据(以下也称为“输入数据”)的接收缓冲器发挥作用。另外,通过基于微处理器100的运算处理而生成的输出数据最初被存储到主存储器104。并且,应转发至特定的单元的输出数据从主存储器104被读出后临时保持在缓冲存储器126。此外,应从其他单元转发的输入数据在被暂时保持在缓冲存储器126之后转移到主存储器104。
DMA控制电路122进行从主存储器104到缓冲存储器126的输出数据的转发、以及从缓冲存储器126到主存储器104的输入数据的转发。
PLC系统总线控制电路124在与连接到PLC系统总线11的其他单元之间,进行发送缓冲存储器126的输出数据的处理以及接收输入数据后存储到缓冲存储器126的处理。典型地,PLC系统总线控制电路124提供PLC系统总线11中的物理层以及数据链路层的功能。
现场网络控制器140控制经由了现场网络2的数据交换。即,现场网络控制器140按照所使用的现场网络2的标准,控制输出数据的发送以及输入数据的接收。如上所述,在本实施方式中采用遵循EtherCAT(注册商标)标准的现场网络2,因此使用包含用于进行通常的以太网(注册商标)通信的硬件的现场网络控制器140。在EtherCAT(注册商标)标准中,能够利用实现遵循通常的以太网(注册商标)标准的通信控制的一般的以太网(注册商标)控制器。但是,根据作为现场网络2来采用的工业用以太网(注册商标)的种类,使用与不同于通常的通信协议的专用规格的通信协议对应的特殊规格的以太网(注册商标)控制器。此外,在采用了工业用以太网(注册商标)以外的现场网络的情况下,使用与该标准相应的专用的现场网络控制器。
缓冲存储器146作为经由现场网络2输出到其他装置等的数据(关于该数据,在以下也称为“输出数据”)的发送缓冲器、以及经由现场网络2从其他装置等输入的数据(关于该数据,在以下也称为“输入数据”)的接收缓冲器发挥作用。如上所述,通过基于微处理器100的运算处理而生成的输出数据最初被存储到主存储器104。并且,应转发至特定的单元的输出数据从主存储器104被读出后临时保持在缓冲存储器146。此外,应从其他单元转发的输入数据在被暂时保持在缓冲存储器146之后转移到主存储器104。
DMA控制电路142进行从主存储器104到缓冲存储器146的输出数据的转发、以及从缓冲存储器146到主存储器104的输入数据的转发。
现场网络控制电路144在与连接到现场网络2的其他装置之间,进行发送缓冲存储器146的输出数据的处理以及接收输入数据后存储到缓冲存储器146的处理。典型地,现场网络控制电路144提供现场网络2中的物理层以及数据链路层的功能。
USB连接器110是用于连接PLC支援装置8和CPU单元13的接口。典型地,从PLC支援装置8转发的能够由CPU单元13的微处理器100执行的程序等,经由USB连接器110被获取到PLC1。
<C.CPU单元的软件结构>
下面,参照图3说明本实施方式的用于提供各种功能的软件组。这些软件中包含的命令代码在适当的定时被读出,并由CPU单元13的微处理器100执行。
图3是表示本发明的实施方式的由CPU单元13执行的软件结构的示意图。参照图3,作为由CPU单元13执行的软件,分为实时OS200、系统程序210、用户程序236的三层。
实时OS200根据CPU单元13的计算机架构而设计,提供微处理器100用于执行系统程序210以及用户程序236的基本的执行环境。该实时OS典型地由PLC的厂家或者专门的软件公司等提供。
系统程序210是用于提供作为PLC1的功能的软件组。具体地说,系统程序210包含调度器程序212、输出处理程序214、输入处理程序216、时序命令运算程序232、动作运算程序234、其他的系统程序220。另外,一般输出处理程序214以及输入处理程序216被连续地(作为一体)执行,因此有时也将这些程序统称为IO处理程序218。
用户程序236根据用户的控制目的而生成。即,是根据利用PLC系统SYS控制的对象的行(过程(process))等,任意设计的程序。
如后述那样,用户程序236与时序命令运算程序232以及动作运算程序234协作,实现用户中的控制目的。即,用户程序236通过利用由时序命令运算程序232以及动作运算程序234提供的命令、函数、功能模块等,实现编程化的动作。因此,有时也将用户程序236、时序命令运算程序232以及动作运算程序234统称为控制程序230。
如此,CPU单元13的微处理器100执行在存储部件中存储的系统程序210以及用户程序236。
以下,针对各个程序更加详细地说明。
用户程序236如上所述那样,根据用户中的控制目的(例如,对象的行或过程)而生成。用户程序236典型地,成为能够在CPU单元13的微处理器100中执行的目标程序形式。该用户程序236通过在PLC支援装置8等中对由梯形图语言记述的源程序进行编译而生成。然后,生成的目标程序形式的用户程序236从PLC支援装置8经由连接线缆10被转发到CPU单元13,并存储到非易失性存储器106等。
调度器程序212针对输出处理程序214、输入处理程序216、以及控制程序230,控制在各执行循环中的处理开始以及处理中断后的处理重启。更具体地说,调度器程序212控制用户程序236以及动作运算程序234的执行。
在本实施方式的CPU单元13中,将适合动作运算程序234的一定周期的执行循环(控制循环)作为处理整体的共同循环来采用。因此,在一个控制循环内,由于不易完成所有的处理,因此根据应执行的处理的优先级等,区分在各控制循环中应完成执行的处理和可以经过多个控制循环而执行的处理。调度器程序212管理这些已区分的处理的执行顺序等。更具体地说,调度器程序212在各控制循环期间内先执行被赋予更高的优先级的程序。
输出处理程序214将通过执行用户程序236(控制程序230)而生成的输出数据重新配置成适合转发到PLC系统总线控制器120和/或现场网络控制器140的形式。PLC系统总线控制器120或者现场网络控制器140需要来自微处理器100的用于执行发送的指示的情况下,输出处理程序214发出那样的指示。
输入处理程序216将通过PLC系统总线控制器120和/或现场网络控制器140接收的输入数据重新配置成适合控制程序230使用的形式。
时序命令运算程序232在执行用户程序236中使用的某种时序命令时被调用,是为了实现该命令的内容而执行的程序。
动作运算程序234按照用户程序236的指示而执行,是在每当执行对如伺服电机驱动器3或脉冲电机驱动器这样的电机驱动器输出的指令值时计算的程序。
其他的系统程序220是将图3中单独示出的程序以外的、用于实现PLC1的各种功能的程序集中示出的程序。
实时OS200提供用于按照时间的经过而切换执行多个程序的环境。在本实施方式的PLC1中,作为用于将通过CPU单元13的程序执行而生成的输出数据输出(发送)到其他的单元或者其他的装置的事件(中断),初始设定控制循环开始的中断。实时OS200在产生控制循环开始的中断时,将微处理器100中的执行对象从中断发生时刻正在执行的程序切换为调度器程序212。另外,当调度器程序212以及调度器程序212控制其执行的程序的任一个都没有被执行的情况下,实时OS200执行在其他的系统程序210中包含的程序。作为这样的程序,例如,包含有关经由了CPU单元13和PLC支援装置8之间的连接线缆10(USB)等的通信处理的程序。
另外,控制程序230以及调度器程序212被存储到作为存储部件的主存储器104以及非易失性存储器106。
<D.主存储器结构>
下面,参照图4说明CPU单元13的主存储器104中构成的存储区域。
图4是表示本发明的实施方式的CPU单元13的主存储器104的区域结构的示意图。参照图4,主存储器104中形成各种程序区域1041、控制程序的作业区域1042、PLC系统总线发送缓冲器1043、PLC系统总线接收缓冲器1044、现场网络发送缓冲器1045、现场网络接收缓冲器1046。
各种程序区域1041中除了存储程序本身的区域之外,还包含存储在执行程序时使用的变量的属性数据的区域1041a。当变量是由多个控制程序参照的全局变量时,变量的属性数据可包含能够改写该变量的一个所有者侧控制程序的指定、以及只能参照该变量的一个或者多个参照者侧控制程序的指定。
在控制程序的作业区域1042中除了各控制程序230的局部变量区域之外,通过系统程序210生成全局变量区域1042a以及同步缓冲区域1042b。在控制程序的作业区域1042中存储通过控制程序230的执行而生成的输出数据以及控制程序参照的输入数据。
PLC系统总线发送缓冲器1043以及PLC系统总线接收缓冲器1044分别临时存储经由PLC系统总线11发送以及接收的数据。同样地,现场网络发送缓冲器1045以及现场网络接收缓冲器1046分别临时存储经由现场网络2发送以及接收的数据。
更具体地说,输出处理程序214在需要经由PLC系统总线11发送某一个输出数据时,将对象的输出数据从控制程序的作业区域1042复制到PLC系统总线发送缓冲器1043。这时,输出处理程序214为了能够汇总发送被发送到同一单元的多个输出数据,在PLC系统总线发送缓冲器1043中重新配置输出数据使得面向同一单元的输出数据组被集中。
同样地,输出处理程序214在需要经由现场网络2发送某一个输出数据时,将对象的输出数据从控制程序的作业区域1042复制到现场网络发送缓冲器1045。这时,输出处理程序214在现场网络发送缓冲器1045中,将输出数据重新配置成能够作为串行帧来发送的形式。
另一方面,输入处理程序216将PLC系统总线控制器120接收并存储到PLC系统总线接收缓冲器1044的输入数据和/或现场网络控制器140接收并存储到现场网络接收缓冲器1046的输入数据复制到控制程序的作业区域1042。这时,输入处理程序216在控制程序的作业区域1042中,将输入数据重新配置成适合控制程序230使用的形式。
PLC系统总线控制器120的DMA控制电路122将存储在PLC系统总线发送缓冲器1043的输出数据转发到PLC系统总线控制器120的缓冲存储器146,并且将在缓冲存储器146中存储的输入数据转发到PLC系统总线接收缓冲器1044。
现场网络控制器140的DMA控制电路142将在现场网络发送缓冲器1045中存储的输出数据转发到现场网络控制器140的缓冲存储器146,并且将在缓冲存储器146中存储的输入数据转发到现场网络接收缓冲器1046。
控制程序的作业区域1042、PLC系统总线发送缓冲器1043、PLC系统总线接收缓冲器1044、现场网络发送缓冲器1045、以及现场网络接收缓冲器1046构成为能够相互独立地控制各自的访问。因此,例如,能够并行执行以下所示的(1)~(3)这样的多个动作。
(1)微处理器100进行的、伴随用户程序236的执行的对控制程序的作业区域1042的访问
(2)PLC系统总线控制器120的DMA控制电路122进行的、用于主存储器104上的PLC系统总线发送缓冲器1043和/或PLC系统总线接收缓冲器1044与PLC系统总线控制器120内的缓冲存储器126之间的数据转发的、对主存储器104上的PLC系统总线发送缓冲器1043和/或PLC系统总线接收缓冲器1044的访问
(3)现场网络控制器140的DMA控制电路142进行的、用于主存储器104上的现场网络发送缓冲器1045和/或现场网络接收缓冲器1046与现场网络控制器140内的缓冲存储器146之间的数据转发的、对主存储器104上的现场网络发送缓冲器1045和/或现场网络接收缓冲器1046的访问。
<E.系统程序的整体处理动作>
下面,说明系统程序210的整体处理动作。
在系统程序210的执行阶段,依次执行控制程序230的执行准备处理以及控制程序230的执行控制处理。更具体地说,系统程序210作为控制程序230的执行准备处理而包含以下的(1)以及(2)的处理。
(1)在存储部件内生成用于存储全局变量的全局变量区域的处理
(2)关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,在该参照者侧控制程序参照全局变量时在存储部件内生成代替全局变量区域而设为参照目的地的同步缓冲器的处理
进而,控制程序230的执行准备处理还可包含与具体的安装方式相应的其他的执行准备处理。
此外,系统程序210作为控制程序230的执行控制处理而包含以下的(3)~(5)的处理。
(3)用于使所有者侧控制程序开始执行的所有者侧开始处理
(4)如果所有者侧控制程序的执行结束,则将通过该所有者侧控制程序改写的全局变量从全局变量区域复制到与该全局变量对应的同步缓冲器的复制处理
(5)用于使参照者侧控制程序开始执行的参照者侧开始处理
进而,控制程序230的执行控制处理还可包含与具体的安装方式相应的其他的执行控制处理。
图5是表示本发明的实施方式的CPU单元中的系统程序的整体处理的流程图。如图5所示,首先,执行控制程序230的执行准备处理(步骤S1),接着执行控制程序230的执行控制处理(步骤S2)。在控制程序230的执行准备处理(步骤S1)中包含的各处理的执行顺序被适当设计。同样地,在控制程序230的执行控制处理(步骤S2)中包含的各处理,伴随重复执行控制程序230而重复执行,其执行顺序依赖于具体地实施方式。
以下,作为具体的安装方式的典型例,说明实施方式1~7。
<F.单一同步缓冲器方式(实施方式1)>
(f1:概要)
在实施方式1中,设想以分时方式执行多个控制程序的情况。这时,存在由多个控制程序参照的全局变量。对于该全局变量,设定能够进行改写的一个所有者侧控制程序,并且设定只能参照全局变量的一个或者多个参照者侧控制程序。以下,将在所有者侧控制程序中设定的控制程序称为“全局变量的所有者”或者简称为“所有者”。以下,例示有别于执行循环的大小关系,将控制程序中的其中一个指定为全局变量的所有者的情况。
(f2:执行优先级高且执行循环短的一方的控制程序为全局变量的所有者)
在以下所示的例子中,设想执行执行优先级和执行循环的长度不同的多个控制程序(控制程序1~3)的状态。这时,设控制程序的执行优先级与其他的控制程序2以及3相比高,并且控制程序1的执行循环与其他的控制程序2以及3相比短。在这样的状况下,设为执行循环短的一方的控制程序1被设定为全局变量的所有者(所有者侧控制程序),控制程序2以及3被设定为全局变量的参照者(参照者侧控制程序)。
图6是表示实施方式1的执行动作的时序图。参照图6,假设执行控制程序1~3。图7是针对图6所示的控制循环1以及2放大示出的时序图。图8是表示实施方式1的执行动作的流程图。
沿图6的控制程序1~3的各自的时间轴示出的虚线的圆角矩形表示对应的控制程序的执行循环。例如,控制程序1将一次的控制循环设为执行循环,同样地,控制程序2以及3分别将两次以及4次的控制循环设为执行循环。另外,在以下用于说明的时序图中以同样的方法表示执行循环。
此外,图6的横向的实线的箭头标记表示数据的交换,此外,与各箭头标记关联示出的数字表示对应的数据反映了哪个控制循环的状态。例如,在被赋予(1)的箭头标记中,表示通过在控制循环1中执行控制程序而生成的数据被交换。以下,在用于说明的时序图中也以同样的方法来表示执行循环。
在图6所示的例子中,由于控制程序1是全局变量的所有者,因此控制程序1将该执行的结果等写入全局变量区域1042a内的全局变量区域1。另一方面,在参照者侧控制程序中设定的控制程序2以及3参照在同步缓冲区域1042b内的各自对应的同步缓冲器2以及3中存储的数据而执行处理。也可以将执行结果等分别写入对应的同步缓冲器2以及3。此外,同步缓冲器2以及3的数据按照如后述那样的顺序,在与全局变量区域1之间保持同步。
图6中,沿着控制程序1~3的各自的时间轴表示其控制程序的执行状态。更具体地说,在应执行预先决定的处理的执行循环内,监视作为尚未开始处理的状态的“执行前”、在该执行循环内正在进行处理的“执行中”、以及在该执行循环内处理已经完成的“执行结束”的其中一个执行状态。
这样的执行状态通过在执行状态记录区域中记录各控制程序的执行状态来表示。执行状态记录区域是由系统程序210在“控制程序的执行准备处理”(图5所示的步骤S1)中在主存储器104内的控制程序的作业区域1042中生成。执行状态的记录方式可以适当决定。例如,可采用对每个执行状态记录用于确定处于该执行状态的控制程序的信息(控制程序的名称或识别号等)的方式、对每个控制程序设置表示执行状态的标志或者状态变量从而利用该标志或者状态变量的值来记录的方式等。执行状态标志例如如下使用,即如果“执行前标志”开通则为“执行前”状态,如果“执行中标志”开通则为“执行中”等。作为这样的执行状态变量,例如可如下设定,即如果状态变量的值为“1”则是“执行前”,“2”则是“执行中”等。以下,关于说明的其他实施方式中的控制程序的执行状态的管理也是同样的。
在图7中,对于图6所示的时序图的控制循环1以及2中的执行动作放大显示。另外,在图7中,为了更详细地说明CPU单元13中的执行动作,还示出了系统程序210。该系统程序210主要示出了调度器程序212、输出处理程序214、输入处理程序216动作的时间。输出处理程序214、输入处理程序216通过调度器程序212进行的执行控制在各控制循环的开头部分的时间(在图7中开始执行控制程序1之前的时间)被执行。以下,在说明的其他实施方式中也同样,如可根据图7的例子理解那样,虽然存在系统程序210动作的时间,但从简化说明的观点出发而没有进行图示。图6以及7的各控制循环通过系统定时器108产生的控制循环开始的中断信号输入到微处理器100而开始。如果有控制循环开始的中断信号,则实时OS200在有执行中的控制程序的情况下,中断其执行,并使微处理器100执行系统程序210(调度器程序212)。
参照图8,微处理器100执行系统程序210中的控制程序230的执行准备处理(步骤S1)。接着,微处理器100执行系统程序210中的控制程序230的执行控制处理(图5所示的步骤S2)。该控制程序230的执行控制处理的详细的一例相应于步骤S200~S270。
首先,微处理器100等待控制循环开始的中断信号(步骤S200)。如果收到控制循环开始的中断信号(步骤S200中“是”),则微处理器100将从当前的控制循环起开始的控制程序设定为“执行前”状态。即,当控制程序1的执行循环从当前的控制循环开始时,将控制程序1设定为“执行前”状态。同样地,当控制程序2的执行循环从当前的控制循环开始时,将控制程序2设定为“执行前”状态。当控制程序3的执行循环从当前的控制循环开始时,将控制程序3设定为“执行前”状态(步骤S202)。接着,微处理器100执行系统程序210内的IO处理程序218(输出处理程序214以及输入处理程序216)(步骤S204)。
然后,微处理器100判断控制程序1(所有者侧控制程序)的执行状态(步骤S210)。当控制程序1(所有者侧控制程序)为“执行前”状态时(步骤S210中“执行前”),微处理器100将控制程序1的执行状态设定为“执行中”状态,并且开始执行控制程序1(步骤S212)。
当控制程序1(所有者侧控制程序)为“执行中”状态时(步骤S210中“执行中”),微处理器100开始执行控制程序1的未执行的部分(步骤S214)。
当控制程序1(所有者侧控制程序)为“执行结束”状态时(步骤S210中“执行结束”),处理进至步骤S230。
在步骤S212或者步骤S214中开始执行了控制程序1之后,微处理器100判断是否收到了控制程序1的执行结束通知(步骤S216)。
在没有收到控制程序1的执行结束通知时(步骤S216中“否”的情况),微处理器100判断是否收到了控制循环开始的中断信号(步骤S218)。在收到了控制循环开始的中断信号时(步骤S218中“是”的情况),重复步骤S202以下的处理。即,如果在收到控制程序1的执行结束通知之前发生控制循环开始中断,则控制程序1的执行暂时被中断,且在下一个控制循环中,在IO处理程序的执行之后,执行控制程序1的未执行部分。但是,图6以及7表示控制程序1的执行循环与控制循环相等,控制程序1被编程为仅包含在控制循环内结束的处理量的情况。如果控制程序1的执行在控制循环内不结束,则控制程序1的执行循环被延长。即,控制程序1的执行被中断,在下一个控制循环中执行控制程序1的未执行的部分。或者,也可以在控制程序1的执行在控制循环(执行循环)内没有结束的阶段,判断为发生错误而进行错误处理。关于图6以及图7的控制程序2以及3、其他的实施方式,当控制程序在执行循环内没有结束的情况下,同样地,进行执行循环的延长或者错误处理。另一方面,在没有收到控制循环开始的中断信号的情况下(在步骤S218中“否”的情况),重复步骤S216以下的处理。控制循环开始的中断信号的处理在系统程序210的流程图上为了便利而如此表现,但实际上,微处理器100并非执行步骤S216以及S218的循环,而是从控制程序1的执行开始到结束为止不执行系统程序210。如果在控制程序1的执行结束之前产生控制循环开始的中断,则实时OS200中断控制程序1的执行而使系统程序210从步骤S202开始执行。对于有关本流程图的控制程序2以及3的控制循环开始的中断信号的处理(步骤S236和S238、以及步骤S256和S258)、以及其他流程图的控制循环开始的中断信号的处理,也是同样的。
另一方面,在收到了控制程序1的执行结束通知时(步骤S216中“是”的情况),微处理器100将控制程序1的执行状态设定为“执行结束”状态,并将全局变量区域1中存储的数据复制到同步缓冲器2以及同步缓冲器3(步骤S220)。该全局变量区域1中存储的数据复制到同步缓冲器2以及同步缓冲器3的动作在图6以及图7中以实线的箭头标记示出。
但是,该全局变量区域1中存储的数据不会被复制到成为“写入禁止”状态的同步缓冲器。关于该写入禁止状态在后面叙述。
接着步骤S220,微处理器100判断控制程序2(参照者侧控制程序)的执行状态(步骤S230)。控制程序2(参照者侧控制程序)为“执行前”状态时(步骤S230中“执行前”),微处理器100在将对应的同步缓冲器2设定为“写入禁止”的基础上,将控制程序2的执行状态设定为“执行中”状态,并且开始执行控制程序2(步骤S232)。
控制程序2(参照者侧控制程序)为“执行中”状态时(步骤S230中“执行中”),微处理器100开始执行控制程序2的未执行的部分(步骤S234)。这时,对应的同步缓冲器2的“写入禁止”状态不被解除而是原样维持。
控制程序2(参照者侧控制程序)为“执行结束”状态时(步骤S230中“执行结束”),处理进至步骤S250。
在步骤S232或者S234中开始执行了控制程序2之后,微处理器100判断是否收到了控制程序2的执行结束通知(步骤S236)。
在没有收到控制程序2的执行结束通知时(步骤S236中“否”的情况),微处理器100判断是否收到了控制循环开始的中断信号(步骤S238)。在收到了控制循环开始的中断信号时(步骤S238中“是”的情况),重复步骤S202以下的处理。另一方面,在没有收到控制循环开始的中断信号时(步骤S238中“否”的情况),重复步骤S236以下的处理。
另一方面,在收到了控制程序2的执行结束通知时(步骤S236中“是”的情况),微处理器100将控制程序2的执行状态设定为“执行结束”状态,并且解除对应的同步缓冲器2的“写入禁止”状态(步骤S240)。该同步缓冲器2的“写入禁止”状态的期间在图6以及图7中用虚线的箭头标记示出。
在步骤S240中,微处理器100判断控制程序3(参照者侧控制程序)的执行状态(步骤S250)。在控制程序3(参照者侧控制程序)为“执行前”状态时(步骤S250中“执行前”),微处理器100在将对应的同步缓冲器3设定为“写入禁止”状态的基础上,将控制程序3的执行状态设定为“执行中”状态,并且开始执行控制程序3(步骤S252)。
在控制程序3(参照者侧控制程序)为“执行中”状态时(步骤S250中“执行中”),微处理器100开始执行控制程序3的未执行的部分(步骤S254)。这时,对应的同步缓冲器3的“写入禁止”状态不被解除而是原样维持。
在控制程序3(参照者侧控制程序)为“执行结束”状态时(步骤S250中“执行结束”),处理进至步骤S270。
在步骤S252或者步骤S254中开始执行了控制程序3之后,微处理器100判断是否收到了控制程序3的执行结束通知(步骤S256)。
在没有收到控制程序3的执行结束通知时(步骤S256中“否”的情况),微处理器100判断是否收到了控制循环开始的中断信号(步骤S258)。在收到了控制循环开始的中断信号时(步骤S258中“是”的情况),重复步骤S202以下的处理。另一方面,在没有收到控制循环开始的中断信号时(步骤S258中“否”的情况),重复步骤S256以下的处理。
另一方面,在收到了控制程序3的执行结束通知时(步骤S256中“是”的情况),微处理器100将控制程序3的执行状态设定为“执行结束”状态,并且解除对应的同步缓冲器3的“写入禁止”状态的状态(步骤S260)。该同步缓冲器3的“写入禁止”状态的期间在图6以及图7中用虚线的箭头标记示出。
接着步骤S260,等待控制循环开始的中断信号(步骤S270)。如果收到控制循环开始的中断信号(步骤S270中“是”),再次执行步骤S202以下的处理。
所有者侧控制程序和参照者侧控制程序具有多个共同的全局变量时,有关这些全局变量的、从全局变量区域到该参照者侧控制程序的同步缓冲器的复制处理汇总进行。同步缓冲器以这样汇总进行复制处理的单位被分组。同步缓冲器的写入禁止状态对同一组的同步缓冲器共同地设定。同步缓冲器的状态对同一组的同步缓冲器共同地设定的那种方式针对以下说明的其他实施方式中的“写入禁止”状态、“写入目的地”状态、“参照目的地”状态、“待机”状态、“最新”状态的任一个都是同样的。
此外,上述那样的同步缓冲器的写入禁止状态是通过在写入禁止状态记录区域中记录同步缓冲器为“写入禁止”状态来表现。写入禁止状态记录区域是由系统程序210在“控制程序的执行准备处理”(图5所示的步骤S1)中在主存储器104内的控制程序的作业区域1042生成。可适当决定记录同步缓冲器为“写入禁止”状态的方式。例如,可采用记录用于确定以汇总进行复制处理的单位被分组的同步缓冲器的组中属于“写入禁止”状态的组的信息(同步缓冲器的组的识别号等)的方式、对那样的同步缓冲器的每个组设置表示是否为“写入禁止”状态的标志或者状态变量从而利用该标志或者状态变量的值来记录的方式等。以下,关于说明的其他实施方式中的控制程序的执行状态的管理也是同样的。
(f3:执行优先级低且执行循环长的一方的控制程序为全局变量的所有者)
在以下所示的例子中,设为对全局变量的参照者(参照者侧控制程序)设定的控制程序1具有更高的执行优先级和更短的执行循环,对全局变量的所有者(所有者侧控制程序)设定的控制程序2具有更低的执行优先级和更长的执行循环。
图9是表示实施方式1的另一执行动作的时序图。在图9所示的例子中,控制程序2是全局变量的所有者,因此控制程序2将该执行的结果等写入全局变量区域1042a内的全局变量区域2。另一方面,为参照者侧控制程序设定的控制程序1参照在同步缓冲区域1042b内的同步缓冲器1中存储的数据来执行处理。也可以将执行的结果等写入对应的同步缓冲器1。另一方面,设为控制程序1的执行循环比控制程序2短。在图9所示的例子中,控制程序1的执行循环相当于一次的控制循环,控制程序2的执行循环相当于两次的控制循环。
在这样的情况下,按照以下所示那样的顺序在同步缓冲器2和全局变量区域1之间保持同步。
图10是表示实施方式1的另一执行动作的流程图。在图10的流程图中,对于与图8所示的流程图执行相同的处理的步骤,赋予与图8相同的步骤号。
参照图10,微处理器100执行系统程序210中的控制程序230的执行准备处理(步骤S1)。接着,微处理器100执行系统程序210中的控制程序230的执行控制处理(图5所示的步骤S2)。
更具体地说,微处理器100等待控制循环开始的中断信号(步骤S200)。如果收到控制循环开始的中断信号(步骤S200中“是”),则将从当前的控制循环起开始的控制程序设定为“执行前”状态(步骤S202)。接着,微处理器100执行系统程序210内的IO处理程序218(输出处理程序214以及输入处理程序216)(步骤S204)。
然后,微处理器100判断控制程序1(参照者侧控制程序)的执行状态(步骤S210A)。当控制程序1(参照者侧控制程序)为“执行前”状态时(步骤S210A中“执行前”),微处理器100在将对应的同步缓冲器1设定为“写入禁止”状态的基础上,将控制程序1的执行状态设定为“执行中”状态,并且开始执行控制程序1(步骤S212A)。
当控制程序1(参照者侧控制程序)为“执行中”状态时(步骤S210A中“执行中”),微处理器100开始执行控制程序1的未执行的部分(步骤S214)。这时,对应的同步缓冲器1的“写入禁止”状态不被解除而是原样维持。
当控制程序1(参照者侧控制程序)为“执行结束”状态时(步骤S210A中“执行结束”),处理进至S230A。
在步骤S212A或者步骤S214中开始执行了控制程序1之后,微处理器100判断是否收到了控制程序1的执行结束通知(步骤S216)。
在没有收到控制程序1的执行结束通知时(步骤S216中“否”的情况),微处理器100判断是否收到了控制循环开始的中断信号(步骤S218)。在收到了控制循环开始的中断信号时(步骤S218中“是”的情况),重复步骤S202以下的处理。即,如果在收到控制程序1的执行结束通知之前发生控制循环开始中断,则控制程序1的执行暂时被中断,在下一个控制循环中,在执行IO处理程序之后执行控制程序1的未执行部分。另一方面,在没有收到控制循环开始的中断信号时(步骤S218中“否”的情况),重复步骤S216以下的处理。
另一方面,在收到了控制程序1的执行结束通知时(步骤S216中“是”的情况),微处理器100将控制程序1的执行状态设定为“执行结束”状态,并且解除对应的同步缓冲器1的“写入禁止”状态(步骤S220A)。该同步缓冲器1的“写入禁止”状态的期间在图9中用虚线的箭头标记示出。
接着步骤S220A,微处理器100判断控制程序2(所有者侧控制程序)的执行状态(步骤S230A)。控制程序2(所有者侧控制程序)为“执行前”状态时(步骤S230A中“执行前”),微处理器100将控制程序2的执行状态设定为“执行中”状态,并且开始执行控制程序2(步骤S232A)。
控制程序2(所有者侧控制程序)为“执行中”状态时(步骤S230A中“执行中”),微处理器100开始执行控制程序2的未执行的部分(步骤S234)。
控制程序2(所有者侧控制程序)为“执行结束”状态时(步骤S230A中“执行结束”),处理进至步骤S270。
在步骤S232或者步骤S234中开始执行了控制程序2之后,微处理器100判断是否收到了控制程序2的执行结束通知(步骤S236)。
在没有收到控制程序2的执行结束通知时(步骤S236中“否”的情况),微处理器100判断是否收到了控制循环开始的中断信号(步骤S238)。在收到了控制循环开始的中断信号时(步骤S238中“是”的情况),重复步骤S202以下的处理。另一方面,在没有收到控制循环开始的中断信号时(步骤S238中“否”的情况),重复步骤S236以下的处理。
另一方面,在收到了控制程序2的执行结束通知时(步骤S236中“是”的情况),微处理器100将控制程序2的执行状态设定为“执行结束”状态,并且将全局变量区域2中所存储的数据复制到同步缓冲器1(步骤S240A)。该全局变量区域2中所存储的数据向同步缓冲器1的复制动作在图9中用实线的箭头标记示出。
接着步骤S240A,等待控制循环开始的中断信号(步骤S270)。如果收到控制循环开始的中断信号(步骤S270中“是”),再次执行步骤S202以下的处理。
从简化说明的观点出发,图9中示出参照一个全局变量的参照者侧控制程序的数目为“1”的例子,但参照者侧控制程序的数目可以任意设定。在任一个实施方式中,参照一个全局变量的参照者侧控制程序的数目都是任意的。对于仅示出一个参照者侧控制程序的实施方式,如果参照图6~图8,则也应该能够理解参照者侧控制程序存在多个时的动作。
(f4:总结)
在任一个实施方式中,当存在控制程序1以及控制程序2时都有如下可能,即对于某个全局变量而言控制程序1是所有者,对于另一个全局变量而言控制程序2是所有者。系统程序的“控制程序的执行控制处理”的动作能够按照每个全局变量进行理解。
如上所述,在实施方式1中,系统程序210作为控制程序230的执行准备处理而包含以下的(1)以及(2)的处理。
(1)在存储部件(基本上是主存储器104)内生成用于存储全局变量的全局变量区域1042a的处理
(2)关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,在存储部件(基本上是主存储器104)内生成在该参照者侧控制程序参照全局变量时用于提供代替全局变量区域而设为参照目的地的同步缓冲区域1042b的处理
此外,系统程序210作为控制程序230的执行控制处理而包含以下的(1)~(4)的处理。
(1)用于使所有者侧控制程序开始执行的所有者侧开始处理(图8的步骤S212、以及图10的步骤S232)
(2)如果所有者侧控制程序的执行结束,则以复制目的地的同步缓冲器不是写入禁止状态为条件,进行将通过该所有者侧控制程序改写的全局变量从全局变量区域复制到与该全局变量对应的同步缓冲器的复制处理(图8的S220、以及图10的S240A)
(3)用于执行使参照者侧控制程序开始执行并且还将在该执行中参照的同步缓冲器设为写入禁止状态的处理的参照者侧开始处理(图8的S232、S252、以及图10的S212A)
(4)如果参照者侧控制程序的执行结束,则解除处于写入禁止状态的同步缓冲器的写入禁止状态的写入禁止解除处理(图8的S240、S260、以及图10的S220A)
根据上述那样的实施方式1,尽管存在对同步缓冲器的写入禁止状态的期间,但例如在共同的控制循环中对各控制程序进行各控制程序的执行的优先级控制的情况下,参照者侧控制程序能够参照其执行开始时的最新的全局变量的值。即,在这样的情况下,在参照者侧控制程序中应参照的全局变量的值可通过不是写入禁止状态的期间中的复制处理来获得。
此外,根据实施方式1,关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量而言同步缓冲器是单一的,因此就算全局变量的数目或参照者侧控制程序的数目多,同步缓冲器占用的存储器尺寸也可以小。进而,由于同步缓冲器单一这一点而算法简单,因此系统程序的设计容易。
<G.对多个同步缓冲器的依次复制方式(实施方式2)>
(g1:概要)
在上述的实施方式1中,示出采用了在成为“写入禁止”状态的同步缓冲器中不会被复制在全局变量区域中存储的数据的结构的例子。相对于此,说明无论参照同步缓冲器的参照者侧控制程序的执行状态如何,都能够将全局变量区域中存储的数据复制到同步缓冲器的结构。
更具体地说,在实施方式2中,作为同步缓冲器,分别设置一次性地存储来自全局变量区域的数据的区域和参照者侧控制程序实际参照数据的区域。由此,能够将全局变量区域中存储的数据复制到同步缓冲器而不受参照者侧控制程序的执行状态的影响。
(g2:执行优先级高且执行循环短的一方的控制程序为全局变量为所有者)
图11是表示实施方式2的执行动作的时序图。在图11所示的时序图中,设为两个控制程序(控制程序1以及控制程序2)以分时方式被执行,并且优先级高且执行循环短的一方的控制程序1被设定为全局变量为所有者(所有者侧控制程序)。
在图11所示的例子中,由于控制程序1是全局变量的所有者,因此控制程序1将其执行的结果等写入全局变量区域1042a内的全局变量区域1。另一方面,在同步缓冲区域1042b内设定同步缓冲器2A以及2B。全局变量区域1的数据首先被写入同步缓冲器2A,接着从同步缓冲器2A在适当的定时被转发到同步缓冲器2B。对于图11所示那样的全局变量区域1与同步缓冲器2A以及2B之间的同步处理,参照图12进行说明。
图12是表示实施方式2的执行动作的流程图。在图12的流程图中,对于执行与图8所示的流程图相同的处理的步骤,赋予与图8相同的步骤号。
参照图12,微处理器100执行系统程序210中的控制程序230的执行准备处理(步骤S1)。接着,微处理器100执行系统程序210中的控制程序230的执行控制处理(图5所示的步骤S2)。
在图12所示的流程图中,执行与图8所示的流程图的步骤S200~S218相同的处理。但是,在图12所示的流程图中,代替步骤S220而执行步骤S220B的处理。
具体地说,在步骤S220B中,微处理器100将控制程序1的执行状态设定为“执行结束”状态,并且将在全局变量区域1中存储的数据复制到同步缓冲器2A。该全局变量区域1中存储的数据向同步缓冲器2A的复制动作在图11中用实线的箭头标记示出。
接着步骤S220B,微处理器100判断控制程序2(参照者侧控制程序)的执行状态(步骤S230)。控制程序2(参照者侧控制程序)为“执行前”状态时(步骤S230中“执行前”),微处理器100在将同步缓冲器2A中存储的数据复制到同步缓冲器2B的基础上,将控制程序2的执行状态设定为“执行中”状态,并且开始执行控制程序2(步骤S232B)。
控制程序2(参照者侧控制程序)为“执行中”状态时(步骤S230中“执行中”),微处理器100开始执行控制程序2的未执行的部分(步骤S234)。这时,同步缓冲器2A中存储的数据不会被复制到同步缓冲器2B。
控制程序2(参照者侧控制程序)为“执行结束”状态时(步骤S230中“执行结束”),处理进至步骤S270。
在步骤S232B或者步骤S234中开始执行了控制程序2之后,微处理器100判断是否收到了控制程序2的执行结束通知(步骤S236)。
在没有收到控制程序2的执行结束通知时(步骤S236中“否”的情况),微处理器100判断是否收到了控制循环开始的中断信号(步骤S238)。在收到了控制循环开始的中断信号时(步骤S238中“是”的情况),重复步骤S202以下的处理。另一方面,在没有收到控制循环开始的中断信号时(步骤S238中“否”的情况),重复步骤S236以下的处理。
另一方面,在收到了控制程序2的执行结束通知时(步骤S236中“是”的情况),微处理器100将控制程序2的执行状态设定为“执行结束”状态(步骤S240B)。
接着步骤S240B,等待控制循环开始的中断信号(步骤S270)。如果收到控制循环开始的中断信号(步骤S270中“是”),则再次执行步骤S202以下的处理。
(g3:执行优先级低且执行循环长的一方的控制程序为全局变量为所有者)
在以下所示的例子中,设为对全局变量的参照者(参照者侧控制程序)设定的控制程序1具有更高的执行优先级和更短的执行循环,对全局变量的所有者(所有者侧控制程序)设定的控制程序2具有更长的执行循环。
图13是表示实施方式2的另一执行动作的时序图。在图13所示的例子中,控制程序2是全局变量的所有者,因此控制程序2将其执行的结果等写入全局变量区域1042a内的全局变量区域2。另一方面,在对参照者侧控制程序设定的控制程序1中设定同步缓冲器1A以及1B。
在这样的情况下,按照以下所示那样的顺序在同步缓冲器1A以及1B与全局变量区域2之间保持同步。
图14是表示实施方式2的另一执行动作的流程图。在图14的流程图中,对于与图10所示的流程图执行相同的处理的步骤,赋予与图10相同的步骤号。
图14所示的流程图与图10所示的流程图相比不同点在于,代替步骤S212A、S220A、S240A,分别执行步骤S212C、S220C、S240C的处理。以下,主要针对该不同点进行说明,不再重复针对其他处理的详细的说明。
在控制程序1(参照者侧控制程序)为“执行前”状态时(步骤S210A中“执行前”)执行的步骤S212C中,微处理器100在将同步缓冲器1A中存储的数据复制到同步缓冲器1B的基础上,将控制程序1的执行状态设定为“执行中”状态,并且开始执行控制程序1(步骤S212C)。
在收到了控制程序1的执行结束通知时(步骤S216中“是”的情况)执行的步骤S220C中,微处理器100将控制程序1的执行状态设定为“执行结束”状态(步骤S220C)。
在收到了控制程序2的执行结束通知时(步骤S236中“是”的情况)执行的步骤S240C中,微处理器100将控制程序2的执行状态设定为“执行结束”状态,并且将在全局变量区域2中存储的数据复制到同步缓冲器1A(步骤S240C)。该全局变量区域2中存储的数据向同步缓冲器1A的复制动作在图13中用实线的箭头标记示出。
(g4:总结)
如上所述,在实施方式2中,系统程序210作为控制程序230的执行准备处理而包含以下的(1)以及(2)的处理。
(1)在存储部件(基本上是主存储器104)内生成用于存储全局变量的全局变量区域1042a的处理
(2)关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,在存储部件(基本上是主存储器104)内生成将第1同步缓冲器以及第2同步缓冲器作为同步缓冲器的组来提供的同步缓冲区域1042b的处理
第2同步缓冲器是参照者侧控制程序在参照全局变量时设为参照目的地的同步缓冲器。
此外,系统程序210作为控制程序230的执行控制处理而包含以下的(1)~(3)的处理。
(1)用于使所有者侧控制程序开始执行的所有者侧开始处理(图12的步骤S212、以及图14的步骤S232A)
(2)如果所有者侧控制程序的执行结束,则将通过该所有者侧控制程序改写的全局变量从全局变量区域复制到与该全局变量对应的第1同步缓冲器的复制处理(图12的S220B、以及图14的S240C)
(3)用于执行使参照者侧控制程序开始执行并且还将在第1同步缓冲器中存储的数据复制到第2同步缓冲器的处理的参照者侧开始处理(图12的S232B、以及图14的S212C)
根据上述那样的实施方式2,能够始终进行从全局变量区域到第1同步缓冲器的复制处理,进而在参照者侧控制程序的执行开始时进行从第1同步缓冲器到第2同步缓冲器的复制,因此参照者侧控制程序能够参照其执行开始时的最新的全局变量的值。
此外,实施方式2在向第1同步缓冲器的复制处理时不需要判断复制目的地的同步缓冲器的状态,这一点上算法简单。
另外,当微处理器100为多核时,对第1同步缓冲器的写入(从全局变量区域的复制处理)的定时和从第1同步缓冲器的读出(对第2同步缓冲器的写入)的定时有时会重叠,但在那样的情况下,设为先开始的处理完成之后进行另一个处理即可。
<H.多个同步缓冲器的选择利用方式(实施方式3)>
(h1:概要)
在实施方式2中例示了使用两个同步缓冲器顺序发送数据的方式。相对于此,在实施方式3中说明通过选择性地利用多个(典型的是两个)同步缓冲器,从而不论参照同步缓冲器的参照者侧控制程序的执行状态如何,都能够将全局变量区域中存储的数据复制到同步缓冲器的结构。
(h2:执行优先级高且执行循环短的一方的控制程序为全局变量的所有者)
图15是表示实施方式3的执行动作的时序图。在图15所示的时序图中,设为两个控制程序(控制程序1以及控制程序2)以分时方式被执行,并且优先级高且执行循环短的一方的控制程序1被设定为全局变量为所有者(所有者侧控制程序)。
在图15所示的例子中,由于控制程序1是全局变量的所有者,因此控制程序1将其执行的结果等写入全局变量区域1042a内的全局变量区域1。另一方面,在同步缓冲区域1042b内设定同步缓冲器2A以及2B。全局变量区域1的数据被写入到同步缓冲器2A以及同步缓冲器2B的一方。更具体地说,被复制到两个同步缓冲器中没有成为“写入禁止”状态的同步缓冲器。对于图15所示那样的全局变量区域1与同步缓冲器2A以及2B之间的同步处理,参照图16进行说明。
图16是表示实施方式3的执行动作的流程图。在图16的流程图中,对于执行与图12所示的流程图相同的处理的步骤,赋予与图12相同的步骤号。
图16所示的流程图与图12所示的流程图相比不同点在于,代替步骤S220B、S232B、S240B,分别执行步骤S220D、S232D、S240D的处理。以下,主要针对该不同点进行说明,不再重复针对其他处理的详细的说明。
在收到了控制程序1的执行结束通知时(步骤S216中“是”的情况)执行的步骤S220D中,微处理器100在将控制程序1的执行状态设定为“执行结束”状态的基础上,将全局变量区域1中存储的数据复制到与上一次复制的相同的同步缓冲器2(同步缓冲器2A或者同步缓冲器2B),并且将写入了数据的同步缓冲器2设定为“最新”状态(步骤S220D)。
但是,当成为全局变量区域1中存储的数据的写入目的地的同步缓冲器2被设定为“写入禁止”状态时,数据被写入到另一个同步缓冲器2。
在控制程序2(参照者侧控制程序)为“执行前”状态时(步骤S230中“执行前”)执行的步骤S232D中,微处理器100将被设定为“最新”状态的同步缓冲器2(同步缓冲器2A或者同步缓冲器2B)设定为控制程序2(参照者侧控制程序)的“参照目的地”状态并且也设定为“写入禁止”状态,进而,将控制程序2的执行状态设定为“执行中”状态,并且开始执行控制程序2(步骤S232D)。
另外,在控制程序2(参照者侧控制程序)为“执行中”状态时(步骤S230中“执行中”)执行的步骤S234中,对于被设定为“最新”状态的同步缓冲器2的“参照目的地”状态以及“写入禁止”状态不会被解除而是原样维持。
在收到了控制程序2的执行结束通知时(步骤S236中“是”的情况)执行的步骤S240D中,微处理器100将控制程序2的执行状态设定为“执行结束”状态,并且解除对应的同步缓冲器2的“写入禁止”状态(步骤S240D)。
上述那样的同步缓冲器的状态即写入禁止状态、参照目的地状态、存储最新数据的状态(最新状态),分别通过在写入禁止状态记录区域、参照目的地状态记录区域、最新状态记录区域中分别记录对应的同步缓冲器为写入禁止状态、参照目的地状态、最新状态的情况来表示。这些各个记录区域是由系统程序210在“控制程序的执行准备处理”(图5所示的步骤S1)中,在主存储器104内的控制程序的作业区域1042中生成。记录同步缓冲器为写入禁止状态、参照目的地状态、最新状态的方式可以适当决定。例如,可采用记录用于确定以汇总进行复制处理的单位被分组的同步缓冲器的组中属于写入禁止状态、参照目的地状态、最新状态的组的信息(同步缓冲器的组的识别号等)的方式、对那样的同步缓冲器的每个组设置表示是否为写入禁止状态、参照目的地状态、最新状态的标志或者状态变量从而利用该标志或者状态变量来记录的方式等。以下,关于说明的其他实施方式中的控制程序的执行状态的管理也是同样的。
(h3:执行优先级低且执行循环长的一方的控制程序为全局变量的所有者)
在以下所示的例子中,设为对全局变量的参照者(参照者侧控制程序)设定的控制程序1具有更高的执行优先级和更短的执行循环,对全局变量的所有者(所有者侧控制程序)设定的控制程序2具有更低的执行优先级和更长的执行循环。
图17是表示实施方式3的另一执行动作的时序图。在图17所示的例子中,控制程序2是全局变量的所有者,因此控制程序2将其执行的结果等写入全局变量区域1042a内的全局变量区域2。另一方面,在对参照者侧控制程序设定的控制程序1中设定同步缓冲器1A以及1B。
在这样的情况下,按照以下所示那样的顺序,在同步缓冲器1A以及1B与全局变量区域2之间保持同步。
图18是表示实施方式3的另一执行动作的流程图。在图18的流程图中,对于与图14所示的流程图执行相同的处理的步骤,赋予与图14相同的步骤号。
图18所示的流程图与图14所示的流程图相比不同点在于,代替步骤S212C、S220C、S240C,分别执行步骤S212E、S220E、S240E的处理。以下,主要针对该不同点进行说明,不再重复针对其他处理的详细的说明。
在控制程序1(参照者侧控制程序)为“执行前”状态时(步骤S210A中“执行前”)执行的步骤S212E中,微处理器100将被设定为“最新”状态的同步缓冲器1(同步缓冲器1A或者同步缓冲器1B)设定为控制程序1(参照者侧控制程序)的“参照目的地”状态并且也设定为“写入禁止”状态,进而,将控制程序1的执行状态设定为“执行中”状态,并且开始执行控制程序1(步骤S212E)。
另外,在控制程序1(参照者侧控制程序)为“执行中”状态时(步骤S210A中“执行中”)执行的步骤S214中,对于被设定为“最新”状态的同步缓冲器1的“参照目的地”状态以及“写入禁止”状态不会被解除而是原样维持。
在收到了控制程序1的执行结束通知时(步骤S216中“是”的情况)执行的步骤S220E中,微处理器100将控制程序1的执行状态设定为“执行结束”状态,并且解除对应的同步缓冲器1的“写入禁止”状态(步骤S220E)。
在收到了控制程序2的执行结束通知时(步骤S236中“是”的情况)执行的步骤S240E中,微处理器100在将控制程序2的执行状态设定为“执行结束”状态的基础上,将在全局变量区域2中存储的数据复制到与上一次复制的相同的同步缓冲器1(同步缓冲器1A或者同步缓冲器1B),并且将写入了数据的同步缓冲器1设定为“最新”状态(步骤S240E)。
但是,当成为全局变量区域2中存储的数据的写入目的地的同步缓冲器1被设定为“写入禁止”状态时,数据被写入到另一个同步缓冲器1。
(h4:以与“多核”系统程序相同的核执行的控制程序为全局变量的所有者)
下面,例示微处理器100为多核的情况。图19以及图20是表示实施方式3的多核的微处理器下的执行动作的时序图。更具体地说,在图19以及图20中,设为核1执行控制程序1,核2执行控制程序2。这时,在核1中,除了控制程序1之外还执行系统程序。并且,假设控制程序1被设定为所有者侧控制程序。图19中示出控制程序1的执行循环和控制程序2的执行循环实质上相同的情况的例子,图20中示出控制程序1的执行循环比控制程序2的执行循环短的情况的例子。
考虑采用图19以及图20所示那样的多核,并行地执行控制程序1以及控制程序2的情况。控制程序2在核的资源利用上随时都能够执行,但作为PLC来考虑的情况下,由于控制程序2也需要利用系统程序的输出处理以及输入处理,因此作为其基础,等待在各控制循环的开头执行的输出处理以及输入处理的结束而开始执行控制程序2。
另外,如果控制程序2不需要利用系统程序的输出处理以及输入处理,则也可以变更设计使得控制程序2的执行循环与控制循环不同步执行。例如,可以在控制程序2执行结束时,立即进行下一次的参照者侧开始处理。
在这样的情况下,按照以下所示那样的顺序,在全局变量区域1与同步缓冲器2A以及2B之间保持同步。
图21是表示实施方式3的执行动作的流程图。图21所示的流程图也适用于图19以及图20的任一个。在图21的流程图中,对于执行与图16所示的流程图实质上相同的处理的步骤,赋予与图16相同的步骤号。
参照图21,微处理器100(核1)执行系统程序210中的控制程序230的执行准备处理(步骤S1)。接着,微处理器100(核1)执行系统程序210中的控制程序230的执行控制处理(图5所示的步骤S2)。该控制程序230的执行控制处理的详细的一例相当于步骤S200~S270。
首先,微处理器100(核1)等待控制循环开始的中断信号(步骤S200)。如果收到控制循环开始的中断信号(步骤S200中“是”),则微处理器100(核1)在控制程序1的执行循环从当前的控制循环开始时,将该控制程序1设定为“执行前”状态(步骤S202F)。接着,微处理器100(核1)执行系统程序210内的IO处理程序218(输出处理程序214以及输入处理程序216)(步骤S204)。
然后,微处理器100(核1)判断控制程序1(所有者侧控制程序)的执行状态(步骤S21F)。当控制程序1(所有者侧控制程序)为“执行前”状态时(步骤S210F中“执行前”),微处理器100(核1)将控制程序1的执行状态设定为“执行中”状态,并且开始执行控制程序1(步骤S212)。但是,由于微处理器100的核1在专用于执行控制程序1之前需要进行步骤S230F、S232D、S234F的处理,因此无论该流程图如何表现,控制程序1的执行开始都要在这些处理结束后进行。
当控制程序1(所有者侧控制程序)为“执行中”状态时(步骤S210F中“执行中”),微处理器100(核1)开始执行控制程序1的未执行的部分(步骤S214)。但是,根据与上述同样的理由,实际上在步骤S230F、S232D、S234F的处理结束后开始执行。
在步骤S212或者步骤S214中开始执行了控制程序1之后,微处理器100(核1)判断控制程序2(参照者侧控制程序)的执行状态(步骤S230F)。控制程序2(参照者侧控制程序)为“执行结束”状态时(步骤S210F中“执行结束”),微处理器100(核1)将被设定为“最新”状态的同步缓冲器2(同步缓冲器2A或者同步缓冲器2B)设定为控制程序2(参照者侧控制程序)的“参照目的地”状态并且也设定为“写入禁止”状态,进而,将控制程序2的执行状态设定为“执行中”状态,并且使核2开始执行控制程序2(步骤S232D)。
在控制程序2(参照者侧控制程序)为“执行中”状态时(步骤S230F中“执行中”),微处理器100(核1)不进行控制程序2的执行控制(步骤S234F)。这时,对应的同步缓冲器的“参照目的地”状态以及“写入禁止”状态的任一个都不被解除,继续执行控制程序2。
在步骤S232D或者步骤S234F之后,微处理器100(核1)判断控制程序1(所有者侧控制程序)是否为“执行结束”状态(步骤S211F)。实际上,实时OS200检测控制程序1的执行结束的过程相当于步骤S211F。当控制程序1尚未结束执行时(步骤S211F中“否”的情况),微处理器100的核1专用于执行控制程序1,因此实际上,以下说明步骤S216、S236以及S218组成的循环处理、以及步骤S240D无法按照该流程图那样执行。实际上,如果实时OS200检测出核2中的控制程序2的执行结束,则作为核1中的中断处理而执行步骤S240D,但为了方便而沿该流程图进行说明。
当控制程序1(所有者侧控制程序)为“执行结束”状态时(步骤S211F中“是”的情况),处理进至步骤S236F。
当控制程序1(所有者侧控制程序)不是“执行结束”状态时(步骤S211F中“否”的情况),微处理器100(核1)判断是否收到了控制程序1的执行结束通知(步骤S216)。在收到了控制程序1的执行结束通知时(步骤S216中“是”的情况),处理进至步骤S220D。
另一方面,在没有收到控制程序1的执行结束通知时(步骤S216中“否”的情况),微处理器100(核1)判断是否收到了控制程序2的执行结束通知(步骤S236)。在收到了控制程序2的执行结束通知时(步骤S236中“是”的情况),处理进至步骤S240D。即,如果在收到控制程序1的执行结束通知之前收到控制程序2的执行结束通知,则执行步骤S240D的处理。
另一方面,在没有收到控制程序2的执行结束通知时(步骤S236中“否”的情况),判断是否收到了控制循环开始的中断信号(步骤S218)。在收到了控制循环开始的中断信号时(步骤S218中“是”的情况),再次执行步骤S202F以下的处理。即,如果在收到控制程序1的执行结束通知之前发生控制循环开始中断,则再次执行步骤S202F以下的处理。另一方面,在没有收到控制循环开始的中断信号时(步骤S218中“否”的情况),重复步骤S216以下的处理。
在步骤S220D中,微处理器100(核1)在将控制程序1的执行状态设定为“执行结束”状态的基础上,将全局变量区域1中存储的数据复制到与前一次复制的相同的同步缓冲器2(同步缓冲器2A或者同步缓冲器2B),并且将写入了数据的同步缓冲器2设定为“最新”状态(步骤S220D)。接着,微处理器100(核1)判断是否收到了控制程序2的执行结束通知(步骤S236F)。在收到了控制程序2的执行结束通知时(步骤S236F中“是”的情况),处理进至步骤S240D。即,如果在控制循环开始中断之前收到控制程序2的执行结束通知,则执行步骤S240D的处理。
另一方面,在没有收到控制程序2的执行结束通知时(步骤S236中“否”的情况),判断是否收到了控制循环开始的中断信号(步骤S270)。在收到了控制循环开始的中断信号时(步骤S270中“是”的情况),再次执行步骤S202F以下的处理。另一方面,在没有收到控制循环开始的中断信号时(步骤S270中“否”的情况),重复步骤S236F以下的处理。
在步骤S240D中,微处理器100(核1)将控制程序2的执行状态设定为“执行结束”状态,并且解除对应的同步缓冲器2的“写入禁止”状态(步骤S240D)。在执行完步骤S240D之后,返回到在进至步骤S240D之前执行的处理。
(h5:以与“多核”系统程序不同的核执行的控制程序为全局变量的所有者)
下面,例示在微处理器100为多核的情况下,以与执行系统程序的核不同的核执行的控制程序被设定为所有者侧控制程序的情况。
图22是表示实施方式3的多核的微处理器下的另一执行动作的时序图。假设在图22所示的时序图中,由核2执行的控制程序2被设定为所有者侧控制程序。
图23是表示实施方式3的另一执行动作的流程图。在图23的流程图中,对于执行与图18以及图21所示的流程图相同的处理的步骤,分别赋予与图18以及图21相同的步骤号。
图23所示的流程图与图21所示的流程图相比不同点在于,代替步骤S210F、S212、S230F、S232D、S220D、S240D,分别执行步骤S210G、S212E、S230G、S232A、S220E、S240E的处理。以下,主要说明该不同点,不再重复对于其他的处理的详细说明。
在步骤S210G中,微处理器100(核1)判断控制程序1(参照者侧控制程序)的执行状态(步骤S210G)。
在控制程序1(参照者侧控制程序)为“执行前”状态时(步骤S210G中“执行前”)执行的步骤S212E中,微处理器100(核1)将被设定为“最新”状态的同步缓冲器1(同步缓冲器1A或者同步缓冲器1B)设定为控制程序1(参照者侧控制程序)的“参照目的地”状态并且也设定为“写入禁止”状态,进而,将控制程序1的执行状态设定为“执行中”状态,并且开始执行控制程序1(步骤S212E)。但是,控制程序1的执行开始是在步骤S230F、S232A、S234F的处理结束后进行。
另外,在控制程序1(参照者侧控制程序)为“执行中”状态时(步骤S210G中“执行中”)执行的步骤S214中,对于被设定为“最新”状态的同步缓冲器2的“参照目的地”状态以及“写入禁止”状态不会被解除而原样维持。
在步骤S230G中,微处理器100(核1)判断控制程序2(所有者侧控制程序)的执行状态(步骤S230G)。
在控制程序2(所有者侧控制程序)为“执行结束”状态时(步骤S230G中“执行结束”)执行的步骤S232A中,微处理器100(核1)将控制程序2的执行状态设定为“执行中”状态,并且使核2开始执行控制程序2(步骤S232A)。
另外,在控制程序2(所有者侧控制程序)为“执行中”状态时(步骤S230G中“执行中”)执行的步骤S234F中,继续执行控制程序2。
在收到了控制程序1的执行结束通知时(步骤S216中“是”的情况)执行的步骤S220E中,微处理器100(核1)将控制程序1的执行状态设定为“执行结束”状态,并且解除对应的同步缓冲器1的“写入禁止”状态(步骤S220E)。
在步骤S240E中,微处理器100(核1)在将控制程序2的执行状态设定为“执行结束”状态的基础上,将全局变量区域2中存储的数据复制到与前一次复制的相同的同步缓冲器1(同步缓冲器1A或者同步缓冲器1B),并且将写入了数据的同步缓冲器1设定为“最新”状态(步骤S240E)。
但是,当成为全局变量区域2中存储的数据的写入目的地的同步缓冲器1被设定为“写入禁止”状态时,数据被写入到另一个同步缓冲器1。
(h6:总结)
如上所述,在实施方式3中,系统程序210作为控制程序230的执行准备处理而包含以下的(1)以及(2)的处理。
(1)在存储部件(基本上是主存储器104)内生成用于存储全局变量的全局变量区域1042a的处理
(2)关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将该参照者侧控制程序参照全局变量时代替全局变量区域而设为参照目的地的第1同步缓冲器以及第2同步缓冲器作为同步缓冲器的组(同步缓冲器1A以及1B,或者,同步缓冲器2A或者2B)在存储部件(基本上是主存储器104)内生成的处理
这时,还包含在存储部件(基本上是主存储器104)内生成用于存储正在存储最新数据的状态(最新状态)的最新状态记录区域的处理。
此外,系统程序210作为控制程序230的执行控制处理而包含以下的(1)~(4)的处理。
(1)用于使所有者侧控制程序开始执行的所有者侧开始处理(图16以及图21的步骤S212、以及图14和图23的步骤S232A)
(2)执行如下处理的参照者侧开始处理:使参照者侧控制程序开始执行,进而,将通过最新状态记录区域的内容所确定的处于最新状态的同步缓冲器设为在该参照者侧控制程序的执行中参照的参照目的地状态,并且,将该同步缓冲器设为写入禁止状态(图16以及图21的步骤S232D、以及图18和图23的步骤S212E)
(3)执行如下处理的复制处理:如果所有者侧控制程序的执行结束,则将通过该所有者侧控制程序改写的全局变量从全局变量区域,以与该全局变量对应的第1同步缓冲器以及第2同步缓冲器中不是写入禁止状态的其中一个同步缓冲器作为复制目的地而进行复制,进而,将复制目的地的同步缓冲器为最新状态的情况记录到最新状态记录区域(图16以及图21的步骤S220D、以及图18和图23的步骤S240E)
(4)如果参照者侧控制程序的执行结束,则解除处于写入禁止状态的同步缓冲器的写入禁止状态的写入禁止解除处理(图16以及图21的步骤S240D、以及图18和图23的步骤S220E)
根据上述那样的实施方式3,关于各参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量有两个同步缓冲器,始终能够写入到其中一个同步缓冲器,因此任何时候都能进行复制处理。进而,在参照者侧控制程序的执行开始时,基于最新状态记录区域的内容,将存储了被复制的最新数据的同步缓冲器设为参照目的地,从而参照者侧控制程序能够参照该执行开始时的最新的全局变量的值。
与在利用写入禁止状态上共同的上述的实施方式1相比,在实施方式3中,例如图19中用圆包围所示那样,即使在一方的同步缓冲器的写入禁止期间中到了应进行复制处理的时机的情况下,也能在对另一方的同步缓冲器执行了复制处理的基础上,往后由参照侧控制程序参照该复制的数据。因此,不会因复制处理的时机在写入禁止期间中到来而导致参照者侧控制程序无法参照该数据。尤其,在由多核的微处理器并行执行控制程序的情况下,由于在一方的同步缓冲器的写入禁止期间中发生参照者侧控制程序参照已进行复制处理的数据的情况,因此实施方式3更为有利。
<I.更新标志型双缓冲器调换方式(实施方式4)>
(i1:概要)
在上述的实施方式3中,说明了通过将复制了在全局变量区域1中存储的数据的同步缓冲器设定为“写入禁止”状态,从而在与全局变量区域1之间保持同步的结构。相对于此,在实施方式4以及5中,采用将同步缓冲器设定为“写入目的地”状态和“参照目的地”状态,并调换这些状态,从而在与全局变量区域1之间保持同步的结构。尤其,在实施方式4中,例示利用最新数据更新标志来控制同步缓冲器的状态的调换的结构。
实施方式4中也例示微处理器100为多核的情况。
(i2:以与“多核”系统程序相同的核执行的控制程序为全局变量的所有者)
图24以及图25是表示实施方式4的多核的微处理器下的执行动作的时序图。更具体地说,在图24以及图25中设为核1执行控制程序1,核2执行控制程序2。这时,在核1中,除了控制程序1之外还执行系统程序。并且,假设控制程序1被设定为所有者侧控制程序。图24中表示控制程序1的执行循环和控制程序2的执行循环实质上相同的情况的例子,图25中表示控制程序1的执行循环比控制程序2的执行循环短的情况的例子。
另外,图24以及图25是用于与后述的实施方式5共同地说明的时序图。在后述的实施方式5中,处理用于将存储了被复制的最新数据的同步缓冲器作为参照目的地来识别的信息。因此,参照图24以及图25说明实施方式4时,仅关注“最新数据更新标志”,不需要识别沿同步缓冲器2A以及2B的时间轴示出的“最新”状态。另一方面,参照图24以及图25说明实施方式5时,仅关注沿同步缓冲器2A以及2B的时间轴示出的“最新”状态的识别,不需要“最新数据更新标志”。
此外,在图24以及图25中,将“写入目的地”状态以及“参照目的地”状态只记述为“写入目的地”以及“参照目的地”。
考虑采用图24以及图25所示那样的多核,并行地执行控制程序1以及控制程序2的情况。控制程序2在核的资源利用上随时都能够执行,但作为PLC来考虑的情况下,由于控制程序2也需要利用系统程序的输出处理以及输入处理,因此作为其基础,等待在各控制循环的开头执行的输出处理以及输入处理的结束而开始执行控制程序2。
另外,如果控制程序2不需要利用系统程序的输出处理以及输入处理,则也可以变更设计使得控制程序2的执行循环与控制循环不同步执行。例如,可以在控制程序2执行结束时,立即进行下一次的参照者侧开始处理。
在这样的情况下,按照以下所示那样的顺序,在全局变量区域1与同步缓冲器2A以及2B之间保持同步。
图26是表示实施方式4的执行动作的流程图。图26所示的流程图也适用于图24以及图25的任一个。在图26的流程图中,对于执行与图21所示的流程图实质上相同的处理的步骤,赋予与图21相同的步骤号。
图26所示的流程图与图21所示的流程图相比不同点在于,代替步骤S232D、S220D、S240D,分别执行步骤S232G、S220G、S240G的处理。以下,主要说明该不同点,不再重复对于其他的处理的详细说明。
微处理器100在控制程序2(参照者侧控制程序)为“执行结束”状态时(步骤S230F中“执行结束”)执行的步骤S232G中,如果最新数据更新标志2被设定为开通,则微处理器100(核1)将处于“写入目的地”状态的同步缓冲器2(同步缓冲器2A或者2B)变更为“参照目的地”状态,并且将处于“参照目的地”状态的同步缓冲器2(同步缓冲器2A或者2B)变更为“写入目的地”状态,在此基础上将最新数据更新标志2从开通变更为关闭。
另外,如果最新数据更新标志2没有被设定为开通(如果最新数据更新标志2被设定为关闭),则对于同步缓冲器2的“写入目的地”状态以及“参照目的地”状态不进行变更,对于最新数据更新标志2也维持为关闭。
进而,微处理器100(核1)将控制程序2的执行状态设定为“执行中”状态,并且使核2开始执行控制程序2(步骤S232G)。
在收到了控制程序1的执行结束通知时(步骤S216中“是”的情况)执行的步骤S220G中,微处理器100在将控制程序1的执行状态设定为“执行结束”状态的基础上,将全局变量区域1中存储的数据复制到被设定为“写入目的地”状态的同步缓冲器2(同步缓冲器2A或者2B),并且将最新数据更新标志2设定为开通(步骤S220G)。
在收到了控制程序2的执行结束通知时(步骤S236中“是”的情况,或者,在步骤S236F中“是”的情况)执行的步骤S240G中,微处理器100将控制程序2的执行状态设定为“执行结束”状态(步骤S240G)。
上述那样的同步缓冲器的状态即写入目的地状态以及参照目的地状态分别通过在写入目的地状态记录区域以及参照目的地状态记录区域中分别记录对应的同步缓冲器为写入目的地状态以及参照目的地状态的情况来表示。这些各个记录区域是由系统程序210在“控制程序的执行准备处理”(图5所示的步骤S1)中,在主存储器104内的控制程序的作业区域1042中生成。记录同步缓冲器为写入目的地状态或者参照目的地状态的方式可以适当决定。例如,可采用记录用于确定以汇总进行复制处理的单位被分组的同步缓冲器的组中属于写入目的地状态或者参照目的地状态的组的信息(同步缓冲器的组的识别号等)的方式、对那样的同步缓冲器的每个组设置表示是否为写入目的地状态、参照目的地状态的标志或者状态变量从而利用该标志或者状态变量的值来记录的方式等。另外,由于对一个同步缓冲器不重复地赋予写入目的地状态和参照目的地状态,因此也可以不用区分写入目的地状态记录区域和参照目的地状态记录区域而生成共同的状态记录区域,并通过一个标志或者状态变量来表示是写入目的地状态还是参照目的地状态。
另外,实施方式4的时序图中表示的最新数据更新标志的垂直线(沿时间轴的线)中粗线的部分表示最新数据更新标志为开通的情况。
最新数据更新标志由系统程序210在“控制程序的执行准备处理”(图5所示的步骤S1)中,在主存储器104内的控制程序的作业区域1042中生成。最新数据更新标志按照以汇总进行复制处理的单位被分组的同步缓冲器的每个组而设置。
(i3:以与“多核”系统程序不同的核执行的控制程序为全局变量的所有者)
下面,例示在微处理器100为多核的情况下,以与执行系统程序的核不同的核执行的控制程序被设定为所有者侧控制程序的情况。
图27是表示实施方式4的多核的微处理器下的另一执行动作的时序图。假设在图27所示的时序图中,由核2执行的控制程序2被设定为所有者侧控制程序。关于图27,与上述的图24以及图25同样地,是用于与后述的实施方式5共同地说明的时序图。因此,参照图27说明实施方式4时,仅关注“最新数据更新标志”,不需要识别沿同步缓冲器2A以及2B的时间轴示出的“最新”状态。另一方面,参照图27说明实施方式5时,仅关注沿同步缓冲器2A以及2B的时间轴示出的“最新”状态的识别,不需要“最新数据更新标志”。
图28是表示实施方式4的另一执行动作的流程图。在图28的流程图中,对于执行与图23所示的流程图相同的处理的步骤,分别赋予与图23相同的步骤号。
图28所示的流程图与图23所示的流程图相比不同点在于,代替步骤S212E、S220E、S240E,分别执行步骤S212H、S220H、S240H的处理。以下,主要说明该不同点,不再重复对于其他的处理的详细说明。
在控制程序1(参照者侧控制程序)为“执行前”状态时(步骤S210G中“执行前”)执行的步骤S212H中,如果最新数据更新标志1被设定为开通,则微处理器100(核1)将处于“写入目的地”状态的同步缓冲器1(同步缓冲器1A或者1B)变更为“参照目的地”状态,并且将处于“参照目的地”状态的同步缓冲器1(同步缓冲器1A或者1B)变更为“写入目的地”状态,在此基础上将最新数据更新标志1从开通变更为关闭。
另外,如果最新数据更新标志1没有被设定为开通(如果最新数据更新标志1被设定为关闭),则对于同步缓冲器1的“写入目的地”状态以及“参照目的地”状态不进行变更,对于最新数据更新标志1也维持关闭。
进而,微处理器100(核1)将控制程序1的执行状态设定为“执行中”状态,并且开始执行控制程序1(步骤S212H)。
在收到了控制程序1的执行结束通知时(步骤S216中“是”的情况)执行的步骤S220H中,微处理器100将控制程序1的执行状态设定为“执行结束”状态(步骤S220H)。
在收到了控制程序2的执行结束通知时(步骤S236中“是”的情况,或者,步骤S236F中“是”的情况)执行的步骤S240H中,微处理器100在将控制程序2的执行状态设定为“执行结束”状态的基础上,将全局变量区域2中存储的数据复制到被设定为“写入目的地”状态的同步缓冲器1(同步缓冲器1A或者同步缓冲器1B),并且将最新数据更新标志1设定为开通(步骤S240H)。
(i4:总结)
如上所述,在实施方式4中,系统程序210作为控制程序230的执行准备处理而包含以下的(1)~(3)的处理。
(1)在存储部件(基本上是主存储器104)内生成用于存储全局变量的全局变量区域1042a的处理
(2)关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将该参照者侧控制程序参照全局变量时代替全局变量区域而设为参照目的地的第1同步缓冲器以及第2同步缓冲器作为同步缓冲器的组(同步缓冲器1A以及1B,或者,同步缓冲器2A或者2B)在存储部件(基本上是主存储器104)内生成的处理
(3)对通过全局变量相关联的所有者侧控制程序和参照者侧控制程序的每个组合,在存储部件(基本上是主存储器104)内生成最新数据更新标志的处理
第1同步缓冲器以及第2同步缓冲器上,被不重复地赋予作为能够从全局变量区域复制全局变量的状态的“写入目的地”状态、以及作为能够从参照者侧控制程序参照的状态的“参照目的地”状态中的其中一个状态。
此外,系统程序210作为控制程序230的执行控制处理而包含以下的(1)~(3)的处理。
(1)用于使所有者侧控制程序开始执行的所有者侧开始处理(图26的步骤S212、以及图28的步骤S232A)
(2)执行如下处理的复制处理:如果所有者侧控制程序的执行结束,则将通过该所有者侧控制程序改写的全局变量从全局变量区域复制到与该全局变量对应的处于写入目的地状态的同步缓冲器,进而,将与该复制处理关联的最新数据更新标志设为开通(图26的步骤S220G、以及图28的步骤S240H)
(3)执行如下处理的参照者侧开始处理:使参照者侧控制程序开始执行,进而,对于执行开始的参照者侧控制程序的同步缓冲器,以存储着最新数据的同步缓冲器为写入目的地状态作为条件(即,以与执行开始的参照者侧控制程序的同步缓冲器关联的最新数据更新标志为开通作为条件),执行用于调换处于写入目的地状态的同步缓冲器以及处于参照目的地状态的同步缓冲器的写入目的地状态和参照目的地状态的第3调换处理、以及将该开通状态的最新数据更新标志设为关闭的处理(图26的步骤S232G、以及图28的步骤S212H)
根据上述那样的实施方式4,对于各参照者侧控制程序,由该参照者侧控制程序参照的每个全局变量具有两个同步缓冲器,除了在参照者侧开始处理中进行同步缓冲器的写入目的地状态和参照目的地状态的调换处理(第3调换处理)的期间的短时间之外,始终有某一个同步缓冲器处于写入目的地状态,因此在任何时候都能进行复制处理。进而,在参照者侧控制程序的执行开始时,基于最新数据更新标志的状态,将存储着被复制的最新数据的同步缓冲器设为参照目的地,从而参照者侧控制程序能够参照其执行开始时的最新的全局变量的值。
<J.最新数据型双缓冲器调换方式(实施方式5)>
(j1:概要)
如上所述,在实施方式5中,处理用于将存储了被复制的最新数据的同步缓冲器识别为参照目的地的信息。
(j2:以与“多核”系统程序相同的核执行的控制程序为全局变量的所有者)
实施方式5的多核的微处理器下的执行动作由上述的图24以及图25的时序图示出。但是,图24以及图25是用于与上述的实施方式4共同地说明的时序图,在实施方式5中仅关注沿同步缓冲器2A以及2B的时间轴示出的“最新”状态的识别,不需要“最新数据更新标志”。
图29是表示实施方式5的执行动作的流程图。图29所示的流程图也适用于图24以及图25的任一个。在图29的流程图中,对于执行与图21所示的流程图实质上相同的处理的步骤,赋予与图21相同的步骤号。
图29所示的流程图与图21所示的流程图相比不同点在于,代替步骤S232D、S220D、S240D,分别执行步骤S232I、S220I、S240I的处理。以下,主要说明该不同点,不再重复对于其他的处理的详细说明。
在控制程序2(参照者侧控制程序)为“执行结束”状态时(步骤S230F中“执行结束”)执行的步骤S232I中,微处理器100将被设定为“最新”状态的同步缓冲器2(同步缓冲器2A或者同步缓冲器2B)设定为控制程序2(参照者侧控制程序)的“参照目的地”状态,并且将另一个同步缓冲器2设定为“写入目的地”状态,进而,将控制程序2的执行状态设定为“执行中”,并且开始执行控制程序2(步骤S232I)。
在收到了控制程序1的执行结束通知时(步骤S216中“是”的情况)执行的步骤S220I中,微处理器100在将控制程序1的执行状态设定为“执行结束”状态的基础上,将全局变量区域1中存储的数据复制到被设定为“写入目的地”状态的同步缓冲器2(同步缓冲器2A或者同步缓冲器2B),并且将写入了全局变量区域1中存储的数据的目的地的同步缓冲器2设定为“最新”状态(步骤S220I)。
在收到了控制程序2的执行结束通知时(步骤S236中“是”的情况,或者,在步骤S236F中“是”的情况)执行的步骤S240I中,微处理器100将控制程序2的执行状态设定为“执行结束”状态(步骤S240I)。
上述那样的同步缓冲器的状态即写入目的地状态、参照目的地状态、最新状态,分别通过在写入目的地状态记录区域、参照目的地状态记录区域、最新状态记录区域中分别记录对应的同步缓冲器为写入目的地状态、参照目的地状态、最新状态的情况来表示。这些各个记录区域是由系统程序210在“控制程序的执行准备处理”(图5所示的步骤S1)中,在主存储器104内的控制程序的作业区域1042中生成。记录同步缓冲器为写入目的地状态、参照目的地状态、最新状态的方式可以适当决定。例如,可采用记录用于确定以汇总进行复制处理的单位被分组的同步缓冲器的组中属于写入目的地状态、参照目的地状态、最新状态的组的信息(同步缓冲器的组的识别号等)的方式、对那样的同步缓冲器的每个组设置表示是否为写入目的地状态、参照目的地状态、最新状态的标志或者状态变量从而利用该标志或者状态变量的值来记录的方式等。由于对一个同步缓冲器不重复地赋予写入目的地状态和参照目的地状态,因此也可以不用区分写入目的地状态记录区域和参照目的地状态记录区域而生成共同的状态记录区域,并通过一个标志或者状态变量来表示是写入目的地状态还是参照目的地状态。
(j3:以与“多核”系统程序不同的核执行的控制程序为全局变量的所有者)
下面,例示在微处理器100为多核的情况下,以与执行系统程序的核不同的核执行的控制程序被设定为所有者侧控制程序的情况。
实施方式5的多核的微处理器下的另一执行动作由上述的图27的时序图示出。但是,图27是用于与上述的实施方式4共同地说明的时序图,在实施方式5中仅关注沿同步缓冲器2A以及2B的时间轴示出的“最新”状态的识别,不需要“最新数据更新标志”。
图30是表示实施方式5的另一执行动作的流程图。在图30的流程图中,对于执行与图23所示的流程图相同的处理的步骤,分别赋予与图23相同的步骤号。
图30所示的流程图与图23所示的流程图相比不同点在于,代替步骤S212E、S220E、S240E,分别执行步骤S212J、S220J、S240J的处理。以下,主要说明该不同点,不再重复对于其他的处理的详细说明。
在控制程序1(参照者侧控制程序)为“执行前”状态时(步骤S210G中“执行前”)执行的步骤S212J中,微处理器100(核1)将被设定为“最新”状态的同步缓冲器1(同步缓冲器1A或者同步缓冲器1B)设定为控制程序1(参照者侧控制程序)的“参照目的地”状态,并且将另一个同步缓冲器1设定为“写入目的地”状态,进而,将控制程序1的执行状态设定为“执行中”状态,并且开始执行控制程序1(步骤S212J)。
在收到了控制程序1的执行结束通知时(步骤S216中“是”的情况)执行的步骤S220J中,微处理器100将控制程序1的执行状态设定为“执行结束”状态(步骤S220J)。
在收到了控制程序1的执行结束通知时(步骤S236中“是”的情况,或者,步骤S236F中“是”的情况)执行的步骤S240J中,微处理器100在将控制程序2的执行状态设定为“执行结束”状态的基础上,将在全局变量区域2中存储的数据复制到被设定为“写入目的地”状态的同步缓冲器1(同步缓冲器1A或者同步缓冲器1B),并且将写入了全局变量区域1中存储的数据数据的目的地的同步缓冲器1设定为“最新”状态(步骤S240J)。
(j4:总结)
如上所述,在实施方式5中,系统程序210作为控制程序230的执行准备处理而包含以下的(1)~(3)的处理。
(1)在存储部件(基本上是主存储器104)内生成用于存储全局变量的全局变量区域1042a的处理
(2)关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将该参照者侧控制程序参照全局变量时代替全局变量区域而设为参照目的地的第1同步缓冲器以及第2同步缓冲器作为同步缓冲器的组(同步缓冲器1A以及1B,或者,同步缓冲器2A或者2B)在存储部件内生成的处理
(3)在存储部件(基本上是主存储器104)内生成最新状态记录区域的处理
第1同步缓冲器以及第2同步缓冲器上,被不重复地赋予作为能够从全局变量区域复制全局变量的状态的“写入目的地”状态、以及作为能够从参照者侧控制程序参照的状态的“参照目的地”状态中的其中一个状态。
此外,系统程序210作为控制程序230的执行控制处理而包含以下的(1)~(3)的处理。
(1)用于使所有者侧控制程序开始执行的所有者侧开始处理(图29的步骤S212、以及图30的步骤S232A)
(2)执行如下处理的复制处理:如果所有者侧控制程序的执行结束,则将通过该所有者侧控制程序改写的全局变量从全局变量区域复制到与该全局变量对应的处于写入目的地状态的同步缓冲器,进而,将复制目的地的同步缓冲器为最新状态的情况记录到最新状态记录区域(图29的步骤S220I、以及图30的步骤S240J)
(3)执行如下处理的参照者侧开始处理:使参照者侧控制程序开始执行,进而,对于执行开始的参照者侧控制程序的同步缓冲器,以通过最新状态记录区域的内容所确定的处于最新状态的同步缓冲器为写入目的地状态作为条件,执行用于调换处于写入目的地状态的同步缓冲器以及处于参照目的地状态的同步缓冲器的写入目的地状态和参照目的地状态的第3调换处理(图29的步骤S232I、以及图30的步骤S212J)
另外,参照者侧开始处理也能够如下说明。即,执行如下处理的参照者侧开始处理:使参照者侧控制程序开始执行,进而,将通过最新状态记录区域的内容所确定的处于最新状态的同步缓冲器设为在该参照者侧控制程序的执行中参照的参照目的地状态,并且,将与设为参照目的地的同步缓冲器属于同一组的另一个同步缓冲器设为写入目的地状态。
根据上述那样的实施方式5,对于各参照者侧控制程序,由该参照者侧控制程序参照的每个全局变量具有两个同步缓冲器,除了在参照者侧开始处理中进行同步缓冲器的写入目的地状态和参照目的地状态的调换处理(第3调换处理)的期间的短时间之外,始终有某一个同步缓冲器处于写入目的地状态,因此在任何时候都能进行复制处理。进而,在参照者侧控制程序的执行开始时,基于最新状态记录区域的内容,将存储着被复制的最新数据的同步缓冲器设为参照目的地,从而参照者侧控制程序能够参照其执行开始时的最新的全局变量的值。
<K.更新标志型三缓冲器调换方式(实施方式6)>
(k1:概要)
在上述的实施方式4中例示了利用最新数据更新标志在两个同步缓冲器中存储数据的结构,但在实施方式6中例示在三个同步缓冲器中存储数据的结构。即,例示将实施方式4的结构扩展为三个同步缓冲器的结构。
在实施方式6中也例示微处理器100为多核的情况。
(k2:以与“多核”系统程序相同的核执行的控制程序为全局变量的所有者)
图31以及图32是表示实施方式6的多核的微处理器下的执行动作的时序图。更具体地说,在图31以及图32中设为核1执行控制程序1,核2执行控制程序2。这时,在核1中,除了控制程序1之外还执行系统程序。并且,假设控制程序1被设定为所有者侧控制程序。图31中表示控制程序1的执行循环和控制程序2的执行循环实质上相同的情况的例子,图32中表示控制程序1的执行循环比控制程序2的执行循环短的情况的例子。
如图31以及图32所示,在实施方式6中,控制程序1上关联了全局变量区域1,控制程序2上关联了同步缓冲器2A、2B、2C。
另外,图31以及图32是用于与后述的实施方式7共同地说明的时序图。在后述的实施方式7中,相当于将实施方式5的结构扩展为三个同步缓冲器的结构,处理用于将存储了被复制的最新数据的同步缓冲器作为参照目的地来识别的信息。因此,参照图31以及图32说明实施方式6时,仅关注“最新数据更新标志”,不需要识别沿同步缓冲器2A、2B、2C的时间轴示出的“最新”状态。另一方面,参照图31以及图32说明实施方式7时,仅关注沿同步缓冲器2A、2B、2C的时间轴示出的“最新”状态的识别,不需要“最新数据更新标志”。
此外,在图31以及图32中,将“写入目的地”状态以及“参照目的地”状态只记述为“写入目的地”以及“参照目的地”。
考虑采用图31以及图32所示那样的多核,并行地执行控制程序1以及控制程序2的情况。控制程序2在核的资源利用上随时都能够执行,但作为PLC来考虑的情况下,由于控制程序2也需要利用系统程序的输出处理以及输入处理,因此作为其基础,等待在各控制循环的开头执行的输出处理以及输入处理的结束而开始执行控制程序2。
另外,如果控制程序2不需要利用系统程序的输出处理以及输入处理,则也可以变更设计使得控制程序2的执行循环与控制循环不同步执行。例如,可以在控制程序2执行结束时,立即进行下一次的参照者侧开始处理。
在这样的情况下,按照以下所示那样的顺序,在全局变量区域1与同步缓冲器2A以及2B之间保持同步。
图33是表示实施方式6的执行动作的流程图。图33所示的流程图也适用于图31以及图32的任一个。在图33的流程图中,对于执行与图26所示的流程图实质上相同的处理的步骤,赋予与图26相同的步骤号。
图33所示的流程图与图26所示的流程图相比不同点在于,代替步骤S232G以及S220G,分别执行步骤S232K以及S220K的处理。以下,主要说明该不同点,不再重复对于其他的处理的详细说明。
在控制程序2(参照者侧控制程序)为“执行结束”状态时(步骤S230F中“执行结束”)执行的步骤S232K中,如果最新数据更新标志2被设定为开通,则微处理器100将处于“待机”状态的同步缓冲器2(同步缓冲器2A、2B、2C的其中一个)变更为“参照目的地”状态,并且将处于“参照目的地”状态的同步缓冲器2(同步缓冲器2A、2B、2C的其中一个)变更为“待机”状态,在此基础上将最新数据更新标志2从开通变更为关闭。
另外,如果最新数据更新标志2没有被设定为开通(如果最新数据更新标志2被设定为关闭),则对于同步缓冲器2的“待机”状态以及“参照目的地”状态不进行变更,对于最新数据更新标志2也维持为关闭。
进而,微处理器100(核1)将控制程序2的执行状态设定为“执行中”状态,并且使核2开始执行控制程序2(步骤S232K)。
在收到了控制程序1的执行结束通知时(步骤S216中“是”的情况)执行的步骤S220K中,微处理器100在将控制程序1的执行状态设定为“执行结束”状态的基础上,将全局变量区域1中存储的数据复制到被设定为“写入目的地”状态的同步缓冲器2(同步缓冲器2A、2B、2C的其中一个)。进而,微处理器100将处于“写入目的地”状态的同步缓冲器2(同步缓冲器2A、2B、2C的其中一个)变更为“待机”状态,并且将处于“待机”状态的同步缓冲器2(同步缓冲器2A、2B、2C的其中一个)变更为“写入目的地”状态,在此基础上将最新数据更新标志2设定为开通(步骤S220K)。
上述那样的同步缓冲器的状态即同步缓冲器的写入目的地状态、参照目的地状态、待机状态分别通过在写入目的地状态记录区域、参照目的地状态记录区域、待机状态记录区域中分别记录对应的同步缓冲器为写入目的地状态、参照目的地状态、待机状态的情况来表示。这些各个记录区域是由系统程序210在“控制程序的执行准备处理”(图5所示的步骤S1)中,在主存储器104内的控制程序的作业区域1042中生成。记录同步缓冲器为写入目的地状态、参照目的地状态、待机状态的方式可以适当决定。例如,可采用记录用于确定以汇总进行复制处理的单位被分组的同步缓冲器的组中属于写入目的地状态、参照目的地状态、待机状态的组的信息(同步缓冲器的组的识别号等)的方式、对那样的同步缓冲器的每个组设置表示是否为写入目的地状态、参照目的地状态、待机状态的标志或者状态变量从而利用该标志或者状态变量的值来记录的方式等。另外,由于对一个同步缓冲器不重复地赋予写入目的地状态、参照目的地状态、待机状态,因此也可以不用区分这些的记录区域而生成共同的状态记录区域,并通过一组标志或者一个状态变量来表示处于哪个状态。
另外,实施方式6的时序图中表示的最新数据更新标志的垂直线(沿时间轴的线)中粗线的部分表示最新数据更新标志为开通的情况。
最新数据更新标志由系统程序210在“控制程序的执行准备处理”(图5所示的步骤S1)中,在主存储器104内的控制程序的作业区域1042中生成。最新数据更新标志按照以汇总进行复制处理的单位被分组的同步缓冲器的每个组而设置。
(k3:以与“多核”系统程序不同的核执行的控制程序为全局变量的所有者)
下面,例示在微处理器100为多核的情况下,以与执行系统程序的核不同的核执行的控制程序被设定为所有者侧控制程序的情况。
图34是表示实施方式6的多核的微处理器下的另一执行动作的时序图。假设在图34所示的时序图中,由核2执行的控制程序2被设定为所有者侧控制程序。关于图34,与上述的图31以及图32同样地,是用于与后述的实施方式7共同地说明的时序图。因此,参照图34说明实施方式6时,仅关注“最新数据更新标志”,不需要识别沿同步缓冲器2A、2B、2C的时间轴示出的“最新”状态。另一方面,参照图34说明实施方式7时,仅关注沿同步缓冲器2A、2B、2C的时间轴示出的“最新”状态的识别,不需要“最新数据更新标志”。
图35是表示实施方式6的另一执行动作的流程图。在图35的流程图中,对于执行与图28所示的流程图相同的处理的步骤,分别赋予与图28相同的步骤号。
图35所示的流程图与图28所示的流程图相比不同点在于,代替步骤S212H以及S240H,分别执行步骤S212L以及S240L的处理。以下,主要说明该不同点,不再重复对于其他的处理的详细说明。
在控制程序1(参照者侧控制程序)为“执行前”状态时(步骤S210G中“执行前”)执行的步骤S212L中,如果最新数据更新标志1被设定为开通,则微处理器100将处于“待机”状态的同步缓冲器1(同步缓冲器1A、1B、1C的其中一个)变更为“参照目的地”状态,并且将处于“参照目的地”状态的同步缓冲器1(同步缓冲器1A、1B、1C的其中一个)变更为“待机”状态,在此基础上将最新数据更新标志1从开通变更为关闭。
另外,如果最新数据更新标志1没有被设定为开通(如果最新数据更新标志1被设定为关闭),则对于同步缓冲器1的“待机”状态以及“参照目的地”状态不进行变更,对于最新数据更新标志1也维持关闭。
进而,微处理器100(核1)将控制程序1的执行状态设定为“执行中”状态,并且开始执行控制程序1(步骤S212L)。
在收到了控制程序2的执行结束通知时(步骤S236中“是”的情况,或者,步骤S236F中“是”的情况)执行的步骤S240L中,微处理器100在将控制程序2的执行状态设定为“执行结束”状态的基础上,将全局变量区域2中存储的数据复制到被设定为“写入目的地”状态的同步缓冲器1(同步缓冲器1A、1B、1C的其中一个)。进而,微处理器100将处于“写入目的地”状态的同步缓冲器1(同步缓冲器1A、1B、1C的其中一个)变更为“待机”状态,并且将处于“待机”状态的同步缓冲器1(同步缓冲器1A、1B、1C的其中一个)变更为“写入目的地”状态,在此基础上将最新数据更新标志1设定为开通(步骤S220L)。
(k4:总结)
如上所述,在实施方式6中,系统程序210作为控制程序230的执行准备处理而包含以下的(1)~(3)的处理。
(1)在存储部件(基本上是主存储器104)内生成用于存储全局变量的全局变量区域1042a的处理
(2)关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将该参照者侧控制程序参照全局变量时代替全局变量区域而设为参照目的地的第1同步缓冲器、第2同步缓冲器以及第3同步缓冲器作为同步缓冲器的组(同步缓冲器1A、1B、1C,或者,同步缓冲器2A、2B、2C)在存储部件内生成的处理
(3)对通过全局变量相关联的所有者侧控制程序和参照者侧控制程序的每个组合,在存储部件内生成最新数据更新标志的处理
这时,第1同步缓冲器、第2同步缓冲器、以及第3同步缓冲器上,被不重复地赋予作为能够从全局变量区域复制全局变量的状态的“写入目的地”状态、作为能够从参照者侧控制程序参照的状态的“参照目的地”状态、以及“待机”状态中的其中一个状态。
此外,系统程序210作为控制程序230的执行控制处理而包含以下的(1)~(3)的处理。
(1)用于使所有者侧控制程序开始执行的所有者侧开始处理(图33的步骤S212、以及图35的步骤S232A)
(2)执行如下处理的复制处理:如果所有者侧控制程序的执行结束,则将通过该所有者侧控制程序改写的全局变量从全局变量区域复制到与该全局变量对应的处于写入目的地状态的同步缓冲器,进而,执行对成为复制目的地的处于写入目的地状态的同步缓冲器以及与该同步缓冲器相同的组中处于待机状态的同步缓冲器的写入目的地状态和待机状态进行调换的第1调换处理、以及将与该复制处理关联的最新数据更新标志设为开通(图33的步骤S220K、以及图35的步骤S240L)
(3)执行如下处理的参照者侧开始处理:使参照者侧控制程序开始执行,进而,对于执行开始的参照者侧控制程序的同步缓冲器,以存储着最新数据的同步缓冲器为待机状态作为条件(即,以与执行开始的参照者侧控制程序的同步缓冲器关联的最新数据更新标志为开通作为条件),执行用于调换处于待机状态的同步缓冲器以及处于参照目的地状态的同步缓冲器的待机状态和参照目的地状态的第2调换处理、以及将该开通状态的最新数据更新标志设为关闭的处理(图33的步骤S232K、以及图35的步骤S212L)
根据上述那样的实施方式6,对于各参照者侧控制程序,由该参照者侧控制程序参照的每个全局变量具有三个同步缓冲器,由于始终有某一个同步缓冲器处于写入目的地状态,因此在任何时候都能进行复制处理。进而,在参照者侧控制程序的执行开始时,通过将存储着被复制的最新数据的同步缓冲器设为参照目的地,从而参照者侧控制程序能够参照其执行开始时的最新的全局变量的值。
此外,在实施方式6中,作为将存储了参照者侧控制程序的执行开始时复制的最新数据的同步缓冲器设为参照目的地的方案,在复制处理中进行同步缓冲器的写入目的地状态和待机状态的调换,在参照者侧开始处理中,基于最新数据更新标志的状态,进行同步缓冲器的待机状态和参照目的地状态的调换。从全局变量区域进行了复制时处于写入目的地状态的同步缓冲器在经过待机状态后成为参照目的地状态。
上述的实施方式4的情况下,在参照者侧开始处理中进行同步缓冲器的写入目的地状态和参照目的地状态的调换处理(第3调换处理)的短时间的期间,无法进行从全局变量区域到同步缓冲器的复制处理,需要等待第3调换处理结束后进行复制处理,但实施方式6的情况下可以设计成,即使是在参照者侧开始处理中进行同步缓冲器的待机状态和参照目的地状态的调换处理(第2调换处理)的期间也执行从全局变量区域到同步缓冲器的复制处理。
<L.最新数据型三缓冲器调换方式(实施方式7)>
(l1:概要)
在上述的实施方式5中,例示了利用用于将存储了被复制的最新数据的同步缓冲器识别为参照目的地的信息,在两个同步缓冲器存储数据的结构,但在实施方式7中,例示在三个同步缓冲器存储数据的结构。即,例示将实施方式5的结构扩展为三个同步缓冲器的结构。
在实施方式7中也例示微处理器100为多核的情况。
(l2:以与“多核”系统程序相同的核执行的控制程序为全局变量的所有者)
实施方式7的多核的微处理器下的执行动作由上述的图31以及图32的时序图示出。但是,图31以及图32是用于与上述的实施方式6共同地说明的时序图,在实施方式7中仅关注沿同步缓冲器2A、2B、2C的时间轴示出的“最新”状态的识别,不需要“最新数据更新标志”。
图36是表示实施方式7的执行动作的流程图。图36所示的流程图也适用于图31以及图32的任一个。在图36的流程图中,对于执行与图29所示的流程图实质上相同的处理的步骤,赋予与图29相同的步骤号。
图36所示的流程图与图29所示的流程图相比不同点在于,代替步骤S232I以及S220I,分别执行步骤S232M以及S220M的处理。以下,主要说明该不同点,不再重复对于其他的处理的详细说明。
在控制程序2(参照者侧控制程序)为“执行结束”状态时(步骤S230F中“执行结束”)执行的步骤S232M中,如果“最新”状态的同步缓冲器2(同步缓冲器2A、2B、2C的其中一个)被设定为“待机”状态,则微处理器100(核1)将处于“待机”状态的同步缓冲器2(同步缓冲器2A、2B、2C的其中一个)变更为“参照目的地”状态,并且将处于“参照目的地”状态的同步缓冲器2(同步缓冲器2A、2B、2C的其中一个)变更为“待机”状态。
另外,如果“最新”状态的同步缓冲器2(同步缓冲器2A、2B、2C的其中一个)被设定为“参照”状态,则对于同步缓冲器2的“待机”状态以及“参照目的地”状态不进行变更而原样维持。
进而,微处理器100(核1)将控制程序2的执行状态设定为“执行中”状态,并且使核2开始执行控制程序2(步骤S232M)。
在收到了控制程序1的执行结束通知时(步骤S216中“是”的情况)执行的步骤S220M中,微处理器100在将控制程序1的执行状态设定为“执行结束”状态的基础上,将全局变量区域1中存储的数据复制到被设定为“写入目的地”状态的同步缓冲器2(同步缓冲器2A、2B、2C的其中一个)。进而,微处理器100将处于“写入目的地”状态的同步缓冲器2(同步缓冲器2A、2B、2C的其中一个)变更为“待机”状态并且也设定为“最新”状态,将处于“待机”状态的同步缓冲器2(同步缓冲器2A、2B、2C的其中一个)设定为“写入目的地”状态(步骤S220M)。
上述那样的同步缓冲器的状态即同步缓冲器的写入目的地状态、参照目的地状态、待机状态、最新状态,分别通过在写入目的地状态记录区域、参照目的地状态记录区域、待机状态记录区域、最新状态记录区域中分别记录对应的同步缓冲器为写入目的地状态、参照目的地状态、待机状态、最新状态的情况来表示。这些各个记录区域是由系统程序210在“控制程序的执行准备处理”(图5所示的步骤S1)中,在主存储器104内的控制程序的作业区域1042中生成。记录同步缓冲器为写入目的地状态、参照目的地状态、待机状态、最新状态的方式可以适当决定。例如,可采用记录用于确定以汇总进行复制处理的单位被分组的同步缓冲器的组中属于写入目的地状态、参照目的地状态、待机状态、最新状态的组的信息(同步缓冲器的组的识别号等)的方式、对那样的同步缓冲器的每个组设置表示是否为写入目的地状态、参照目的地状态、待机状态、最新状态的标志或者状态变量从而利用该标志或者状态变量的值来记录的方式等。由于对一个同步缓冲器不重复地赋予写入目的地状态、参照目的地状态、待机状态,因此也可以不用区分写入目的地状态记录区域、参照目的地状态记录区域、待机状态记录区域而生成共同的状态记录区域,并通过一组标志或者一个状态变量来表示是这三个状态中的哪个状态。
(l3:以与“多核”系统程序不同的核执行的控制程序为全局变量的所有者)
下面,例示在微处理器100为多核的情况下,以与执行系统程序的核不同的核执行的控制程序被设定为所有者侧控制程序的情况。
实施方式7的多核的微处理器下的另一执行动作由上述的图34的时序图示出。但是,图34是用于与上述的实施方式6共同地说明的时序图,在实施方式7中仅关注沿同步缓冲器2A、2B、2C的时间轴示出的“最新”状态的识别,不需要“最新数据更新标志”。
图37是表示实施方式7的另一执行动作的流程图。在图37的流程图中,对于执行与图30所示的流程图相同的处理的步骤,分别赋予与图30相同的步骤号。
图37所示的流程图与图30所示的流程图相比不同点在于,代替步骤S212J以及S240J,分别执行步骤S212N以及S240N的处理。以下,主要说明该不同点,不再重复对于其他的处理的详细说明。
在控制程序1(参照者侧控制程序)为“执行前”状态时(步骤S210G中“执行前”)执行的步骤S212N中,如果“最新”状态的同步缓冲器1(同步缓冲器1A、1B、1C的其中一个)被设定为“待机”状态,则微处理器100将处于“待机”状态的同步缓冲器1(同步缓冲器1A、1B、1C的其中一个)变更为“参照目的地”状态,并且将处于“参照目的地”状态的同步缓冲器1(同步缓冲器1A、1B、1C的其中一个)变更为“待机”状态。
另外,如果“最新”状态的同步缓冲器1(同步缓冲器1A、1B、1C的其中一个)被设定为“参照”状态,则对于同步缓冲器1的“待机”状态以及“参照目的地”状态不进行变更而原样维持。
进而,微处理器100(核1)控制程序1的执行状态设定为“执行中”状态,并且开始执行控制程序1(步骤S212N)。
在收到了控制程序1的执行结束通知时(步骤S236中“是”的情况,或者,步骤S236F中“是”的情况)执行的步骤S240N中,微处理器100在将控制程序2的执行状态设定为“执行结束”状态的基础上,将在全局变量区域2中存储的数据复制到被设定为“写入目的地”状态的同步缓冲器1(同步缓冲器1A、1B、1C的其中一个)。进而,微处理器100将处于“写入目的地”状态的同步缓冲器1(同步缓冲器1A、1B、1C的其中一个)变更为“待机”状态并且也设定为“最新”状态,进而,将处于“待机”状态的同步缓冲器1(同步缓冲器1A、1B、1C的其中一个)变更为“写入目的地”状态(步骤S240M)。
(l4:总结)
如上所述,在实施方式7中,系统程序210作为控制程序230的执行准备处理而包含以下的(1)~(3)的处理。
(1)在存储部件(基本上是主存储器104)内生成用于存储全局变量的全局变量区域1042a的处理
(2)关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将该参照者侧控制程序参照全局变量时代替全局变量区域而设为参照目的地的第1同步缓冲器、第2同步缓冲器以及第3同步缓冲器作为同步缓冲器的组(同步缓冲器1A、1B、1C,或者,同步缓冲器2A、2B、2C)在存储部件内生成的处理
(3)在存储部件内生成最新状态记录区域的处理
第1同步缓冲器、第2同步缓冲器、以及第3同步缓冲器上,被不重复地赋予作为能够从全局变量区域复制全局变量的状态的“写入目的地”状态、作为能够从参照者侧控制程序参照的状态的“参照目的地”状态、“待机”状态中的其中一个状态。
此外,系统程序210作为控制程序230的执行控制处理而包含以下的(1)~(3)的处理。
(1)用于使所有者侧控制程序开始执行的所有者侧开始处理(图36的步骤S212、以及图37的步骤S232A)
(2)执行如下处理的复制处理:如果所有者侧控制程序的执行结束,则将通过该所有者侧控制程序改写的全局变量从全局变量区域复制到与该全局变量对应的处于写入目的地状态的同步缓冲器,进而,执行对成为复制目的地的处于写入目的地状态的同步缓冲器以及与该同步缓冲器相同的组中处于待机状态的同步缓冲器的写入目的地状态和待机状态进行调换的第1调换处理、以及将复制目的地的同步缓冲器为最新状态的情况记录到最新状态记录区域(图36的步骤S220M、以及图37的步骤S240N)
(3)执行如下处理的参照者侧开始处理:使参照者侧控制程序开始执行,进而,对于执行开始的参照者侧控制程序的同步缓冲器,以通过最新状态记录区域的内容所确定的处于最新状态的同步缓冲器为待机状态作为条件,执行用于调换处于待机状态的同步缓冲器以及处于参照目的地状态的同步缓冲器的待机状态和参照目的地状态的第2调换处理(图36的步骤S232M、以及图37的步骤S212N)
另外,参照者侧开始处理也能够如下说明。即,执行如下处理的参照者侧开始处理:使参照者侧控制程序开始执行,进而,将通过最新状态记录区域的内容所确定的处于最新状态的同步缓冲器设为在该参照者侧控制程序的执行中参照的参照目的地状态,并且,将与设为参照目的地的同步缓冲器属于同一组并且不是写入目的地状态的同步缓冲器设为待机状态。
根据上述那样的实施方式7,对于各参照者侧控制程序,由该参照者侧控制程序参照的每个全局变量具有三个同步缓冲器,始终有某一个同步缓冲器处于写入目的地状态,因此在任何时候都能进行复制处理。进而,在参照者侧控制程序的执行开始时,通过将存储着被复制的最新数据的同步缓冲器设为参照目的地,从而参照者侧控制程序能够参照其执行开始时的最新的全局变量的值。
进而,在实施方式7中,作为将存储了参照者侧控制程序的执行开始时复制的最新数据的同步缓冲器设为参照目的地的方案,在复制处理中进行同步缓冲器的写入目的地状态和待机状态的调换,在参照者侧开始处理中,基于最新状态记录区域的内容,进行同步缓冲器的待机状态和参照目的地状态的调换。从全局变量区域进行了复制时处于写入目的地状态的同步缓冲器在经过待机状态后成为参照目的地状态。
上述的实施方式5的情况下,在参照者侧开始处理中进行同步缓冲器的写入目的地状态和参照目的地状态的调换处理(第3调换处理)的短时间的期间,无法进行从全局变量区域到同步缓冲器的复制处理,需要等待第3调换处理结束后进行复制处理,但实施方式7的情况下可以设计成,即使是在参照者侧开始处理中进行同步缓冲器的待机状态和参照目的地状态的调换处理(第2调换处理)的期间也执行从全局变量区域到同步缓冲器的复制处理。
<M.支援装置>
下面,说明在PLC1中执行的程序的生成以及用于进行PLC1的维护等的PLC支援装置8。
图38是表示本发明的实施方式的连接到CPU单元使用的PLC支援装置8的硬件结构的示意图。参照图38,PLC支援装置8典型地由通用的计算机构成。另外,从维护性的观点来看,移动性优越的笔记本型的个人计算机较为理想。
参照图38,PLC支援装置8包括执行包含OS的各种程序的CPU81、存储BIOS或各种数据的ROM(只读存储器)82、提供用于存储在CPU81中的程序执行所需的数据的作业区域的存储器RAM83、非易失性地存储在CPU81中执行的程序等的硬盘(HDD)84。
PLC支援装置8还包括接受来自用户的操作的键盘85以及鼠标86、用于向用户提示信息的监视器87。进而,PLC支援装置8包括用于与PLC1(CPU单元13)等进行通信的通信接口(IF)89。
如后述那样,由PLC支援装置8执行的各种程序被存储到CD-ROM9而流通。该CD-ROM9中存储的程序通过CD-ROM(光盘-只读存储器)驱动88读取,并被存储到硬盘(HDD)84等。或者,也可以构成为从上层的主机计算机等通过网络下载程序。
如上所述,PLC支援装置8使用通用的计算机来实现,因此不进行更多的详细说明。
图39是表示本发明的实施方式的连接到CPU单元使用的PLC支援装置8的软件结构的示意图。参照图39,在PLC支援装置8中执行OS210,提供能够执行在PLC支援程序320中包含的各种程序的环境。
PLC支援程序320包括编辑器程序321、编译器程序322、调试器程序323、仿真用时序命令运算程序324、仿真用动作运算程序325、通信程序326。在PLC支援程序320中包含的各自的程序典型地以存储到CD-ROM9的状态流通,从而被安装到PLC支援装置8。
编辑器程序321提供用于生成用户程序236的输入以及编辑这样的功能。更具体地说,编辑器程序321除了用户操作键盘85或鼠标86来生成用户程序236的源程序330的功能之外,提供已生成的源程序330的保存功能以及编辑功能。此外,编辑器程序321输入来自外部的控制程序230(其中也有其是用户程序236)的源程序,并且通过用户的操作对现有的控制程序230的源程序进行编辑。编辑器程序321还进行有关控制程序230使用的变量的属性数据的输入以及编辑。
编译器程序322提供对控制程序230的源程序进行编译从而生成能够在CPU单元13的微处理器100中执行的目标程序形式的用户程序236的功能。此外,编译器程序322提供对源程序330进行编译从而生成能够在PLC支援装置8的CPU81中执行的目标程序形式的用户程序340的功能。该用户程序340是为了通过PLC支援装置8对PLC1的动作进行仿真(模拟)而使用的仿真用的目标程序。
调试器程序323提供用于对控制程序230的源程序进行调试的功能。作为该调试的内容,包含部分执行源程序中用户指定的范围并且对源程序的执行中的变量值的经时变化进行追踪的动作。
调试器程序323还提供执行控制程序230的仿真用的目标程序的功能。该仿真时,代替在CPU单元13的系统程序中包含的时序命令运算程序232以及动作运算程序234,使用在PLC支援程序320中包含的仿真用时序命令运算程序324以及仿真用动作运算程序325。
通信程序326提供对PLC1的CPU单元13转发控制程序230的CPU单元13用的目标程序和变量的属性数据。
一般,被安装到PLC1的系统程序210在CPU单元13的制造阶段被存储到CPU单元13的非易失性存储器106。但是,如果在CD-ROM9中存储系统程序210,则用户还能将CD-ROM9的系统程序210复制到PLC支援装置8,利用通信程序236提供的功能将复制好的系统程序210转发给CPU单元13。进而,如果在CD-ROM9中存储由PLC1的CPU单元13的实时OS200,则关于实时OS200也能够通过用户操作再次安装到PLC1。
应认为本次公开的实施方式在所有方面均为例示而并非用于限制。本发明的范围并非由上述的说明示出,而是通过权利要求示出,意欲包含与权利要求等同的含义以及范围内的所有变更。
标号说明
1PLC、2现场网络、3伺服电机驱动器、4伺服电机、5终端、6检测开关、7继电器、8PLC支援装置、9CD-ROM、10连接线缆、11PLC系统总线、12电源单元、13CPU单元、14,53IO单元、15特殊单元、51终端总线、52通信耦合器、81CPU、83RAM、85键盘、86鼠标、87监视器、88CD-ROM驱动器、100微处理器、102芯片组、104主存储器、106非易失性存储器、108系统定时器、110USB连接器、120PLC系统总线控制器、122DMA控制电路、124PLC系统总线控制电路、126,146缓冲存储器、130PLC系统总线连接器、140现场网络控制器、142DMA控制电路、144现场网络控制电路、210,220系统程序、212调度器程序、214输出处理程序、216输入处理程序、218IO处理程序、230控制程序、232时序命令运算程序、234动作运算程序、236,340用户程序、320支援程序、321编辑器程序、322编译器程序、323调试器程序、324仿真用时序命令运算程序、325仿真用动作运算程序、326通信程序、330源程序、1041程序区域、1042控制程序的作业区域、1042a全局变量区域、1043PLC系统总线发送缓冲器、1044PLC系统总线接收缓冲器、1045现场网络发送缓冲器、1046现场网络接收缓冲器、200实时OS、SYS系统。

Claims (14)

1.一种PLC的CPU单元,对控制对象进行控制,该CPU单元包括:
微处理器;
存储部件;以及
通信电路,
所述PLC的CPU单元通过重复输出数据的发送、输入数据的接收、以及使用所述输入数据生成所述输出数据的控制程序的执行,从而控制所述控制对象,
所述存储部件用于存储所述控制程序、控制所述控制程序的执行的系统程序、以及有关所述控制程序使用的变量的属性数据,
所述微处理器执行在所述存储部件中存储的所述系统程序以及所述控制程序,
所述通信电路发送所述输出数据以及接收所述输入数据,
在所述变量为由多个所述控制程序参照的全局变量时,所述属性数据能够包含能够改写该变量的一个所有者侧控制程序的指定、以及只能参照该变量的一个或者多个参照者侧控制程序的指定,
所述系统程序作为所述控制程序的执行准备处理而包含:
在所述存储部件内生成用于存储全局变量的全局变量区域的处理;以及
关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,在所述存储部件内生成在该参照者侧控制程序参照全局变量时代替所述全局变量区域而设为参照目的地的同步缓冲器的处理,
所述系统程序作为所述控制程序的执行控制处理而包含:
用于使所有者侧控制程序开始执行的所有者侧开始处理;
如果所有者侧控制程序的执行结束,则将通过该所有者侧控制程序改写的全局变量从所述全局变量区域复制到与该全局变量对应的所述同步缓冲器的复制处理;以及
用于使参照者侧控制程序开始执行的参照者侧开始处理,
生成所述同步缓冲器的处理是,关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将第1同步缓冲器以及第2同步缓冲器作为同步缓冲器的组来生成的处理,
所述第1同步缓冲器以及所述第2同步缓冲器被不重复地赋予写入目的地状态以及参照目的地状态的其中一个状态,其中,该写入目的地状态是能够从所述全局变量区域复制全局变量的状态,该参照目的地状态是能够从参照者侧控制程序进行参照的状态,
所述复制处理是复制到处于所述写入目的地状态的同步缓冲器的处理,
生成所述同步缓冲器的处理是,关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将第1同步缓冲器、第2同步缓冲器以及第3同步缓冲器作为同步缓冲器的组来生成的处理,
所述第1同步缓冲器、所述第2同步缓冲器以及所述第3同步缓冲器被不重复地赋予所述写入目的地状态、所述参照目的地状态、待机状态的其中一个状态,
所述复制处理还包含用于调换成为复制目的地的处于所述写入目的地状态的同步缓冲器以及在与该同步缓冲器相同的组中处于所述待机状态的同步缓冲器的写入目的地状态和待机状态的第1调换处理,
所述参照者侧开始处理还包含对于执行开始的参照者侧控制程序的同步缓冲器,以存储着最新数据的同步缓冲器为所述待机状态作为条件,调换处于所述待机状态的同步缓冲器以及处于所述参照目的地状态的同步缓冲器的待机状态和参照目的地状态的第2调换处理。
2.如权利要求1所述的PLC的CPU单元,其中,
所述系统程序作为所述控制程序的执行准备处理而还包含:对通过全局变量相关联的所有者侧控制程序和参照者侧控制程序的每个组合,在所述存储部件内生成最新数据更新标志的处理,
所述复制处理还包含将与该复制处理关联的最新数据更新标志设为开通的处理,
所述参照者侧开始处理还以与执行开始的参照者侧控制程序的同步缓冲器关联的最新数据更新标志为开通作为条件,包含所述第2调换处理以及将该最新数据更新标志设为关闭的处理,
由此,实现以存储着最新数据的同步缓冲器为所述待机状态作为条件来执行的所述第2调换处理。
3.如权利要求1所述的PLC的CPU单元,其中,
所述系统程序作为所述控制程序的执行准备处理而还包含在所述存储部件内生成最新状态记录区域的处理,
所述复制处理还包含在所述最新状态记录区域中记录复制目的地的同步缓冲器为最新状态的情况的处理,
所述参照者侧开始处理还包含以通过所述最新状态记录区域的内容所确定的处于最新状态的同步缓冲器为所述待机状态作为条件来执行的所述第2调换处理。
4.一种PLC的CPU单元,对控制对象进行控制,该CPU单元包括:
微处理器;
存储部件;以及
通信电路,
所述PLC的CPU单元通过重复输出数据的发送、输入数据的接收、以及使用所述输入数据生成所述输出数据的控制程序的执行,从而控制所述控制对象,
所述存储部件用于存储所述控制程序、控制所述控制程序的执行的系统程序、以及有关所述控制程序使用的变量的属性数据,
所述微处理器执行在所述存储部件中存储的所述系统程序以及所述控制程序,
所述通信电路发送所述输出数据以及接收所述输入数据,
在所述变量为由多个所述控制程序参照的全局变量时,所述属性数据能够包含能够改写该变量的一个所有者侧控制程序的指定、以及只能参照该变量的一个或者多个参照者侧控制程序的指定,
所述系统程序作为所述控制程序的执行准备处理而包含:
在所述存储部件内生成用于存储全局变量的全局变量区域的处理;以及
关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,在所述存储部件内生成在该参照者侧控制程序参照全局变量时代替所述全局变量区域而设为参照目的地的同步缓冲器的处理,
所述系统程序作为所述控制程序的执行控制处理而包含:
用于使所有者侧控制程序开始执行的所有者侧开始处理;
如果所有者侧控制程序的执行结束,则将通过该所有者侧控制程序改写的全局变量从所述全局变量区域复制到与该全局变量对应的所述同步缓冲器的复制处理;以及
用于使参照者侧控制程序开始执行的参照者侧开始处理,
生成所述同步缓冲器的处理是,关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将第1同步缓冲器以及第2同步缓冲器作为同步缓冲器的组来生成的处理,
所述第1同步缓冲器以及所述第2同步缓冲器被不重复地赋予写入目的地状态以及参照目的地状态的其中一个状态,其中,该写入目的地状态是能够从所述全局变量区域复制全局变量的状态,该参照目的地状态是能够从参照者侧控制程序进行参照的状态,
所述复制处理是复制到处于所述写入目的地状态的同步缓冲器的处理,
所述参照者侧开始处理还包含对于执行开始的参照者侧控制程序的同步缓冲器,以存储着最新数据的同步缓冲器为所述写入目的地状态作为条件,调换处于所述写入目的地状态的同步缓冲器以及处于所述参照目的地状态的同步缓冲器的写入目的地状态和参照目的地状态的第3调换处理。
5.如权利要求4所述的PLC的CPU单元,其中,
所述系统程序作为所述控制程序的执行准备处理而还包含:对通过全局变量相关联的所有者侧控制程序和参照者侧控制程序的每个组合,在所述存储部件内生成最新数据更新标志的处理,
所述复制处理还包含将与该复制处理关联的最新数据更新标志设为开通的处理,
所述参照者侧开始处理还以与执行开始的参照者侧控制程序的同步缓冲器关联的最新数据更新标志为开通作为条件,包含所述第3调换处理以及将该最新数据更新标志设为关闭的处理,
由此,实现以存储着最新数据的同步缓冲器为所述写入目的地状态作为条件来执行的所述第3调换处理。
6.如权利要求4所述的PLC的CPU单元,其中,
所述系统程序作为所述控制程序的执行准备处理而还包含在所述存储部件内生成最新状态记录区域的处理,
所述复制处理还包含在所述最新状态记录区域中记录复制目的地的同步缓冲器为最新状态的情况的处理,
所述参照者侧开始处理还包含以通过所述最新状态记录区域的内容所确定的处于最新状态的同步缓冲器为所述写入目的地状态作为条件来执行的所述第3调换处理。
7.一种PLC的CPU单元,对控制对象进行控制,该CPU单元包括:
微处理器;
存储部件;以及
通信电路,
所述PLC的CPU单元通过重复输出数据的发送、输入数据的接收、以及使用所述输入数据生成所述输出数据的控制程序的执行,从而控制所述控制对象,
所述存储部件用于存储所述控制程序、控制所述控制程序的执行的系统程序、以及有关所述控制程序使用的变量的属性数据,
所述微处理器执行在所述存储部件中存储的所述系统程序以及所述控制程序,
所述通信电路发送所述输出数据以及接收所述输入数据,
在所述变量为由多个所述控制程序参照的全局变量时,所述属性数据能够包含能够改写该变量的一个所有者侧控制程序的指定、以及只能参照该变量的一个或者多个参照者侧控制程序的指定,
所述系统程序作为所述控制程序的执行准备处理而包含:
在所述存储部件内生成用于存储全局变量的全局变量区域的处理;以及
关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,在所述存储部件内生成在该参照者侧控制程序参照全局变量时代替所述全局变量区域而设为参照目的地的同步缓冲器的处理,
所述系统程序作为所述控制程序的执行控制处理而包含:
用于使所有者侧控制程序开始执行的所有者侧开始处理;
如果所有者侧控制程序的执行结束,则将通过该所有者侧控制程序改写的全局变量从所述全局变量区域复制到与该全局变量对应的所述同步缓冲器的复制处理;以及
用于使参照者侧控制程序开始执行的参照者侧开始处理,
生成所述同步缓冲器的处理是,关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将第1同步缓冲器以及第2同步缓冲器作为同步缓冲器的组来生成的处理,
所述系统程序作为所述控制程序的执行准备处理而还包含在所述存储部件内生成最新状态记录区域的处理,
所述复制处理还包含在所述最新状态记录区域中记录复制目的地的同步缓冲器为最新状态的情况的处理,
所述参照者侧开始处理还包含将通过所述最新状态记录区域的内容所确定的处于最新状态的同步缓冲器设为在该参照者侧控制程序的执行中参照的参照目的地状态的处理。
8.如权利要求7所述的PLC的CPU单元,其中,
生成所述同步缓冲器的处理是,关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将所述第1同步缓冲器、所述第2同步缓冲器以及第3同步缓冲器作为同步缓冲器的组来生成的处理,
所述第1同步缓冲器、所述第2同步缓冲器以及所述第3同步缓冲器被不重复地赋予能够从所述全局变量区域复制全局变量的状态即写入目的地状态、所述参照目的地状态、待机状态的其中一个状态,
所述复制处理是复制到处于所述写入目的地状态的同步缓冲器的处理,并且还包含用于调换成为复制目的地的处于所述写入目的地状态的同步缓冲器以及在与该同步缓冲器相同的组中处于所述待机状态的同步缓冲器的写入目的地状态和待机状态的第1调换处理,
所述参照者侧开始处理还包含将属于与设为所述参照目的地状态的同步缓冲器相同的组并且不是所述写入目的地状态的同步缓冲器设为所述待机状态的处理。
9.如权利要求7所述的PLC的CPU单元,其中,
所述第1同步缓冲器以及所述第2同步缓冲器被不重复地赋予能够从所述全局变量区域复制全局变量的状态即写入目的地状态、以及所述参照目的地状态的其中一个状态,
所述复制处理是复制到处于所述写入目的地状态的同步缓冲器的处理,
所述参照者侧开始处理还包含将属于与设为所述参照目的地状态的同步缓冲器相同的组的另一个同步缓冲器设为所述写入目的地状态的处理。
10.如权利要求7所述的PLC的CPU单元,其中,
所述参照者侧开始处理还包含将通过所述最新状态记录区域的内容所确定的处于最新状态的同步缓冲器设为写入禁止状态的处理,
所述系统程序作为所述控制程序的执行控制处理还包含:如果参照者侧控制程序的执行结束,则解除处于所述写入禁止状态的同步缓冲器的所述写入禁止状态的写入禁止解除处理,
所述复制处理是将所述第1同步缓冲器以及所述第2同步缓冲器中不是所述写入禁止状态的其中一个同步缓冲器作为复制目的地进行复制的处理。
11.一种PLC的CPU单元,对控制对象进行控制,该CPU单元包括:
微处理器;
存储部件;以及
通信电路,
所述PLC的CPU单元通过重复输出数据的发送、输入数据的接收、以及使用所述输入数据生成所述输出数据的控制程序的执行,从而控制所述控制对象,
所述存储部件用于存储所述控制程序、控制所述控制程序的执行的系统程序、以及有关所述控制程序使用的变量的属性数据,
所述微处理器执行在所述存储部件中存储的所述系统程序以及所述控制程序,
所述通信电路发送所述输出数据以及接收所述输入数据,
在所述变量为由多个所述控制程序参照的全局变量时,所述属性数据能够包含能够改写该变量的一个所有者侧控制程序的指定、以及只能参照该变量的一个或者多个参照者侧控制程序的指定,
所述系统程序作为所述控制程序的执行准备处理而包含:
在所述存储部件内生成用于存储全局变量的全局变量区域的处理;以及
关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,在所述存储部件内生成在该参照者侧控制程序参照全局变量时代替所述全局变量区域而设为参照目的地的同步缓冲器的处理,
所述系统程序作为所述控制程序的执行控制处理而包含:
用于使所有者侧控制程序开始执行的所有者侧开始处理;
如果所有者侧控制程序的执行结束,则将通过该所有者侧控制程序改写的全局变量从所述全局变量区域复制到与该全局变量对应的所述同步缓冲器的复制处理;以及
用于使参照者侧控制程序开始执行的参照者侧开始处理,
所述参照者侧开始处理还包含将在其执行中参照的所述同步缓冲器设为写入禁止状态的处理,
所述系统程序作为所述控制程序的执行控制处理还包含:如果参照者侧控制程序的执行结束,则解除处于所述写入禁止状态的同步缓冲器的所述写入禁止状态的写入禁止解除处理,
所述复制处理是以复制目的地的所述同步缓冲器不是所述写入禁止状态作为条件而执行的处理。
12.如权利要求11所述的PLC的CPU单元,其中,
生成所述同步缓冲器的处理是,关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量生成一个同步缓冲器的处理。
13.如权利要求11所述的PLC的CPU单元,其中,
生成所述同步缓冲器的处理是,关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将第1同步缓冲器以及第2同步缓冲器作为同步缓冲器的组来生成的处理,
所述系统程序作为所述控制程序的执行准备处理而还包含在所述存储部件内生成最新状态记录区域的处理,
所述复制处理是将所述第1同步缓冲器以及所述第2同步缓冲器中不是所述写入禁止状态的其中一个同步缓冲器作为复制目的地进行复制的处理,进而包含在所述最新状态记录区域中记录复制目的地的同步缓冲器为最新状态的情况的处理,
所述参照者侧开始处理还包含将通过所述最新状态记录区域的内容所确定的处于最新状态的同步缓冲器设为在该参照者侧控制程序的执行中参照的参照目的地状态的处理。
14.一种PLC的CPU单元,对控制对象进行控制,该CPU单元包括:
微处理器;
存储部件;以及
通信电路,
所述PLC的CPU单元通过重复输出数据的发送、输入数据的接收、以及使用所述输入数据生成所述输出数据的控制程序的执行,从而控制所述控制对象,
所述存储部件用于存储所述控制程序、控制所述控制程序的执行的系统程序、以及有关所述控制程序使用的变量的属性数据,
所述微处理器执行在所述存储部件中存储的所述系统程序以及所述控制程序,
所述通信电路发送所述输出数据以及接收所述输入数据,
在所述变量为由多个所述控制程序参照的全局变量时,所述属性数据能够包含能够改写该变量的一个所有者侧控制程序的指定、以及只能参照该变量的一个或者多个参照者侧控制程序的指定,
所述系统程序作为所述控制程序的执行准备处理而包含:
在所述存储部件内生成用于存储全局变量的全局变量区域的处理;以及
关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,在所述存储部件内生成在该参照者侧控制程序参照全局变量时代替所述全局变量区域而设为参照目的地的同步缓冲器的处理,
所述系统程序作为所述控制程序的执行控制处理而包含:
用于使所有者侧控制程序开始执行的所有者侧开始处理;
如果所有者侧控制程序的执行结束,则将通过该所有者侧控制程序改写的全局变量从所述全局变量区域复制到与该全局变量对应的所述同步缓冲器的复制处理;以及
用于使参照者侧控制程序开始执行的参照者侧开始处理,
生成所述同步缓冲器的处理是,关于各个参照者侧控制程序,对于由该参照者侧控制程序参照的每个全局变量,将第1同步缓冲器以及第2同步缓冲器作为同步缓冲器的组来生成的处理,
所述第2同步缓冲器是参照者侧控制程序参照全局变量时设为参照目的地的同步缓冲器,
所述复制处理是复制到所述第1同步缓冲器的处理,
所述参照者侧开始处理还包含将所述第1同步缓冲器中存储的数据复制到所述第2同步缓冲器的处理。
CN201180068881.5A 2011-03-15 2011-03-22 可编程逻辑控制器的cpu单元 Active CN103403684B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2011056772A JP4957853B1 (ja) 2011-03-15 2011-03-15 Plcのcpuユニット、plc用のシステムプログラムおよびplc用のシステムプログラムを格納した記録媒体
JP2011-056772 2011-03-15
PCT/JP2011/056772 WO2012124136A1 (ja) 2011-03-15 2011-03-22 Plcのcpuユニット、plc用のシステムプログラムおよびplc用のシステムプログラムを格納した記録媒体

Publications (2)

Publication Number Publication Date
CN103403684A CN103403684A (zh) 2013-11-20
CN103403684B true CN103403684B (zh) 2017-09-08

Family

ID=46506007

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180068881.5A Active CN103403684B (zh) 2011-03-15 2011-03-22 可编程逻辑控制器的cpu单元

Country Status (5)

Country Link
US (1) US9618924B2 (zh)
EP (1) EP2672384B1 (zh)
JP (1) JP4957853B1 (zh)
CN (1) CN103403684B (zh)
WO (1) WO2012124136A1 (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10274922B2 (en) * 2013-04-16 2019-04-30 Siemens Aktiengesellschaft Programmable logic controller having low latency
JP2015130121A (ja) * 2014-01-08 2015-07-16 ヤマハ株式会社 中継装置
JP6626240B2 (ja) * 2014-03-13 2019-12-25 オムロン株式会社 コントローラ
JP6508192B2 (ja) 2014-03-14 2019-05-08 オムロン株式会社 制御装置及び制御システム
JP2016194831A (ja) * 2015-03-31 2016-11-17 オムロン株式会社 制御装置
JP6488830B2 (ja) * 2015-03-31 2019-03-27 オムロン株式会社 制御装置
JP6540166B2 (ja) 2015-03-31 2019-07-10 オムロン株式会社 制御装置
JP6356736B2 (ja) * 2016-06-29 2018-07-11 ファナック株式会社 コントローラシステムおよび制御方法
JP6388736B1 (ja) * 2017-04-24 2018-09-12 三菱電機株式会社 プログラマブルロジックコントローラシステムおよびエンジニアリングツールプログラム
JP6922583B2 (ja) * 2017-09-15 2021-08-18 オムロン株式会社 情報処理装置、情報処理方法、および、情報処理プログラム
JP6927089B2 (ja) * 2018-03-05 2021-08-25 オムロン株式会社 制御装置、システムプログラム、制御方法
JP6969676B2 (ja) * 2018-04-19 2021-11-24 村田機械株式会社 排他制御システム及び排他制御方法
JP6452924B1 (ja) * 2018-05-11 2019-01-16 三菱電機株式会社 コンパイラおよびプログラミング支援装置
JP6729746B2 (ja) * 2019-04-08 2020-07-22 オムロン株式会社 制御装置
JP7404748B2 (ja) * 2019-10-03 2023-12-26 オムロン株式会社 プログラム開発装置およびプログラム開発装置を実現するためのプログラム

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002149421A (ja) * 2000-11-15 2002-05-24 Denso Corp 情報処理装置
JP2003203062A (ja) * 2002-01-09 2003-07-18 National Institute Of Advanced Industrial & Technology リアルタイム処理用共有メモリ制御方式及び方法、並びにそれを実行させるためのプログラム
JP2007140655A (ja) * 2005-11-15 2007-06-07 Yaskawa Electric Corp モーションコントローラ
CN1993681A (zh) * 2004-07-27 2007-07-04 西门子公司 对保持冗余的存储单元中的一致的存储内容进行保护的方法和装置
CN100514294C (zh) * 2004-04-07 2009-07-15 罗伯特·博世有限公司 避免数据处理设备中的数据不一致性的方法和装置
CN101794131A (zh) * 2009-02-02 2010-08-04 欧姆龙株式会社 产业用控制器
CN101950281A (zh) * 2010-07-06 2011-01-19 北京中星微电子有限公司 一种控制协处理器的方法和装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5119318A (en) * 1989-04-17 1992-06-02 Del Partners L.P. Expert control system for real time management of automated factory equipment
JP3447432B2 (ja) * 1995-06-07 2003-09-16 三菱電機株式会社 ネットワークデータサーバ装置およびプログラマブルロジックコントローラシステム
US6608638B1 (en) * 2000-02-07 2003-08-19 National Instruments Corporation System and method for configuring a programmable hardware instrument to perform measurement functions utilizing estimation of the hardware implentation and management of hardware resources
US7203553B2 (en) * 2002-12-23 2007-04-10 Siemens Energy & Automation, Inc. Methods and structures for utilizing a memory device for a PLC
JP3884417B2 (ja) * 2003-08-08 2007-02-21 株式会社東芝 クラスタシステム及びサーバプログラム
JP2005129026A (ja) * 2003-10-02 2005-05-19 Omron Corp プログラマブルコントローラおよび通信ユニットならびにコントローラシステムおよびデータ処理方法ならびに変数解決方法およびデータ受渡方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002149421A (ja) * 2000-11-15 2002-05-24 Denso Corp 情報処理装置
JP2003203062A (ja) * 2002-01-09 2003-07-18 National Institute Of Advanced Industrial & Technology リアルタイム処理用共有メモリ制御方式及び方法、並びにそれを実行させるためのプログラム
CN100514294C (zh) * 2004-04-07 2009-07-15 罗伯特·博世有限公司 避免数据处理设备中的数据不一致性的方法和装置
CN1993681A (zh) * 2004-07-27 2007-07-04 西门子公司 对保持冗余的存储单元中的一致的存储内容进行保护的方法和装置
JP2007140655A (ja) * 2005-11-15 2007-06-07 Yaskawa Electric Corp モーションコントローラ
CN101794131A (zh) * 2009-02-02 2010-08-04 欧姆龙株式会社 产业用控制器
CN101950281A (zh) * 2010-07-06 2011-01-19 北京中星微电子有限公司 一种控制协处理器的方法和装置

Also Published As

Publication number Publication date
EP2672384A1 (en) 2013-12-11
US20140005805A1 (en) 2014-01-02
WO2012124136A1 (ja) 2012-09-20
EP2672384B1 (en) 2019-07-31
CN103403684A (zh) 2013-11-20
EP2672384A4 (en) 2015-11-11
JP4957853B1 (ja) 2012-06-20
JP2012194666A (ja) 2012-10-11
US9618924B2 (en) 2017-04-11

Similar Documents

Publication Publication Date Title
CN103403684B (zh) 可编程逻辑控制器的cpu单元
JP6247320B2 (ja) 産業プラントの分散制御システムを試験するためのシステムおよび方法
US8756041B2 (en) Industrial simulation using redirected I/O module configurations
TW494356B (en) Real-time process control simulation method and apparatus
US7246052B2 (en) Bus master and bus slave simulation using function manager and thread manager
US20060167667A1 (en) Agent simulation development environment
CN102870053B (zh) 可编程控制器的cpu单元
JP6945646B2 (ja) 産業用プログラマブルロジックコントローラの、回復力を有しているフェイルオーバー
US7142943B2 (en) Method and apparatus for controlling a plant
CN104067186A (zh) 支援装置、记录有支援程序的记录介质及生成可执行程序的方法
JP2710896B2 (ja) 通信オートマトンセットの開発を支援する方法
JPS62502151A (ja) 大型コンピユ−タシステムのコンピユ−タ機能をシミユレ−トするための配列
JP2016224558A (ja) プログラム作成支援装置、制御方法およびプログラム
JP2014146070A (ja) 制御装置、制御方法、およびプログラム
US20180217954A1 (en) Asynchronous Start for Timed Functions
CN103430109B (zh) 可编程控制器的cpu单元以及可编程控制器的cpu单元执行的方法
EP4102362A1 (en) A runtime environment and method for creating an event-driven execution model of an industrial application
CN110209105A (zh) 数据的处理方法、控制系统及控制装置
Nägele CoHLA: Rapid Co-simulation Construction
Rzońca et al. Data acquisition server for mini distributed control system
JP5845629B2 (ja) Plcのcpuユニット、plc用のシステムプログラムおよびplc用のシステムプログラムを格納した記録媒体
JP7231073B2 (ja) 制御装置および制御システム
JP3846540B2 (ja) Plc用制御プログラムの実行シミュレーション装置、並びに、制御プログラム実行シミュレーション機能を有するplc
Ravene et al. Status of the new WEST plasma control system
JP3916727B2 (ja) シミュレーション装置およびその方法、コンピュータ読み取り可能な記録媒体

Legal Events

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