首页> 中国专利> 可编程控制器的CPU单元、可编程控制器用的系统程序以及存储了可编程控制器用的系统程序的记录介质

可编程控制器的CPU单元、可编程控制器用的系统程序以及存储了可编程控制器用的系统程序的记录介质

摘要

作为PLC的控制动作的执行准备处理,系统程序执行如下处理:在存储部件内生成用于存储接收到的输入数据的接收缓存的处理;以及对从控制程序参照的每个输入数据,在存储部件内生成用于将该控制程序作为输入数据的参照目标的输入同步缓存的处理。作为PLC的控制动作的执行控制处理,系统程序执行如下处理:输入复制处理,将接收到的输入数据从接收缓存复制到与该输入数据对应的输入同步缓存中;以及控制程序开始处理,使控制程序开始执行。

著录项

  • 公开/公告号CN102870053A

    专利类型发明专利

  • 公开/公告日2013-01-09

    原文格式PDF

  • 申请/专利权人 欧姆龙株式会社;

    申请/专利号CN201180003421.4

  • 申请日2011-03-22

  • 分类号G05B19/05;

  • 代理机构北京市柳沈律师事务所;

  • 代理人胡金珑

  • 地址 日本京都府

  • 入库时间 2024-02-19 16:59:17

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-10-21

    授权

    授权

  • 2013-02-20

    实质审查的生效 IPC(主分类):G05B19/05 申请日:20110322

    实质审查的生效

  • 2013-01-09

    公开

    公开

说明书

技术领域

本发明涉及在用于控制机械、设备等的动作的PLC(Programmable Logic  Controller,也被称为可编程控制器)中,在输入输出处理和控制程序之间进 行的数据的交换。

背景技术

PLC例如由包括执行控制程序的微处理器的CPU(中央处理器)单元、 负责来自外部的开关或传感器的信号输入和对于外部的继电器(relay)或致 动器(actuator)的信号输出的IO(输入输出)单元等的多个单元构成。CPU 单元通过重复对于其他的单元的输出数据的发送、来自其他的单元的输入数 据的接收、使用输入数据而生成输出数据的控制程序的执行,从而对控制对 象进行控制。控制程序包括根据用户的控制目的而生成的用户程序。控制程 序也可以包括指示在用户程序中执行的动作运算程序。

如专利文献1(日本特开2000-105604号公报)所示,在以往的PLC中, 在各个控制循环中,执行一个时序程序(控制程序)以及一组输出更新和输 入更新。此时,控制循环和控制程序的执行循环相等。

也已知在PLC中通过时分方式执行多个控制程序。

在专利文献2(日本特开2007-140655号公报)中,记载了在通过一个 CPU,对控制电动机的动作控制功能和执行时序运算的PLC功能进行处理的 装置中,在基本时钟的每一个循环,执行“恒周期动作控制处理和各轴处理” 和“高速时序处理”,进一步在各个基本时钟循环内的剩余的时间中,执行 “低速时序处理”或者“非恒周期动作控制处理”的情况。此外,记载了在 低速时序处理在基本时钟循环内没有结束的情况下,在规定的基本时钟次数 量的时间的停止之后执行剩余的处理的情况(例如,0004段落)。

在专利文献3(日本特开2000-293210号公报)中,记载了关于控制装 置的动作,分别准备与周期任务(控制程序)分开进行输入处理和输出处理 的多个更新模块,在各个控制循环中,分别选择若干个更新模块和若干个周 期任务的情况。

现有技术文献

专利文献

专利文献1:特开2000-105604号公报

专利文献2:特开2007-140655号公报

专利文献3:特开2000-293210号公报

发明内容

发明要解决的课题

在以往的、在各个控制循环中执行一组输入输出处理和一个控制程序的 PLC中,由于输入输出处理和控制程序以1对1对应,所以它们之间的输入 数据和输出数据的交换简单。但是,在输入输出处理的执行周期和控制程序 的执行周期不同的情况下,或者,对一组输入输出处理关联多个控制程序的 情况下,或者对一个控制程序关联多组输入输出处理的情况下,存在输入输 出处理和控制程序没有以1对1对应的情况。在这样的情况下,控制程序的 制作者需要熟知与控制程序的执行和输入输出处理的执行有关的系统的执行 控制方式(调度)的基础上,照料而进行编码,使得在输入输出处理和控制 程序之间适当地进行输入数据和输出数据的交换。因此,控制程序制作者的 负担增大。

尤其,在多个控制程序利用同一个输入数据的情况下,存在来自多个控 制程序对于该输入数据的访问相互竞争的情况。此外,通过在控制程序的执 行中的其他的控制程序的执行或者新的输入数据的接收等,存在使用中的输 入数据被覆写的情况。为了防止这些情况,需要进行控制程序自己将该输入 数据复制为自己的本地变量之后使用的处理。

本发明的目的在于,即使输入输出处理和控制程序没有以1对1对应的 情况下,将使控制程序至少能够利用接收到的输入数据,不需要为此的控制 程序自己的处理也能够适当地进行。

用于解决课题的手段

根据本发明的一个方面,提供一种对控制对象进行控制的PLC的CPU 单元。PLC的CPU单元包括微处理器、存储部件以及通信电路。PLC的CPU 单元通过重复输出数据的发送、输入数据的接收、使用输入数据而生成输出 数据的控制程序的执行,从而对控制对象进行控制。存储部件用于控制程序 和系统程序的存储。微处理器执行在存储部件中存储的系统程序和控制程序。 通信电路发送输出数据并且接收输入数据。作为PLC的控制动作的执行准备 处理,系统程序包括:在存储部件内生成用于存储接收到的输入数据的接收 缓存的处理;以及对从控制程序参照的每个输入数据,在存储部件内生成该 控制程序作为输入数据的参照目标的输入同步缓存的处理。作为PLC的控制 动作的执行控制处理,系统程序包括:输入复制处理,将接收到的输入数据 从接收缓存复制到与该输入数据对应的输入同步缓存中;以及控制程序开始 处理,使控制程序开始执行。

优选地,生成输入同步缓存的处理是如下处理:对从控制程序参照的每 个输入数据,作为输入同步缓存的组而生成第1输入同步缓存和第2输入同 步缓存。第1输入同步缓存和第2输入同步缓存被不重复地赋予了如下状态 中的任一个状态:作为可从接收缓存复制输入数据的状态的写入目标状态以 及作为可从控制程序参照的状态的参照目标状态。输入复制处理是复制到处 于写入目标状态的输入同步缓存的处理。

更优选地,生成输入同步缓存的处理是如下处理:对从控制程序参照的 每个输入数据,作为输入同步缓存的组而生成第1输入同步缓存、第2输入 同步缓存以及第3输入同步缓存。第1输入同步缓存、第2输入同步缓存以 及第3输入同步缓存被不重复地赋予了写入目标状态、参照目标状态以及待 机状态中的任一个状态。输入复制处理进一步包括:第1调换处理,对处于 成为了复制目标的写入目标状态的输入同步缓存以及在与该输入同步缓存相 同的组中处于待机状态的输入同步缓存的写入目标状态和待机状态进行调 换。控制程序开始处理进一步包括:第2调换处理,关于要开始执行的控制 程序的输入同步缓存,以存储最新数据的输入同步缓存处于待机状态为条件, 对处于待机状态的输入同步缓存以及处于参照目标状态的输入同步缓存的待 机状态和参照目标状态进行调换。

更优选地,作为PLC的控制动作的执行准备处理,系统程序进一步包括: 对每个控制程序,在存储部件内生成最新输入数据更新标记的处理。输入复 制处理进一步包括:将与该输入复制有关的最新输入数据更新标记设为有效 的处理。控制程序开始处理以与要开始执行的控制程序的输入同步缓存有关 的最新输入数据更新标记设为有效为条件,进一步包括:第2调换处理和将 该最新输入数据更新标记设为无效的处理,由此,实现以存储最新数据的输 入同步缓存处于待机状态为条件而执行的第2调换处理。

或者,更优选地,作为PLC的控制动作的执行准备处理,系统程序进一 步包括:在存储部件内生成最新状态记录区域的处理。输入复制处理进一步 包括:在最新状态记录区域中记录复制目标的输入同步缓存处于最新状态的 情况的处理。控制程序开始处理进一步包括:以由最新状态记录区域的内容 所确定的处于最新状态的输入同步缓存处于待机状态为条件而执行的第2调 换处理。

或者,更优选地,控制程序开始处理进一步包括:第3调换处理,关于 要开始执行的控制程序的输入同步缓存,以存储最新数据的输入同步缓存处 于写入目标状态为条件,对处于写入目标状态的输入同步缓存以及处于参照 目标状态的输入同步缓存的写入目标状态和参照目标状态进行调换。

优选地,生成输入同步缓存的处理是如下处理:对从控制程序参照的每 个输入数据,作为同步缓存的组而生成第1输入同步缓存和第2输入同步缓 存。作为PLC的控制动作的执行准备处理,系统程序进一步包括:在存储部 件内生成最新状态记录区域的处理。输入复制处理进一步包括:在最新状态 记录区域中记录复制目标的输入同步缓存处于最新状态的情况的处理。控制 程序开始处理进一步包括:将由最新状态记录区域的内容所确定的处于最新 状态的输入同步缓存设为在该控制程序的执行中参照的参照目标状态的处 理。

优选地,控制程序开始处理进一步包括:将要开始执行的控制程序参照 的输入同步缓存设为写入禁止状态的处理。作为PLC的控制动作的执行控制 处理,系统程序进一步包括:写入禁止解除处理,若控制程序的执行结束, 则解除处于写入禁止状态的同步缓存的写入禁止状态。输入复制处理是以复 制目标的输入同步缓存不是写入禁止状态为条件而进行的处理。

优选地,生成输入同步缓存的处理是如下处理:对从控制程序参照的每 个输入数据,作为同步缓存的组而生成第1输入同步缓存和第2输入同步缓 存。第2输入同步缓存是在控制程序参照输入数据时作为参照目标的输入同 步缓存。输入复制处理是复制到第1输入同步缓存的处理。控制程序开始处 理进一步包括:在开始执行控制程序之前,将在第1输入同步缓存中存储的 数据复制到第2输入同步缓存的处理。

优选地,作为PLC的控制动作的执行准备处理,系统程序进一步包括: 在存储部件内生成用于存储应发送的输出数据的发送缓存的处理;以及对每 个输出数据,在存储部件内生成用于存储复制到发送缓存的输出数据的输出 同步缓存的处理。作为PLC的控制动作的执行控制处理,系统程序进一步包 括:输出复制处理,将输出数据从输出同步缓存复制到发送缓存中。

更优选地,输出复制处理是如下处理:若控制程序的执行结束,则复制 输出数据。

或者,更优选地,作为PLC的控制动作的执行准备处理,系统程序进一 步包括:在存储部件内生成控制程序存储输出数据的运算用缓存的处理。生 成输出同步缓存的处理是如下处理:对每个输出数据,作为输出同步缓存的 组而生成第1输出同步缓存、第2输出同步缓存以及第3输出同步缓存。第 1输出同步缓存、第2输出同步缓存以及第3输出同步缓存被不重复地赋予 了如下状态中的任一个状态:作为可从运算用缓存复制输出数据的状态的写 入目标状态、作为可进行用于复制到发送缓存中的参照的状态的参照目标状 态、以及待机状态。作为PLC的控制动作的执行控制处理,系统程序进一步 包括:输出同步缓存存储处理,若控制程序的执行结束,则将通过执行该控 制程序而生成的输出数据,从运算用缓存复制到处于写入目标状态的输出同 步缓存,且执行第4调换处理,该第4调换处理对处于成为了复制目标的写 入目标状态的输出同步缓存以及在与该输出同步缓存相同的组中处于待机状 态的输出同步缓存的写入目标状态和待机状态进行调换。输出复制处理是如 下处理:执行第5调换处理,该第5调换处理以存储最新数据的输出同步缓 存处于待机状态为条件,对处于待机状态的输出同步缓存以及处于参照目标 状态的输出同步缓存的待机状态和参照目标状态进行调换,且将输出数据从 成为了参照目标状态的输出同步缓存复制到发送缓存中。

优选地,在每个控制循环,执行输入数据的接收。输入复制处理是如下 处理:以在与控制程序的执行循环开始的控制循环相关的接收定时中接收到 该输入数据为条件,将接收到的输入数据从接收缓存复制到与该输入数据对 应的输入同步缓存中。控制程序开始处理是使控制程序在控制循环的整数倍 的每个执行循环开始执行的处理。

优选地,生成输入同步缓存的处理是如下处理:对从控制程序参照的每 个输入数据,作为输入同步缓存的组而生成第1输入同步缓存、第2输入同 步缓存以及第3输入同步缓存。第1输入同步缓存、第2输入同步缓存以及 第3输入同步缓存被不重复地赋予了如下状态中的任一个状态:作为从接收 缓存可复制输入数据的状态的写入目标状态、作为可从控制程序参照的状态 的参照目标状态、以及待机状态。在每个控制循环,执行输入数据的接收。 输入复制处理是如下处理:复制到处于写入目标状态的输入同步缓存中,且 执行第1调换处理,该第1调换处理对处于成为了复制目标的写入目标状态 的输入同步缓存以及在与该输入同步缓存相同的组中处于待机状态的输入同 步缓存的写入目标状态和待机状态进行调换。作为PLC的控制动作的执行控 制处理,系统程序进一步包括:执行第2调换处理的执行循环输入初期处理, 该第2调换处理以是控制程序的执行循环开始的控制循环为条件,对处于待 机状态的输入同步缓存以及处于参照目标状态的输入同步缓存的待机状态和 参照目标状态进行调换。控制程序开始处理是使控制程序在控制循环的整数 倍的每个执行循环开始执行的处理。

优选地,作为PLC的控制动作的执行准备处理,系统程序进一步包括: 在存储部件内生成用于存储应发送的输出数据的发送缓存的处理;以及对每 个输出数据,在存储部件内生成用于存储复制到发送缓存的输出数据的输出 同步缓存的处理。作为PLC的控制动作的执行控制处理,系统程序进一步包 括:输出复制处理,在生成了该输出数据的控制程序执行的执行循环的下一 个执行循环的最初的控制循环中、成为该输出数据从发送缓存发送的定时, 将输出数据从输出同步缓存复制到发送缓存中。

优选地,作为PLC的控制动作的执行准备处理,系统程序进一步包括: 在存储部件内生成控制程序存储输出数据的运算用缓存的处理。生成输出同 步缓存的处理是如下处理:对每个输出数据,作为输出同步缓存的组而生成 第1输出同步缓存、第2输出同步缓存以及第3输出同步缓存。第1输出同 步缓存、第2输出同步缓存以及第3输出同步缓存被不重复地赋予了如下状 态中的任一个状态:作为从运算用缓存可复制输出数据的状态的写入目标状 态、作为可进行用于复制到发送缓存中的参照的状态的参照目标状态、以及 待机状态。作为PLC的控制动作的执行控制处理,系统程序进一步包括:输 出同步缓存存储处理,若控制程序的执行结束,则将通过执行该控制程序而 生成的输出数据,从运算用缓存复制到处于写入目标状态的输出同步缓存, 且执行第4调换处理,该第4调换处理对处于成为了复制目标的写入目标状 态的输出同步缓存以及在与该输出同步缓存相同的组中处于待机状态的输出 同步缓存的写入目标状态和待机状态进行调换。输出复制处理是如下处理: 在各个控制循环的开始之后、从发送缓存发送输出数据为止的期间,将输出 数据从处于参照目标状态的输出同步缓存复制到发送缓存中,且执行第5调 换处理,该第5调换处理以是控制程序的执行循环开始的控制循环为条件, 对在向发送缓存执行复制之前处于待机状态的输出同步缓存以及处于参照目 标状态的输出同步缓存的待机状态和参照目标状态进行调换,由此,在生成 了该输出数据的控制程序执行的执行循环的下一个执行循环的最初的控制循 环中、成为从发送缓存发送的定时,将输出数据从输出同步缓存复制到发送 缓存中。

根据本发明的另一个方面,提供一种PLC用的系统程序,在包括微处理 器、存储部件以及通信电路,且通过重复输出数据的发送、输入数据的接收、 使用输入数据而生成输出数据的控制程序的执行,从而对控制对象进行控制 的PLC的CPU单元中,PLC用的系统程序存储于存储部件且由微处理器执 行。存储部件用于控制程序和系统程序的存储。微处理器除了系统程序之外, 还执行控制程序。通信电路发送输出数据并且接收输入数据。作为PLC的控 制动作的执行准备处理,系统程序包括:在存储部件内生成用于存储接收到 的输入数据的接收缓存的处理;以及对从控制程序参照的每个输入数据,在 存储部件内生成该控制程序作为输入数据的参照目标的输入同步缓存的处 理。作为PLC的控制动作的执行控制处理,系统程序包括:输入复制处理, 将接收到的输入数据从接收缓存复制到与该输入数据对应的输入同步缓存 中;以及控制程序开始处理,使控制程序开始执行。

优选地,生成输入同步缓存的处理是如下处理:对从控制程序参照的每 个输入数据,作为输入同步缓存的组而生成第1输入同步缓存和第2输入同 步缓存。第1输入同步缓存和第2输入同步缓存被不重复地赋予了如下状态 中的任一个状态:作为可从接收缓存复制输入数据的状态的写入目标状态以 及作为可从控制程序参照的状态的参照目标状态。输入复制处理是复制到处 于写入目标状态的输入同步缓存的处理。

更优选地,生成输入同步缓存的处理是如下处理:对从控制程序参照的 每个输入数据,作为输入同步缓存的组而生成第1输入同步缓存、第2输入 同步缓存以及第3输入同步缓存。第1输入同步缓存、第2输入同步缓存以 及第3输入同步缓存被不重复地赋予了写入目标状态、参照目标状态以及待 机状态中的任一个状态。输入复制处理进一步包括:第1调换处理,对处于 成为了复制目标的写入目标状态的输入同步缓存以及在与该输入同步缓存相 同的组中处于待机状态的输入同步缓存的写入目标状态和待机状态进行调 换。控制程序开始处理进一步包括:第2调换处理,关于要开始执行的控制 程序的输入同步缓存,以存储最新数据的输入同步缓存处于待机状态为条件, 对处于待机状态的输入同步缓存以及处于参照目标状态的输入同步缓存的待 机状态和参照目标状态进行调换。

或者,更优选地,控制程序开始处理进一步包括:第3调换处理,关于 要开始执行的控制程序的输入同步缓存,以存储最新数据的输入同步缓存处 于写入目标状态为条件,对处于写入目标状态的输入同步缓存以及处于参照 目标状态的输入同步缓存的写入目标状态和参照目标状态进行调换。

或者,优选地,生成输入同步缓存的处理是如下处理:对从控制程序参 照的每个输入数据,作为同步缓存的组而生成第1输入同步缓存和第2输入 同步缓存。作为PLC的控制动作的执行准备处理,系统程序进一步包括:在 存储部件内生成最新状态记录区域的处理。输入复制处理进一步包括:在最 新状态记录区域中记录复制目标的输入同步缓存处于最新状态的情况的处 理。控制程序开始处理进一步包括:将由最新状态记录区域的内容所确定的 处于最新状态的输入同步缓存设为在该控制程序的执行中参照的参照目标状 态的处理。

或者,优选地,控制程序开始处理进一步包括:将要开始执行的控制程 序参照的输入同步缓存设为写入禁止状态的处理。作为PLC的控制动作的执 行控制处理,系统程序进一步包括:写入禁止解除处理,若控制程序的执行 结束,则解除处于写入禁止状态的同步缓存的写入禁止状态。输入复制处理 是以复制目标的输入同步缓存不是写入禁止状态为条件而进行的处理。

或者,优选地,生成输入同步缓存的处理是如下处理:对从控制程序参 照的每个输入数据,作为同步缓存的组而生成第1输入同步缓存和第2输入 同步缓存。第2输入同步缓存是在控制程序参照输入数据时作为参照目标的 输入同步缓存。输入复制处理是复制到第1输入同步缓存的处理。控制程序 开始处理进一步包括:在开始执行控制程序之前,将在第1输入同步缓存中 存储的数据复制到第2输入同步缓存的处理。

优选地,作为PLC的控制动作的执行准备处理,系统程序进一步包括: 在存储部件内生成用于存储应发送的输出数据的发送缓存的处理;以及对每 个输出数据,在存储部件内生成用于存储复制到发送缓存的输出数据的输出 同步缓存的处理。作为PLC的控制动作的执行控制处理,系统程序进一步包 括:输出复制处理,将输出数据从输出同步缓存复制到发送缓存中。

更优选地,输出复制处理是如下处理:若控制程序的执行结束,则复制 输出数据。

或者,更优选地,作为PLC的控制动作的执行准备处理,系统程序进一 步包括:在存储部件内生成控制程序存储输出数据的运算用缓存的处理。生 成输出同步缓存的处理是如下处理:对每个输出数据,作为输出同步缓存的 组而生成第1输出同步缓存、第2输出同步缓存以及第3输出同步缓存。第 1输出同步缓存、第2输出同步缓存以及第3输出同步缓存被不重复地赋予 了如下状态中的任一个状态:作为可从运算用缓存复制输出数据的状态的写 入目标状态、作为可进行用于复制到发送缓存中的参照的状态的参照目标状 态、以及待机状态。作为PLC的控制动作的执行控制处理,系统程序进一步 包括:输出同步缓存存储处理,若控制程序的执行结束,则将通过执行该控 制程序而生成的输出数据,从运算用缓存复制到处于写入目标状态的输出同 步缓存,且执行第4调换处理,该第4调换处理对处于成为了复制目标的写 入目标状态的输出同步缓存以及在与该输出同步缓存相同的组中处于待机状 态的输出同步缓存的写入目标状态和待机状态进行调换。输出复制处理是如 下处理:执行第5调换处理,该第5调换处理以存储最新数据的输出同步缓 存处于待机状态为条件,对处于待机状态的输出同步缓存以及处于参照目标 状态的输出同步缓存的待机状态和参照目标状态进行调换,且将输出数据从 成为了参照目标状态的输出同步缓存复制到发送缓存中。

优选地,在每个控制循环,执行输入数据的接收。输入复制处理是如下 处理:以在与控制程序的执行循环开始的控制循环相关的接收定时中接收到 该输入数据为条件,将接收到的输入数据从接收缓存复制到与该输入数据对 应的输入同步缓存中。控制程序开始处理是使控制程序在控制循环的整数倍 的每个执行循环开始执行的处理。

优选地,生成输入同步缓存的处理是如下处理:对从控制程序参照的每 个输入数据,作为输入同步缓存的组而生成第1输入同步缓存、第2输入同 步缓存以及第3输入同步缓存。第1输入同步缓存、第2输入同步缓存以及 第3输入同步缓存被不重复地赋予了如下状态中的任一个状态:作为可从接 收缓存复制输入数据的状态的写入目标状态、作为可从控制程序参照的状态 的参照目标状态、以及待机状态。在每个控制循环,执行输入数据的接收。 输入复制处理是如下处理:复制到处于写入目标状态的输入同步缓存中,且 执行第1调换处理,该第1调换处理对处于成为了复制目标的写入目标状态 的输入同步缓存以及在与该输入同步缓存相同的组中处于待机状态的输入同 步缓存的写入目标状态和待机状态进行调换。作为PLC的控制动作的执行控 制处理,系统程序进一步包括:执行第2调换处理的执行循环输入初期处理, 该第2调换处理以是控制程序的执行循环开始的控制循环为条件,对处于待 机状态的输入同步缓存以及处于参照目标状态的输入同步缓存的待机状态和 参照目标状态进行调换。控制程序开始处理是使控制程序在控制循环的整数 倍的每个执行循环开始执行的处理。

优选地,作为PLC的控制动作的执行准备处理,系统程序进一步包括: 在存储部件内生成用于存储应发送的输出数据的发送缓存的处理;以及对每 个输出数据,在存储部件内生成用于存储复制到发送缓存的输出数据的输出 同步缓存的处理。作为PLC的控制动作的执行控制处理,系统程序进一步包 括:输出复制处理,在生成了该输出数据的控制程序执行的执行循环的下一 个执行循环的最初的控制循环中、成为该输出数据从发送缓存发送的定时, 将输出数据从输出同步缓存复制到发送缓存中。

优选地,作为PLC的控制动作的执行准备处理,系统程序进一步包括: 在存储部件内生成控制程序存储输出数据的运算用缓存的处理。生成输出同 步缓存的处理是如下处理:对每个输出数据,作为输出同步缓存的组而生成 第1输出同步缓存、第2输出同步缓存以及第3输出同步缓存。第1输出同 步缓存、第2输出同步缓存以及第3输出同步缓存被不重复地赋予了如下状 态中的任一个状态:作为可从运算用缓存复制输出数据的状态的写入目标状 态、作为可进行用于复制到发送缓存中的参照的状态的参照目标状态、以及 待机状态。作为PLC的控制动作的执行控制处理,系统程序进一步包括:输 出同步缓存存储处理,若控制程序的执行结束,则将通过执行该控制程序而 生成的输出数据,从运算用缓存复制到处于写入目标状态的输出同步缓存, 且执行第4调换处理,该第4调换处理对处于成为了复制目标的写入目标状 态的输出同步缓存以及在与该输出同步缓存相同的组中处于待机状态的输出 同步缓存的写入目标状态和待机状态进行调换。输出复制处理是如下处理: 在各个控制循环的开始之后、从发送缓存发送输出数据为止的期间,将输出 数据从处于参照目标状态的输出同步缓存复制到发送缓存中,且执行第5调 换处理,该第5调换处理以是控制程序的执行循环开始的控制循环为条件, 对在向发送缓存执行复制之前处于待机状态的输出同步缓存以及处于参照目 标状态的输出同步缓存的待机状态和参照目标状态进行调换,由此,在生成 了该输出数据的控制程序执行的执行循环的下一个执行循环的最初的控制循 环中、成为从发送缓存发送的定时,将输出数据从输出同步缓存复制到发送 缓存中。

根据本发明的再另一个方面,提供一种存储了PLC用的系统程序的记录 介质,在包括微处理器、存储部件以及通信电路,且通过重复输出数据的发 送、输入数据的接收、使用输入数据而生成输出数据的控制程序的执行,从 而对控制对象进行控制的PLC的CPU单元中,PLC用的系统程序存储于存 储部件且由微处理器执行。存储部件用于控制程序和系统程序的存储。微处 理器除了系统程序之外,还执行控制程序。通信电路发送输出数据并且接收 输入数据。作为PLC的控制动作的执行准备处理,系统程序包括:在存储部 件内生成用于存储接收到的输入数据的接收缓存的处理;以及对从控制程序 参照的每个输入数据,在存储部件内生成该控制程序作为输入数据的参照目 标的输入同步缓存的处理。作为PLC的控制动作的执行控制处理,系统程序 包括:输入复制处理,将接收到的输入数据从接收缓存复制到与该输入数据 对应的输入同步缓存中;以及控制程序开始处理,使控制程序开始执行。

优选地,生成输入同步缓存的处理是如下处理:对从控制程序参照的每 个输入数据,作为输入同步缓存的组而生成第1输入同步缓存和第2输入同 步缓存。第1输入同步缓存和第2输入同步缓存被不重复地赋予了如下状态 中的任一个状态:作为可从接收缓存复制输入数据的状态的写入目标状态以 及作为可从控制程序参照的状态的参照目标状态。输入复制处理是复制到处 于写入目标状态的输入同步缓存的处理。

更优选地,生成输入同步缓存的处理是如下处理:对从控制程序参照的 每个输入数据,作为输入同步缓存的组而生成第1输入同步缓存、第2输入 同步缓存以及第3输入同步缓存。第1输入同步缓存、第2输入同步缓存以 及第3输入同步缓存被不重复地赋予了写入目标状态、参照目标状态以及待 机状态中的任一个状态。输入复制处理进一步包括:第1调换处理,对处于 成为了复制目标的写入目标状态的输入同步缓存以及在与该输入同步缓存相 同的组中处于待机状态的输入同步缓存的写入目标状态和待机状态进行调 换。控制程序开始处理进一步包括:第2调换处理,关于要开始执行的控制 程序的输入同步缓存,以存储最新数据的输入同步缓存处于待机状态为条件, 对处于待机状态的输入同步缓存以及处于参照目标状态的输入同步缓存的待 机状态和参照目标状态进行调换。

或者,更优选地,控制程序开始处理进一步包括:第3调换处理,关于 要开始执行的控制程序的输入同步缓存,以存储最新数据的输入同步缓存处 于写入目标状态为条件,对处于写入目标状态的输入同步缓存以及处于参照 目标状态的输入同步缓存的写入目标状态和参照目标状态进行调换。

或者,优选地,生成输入同步缓存的处理是如下处理:对从控制程序参 照的每个输入数据,作为同步缓存的组而生成第1输入同步缓存和第2输入 同步缓存。作为PLC的控制动作的执行准备处理,系统程序进一步包括:在 存储部件内生成最新状态记录区域的处理。输入复制处理进一步包括:在最 新状态记录区域中记录复制目标的输入同步缓存处于最新状态的情况的处 理。控制程序开始处理进一步包括:将由最新状态记录区域的内容所确定的 处于最新状态的输入同步缓存设为在该控制程序的执行中参照的参照目标状 态的处理。

或者,优选地,控制程序开始处理进一步包括:将要开始执行的控制程 序参照的输入同步缓存设为写入禁止状态的处理。作为PLC的控制动作的执 行控制处理,系统程序进一步包括:写入禁止解除处理,若控制程序的执行 结束,则解除处于写入禁止状态的同步缓存的写入禁止状态。输入复制处理 是以复制目标的输入同步缓存不是写入禁止状态为条件而进行的处理。

或者,优选地,生成输入同步缓存的处理是如下处理:对从控制程序参 照的每个输入数据,作为同步缓存的组而生成第1输入同步缓存和第2输入 同步缓存。第2输入同步缓存是在控制程序参照输入数据时作为参照目标的 输入同步缓存。输入复制处理是复制到第1输入同步缓存的处理。控制程序 开始处理进一步包括:在开始执行控制程序之前,将在第1输入同步缓存中 存储的数据复制到第2输入同步缓存的处理。

优选地,作为PLC的控制动作的执行准备处理,系统程序进一步包括: 在存储部件内生成用于存储应发送的输出数据的发送缓存的处理;以及对每 个输出数据,在存储部件内生成用于存储复制到发送缓存的输出数据的输出 同步缓存的处理。作为PLC的控制动作的执行控制处理,系统程序进一步包 括:输出复制处理,将输出数据从输出同步缓存复制到发送缓存中。

更优选地,输出复制处理是如下处理:若控制程序的执行结束,则复制 输出数据。

或者,更优选地,作为PLC的控制动作的执行准备处理,系统程序进一 步包括:在存储部件内生成控制程序存储输出数据的运算用缓存的处理。生 成输出同步缓存的处理是如下处理:对每个输出数据,作为输出同步缓存的 组而生成第1输出同步缓存、第2输出同步缓存以及第3输出同步缓存。第 1输出同步缓存、第2输出同步缓存以及第3输出同步缓存被不重复地赋予 了如下状态中的任一个状态:作为可从运算用缓存复制输出数据的状态的写 入目标状态、作为可进行用于复制到发送缓存中的参照的状态的参照目标状 态、以及待机状态。作为PLC的控制动作的执行控制处理,系统程序进一步 包括:输出同步缓存存储处理,若控制程序的执行结束,则将通过执行该控 制程序而生成的输出数据,从运算用缓存复制到处于写入目标状态的输出同 步缓存,且执行第4调换处理,该第4调换处理对处于成为了复制目标的写 入目标状态的输出同步缓存以及在与该输出同步缓存相同的组中处于待机状 态的输出同步缓存的写入目标状态和待机状态进行调换。输出复制处理是如 下处理:执行第5调换处理,该第5调换处理以存储最新数据的输出同步缓 存处于待机状态为条件,对处于待机状态的输出同步缓存以及处于参照目标 状态的输出同步缓存的待机状态和参照目标状态进行调换,且将输出数据从 成为了参照目标状态的输出同步缓存复制到发送缓存中。

优选地,在每个控制循环,执行输入数据的接收。输入复制处理是如下 处理:以在与控制程序的执行循环开始的控制循环相关的接收定时中接收到 该输入数据为条件,将接收到的输入数据从接收缓存复制到与该输入数据对 应的输入同步缓存中。控制程序开始处理是使控制程序在控制循环的整数倍 的每个执行循环开始执行的处理。

优选地,生成输入同步缓存的处理是如下处理:对从控制程序参照的每 个输入数据,作为输入同步缓存的组而生成第1输入同步缓存、第2输入同 步缓存以及第3输入同步缓存。第1输入同步缓存、第2输入同步缓存以及 第3输入同步缓存被不重复地赋予了如下状态中的任一个状态:作为可从接 收缓存复制输入数据的状态的写入目标状态、作为可从控制程序参照的状态 的参照目标状态、以及待机状态。在每个控制循环,执行输入数据的接收。 输入复制处理是如下处理:复制到处于写入目标状态的输入同步缓存中,且 执行第1调换处理,该第1调换处理对处于成为了复制目标的写入目标状态 的输入同步缓存以及在与该输入同步缓存相同的组中处于待机状态的输入同 步缓存的写入目标状态和待机状态进行调换。作为PLC的控制动作的执行控 制处理,系统程序进一步包括:执行第2调换处理的执行循环输入初期处理, 该第2调换处理以是控制程序的执行循环开始的控制循环为条件,对处于待 机状态的输入同步缓存以及处于参照目标状态的输入同步缓存的待机状态和 参照目标状态进行调换。控制程序开始处理是使控制程序在控制循环的整数 倍的每个执行循环开始执行的处理。

优选地,作为PLC的控制动作的执行准备处理,系统程序进一步包括: 在存储部件内生成用于存储应发送的输出数据的发送缓存的处理;以及对每 个输出数据,在存储部件内生成用于存储复制到发送缓存的输出数据的输出 同步缓存的处理。作为PLC的控制动作的执行控制处理,系统程序进一步包 括:输出复制处理,在生成了该输出数据的控制程序执行的执行循环的下一 个执行循环的最初的控制循环中、成为该输出数据从发送缓存发送的定时, 将输出数据从输出同步缓存复制到发送缓存中。

优选地,作为PLC的控制动作的执行准备处理,系统程序进一步包括: 在存储部件内生成控制程序存储输出数据的运算用缓存的处理。生成输出同 步缓存的处理是如下处理:对每个输出数据,作为输出同步缓存的组而生成 第1输出同步缓存、第2输出同步缓存以及第3输出同步缓存。第1输出同 步缓存、第2输出同步缓存以及第3输出同步缓存被不重复地赋予了如下状 态中的任一个状态:作为可从运算用缓存复制输出数据的状态的写入目标状 态、作为可进行用于复制到发送缓存中的参照的状态的参照目标状态、以及 待机状态。作为PLC的控制动作的执行控制处理,系统程序进一步包括:输 出同步缓存存储处理,若控制程序的执行结束,则将通过执行该控制程序而 生成的输出数据,从运算用缓存复制到处于写入目标状态的输出同步缓存, 且执行第4调换处理,该第4调换处理对处于成为了复制目标的写入目标状 态的输出同步缓存以及在与该输出同步缓存相同的组中处于待机状态的输出 同步缓存的写入目标状态和待机状态进行调换。输出复制处理是如下处理: 在各个控制循环的开始之后、从发送缓存发送输出数据为止的期间,将输出 数据从处于参照目标状态的输出同步缓存复制到发送缓存中,且执行第5调 换处理,该第5调换处理以是控制程序的执行循环开始的控制循环为条件, 对在向发送缓存执行复制之前处于待机状态的输出同步缓存以及处于参照目 标状态的输出同步缓存的待机状态和参照目标状态进行调换,由此,在生成 了该输出数据的控制程序执行的执行循环的下一个执行循环的最初的控制循 环中、成为从发送缓存发送的定时,将输出数据从输出同步缓存复制到发送 缓存中。

本说明书中的“命令”并不限定于用于实现某一功能的、在程序的源列 表中表示的各个命令,也可以意味着这些各个命令或函数等的集合,例如在 英语中应该如instructions这样以复数形式表示。

发明效果

根据本发明,在PLC中,即使输入输出处理和控制程序没有以1对1对 应的情况下,将使控制程序能够利用接收到的输入数据,不需要为此的控制 程序自己的处理也能够进行。

附图说明

图1是表示本发明的实施方式的PLC系统的概略结构的示意图。

图2是表示本发明的实施方式的CPU单元的硬件结构的示意图。

图3是表示在本发明的实施方式的CPU单元中执行的软件结构的示意 图。

图4是表示本发明的实施方式的CPU单元的主存储器的区域结构的示意 图。

图5是表示本发明的实施方式的CPU单元中的系统程序的整体处理的流 程图。

图6是表示实施方式1的输入方向的动作的时序图。

图7是放大表示图6所示的控制循环1和2的时序图。

图8是表示实施方式1的输出方向的动作的时序图。

图9是放大表示图8所示的控制循环1和2的时序图。

图10是表示实施方式1的执行动作的流程图。

图11是表示实施方式2的输入方向的动作的时序图。

图12是表示实施方式2的执行动作的流程图。

图13是表示实施方式3的输入方向的动作的时序图。

图14是表示实施方式3的执行动作的流程图。

图15是表示实施方式4和5的输入方向的动作的时序图。

图16是表示实施方式4的执行动作的流程图。

图17是表示实施方式5的执行动作的流程图。

图18是表示实施方式6和7的输入方向的动作的时序图。

图19是表示实施方式6的执行动作的流程图。

图20是表示实施方式7的执行动作的流程图。

图21是表示实施方式8和9的输出方向的动作的时序图。

图22是表示实施方式8的执行动作的流程图。

图23是表示实施方式9的执行动作的流程图。

图24是表示实施方式10的输入方向的动作的时序图。

图25是表示实施方式10的输出方向的动作的时序图。

图26是表示实施方式10的执行动作的流程图。

图27是表示实施方式11、12以及13的输入方向的动作的时序图。

图28是表示实施方式11、12以及13的输出方向的动作的时序图。

图29是表示实施方式11的执行动作的流程图。

图30是表示实施方式12的执行动作的流程图。

图31是表示实施方式13的执行动作的流程图。

图32是表示本发明的实施方式的连接到CPU单元而使用的PLC支持装 置的硬件结构的示意图。

图33是表示本发明的实施方式的连接到CPU单元而使用的PLC支持装 置的软件结构的示意图。

具体实施方式

参照附图详细说明本发明的实施方式。另外,关于图中的相同或者相等 部分,赋予相同的符号并不重复其说明。

<A.系统结构>

本实施方式的PLC对机械或设备等的控制对象进行控制。本实施方式的 PLC作为其结构元素而包括CPU单元。CPU单元包括微处理器、存储部件 以及通信电路。存储部件用于控制程序和对程序的执行进行控制的系统程序 的存储。微处理器执行在存储部件中存储的系统程序和控制程序。通信电路 发送输出数据并且接收输入数据。首先,参照图1,说明本实施方式的PLC1 的系统结构。

图1是表示本发明的实施方式的PLC系统的概略结构的示意图。参照图 1,PLC系统SYS包括PLC1、经由场网络(field network)与PLC1连接的伺 服电动机驱动器3以及远程IO终端5、作为场(field)设备的检测开关6以 及继电器7。此外,在PLC1上,经由连接电缆10等而连接了PLC支持装置 8。

PLC1包括执行主要的运算处理的CPU单元13、一个以上的IO单元14 以及特殊单元15。这些单元经由PLC系统总线11,能够相互交换数据。此 外,通过电源单元12,对这些单元提供适当的电压的电源。另外,由于作为 PLC1而构成的各个单元是由PLC厂家所提供的,所以一般按每个PLC厂家 独自开发并使用PLC系统总线11。相对于此,如后所述,关于场网络2,其 标准等被公开的情况也比较多,使得不同的厂家的产品之间能够连接。

参照图2,在后面叙述CPU单元13的细节。

IO单元14是有关一般的输入输出处理的单元,负责ON/OFF这样被称 为二值化的数据的输入输出。即,IO单元14收集检测开关6等的传感器处 于正在检测某种对象物的状态(ON)和不检测任何对象物的状态(OFF)中 的哪个状态的信息。此外,IO单元14对继电器7或致动器这样的输出目标, 输出用于使其有效的指令(ON)和用于使其无效的指令(OFF)中的其中一 个。

特殊单元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)以及一个以上的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和其他的部件之间经由各个总线分别耦合。

微处理器100和芯片组102典型地基于通用的计算机结构而构成。即, 微处理器100对从芯片组102根据内部时钟而依次提供的命令代码进行分析 并执行。芯片组102在与所连接的各种部件之间交换内部数据,且生成微处 理器100所需的命令代码。此外,芯片组102具有用于对在微处理器100中 的运算处理的执行的结果所得到的数据等进行高速缓存(cache)的功能。

在以下说明的实施方式1~7中,没有明示微处理器100是多核(multi  core)的情况下,设为是单核。多核意味着核数为2个以上的情况(也包括 核数为2的情况)。

CPU单元13作为存储部件而包括主存储器104以及非易失性存储器 106。

主存储器104是易失性的存储区域(RAM),在接通了对于CPU单元13 的电源之后,保持应在微处理器100中执行的各种程序。此外,主存储器104 还用作微处理器100执行各种程序时的作业用存储器。作为这样的主存储器 104,使用DRAM(动态随机存取存储器)或SRAM(静态随机存取存储器) 的设备。

另一方面,非易失性存储器106以非易失方式保持实时OS(操作系统)、 PLC1的系统程序、用户程序、动作运算程序、系统设定参数这样的数据。这 些程序或数据以微处理器100能够根据需要进行访问的方式复制到主存储器 104中。作为这样的非易失性存储器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的3层。

实时OS200根据CPU单元13的计算机结构而设计,提供用于微处理器 100执行系统程序210和用户程序236的基本的执行环境。典型地,由PLC 的厂家或者专门的软件公司等提供该实时OS200。

系统程序210是用于提供作为PLC1的功能的软件组。具体地说,系统 程序210包括调度程序212、输出处理程序214、输入处理程序216、时序命 令运算程序232、动作运算程序234以及其他的系统程序220。另外,由于一 般输出处理程序214和输入处理程序216是连续地(作为一体)执行,所以 存在将这些程序统称为IO处理程序218的情况。

用户程序236根据用户的控制目的而生成。即,根据要使用PLC系统 SYS而控制的对象的线路(处理)等,任意地设计而成的程序。

如后所述,用户程序236与时序命令运算程序232和动作运算程序234 协作而实现用户的控制目的。即,用户程序236通过利用由时序命令运算程 序232以及动作运算程序234所提供的命令、函数、功能模块等,实现被编 程的动作。因此,也存在将用户程序236、时序命令运算程序232以及动作 运算程序234统称为控制程序230的情况。

由此,CPU单元13的微处理器100执行在存储部件中存储的系统程序 210以及用户程序236。

以下,进一步详细说明各个程序。

如上所述,用户程序236根据用户的控制目的(例如,对象的线路或处 理)而生成。用户程序236典型地成为可在CPU单元13的微处理器100中 执行的对象程序形式。通过在PLC支持装置8等中,编译由梯形语言等描述 的源程序而生成该用户程序236。然后,生成的对象程序形式的用户程序236 从PLC支持装置8经由连接电缆10而传送到CPU单元13,存储在非易失性 存储器106等中。

调度程序212关于输出处理程序214、输入处理程序216以及控制程序 230,控制在各个执行循环中的处理开始和处理中断之后的处理再次开始。更 具体地说,调度程序212控制用户程序236以及动作运算程序234的执行。

在本实施方式的CPU单元13中,将适于动作运算程序234的一定周期 的执行循环(控制循环)采用作为整个处理的共同循环。因此,由于在一个 控制循环内难以完成全部处理,所以根据应执行的处理的优先级等,划分应 在各个控制循环中完成执行的处理以及也可以跨越多个控制循环而执行的处 理。调度程序212管理这些被划分的处理的执行顺序等。更具体地说,调度 程序212在各个控制循环期间内,先执行被赋予了更高优先级的程序。

参照图4,在后面详细叙述输出处理程序214和输入处理程序216。

时序命令运算程序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。

在控制程序的作业区域1042中,通过系统程序210而生成如下区域:生 成与各个输出数据对应的输出同步缓存的输出同步缓存区域1042a以及与各 个输入数据对应的输入同步缓存的输入同步缓存区域1042b。

此外,PLC系统总线发送缓存1043以及场网络发送缓存1045(以下, 将两者统称为“发送缓存”)以及PLC系统总线接收缓存1044以及场网络接 收缓存1046(以下,将两者统称为“接收缓存”)也是通过系统程序210而 生成。

输出处理程序214(图3)将通过用户程序236的执行而生成的输出数据, 从输出同步缓存复制到发送缓存中。即,输出处理程序214包括输出复制命 令。

具体地说,输出处理程序214将发送到PLC系统总线11的输出数据, 从输出同步缓存复制到PLC系统总线发送缓存中。此时,在PLC系统总线发 送缓存1043中再次配置输出数据,使其成为对发送目标的每个单元集中配置 的形式。

此外,输出处理程序214将发送到场网络2的输出数据,从输出同步缓 存复制到场网络发送缓存1045中。此时,在场网络发送缓存1045中,以可 作为串行帧发送的形式,再次配置输出数据。

在PLC系统总线控制器120和/或场网络控制器140需要来自微处理器 100的发送执行指示的情况下,输出处理程序214发行这样的指示。在这些 通信控制器利用系统定时器108或自己具有的定时器等自己执行发送的情况 下,不需要微处理器100发行发送执行指示。

输入处理程序216将PLC系统总线控制器120和/或场网络控制器140 接收并存储在接收缓存中的输入数据复制到输入同步缓存中。即,输入处理 程序216包括输入复制命令。

具体地说,输入处理程序216将PLC系统总线控制器120接收并存储在 PLC系统总线接收缓存1044中的输入数据和/或场网络控制器140接收并存 储在场网络接收缓存1046中的输入数据复制到输入同步缓存中。此时,以控 制程序230适合使用的形式,再次配置输入数据。

在PLC系统总线控制器120和/或场网络控制器140需要来自微处理器 100的接收执行指示的情况下,输入处理程序216发行这样的指示。在这些 通信控制器利用系统定时器108或自己具有的定时器等自己执行接收的情况 下,不需要发行来自微处理器100的接收执行指示。

在作为场网络2而使用EtherCAT(注册商标)的情况下,从场网络控制 器140发送的帧与从动设备进行数据交换的同时,在从动设备巡回一圈并返 回。由于场网络控制器140自动接收返回的帧,所以不需要微处理器100发 行接收执行指示。

PLC系统总线控制器120的DMA控制电路122将在PLC系统总线发送 缓存1043中存储的输出数据传送到PLC系统总线控制器120的缓存储存器 146,且将在缓存存储器146中存储的输入数据传送到PLC系统总线接收缓 存1044。该传送的输入数据存储在PLC系统总线接收缓存1044中。

场网络控制器140的DMA控制电路142将在场网络发送缓存1045中存 储的输出数据传送到场网络控制器140的缓存存储器146,且将在缓存存储 器146中存储的输入数据传送到场网络接收缓存1046。该传送的输入数据存 储在场网络接收缓存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作为与输入数据的输入有关的基本的处理(命令)而包括 以下处理。即,在系统程序210的执行阶段,依次执行PLC1的控制动作的 执行准备处理和PLC1的控制动作的执行控制处理。更具体地说,作为PLC1 的控制动作的执行准备处理,系统程序210包括以下的(1)和(2)的处理。

(1)在主存储器104(存储部件)内生成用于存储接收到的输入数据的 接收缓存的处理。

(2)对从控制程序230参照的每个输入数据,在主存储器104(存储部 件)内(输入同步缓存区域1042b)生成该控制程序230作为输入数据的参 照目标的输入同步缓存的处理。

此外,作为PLC1的控制动作的执行控制处理,系统程序210包括以下 的(3)和(4)的处理。

(3)将接收到的输入数据从接收缓存复制到与该输入数据对应的输入同 步缓存中的输入复制处理。

(4)使控制程序230开始执行的控制程序开始处理。

此外,在有多个控制程序230的情况下,关于各个控制程序,对从该控 制程序参照的每个输入数据生成输入同步缓存。

此外,系统程序210作为与输出数据的输出有关的基本的处理(命令) 而包括以下程序。即,在系统程序210的执行阶段,依次执行PLC1的控制 动作的执行准备处理和PLC1的控制动作的执行控制处理。更具体地说,作 为PLC1的控制动作的执行准备处理,系统程序210包括以下的(5)和(6) 的处理。

(5)在主存储器104(存储部件)内(输出同步缓存区域1042a)生成 用于存储应发送的输出数据的发送缓存的处理。

(6)对每个输出数据,在主存储器104(存储部件)内生成用于存储复 制到发送缓存中的输出数据的输出同步缓存的处理。

此外,作为PLC1的控制动作的执行控制处理,系统程序210还可以包 括以下的(7)的处理。

(7)将输出数据从输出同步缓存复制到发送缓存中的输出复制处理。

此外,控制程序230的执行准备处理可包括对应于具体的组装方式的其 他的执行准备处理。在控制动作的执行准备处理中包含的各个处理的执行顺 序被适当地设计。

此外,控制程序230的执行控制处理可包括对应于具体的组装方式的其 他的执行控制处理。在控制动作的执行控制处理中包含的各个处理伴随着重 复执行控制程序230而被重复执行,其执行顺序依赖于具体的实施方式。

图5是表示本发明的实施方式的CPU单元中的系统程序的整体处理的流 程图。如图5所示,首先,执行PLC1的控制动作的执行准备处理(步骤S1), 接着,执行PLC1的控制动作的执行控制处理(步骤S2)。在控制程序230 的执行准备处理(步骤S1)中包含的各个处理的执行顺序被适当地设计。同 样地,在控制程序230的执行控制处理(步骤S2)中包含的各个处理伴随着 重复执行控制程序230而被重复执行,其执行顺序依赖于具体的组装方式。

以下,作为具体的组装方式的典型例子,说明实施方式1~13。

<F.单一缓存方式(实施方式1)>

(f1:概要)

在实施方式1中,假设多个控制程序通过时分方式执行的情况。特别说 明以下结构:对从各个控制程序参照的每个输入数据,分别设置输入同步缓 存,且分别设置了各个控制程序存储输出数据的输出同步缓存的结构。

(f2:时序图)

图6是表示实施方式1的输入方向的动作的时序图。图7是放大表示图 6所示的控制循环1和2的时序图。另一方面,图8是表示实施方式1的输 出方向的动作的时序图。图9是放大表示图8所示的控制循环1和2的时序 图。

图6~图9表示两个控制程序(控制程序1和2)通过时分方式执行的例 子。在该例子中,对从控制程序1和2参照的每个输入数据,分别设置了输 入同步缓存1和2,且分别设置了各个控制程序1和2存储输出数据的输出 同步缓存1和2。另外,在输入同步缓存1和2中,经由接收缓存分别传送 输入数据,且从输出同步缓存1和2,输出数据分别传送到发送缓存。

另外,在图6~图9中,从简化说明的观点,表示了通过时分方式执行两 个控制程序的例子,但能够任意设定通过时分方式执行的控制程序的数目。 这一点并不限定于本实施方式,对于后述的其他的实施方式也是相同的。因 此,即使是为便于说明而仅表示一个要执行的控制程序的实施方式,若参考 本实施方式的说明(尤其是图6~图9),则能够容易理解通过时分方式执行多 个控制程序的动作。

图6~图9的控制程序1和2各自沿着时间轴而表示的虚线的圆角的矩形 表示对应的控制程序的执行循环。例如,控制程序1将一次控制循环作为执 行循环,同样地,控制程序2将两次控制循环作为执行循环。另外,以下, 在用于说明的时序图中,使用同样的方法表示执行循环。

图6和图8表示的系统程序的执行时间对应于从控制循环的开始起在该 控制循环中最初开始执行的控制程序的执行开始为止的期间。在该期间,系 统程序进行输出数据的发送、从接收缓存到输入同步缓存的输入数据的复制 (由通信控制器进行输入数据的接收)、控制程序的执行开始的执行控制。存 在根据实施方式而该期间的处理内容不同的情况。

在图7和图9所示的放大图中,表示在控制程序的执行结束之后还有系 统程序的执行时间。在该期间,系统程序进行从输出同步缓存到发送缓存的 输出数据的复制、在存在应接着执行开始的控制程序的情况下进行该执行开 始的控制。为了便于说明,在图6、图8以及其他实施方式的时序图中,省 略了在执行系统程序的该微小的时间的图示。

若有控制循环开始中断,则实时OS中断控制程序的执行,执行系统程 序。

在任一实施方式中,从容易将输入数据的接收周期和输出数据的发送周 期设为一定的观点出发,控制循环的周期一定是比较好的,但并不是必须的。 例如,在控制程序没有在设定的执行循环内结束的情况下,也可以通过延长 在执行循环内的最后的控制循环时间而延长执行循环时间。

图6~图9表示沿着控制程序1和2各自的时间轴的、该控制程序的执行 状态。更具体地说,控制程序1和2处于以下的任一状态:在应执行预定的 处理的执行循环内还没有开始处理的状态的“执行前”、在该执行循环内正在 进行处理的“执行中”、以及在该执行循环内已经完成处理的“执行结束”。

通过在执行状态记录区域中记录各个控制程序的执行状态,从而表示这 样的执行状态。系统程序210在“PLC1的控制动作的执行准备处理”(图5 所示的步骤S1)中,在主存储器104内的控制程序的作业区域1042中生成 执行状态记录区域。能够适当地设定执行状态的记录的方式。例如,能够采 用如下方式等:对每个执行状态,记录用于确定处于该执行状态的控制程序 的信息(控制程序的名称或识别号等)的方式;对每个控制程序,设置用于 表示执行状态的标记或者状态变量而使用该标记或者状态变量的值而记录的 方式。例如若“执行前标记”成为有效(ON),则将执行状态标记使用作为 “执行前”状态,若“执行中标记”成为有效(ON),则将执行状态标记使 用作为“执行中”状态等。作为这样的执行状态变量,例如若状态变量的值 为“1”,则能够设定为“执行前”,若是“2”,则设定为“执行中”。以下, 关于要说明的其他实施方式的控制程序的执行状态的管理,也是相同的。

在通信电路(PLC系统总线控制器120和/或场网络控制器140)接收到 输入数据之后,一个控制程序请求使用多个输入数据的情况下,集中进行关 于这些输入数据的、从接收缓存复制到对应的输入同步缓存的复制。输入同 步缓存以如此集中进行复制的单位进行分组(group)。对同一分组的输入同 步缓存,共同地设定输入同步缓存的写入禁止状态。对这样的同一分组的输 入同步缓存共同地设定输入同步缓存的状态,关于以下说明的其他的实施方 式中的“参照目标”状态、“写入目标”状态、“待机”状态、“最新”状态中 的任一状态都是相同的。在将输入数据复制到由2个或者3个输入同步缓存 构成的输入同步缓存的组中的情况下,在一次集中复制中成为复制目标的是 组中的一个输入同步缓存,所以属于同一组的2个或者3个输入同步缓存分 别属于不同的分组。

在实施方式1中,没有设定输出同步缓存的状态,但在以下说明的其他 的实施方式中设定了输出同步缓存的状态的情况下,与设定了输入同步缓存 的状态的情况相同地,输出同步缓存以输出数据集中复制到发送缓存的单位 进行分组。对属于同一分组的输出同步缓存共同地设定输出同步缓存的状态。

通过在写入禁止状态记录区域中记录输入同步缓存处于“写入禁止”状 态,从而表示这样的输入同步缓存的写入禁止状态。系统程序210在“PLC1 的控制动作的执行准备处理”(图5所示的步骤S1)中,在主存储器104内 的控制程序的作业区域1042中生成写入禁止状态记录区域。能够适当地决定 输入同步缓存为“写入禁止”状态的记录的方式。例如,能够采用如下方式 等:记录用于确定在以集中进行复制处理的单位进行了分组后的输入同步缓 存的分组中、处于“写入禁止”状态的分组的信息(输入同步缓存的分组的 识别号等)的方式;对这样的输入同步缓存的每个分组,设置用于表示是否 处于“写入禁止”状态的标记或者状态变量而使用该标记或者状态变量的值 而记录的方式。

在实施方式1中,输出同步缓存对每个输出数据生成一个,且也不设定 为“写入禁止”状态。因此,也可以将控制程序230存储输出数据的通常的 变量区域用作输出同步缓存。

也可以在与图6所示的接收定时和/或图8所示的发送定时不同的定时, 进行追加的接收和/或发送。此时,也可以设置与在这样的追加的接收中处理 的输入数据和/或在追加的发送中处理的输出数据有关的追加的输入同步缓 存和/或输出同步缓存,并使用这些缓存在微处理器100的空闲时间中执行追 加的控制程序。

在图6所示的时序图中,由于控制循环2中的输入数据的接收之后输入 同步缓存2立即成为“写入禁止”状态,所以不进行对于输入同步缓存2的 输入数据的复制。由此,在控制循环1中开始执行的控制程序2从输入同步 缓存2中读出在控制循环2中再次开始了执行之后也没有更新的输入数据, 所以能够使用从执行开始至执行结束为止具有一贯性的输入数据来执行处 理。

此外,如在控制循环3中所示,在控制程序2短时间内结束执行的情况 下,由于在控制循环4中已经解除了输入同步缓存2的写入禁止状态,所以 进行控制循环4中对于输入同步缓存2的复制。

(f3:流程图)

图10是表示实施方式1的执行动作的流程图。参照图10,微处理器100 执行系统程序210中的、PLC1的控制动作的执行准备处理(步骤S1)。接着, 微处理器100执行系统程序210中的、PLC1的控制动作的执行控制处理(图 5所示的步骤S2)。该PLC1的控制动作的执行控制处理的详细的一例相当于 步骤S200~S238。

首先,微处理器100等待控制循环开始的中断信号(步骤S200)。若接 收到控制循环开始的中断信号(在步骤S200中“是”),则微处理器100将从 当前的控制循环开始的控制程序设定为“执行前”状态,且对通信电路(PLC 系统总线控制器120和/或场网络控制器140)指示发送执行(步骤S202)。 即,在控制程序1的执行循环从当前的控制循环开始的情况下,将控制程序 1设定为“执行前”状态。同样地,在控制程序2的执行循环从当前的控制 循环开始的情况下,将控制程序2设定为“执行前”状态。

此外,响应于发送执行的指示,存储在发送缓存(PLC系统总线发送缓 存1043和/或场网络发送缓存1045)中的数据发送到其他的单元等。

之后,微处理器100等待来自通信电路(PLC系统总线控制器120和/ 或场网络控制器140)的接收完成通知(步骤S204)。

通信电路将输入数据存储在主存储器104的接收缓存(PLC系统总线接 收缓存1044和/或场网络接收缓存1046)之后,发行接收完成通知。若接收 到来自通信电路的接收完成通知(在步骤S204中“是”),则微处理器100将 存储在接收缓存中的输入数据复制到输入同步缓存1和输入同步缓存2中(步 骤S206)。其中,在输入同步缓存1和输入同步缓存2中,不对成为了“写 入禁止”状态的输入同步缓存进行输入数据的复制。

之后,微处理器100判断控制程序1的执行状态(步骤S210)。在控制 程序1处于“执行前”状态的情况下(在步骤S210中“执行前”),微处理器 100将输入同步缓存1的执行状态设定为“写入禁止”,将控制程序1的执行 状态设定为“执行中”状态,进一步开始控制程序1的执行(步骤S212)。

在控制程序1处于“执行中”状态的情况下(在步骤S210中“执行中”), 微处理器100开始执行控制程序1的未执行的部分(步骤S214)。另外,不 变更输入同步缓存1的执行状态“写入禁止”,维持原样。

在控制程序1处于“执行结束”状态的情况下(在步骤S210中“执行结 束”),处理进入步骤S230。

若在步骤S212或S214中开始(或者,再次开始)控制程序1的执行, 则微处理器100等待控制程序1的执行结束通知或者下一个控制循环开始的 中断信号(步骤S216)。另外,通过在步骤S212或者S214中开始(或者, 再次开始)控制程序1的执行,从而在微处理器100中执行的处理从基于系 统程序的处理切换为基于控制程序1的处理。即,从控制程序1的执行开始 至执行结束为止的期间,微处理器100不执行系统程序。然后,若在结束控 制程序1的执行之前有下一个控制循环开始的中断,则实时OS200中断在微 处理器100中的控制程序1的执行,再次开始系统程序的执行。或者,若有 控制程序1的执行结束的通知(控制程序1的执行结束通知),则微处理器 100中的执行对象从控制程序1返回到系统程序。

若接收到控制程序1的执行结束通知(在步骤S216中“执行结束通知), 则微处理器100将控制程序1的执行状态设定为“执行结束”,将存储在输出 同步缓存1中的输出数据复制到发送缓存(PLC系统总线发送缓存1043和/ 或场网络发送缓存1045)中,解除输入同步缓存1的“写入禁止”状态(步 骤S218)。然后,处理进入步骤S230。

另一方面,在控制程序1的执行结束通知之前接收到下一个控制循环开 始的中断(在步骤S216中“控制循环开始”),则在微处理器100中执行中的 控制程序1被中断,微处理器100再次执行步骤S202以下的处理。其中,图 6~9表示如下编程的情况:控制程序1的执行循环等于控制循环,控制程序1 在控制循环内只包括要执行结束的处理量的情况。若控制程序1的执行未在 控制循环内结束,则控制程序1的执行循环被延长。即,控制程序1的执行 被中断,在下一个控制循环中执行控制程序1的未执行的部分。或者,也可 以在控制程序1的执行未在控制循环(执行循环)内结束的阶段,判断为发 生错误而进行错误处理。关于图6~9的控制程序2或其他的实施方式,在控 制程序未在执行循环内结束的情况下,同样地进行执行循环的延长或错误处 理。

在步骤S230中,微处理器100判断控制程序2的执行状态(步骤S230)。 在控制程序2处于“执行前”状态的情况下(在步骤S220中“执行前”),微 处理器100将输入同步缓存2的执行状态设定为“写入禁止”,将控制程序2 的执行状态设定为“执行中”状态,进一步开始控制程序2的执行(步骤S232)。

在控制程序2处于“执行中”状态的情况下(在步骤S230中“执行中”), 微处理器100开始执行控制程序2的未执行的部分(步骤S234)。另外,不 变更输入同步缓存2的执行状态“写入禁止”,维持原样。

在控制程序2处于“执行结束”状态的情况下(在步骤S230中“执行结 束”),处理进入步骤S200。即,等待下一个控制循环开始的中断信号。

若在步骤S232或S234中开始(或者,再次开始)控制程序2的执行, 则微处理器100等待控制程序2的执行结束通知或者下一个控制循环开始的 中断信号(步骤S236)。另外,通过在步骤S232或者S234中开始(或者, 再次开始)控制程序2的执行,从而在微处理器100中执行的处理从基于系 统程序的处理切换为基于控制程序2的处理。即,从控制程序2的执行开始 至执行结束为止的期间,微处理器100不执行系统程序。然后,若在结束控 制程序2的执行之前有下一个控制循环开始的中断,则实时OS200中断在微 处理器100中的控制程序2的执行,再次开始系统程序的执行。或者,若有 控制程序2的执行结束的通知(控制程序2的执行结束通知),则微处理器 100中的执行对象从控制程序2返回到系统程序。

若接收到控制程序2的执行结束通知(在步骤S236中“执行结束通知), 则微处理器100将控制程序2的执行状态设定为“执行结束”,将存储在输出 同步缓存2中的输出数据复制到发送缓存(PLC系统总线发送缓存1043和/ 或场网络发送缓存1045)中,解除输入同步缓存2的“写入禁止”状态(步 骤S238)。然后,处理进入步骤S200。即,等待下一个控制循环开始的中断 信号。

另一方面,在控制程序2的执行结束通知之前接收到下一个控制循环开 始的中断(在步骤S236中“控制循环开始”),则在微处理器100中执行中的 控制程序2被中断,微处理器100再次执行步骤S202以下的处理。

(f4:总结)

如上所述,在实施方式1中,作为与输入数据的输入有关的PLC1的控 制动作的执行准备处理,系统程序210包括以下的(a)和(b)的处理。

(a)在主存储器104(存储部件)内生成用于存储接收到的输入数据的 接收缓存(图4所示的PLC系统总线接收缓存1044和场网络接收缓存1046) 的处理(图10所示的步骤S1)。

(b)对从控制程序参照的每个输入数据,在主存储器104(存储部件) 内(图4所示的输入同步缓存区域1042b)生成该控制程序作为输入数据的 参照目标的一个输入同步缓存(图6和图7所示的输入同步缓存1和2)的 处理(图10所示的步骤S1)。

此外,在实施方式1中,作为PLC1的控制动作的执行控制处理,系统 程序210包括以下的(c)~(e)的处理。

(c)以复制目标的输入同步缓存不是“写入禁止”状态为条件,将接收 到的输入数据从接收缓存(图4所示的PLC系统总线接收缓存1044和场网 络接收缓存1046)复制到与该输入数据对应的输入同步缓存的输入复制处理 (图10所示的步骤S206)。

(d)在将要开始执行的控制程序参照的输入同步缓存设为“写入禁止” 状态之后,将控制程序开始执行的控制程序开始处理(图10所示的步骤S212 和S232)。

(e)若控制程序的执行结束,则解除处于写入禁止状态的同步缓存的写 入禁止状态的写入禁止解除处理(图10所示的步骤S218和S238)。

根据如上所述的实施方式1的有关输入数据的处理方式,即使存在对于 输入同步缓存的“写入禁止”状态的期间,例如在对于输入输出处理和各个 控制程序共同的控制循环中进行执行的优先级控制的情况下,控制程序也能 够参照该执行开始时的最新的输入数据。即,这样的情况下,能够通过“写 入禁止”状态的期间以外的期间的输入复制处理,取得应在控制程序中参照 的输入数据。

此外,根据实施方式1的有关输入数据的处理方式,由于关于各个控制 程序,对从该控制程序参照的每个输入数据单一地设置了输入同步缓存,所 以即使输入数据的数目和/或控制程序的数目多,输入同步缓存占据的存储器 大小也小。此外,在输入同步缓存为单一的点上,算法简单,所以能够简化 系统程序的设计。

另一方面,在实施方式1中,系统程序210若包括与输出数据的输出有 关的处理,则作为PLC1的控制动作的执行准备处理,包括以下的(α)~(γ) 的处理。

(α)在主存储器104(存储部件)内生成用于存储接收到的输入数据的 接收缓存(图4所示的PLC系统总线接收缓存1044和场网络接收缓存1046) 的处理(图10所示的步骤S1)以及用于存储应发送的输出数据的发送缓存 (图4所示的PLC系统总线发送缓存1043和场网络发送缓存1045)的处理 (图10所示的步骤S1)。

(β)对从控制程序参照的每个输入数据,在主存储器104(存储部件) 内(图4所示的输入同步缓存区域1042b)生成该控制程序作为输入数据的 参照目标的一个输入同步缓存(图6和图7所示的输入同步缓存1和2)的 处理(图10所示的步骤S1)。

(γ)在主存储器104(存储部件)内(图4所示的输入同步缓存区域1042b) 生成用于存储复制到发送缓存的输出数据的输出同步缓存(图8和图9所示 的输出同步缓存1和2)的处理(图10所示的步骤S1)。

此外,在实施方式1中,作为PLC1的控制动作的执行控制处理,系统 程序210包括以下的(δ)~(ζ)的处理。

(δ)将接收到的输入数据从接收缓存(图4所示的PLC系统总线接收 缓存1044和场网络接收缓存1046)复制到与该输入数据对应的输入同步缓 存的输入复制处理(图10所示的步骤S206)。

(ε)将控制程序开始执行的控制程序开始处理(图10所示的步骤S212 和S232)。

(ζ)若控制程序的执行结束,则将通过该控制程序的执行而生成的输出 数据从输出同步缓存复制到发送缓存的输出复制处理(图10所示的步骤S218 和S238)。

根据如上所述的实施方式1的有关输出数据的处理方式,对每个输出数 据来说,一个输出同步缓存足够。

此外,根据实施方式1的有关输出数据的处理方式,以控制程序的执行 结束为契机,输出数据从输出同步缓存复制到发送缓存。因此,能够避免控 制程序的执行中的还没有确定的输出数据被发送的情况。此外,不论是否处 于控制程序的执行中,在对于发送缓存的复制后的最初的发送定时发送输出 数据,所以能够迅速地发送所确定的输出数据。

<G.2输入同步缓存的依次复制方式(实施方式2)>

(g1:概要)

在上述的实施方式1中,表示了采用了如下结构的例子:在控制程序的 执行中,将输入同步缓存设为“写入禁止”状态,在成为了“写入禁止”状 态的输入同步缓存中不复制输入数据的结构。相对于此,说明如下结构:不 论是否处于控制程序的执行状态,能够将在接收缓存中存储的输入数据复制 到输入同步缓存中的结构。

更具体地说,在实施方式2中,作为输入同步缓存,对从控制程序参照 的每个输入数据,以输入同步缓存的组而生成2个输入同步缓存。

(g2:时序图)

图11是表示实施方式2的输入方向的动作的时序图。图11中表示通过 时分方式执行两个控制程序(控制程序1和2)的例子。在该例子中,关于 从控制程序1参照的输入数据,设置一组输入同步缓存(输入同步缓存1A 和1B),同样地,关于从控制程序2参照的输入数据,设置一组输入同步缓 存(输入同步缓存2A和2B)。

另外,由于实施方式2的输出方向的动作(有关输出数据的处理)与上 述的实施方式1中的动作(在图8所示的时序图中记载的处理)相同,所以 在此不重复其详细的说明。

在实施方式2中,从接收缓存的输入数据的复制,始终对在一组输入同 步缓存中特定的一个(输入同步缓存1A或者2A)进行。输入数据在控制程 序的执行开始前从输入同步缓存的一个(输入同步缓存1A或者2A)复制到 另一个(输入同步缓存1B或者2B)。从控制程序参照在另一个输入同步缓存 (输入同步缓存1B或者2B)中存储的输入数据。

即,对于在一组输入同步缓存中的一个输入同步缓存,不论控制程序的 执行状态,都能够始终从接收缓存复制输入数据。对于另一个输入同步缓存, 不论从接收缓存的输入数据的复制动作,都能够参照控制程序在该输入同步 缓存中存储的输入数据。

(g3:流程图)

图12是表示实施方式2的执行动作的流程图。在图12的流程图中,对 于与图10所示的流程图执行相同的处理的步骤,赋予与图10相同的步骤号。

图12所示的流程图与图10所示的流程图的不同点在于,代替步骤S206、 S122、S218、S232、S238,分别执行步骤S206A、S122A、S218A、S232A、 S238A的处理。以下,主要说明这些不同点,对于其他的处理不重复详细的 说明。

若接收到来自通信电路的接收完成通知(在步骤S204中“是”),则微处 理器100将在接收缓存(PLC系统总线接收缓存1044和/或场网络接收缓存 1046)中存储的输入数据复制到输入同步缓存1A和输入同步缓存2A中(步 骤S206A)。由于输入同步缓存1A和2A没有设定为“写入禁止”状态,所 以不限制输入数据的复制。

在控制程序1处于“执行前”状态的情况下(在步骤S210中“执行前”) 执行的步骤S212A中,微处理器100将在输入同步缓存1A中存储的输入数 据复制到输入同步缓存1B中,将控制程序1的执行状态设定为“执行中”状 态,进一步开始控制程序1的执行(步骤S212A)。

另外,在控制程序1处于“执行中”状态的情况下(在步骤S210中“执 行中”)执行的步骤S214中,不进行在输入同步缓存1A中存储的输入数据 对于输入同步缓存1B的复制。

若接收到控制程序1的执行结束通知的情况下(在步骤S216中“执行结 束通知)执行的步骤S218A中,微处理器100将控制程序1的执行状态设定 为“执行结束”,将在输出同步缓存1中存储的输出数据复制到发送缓存(PLC 系统总线发送缓存1043和/或场网络发送缓存1045)中(步骤S218A)。

在控制程序2处于“执行前”状态的情况下(在步骤S230中“执行前”) 执行的步骤S232A中,微处理器100将在输入同步缓存2A中存储的输入数 据复制到输入同步缓存2B中,将控制程序2的执行状态设定为“执行中”状 态,进一步开始控制程序2的执行(步骤S232A)。

另外,在控制程序2处于“执行中”状态的情况下(在步骤S230中“执 行中”)执行的步骤S234中,不进行在输入同步缓存2A中存储的输入数据 对于输入同步缓存2B的复制。

若接收到控制程序2的执行结束通知的情况下(在步骤S236中“执行结 束通知)执行的步骤S238A中,微处理器100将控制程序2的执行状态设定 为“执行结束”,将在输出同步缓存2中存储的输出数据复制到发送缓存(PLC 系统总线发送缓存1043和/或场网络发送缓存1045)中(步骤S238A)。

(g4:总结)

如上所述,在实施方式2中,作为与输入数据的输入有关的PLC1的控 制动作的执行准备处理,系统程序210包括以下的(a)和(b)的处理。

(a)在主存储器104(存储部件)内生成用于存储接收到的输入数据的 接收缓存(图4所示的PLC系统总线接收缓存1044和场网络接收缓存1046) 的处理(图10所示的步骤S1)。

(b)对从控制程序参照的每个输入数据,在主存储器104(存储部件) 内(图4所示的输入同步缓存区域1042b)作为同步缓存的组而生成第1输 入同步缓存(图11所示的输入同步缓存1A、2A)以及第2输入同步缓存(图 11所示的输入同步缓存1B、2B)的处理(图10所示的步骤S1)。这里,第 2输入同步缓存是控制程序作为输入数据的参照目标的输入同步缓存。

此外,在实施方式2中,作为PLC1的控制动作的执行控制处理,系统 程序210包括以下的(c)和(d)的处理。

(c)将接收到的输入数据从接收缓存(图4所示的PLC系统总线接收 缓存1044和场网络接收缓存1046)复制到与该输入数据对应的第1输入同 步缓存(图11所示的输入同步缓存1A、2A)的输入复制处理(图12所示的 步骤S206A)。

(d)在将第1输入同步缓存(图11所示的输入同步缓存1A、2A)中 存储的数据复制到第2输入同步缓存(图11所示的输入同步缓存1B、2B) 之后,将控制程序开始执行的控制程序开始处理(图12所示的步骤S212A 和S232A)。

根据如上所述的实施方式2的处理方式,能够始终进行从接收缓存对于 第1输入同步缓存的输入数据的复制,进一步在控制程序的执行开始时进行 从第1输入同步缓存到第2输入同步缓存的复制,所以控制程序能够参照该 执行开始时的最新的输入数据。

此外,根据实施方式2的处理方式,在对于第1输入同步缓存的输入数 据的复制时不需要判断复制目标的输入同步缓存的状态的点上,算法简单, 所以能够简化系统程序的设计。

<H.2输入同步缓存的选择利用方式(实施方式3)>

(h1:概要)

在上述的实施方式2中,例示了使用2个输入同步缓存而依次传送输入 数据的方式。相对于此,在实施方式3中,说明如下结构:通过选择性地利 用多个(典型地是2个)输入同步缓存,从而能够始终将能够写入输入数据 的输入同步缓存至少确保1个。

(h2:时序图)

图13是表示实施方式3的输入方向的动作的时序图。图13表示典型地 使用具有多个核的多核(具体地说是双核)的微处理器的情况的处理。即, 假设核1执行系统程序,假设核2执行控制程序1。其中,在使用了仅具有 一个核的单核的微处理器的情况下,也能够执行实施方式3的方式。

更具体地说,在图13所示的实施方式3的方式中,系统程序和控制程序 1并行执行。控制程序1在核的资源利用上多少个也都能够执行,但这里假 设控制程序1也是利用系统程序的输出处理和输入处理的情况,所以以等待 各个控制循环的开头的输出处理和输入处理的结束而开始控制程序1的执行 为基础。

如图13所示,对从控制程序1参照的输入数据,设置了一组输入同步缓 存(输入同步缓存1A和1B)。输入同步缓存的状态有写入禁止状态、参照 目标状态以及最新状态(存储最新数据的状态)。通过在写入禁止状态记录 区域、参照目标状态记录区域以及最新状态记录区域中记录各自的输入同步 缓存处于写入禁止状态、参照目标状态以及最新状态的情况,从而表示输入 同步缓存的状态。在系统程序210的“PLC的控制动作的控制程序的执行准 备处理”(图5所示的步骤S1)中,在主存储器104内的控制程序的作业区 域1042中生成这些各个记录区域。能够适当地设定输入同步缓存为写入禁止 状态、参照目标状态以及最新状态的记录的方式。例如,能够采用如下方式 等:记录用于确定在以集中进行复制处理的单位进行了分组后的输入同步缓 存的分组中、处于写入禁止状态、参照目标状态以及最新状态的分组的信息 (输入同步缓存的分组的识别号等)的方式;对这样的输入同步缓存的每个 分组,设置用于表示是否处于写入禁止状态、参照目标状态以及最新状态的 标记或者状态变量而使用该标记或者状态变量的值而记录的方式。

另外,实施方式3的输出方向的动作(有关输出数据的处理)与上述的 实施方式1中的动作(图8所示的时序图中记载的处理)相同。即,若控制 程序的执行结束,则通过该控制程序的执行而生成的输出数据从输出同步缓 存复制到发送缓存中。此外,若控制循环开始,则输出数据从发送缓存中发 送。这里,不重复以上的详细的说明。

(h3:流程图)

图14是表示实施方式3的执行动作的流程图。参照图14,微处理器100 (核1)执行系统程序中的、PLC1的控制动作的执行准备处理(步骤S1)。 接着,微处理器100(核1)执行系统程序210中的、PLC1的控制动作的执 行控制处理(图5所示的步骤S2)。该PLC1的控制动作的执行控制处理的详 细的一例相当于步骤S250~S274。

首先,微处理器100(核1)等待控制循环开始的中断信号(步骤S250)。 若接收到控制循环开始的中断信号(在步骤S250中“是”),则微处理器100 (核1)对通信电路(PLC系统总线控制器120和/或场网络控制器140)指 示发送执行(步骤S252)。响应于发送执行的指示,存储在发送缓存(PLC 系统总线发送缓存1043和/或场网络发送缓存1045)中的数据发送到其他的 单元等。

接着,微处理器100等待来自通信电路(PLC系统总线控制器120和/ 或场网络控制器140)的接收完成通知或者控制程序1的执行结束通知(步 骤S254)。

若接收到控制程序1的执行结束通知(在步骤S254中“执行结束通知”), 则处理进入步骤S270。

另一方面,若接收到来自通信电路的接收完成通知(在步骤S254中“接 收完成通知”),则微处理器100(核1)将存储在接收缓存(PLC系统总线接 收缓存1044和/或场网络接收缓存1046)中的输入数据复制到与前一次写入 了输入数据时相同的输入同步缓存1(输入同步缓存1A或者输入同步缓存 1B)中,且将写入了输入数据的输入同步缓存1设定为“最新”状态(步骤 S256)。其中,在与前一次写入了输入数据时相同的输入同步缓存1设定为“写 入禁止”状态的情况下,输入数据复制到另一个输入同步缓存1中。

之后,微处理器100(核1)判断控制程序1的执行状态(步骤S260)。 在控制程序1处于“执行结束”状态的情况下(在步骤S260中“执行结束”), 微处理器100(核1)将设定为“最新”状态的输入同步缓存1(输入同步缓 存1A或者输入同步缓存1B)设定为“参照目标”状态且还设定为“写入禁 止”状态,进一步将控制程序1的执行状态设定为“执行中”状态,并使核 2开始控制程序1的执行(步骤S262)。然后,处理进入步骤S266。

在控制程序1处于“执行中”状态或者“继续执行中”状态的情况下(在 步骤S260中“执行中”/“继续执行中”),微处理器100(核1)将控制程序 1的执行状态设定为“继续执行中”状态(步骤S264)。此时,对应的输入同 步缓存1(输入同步缓存1A或者输入同步缓存1B)的“参照目标”状态和 “写入禁止”状态都维持原样,继续控制程序1的执行。然后,处理进入步 骤S266。

若在步骤S262或S264中开始(或者,再次开始)控制程序1的执行, 则微处理器100(核1)等待控制程序1的执行结束通知或者下一个控制循环 开始的中断信号(步骤S266)。

若在控制程序1的执行结束通知之前接收到下一个控制循环开始的中断 (在步骤S266中“控制循环开始”),则微处理器100(核1)再次执行步骤 S252以下的处理。

另一方面,若接收到控制程序1的执行结束通知(在步骤S266中“执行 结束通知”),则微处理器100(核1)判断控制程序1的执行状态(步骤S270)。

在控制程序1处于“执行中”状态的情况下(在步骤S270中“执行中”), 微处理器100(核1)将控制程序1的执行状态设定为“执行结束”,将在输 出同步缓存1中存储的输出数据复制到发送缓存(PLC系统总线发送缓存 1043和/或场网络发送缓存1045)中,并解除处于“参照目标”状态的输入 同步缓存1的“写入禁止”状态(步骤S272)。然后,处理返回到在步骤S270 之前执行着的处理(步骤S254或者S266)的继续。返回到步骤S266的继续 之后,进入步骤S250。

另一方面,在控制程序1处于“继续执行中”状态的情况下(在步骤S270 中“继续执行中”),微处理器100(核1)将控制程序1的执行状态设定为“执 行结束”,将在输出同步缓存1中存储的输出数据复制到发送缓存(PLC系统 总线发送缓存1043和/或场网络发送缓存1045)中,并解除处于“参照目标” 状态的输入同步缓存1的“写入禁止”状态,将设定为“最新”状态的输入 同步缓存1(输入同步缓存1A或者输入同步缓存1B)设定为“参照目标” 状态且还设定为“写入禁止”状态,之后将控制程序1的执行状态设定为“执 行中”,并使核2开始控制程序1的执行(步骤S274)。然后,处理返回到在 步骤S270之前执行的处理(步骤S254或者S266)的继续。返回到步骤S266 的继续之后,进入步骤S250。

(h4:总结)

如上所述,在实施方式3中,作为与输入数据的输入有关的PLC1的控 制动作的执行准备处理,系统程序210包括以下的(a)~(c)的处理。

(a)在主存储器104(存储部件)内生成用于存储接收到的输入数据的 接收缓存(图4所示的PLC系统总线接收缓存1044和场网络接收缓存1046) 的处理(图14所示的步骤S1)。

(b)对从控制程序参照的每个输入数据,在主存储器104(存储部件) 内、作为同步缓存的组而生成该控制程序作为输入数据的参照目标的第1输 入同步缓存(图13所示的输入同步缓存1A)以及第2输入同步缓存(图13 所示的输入同步缓存1B)的处理(图14所示的步骤S1)。

(c)在主存储器104(存储部件)内生成最新状态存储区域的处理(图 14所示的步骤S1)。

此外,在实施方式3中,作为PLC1的控制动作的执行控制处理,系统 程序210包括以下的(d)~(f)的处理。

(d)将接收到的输入数据从接收缓存(图4所示的PLC系统总线接收 缓存1044和场网络接收缓存1046)以在与该输入数据对应的第1输入同步 缓存(图13所示的输入同步缓存1A)和第2输入同步缓存(图13所示的输 入同步缓存1B)中不是“写入禁止”状态的其中一个输入同步缓存作为复制 目标而复制,进一步将复制目标的输入同步缓存为“最新”状态的情况记录 在最新状态记录区域的输入复制处理(图14所示的步骤S256)。

(e)将控制程序开始执行,进一步将由最新状态记录区域的内容所确定 的处于“最新”状态的输入同步缓存设为在该控制程序的执行中参照的“参 照目标”状态,且将该输入同步缓存设为“写入禁止”状态的控制程序开始 处理(图14所示的步骤S262)。

(f)若控制程序的执行结束,则解除输入同步缓存的“写入禁止”状态 的写入禁止解除处理(图14所示的步骤S274)。

根据如上所述的实施方式3的有关输入数据的处理方式,关于各个控制 程序,对从该控制程序参照的每个输入数据,设置了2个输入同步缓存,且 能够始终对至少1个输入同步缓存写入输入数据。因此,能够随时复制输入 数据。此外,在控制程序的执行开始时,通过基于最新状态记录区域的内容, 将存储了被复制的最新数据的输入同步缓存作为参照目标,从而控制程序能 够参照该执行开始时的最新的输入数据。

另外,与在采用“写入禁止”状态的方面相同的实施方式1相比,在实 施方式3中,例如,如图13中由圆圈所示,即使在一个输入同步缓存的“写 入禁止”状态的期间中到来应进行输入数据的复制的定时的情况下,也能够 在对另一个输入同步缓存执行了复制的基础上,控制程序之后参照该复制的 输入数据。因此,能够避免由于在“写入禁止”状态的期间中到来输入数据 的复制的定时,从而控制程序不能参照该输入数据的情况。尤其,在多核的 微处理器中并行执行系统程序和控制程序的情况下,由于会产生在一个输入 同步缓存的“写入禁止”状态的期间中控制程序参照复制到另一个输入同步 缓存中的输入数据的情况,所以实施方式3比较有利。

<I.更新标记型的2输入同步缓存调换方式(实施方式4)>

(i1:概要)

在上述的实施方式3中,说明了通过使得存在至少一个不是“写入禁止” 状态的输入同步缓存,从而随时都能够复制输入数据的结构。相对于此,在 实施方式4和5中,采用通过对输入同步缓存排他性地设定“写入目标”状 态和“参照目标”状态,并调换这些状态,从而随时都能够复制输入数据的 结构。尤其,在实施方式4中,例示利用最新输入数据更新标记而控制输入 同步缓存的状态的调换的结构。

(i2:时序图)

图15是表示实施方式4和5的输入方向的动作的时序图。关于实施方式 4和后述的实施方式5,共同参照图15表示的时序图的同时说明其细节。更 具体地说,在后述的实施方式5中,说明处理用于将存储了被复制的最新数 据的同步缓存作为参照目标而识别的信息的结构。

因此,参照图15说明实施方式4的情况下,仅着眼于“最新输入数据更 新标记1”,不需要沿着输入同步缓存1A和1B的时间轴而表示的“最新”状 态的识别。另一方面,参照图15说明实施方式5的情况下,仅着眼于沿着输 入同步缓存1A和1B的时间轴而表示的“最新”状态的识别,不需要“最新 输入数据更新标记1”。

此外,在图15所示的时序图中,将“写入目标”状态和“参照目标”状 态简单记述为“写入目标”和“参照目标”。

图15表示典型地使用具有多个核的多核(具体地说是双核)的微处理器 的情况的处理。即,假设核1执行系统程序,假设核2执行控制程序1。其 中,在使用了仅具有一个核的单核的微处理器的情况下,也能够执行实施方 式4和5的方式。

更具体地说,在图15所示的实施方式4和5的方式中,系统程序和控制 程序1并行执行。控制程序1在核的资源利用上多少个也都能够执行,但这 里假设控制程序1也是利用系统程序的输出处理和输入处理的情况,所以以 等待各个控制循环的开头的输出处理和输入处理的结束而开始控制程序1的 执行为基础。

另外,实施方式4和5的输出方向的动作(有关输出数据的处理)与上 述的实施方式1中的动作(图7所示的时序图中记载的处理)相同。即,若 控制程序的执行结束,则通过该控制程序的执行而生成的输出数据从输出同 步缓存复制到发送缓存中。此外,若控制循环开始,则输出数据从发送缓存 中发送。这里,不重复以上的详细的说明。

通过在写入目标状态记录区域和参照目标状态记录区域中分别记录输入 同步缓存处于“写入目标”状态和“参照目标”状态的情况,从而表示输入 同步缓存的“写入目标”状态和“参照目标”状态。系统程序210在“PLC 的控制动作的执行准备处理”(图5所示的步骤S1)中,在主存储器104内 的控制程序的作业区域1042中生成这些各个状态记录区域。能够适当地设定 输入同步缓存为“写入目标”状态/“参照目标”状态的记录的方式。例如, 能够采用如下方式等:记录用于确定在以集中进行复制处理的单位进行了分 组后的输入同步缓存的分组中、处于“写入目标”状态和/或“参照目标”状 态的分组的信息(输入同步缓存的组的识别号等)的方式;对这样的输入同 步缓存的每个分组,设置用于表示是否处于“写入目标”状态/“参照目标” 状态的标记或者状态变量而使用该标记或者状态变量的值而记录的方式。尤 其,在本实施方式中,也可以对一个输入同步缓存,以不互相重复地赋予“写 入目标”状态或“参照目标”状态,所以能够不划分为写入目标状态记录区 域和参照目标状态记录区域而生成共同的状态记录区域,并使用一个标记或 者状态变量来表示是“写入目标”状态还是“参照目标”状态。

另外,在实施方式4的时序图(图15)中表示的最新输入数据更新标记 1的垂直线(沿着时间轴的线)中、粗线的部分表示最新输入数据更新标记1 设为有效的情况。系统程序在“PLC1的控制动作的执行准备处理”中,在主 存储器104内的控制程序的作业区域1042中生成该最新输入数据更新标记1。 这里,对在成为集中进行复制时的复制目标的输入同步缓存的组的每个集合, 设置最新输入数据更新标记1。

(i3:流程图)

图16是表示实施方式4的执行动作的流程图。在图16的流程图中,对 于与图14所示的流程图执行相同的处理的步骤,赋予与图14相同的步骤号。

图16所示的流程图与图14所示的流程图的不同点在于,代替步骤S256、 S262、S272、S274,分别执行步骤S256A、S262A、S272A、S274A的处理。 以下,主要说明这些不同点,对于其他的处理不重复详细的说明。

在接收到来自通信电路的接收完成通知的情况下(在步骤S254中“接收 完成通知”)执行的步骤S256A中,微处理器100(核1)将在接收缓存(PLC 系统总线接收缓存1044和/或场网络接收缓存1046)中存储的输入数据复制 到“写入目标”状态的输入同步缓存1(输入同步缓存1A或输入同步缓存 1B)中,且将最新输入数据更新标记1设定为有效(步骤S256A)。

在控制程序1处于“执行结束”状态的情况下(在步骤S260中“执行结 束”)执行的步骤S262A中,若最新输入数据更新标记1设定为有效,则将 处于“写入目标”状态的输入同步缓存1(输入同步缓存1A或者输入同步缓 存1B)设定为“参照目标”状态,且将处于“参照目标”状态的输入同步缓 存1(输入同步缓存1A或者输入同步缓存1B)设定为“写入目标”状态的 基础上,将最新输入数据更新标记1从有效变更为无效(步骤S262A)。此外, 在步骤S262A中,微处理器100(核1)将控制程序1的执行状态设定为“执 行中”状态,并使核2开始控制程序1的执行(步骤S262A)。

另外,在控制程序1处于“执行中”状态或者“继续执行中”状态的情 况下(在步骤S260中“执行中”/“继续执行中”),微处理器100(核1)将 控制程序1的执行状态设定为“继续执行中”状态(步骤S264)。此时,对 应的输入同步缓存1(输入同步缓存1A或者输入同步缓存1B)的“参照目 标”状态和“写入禁止”状态都维持原样,继续控制程序1的执行。

在控制程序1处于“执行中”状态的情况下(在步骤S270中“执行中”), 微处理器100将控制程序1的执行状态设定为“执行结束”,并将在输出同步 缓存1中存储的输出数据复制到发送缓存(PLC系统总线发送缓存1043和/ 或场网络发送缓存1045)中(步骤S272A)。

在控制程序1处于“继续执行中”状态的情况下(在步骤S270中“继续 执行中”)执行的步骤S274A中,微处理器100(核1)将控制程序1的执行 状态设定为“执行结束”,并将在输出同步缓存1中存储的输出数据复制到发 送缓存(PLC系统总线发送缓存1043和/或场网络发送缓存1045)中(步骤 S274A)。此外,在步骤S274A中,微处理器100(核1)若最新输入数据更 新标记1设定为有效,则将处于“写入目标”状态的输入同步缓存1(输入 同步缓存1A或者输入同步缓存1B)设定为“参照目标”状态,且将处于“参 照目标”状态的输入同步缓存1(输入同步缓存1A或者输入同步缓存1B) 设定为“写入目标”状态的基础上,将最新输入数据更新标记1从有效变更 为无效。此时,若最新输入数据更新标记1为无效,则不变更输入同步缓存 1的“写入目标”状态和“参照目标”状态,最新输入数据更新标记1原样 维持无效。之后,将控制程序1的执行状态设定为“执行中”,并使核2开始 控制程序1的执行。

(i4:总结)

如上所述,在实施方式4中,作为与输入数据的输入有关的PLC1的控 制动作的执行准备处理,系统程序210包括以下的(a)~(c)的处理。

(a)在主存储器104(存储部件)内生成用于存储接收到的输入数据的 接收缓存(图4所示的PLC系统总线接收缓存1044和场网络接收缓存1046) 的处理(图16所示的步骤S1)。

(b)对从控制程序参照的每个输入数据,在主存储器104(存储部件) 内、作为同步缓存的组而生成该控制程序设为输入数据的参照目标的第1输 入同步缓存(图15所示的输入同步缓存1A)以及第2输入同步缓存(图15 所示的输入同步缓存1B)的处理(图16所示的步骤S1)。

(c)对每个控制程序,在主存储器104(存储部件)内生成最新输入数 据更新标记的处理(图16所示的步骤S1)。对第1输入同步缓存和第2输入 同步缓存不重复地赋予了能够从接收缓存(图4所示的PLC系统总线接收缓 存1044和/或场网络接收缓存1046)复制输入数据的状态的“写入目标”状 态和能够从控制程序参照的状态的“参照目标”状态中的其中一个状态。

此外,在实施方式4中,作为PLC1的控制动作的执行控制处理,系统 程序210包括以下的(d)和(e)的处理。

(d)将接收到的输入数据从接收缓存(图4所示的PLC系统总线接收 缓存1044和场网络接收缓存1046)复制到与该输入数据对应的“写入目标” 状态的输入同步缓存中,进一步将与该输入复制相关的最新输入数据更新标 记设为有效的输入复制处理(图16所示的步骤S256A)。

(e)将控制程序开始执行,进一步关于开始执行的控制程序的输入同步 缓存,以存储最新数据的输入同步缓存为“写入目标”状态为条件(即,以 与开始执行的控制程序的输入同步缓存相关的最新输入数据更新标记成为有 效为条件),对处于“写入目标”状态的输入同步缓存以及处于“参照目标” 状态的输入同步缓存执行将“写入目标”状态和“参照目标”状态调换的第 3调换处理,且将处于该有效状态的最新输入数据更新标记设为无效的控制 程序开始处理(图16所示的步骤S274A)。

根据如上所述的实施方式4的处理方式,关于各个控制程序,对从该控 制程序参照的每个输入数据,设置了2个输入同步缓存,且除了在控制程序 开始处理中进行输入同步缓存的写入目标状态和参照目标状态的调换(第3 调换处理)的期间的短的时间之外,其中一个输入同步缓存始终成为“写入 目标”状态。因此,能够随时复制输入数据。此外,在控制程序的执行开始 时,通过基于最新输入数据更新标记的状态,将存储了被复制的最新数据的 输入同步缓存设定为“参照目标”状态,从而控制程序能够参照该执行开始 时的最新的输入数据。

<J.最新数据型的2输入同步缓存调换方式(实施方式5)>

(j1:概要)

如上所述,在实施方式5中,处理用于将存储了被复制的最新数据的同 步缓存作为参照目标而识别的信息。

(j2:时序图)

在上述的图15的时序图中表示实施方式5的输入方向的动作。其中,图 15是用于与上述的实施方式4共同说明的时序图,在实施方式5中,仅着眼 于沿着输入同步缓存1A和2B的时间轴而表示的“最新”状态的识别,不需 要“最新输入数据更新标记”。

通过在写入目标状态记录区域、参照目标状态记录区域以及最新状态记 录区域中分别记录输入同步缓存处于“写入目标”状态、“参照目标”状态 以及“最新”状态的情况,从而表示输入同步缓存的“写入目标”状态、“参 照目标”状态以及“最新”状态。系统程序210在“PLC1的控制动作的执行 准备处理”(图5所示的步骤S1)中,在主存储器104内的控制程序的作业 区域1042中生成这些各个状态记录区域。能够适当地设定输入同步缓存为 “写入目标”状态/“参照目标”状态/“最新”状态的记录的方式。例如,能 够采用如下方式等:记录用于确定在以集中进行复制处理的单位进行了分组 后的输入同步缓存的分组中、处于“写入目标”状态、“参照目标”状态和/ 或“最新”状态的组的信息(输入同步缓存的分组的识别号等)的方式;对 这样的输入同步缓存的每个分组,设置用于表示是否处于“写入目标”状态/ “参照目标”状态/“最新”状态的标记或者状态变量而使用该标记或者状态 变量的值而记录的方式。尤其,在本实施方式中,也可以对一个输入同步缓 存,以不互相重复地赋予“写入目标”状态或“参照目标”状态,所以能够 不划分为写入目标状态记录区域和参照目标状态记录区域而生成共同的状态 记录区域,并使用一个标记或者状态变量来表示是“写入目标”状态还是“参 照目标”状态。

(j3:流程图)

图17是表示实施方式5的执行动作的流程图。在图17的流程图中,对 于与图16所示的流程图执行相同的处理的步骤,赋予与图16相同的步骤号。

图17所示的流程图与图16所示的流程图的不同点在于,代替步骤 S256A、S262A、S274A,分别执行步骤S256B、S262B、S274B的处理。以 下,主要说明这些不同点,对于其他的处理不重复详细的说明。

在接收到来自通信电路的接收完成通知的情况下(在步骤S254中“接收 完成通知”)执行的步骤S256B中,微处理器100(核1)将在接收缓存(PLC 系统总线接收缓存1044和/或场网络接收缓存1046)中存储的输入数据复制 到“写入目标”状态的输入同步缓存1(输入同步缓存1A或输入同步缓存 1B)中,且将写入了输入数据的输入同步缓存1设定为“最新”状态(步骤 S256B)。

在控制程序1处于“执行结束”状态的情况下(在步骤S260中“执行结 束”)执行的步骤S262B中,将设定为“最新”状态的输入同步缓存1(输入 同步缓存1A或者输入同步缓存1B)设定为“参照目标”状态,且将另一个 输入同步缓存1设定为“写入目标”状态的基础上,将控制程序1的执行状 态设定为“执行中”状态,并使核2开始控制程序1的执行(步骤S262B)。

另外,在控制程序1处于“执行中”状态或者“继续执行中”状态的情 况下(在步骤S260中“执行中”/“继续执行中”),微处理器100(核1)将 控制程序1的执行状态设定为“继续执行中”状态(步骤S264)。此时,对 应的输入同步缓存1(输入同步缓存1A或者输入同步缓存1B)的“参照目 标”状态和“写入禁止”状态都维持原样,继续控制程序1的执行。

在控制程序1处于“继续执行中”状态的情况下(在步骤S270中“继续 执行中”)执行的步骤S274B中,微处理器100(核1)将控制程序1的执行 状态设定为“执行结束”,并将在输出同步缓存1中存储的输出数据复制到发 送缓存(PLC系统总线发送缓存1043和/或场网络发送缓存1045)中。之后, 将控制程序1的执行状态设定为“执行中”,并使核2开始控制程序1的执行 (步骤S274B)。

(j4:总结)

如上所述,在实施方式5中,作为与输入数据的输入有关的PLC1的控 制动作的执行准备处理,系统程序210包括以下的(a)~(c)的处理。

(a)在主存储器104(存储部件)内生成用于存储接收到的输入数据的 接收缓存(图4所示的PLC系统总线接收缓存1044和场网络接收缓存1046) 的处理(图17所示的步骤S1)。

(b)对从控制程序参照的每个输入数据,在主存储器104(存储部件) 内、作为同步缓存的组而生成该控制程序设为输入数据的参照目标的第1输 入同步缓存(图15所示的输入同步缓存1A)以及第2输入同步缓存(图15 所示的输入同步缓存1B)的处理(图17所示的步骤S1)。

(c)在主存储器104(存储部件)内生成最新状态记录区域的处理(图 17所示的步骤S1)。对第1输入同步缓存和第2输入同步缓存不重复地赋予 了能够从接收缓存(图4所示的PLC系统总线接收缓存1044和/或场网络接 收缓存1046)复制输入数据的状态的“写入目标”状态和能够从控制程序参 照的状态的“参照目标”状态中的其中一个状态。

此外,在实施方式5中,作为PLC1的控制动作的执行控制处理,系统 程序210包括以下的(d)和(e)的处理。

(d)将接收到的输入数据从接收缓存(图4所示的PLC系统总线接收 缓存1044和场网络接收缓存1046)复制到与该输入数据对应的“写入目标” 状态的输入同步缓存中,进一步将复制目标的输入同步缓存处于“最新”状 态的情况记录在最新状态记录区域的输入复制处理(图17所示的步骤 S256B)。

(e)将控制程序开始执行,进一步进行包括第3调换处理的控制程序开 始处理,该第3调换处理关于开始执行的控制程序的输入同步缓存,以由最 新状态记录区域的内容所确定的处于“最新”状态的输入同步缓存为“写入 目标”状态为条件,对处于“写入目标”状态的输入同步缓存以及处于“参 照目标”状态的输入同步缓存执行将“写入目标”状态和“参照目标”状态 调换(图17所示的步骤S262B)。

另外,关于控制程序开始处理,也可以如下表现。

(e’)将控制程序开始执行,进一步进行包括如下处理的控制程序开始 处理,该处理将由最新状态记录区域的内容所确定的处于“最新”状态的输 入同步缓存设为在该控制程序的执行中参照的“参照目标”状态,且将与设 为“参照目标”状态的输入同步缓存属于同一个组的另一个输入同步缓存设 为“写入目标”状态(图17所示的步骤S262B)。

根据如上所述的实施方式5的处理方式,关于各个控制程序,对从该控 制程序参照的每个输入数据,设置了2个输入同步缓存,且除了在控制程序 开始处理中进行输入同步缓存的“写入目标”状态和“参照目标”状态的调 换(第3调换处理)的期间的短的时间之外,其中一个输入同步缓存始终成 为“写入目标”状态。因此,能够随时复制输入数据。此外,在控制程序的 执行开始时,通过基于最新状态记录区域的内容,将存储了被复制的最新数 据的输入同步缓存设定为参照目标,从而控制程序能够参照该执行开始时的 最新的输入数据。

<K.更新标记型的3输入同步缓存调换方式(实施方式6)>

(k1:概要)

在上述的实施方式4和5中,例示了利用2个输入同步缓存的结构,但 在实施方式6和后述的实施方式7中,例示利用3个同步缓存的结构。即, 实施方式6相当于将实施方式4的结构扩展为3个输入同步缓存的结构,后 述的实施方式7相当于将实施方式5的结构扩展为3个输入同步缓存的结构。

(k2:时序图)

图18是表示实施方式6和7的输入方向的动作的时序图。关于实施方式 6和后述的实施方式7,共同参照图18表示的时序图的同时说明其细节。更 具体地说,在后述的实施方式7中,说明如下结构:处理用于将存储了被复 制的最新数据的同步缓存作为参照目标而识别的信息的结构。

因此,参照图18说明实施方式6的情况下,仅着眼于“最新输入数据更 新标记1”,不需要沿着输入同步缓存1A、1B、1C的时间轴而表示的“最 新”状态的识别。另一方面,参照图18说明实施方式7的情况下,仅着眼于 沿着输入同步缓存1A、1B、1C的时间轴而表示的“最新”状态的识别,不 需要“最新输入数据更新标记1”。

此外,在图18所示的时序图中,将“写入目标”状态和“参照目标”状 态简单记述为“写入目标”和“参照目标”。

图18表示典型地使用具有多个核的多核(具体地说是双核)的微处理器 的情况的处理。即,假设核1执行系统程序,假设核2执行控制程序1。其 中,与上述的实施方式4和5相同地,在使用了仅具有一个核的单核的微处 理器的情况下,也能够执行实施方式6和7的方式。

更具体地说,在图18所示的实施方式6和7的方式中,系统程序和控制 程序1并列执行。控制程序1在核的资源利用上多少个也都能够执行,但这 里假设控制程序1也是利用系统程序的输出处理和输入处理的情况,所以以 等待各个控制循环的开头的输出处理和输入处理的结束而开始控制程序1的 执行为基础。

另外,实施方式6和7的输出方向的动作(有关输出数据的处理)与上 述的实施方式1中的动作(图7所示的时序图中记载的处理)相同。即,若 控制程序的执行结束,则通过该控制程序的执行而生成的输出数据从输出同 步缓存复制到发送缓存中。此外,若控制循环开始,则输出数据从发送缓存 中发送。这里,不重复以上的详细的说明。

通过在写入目标状态记录区域、参照目标状态记录区域以及待机状态记 录区域中分别记录输入同步缓存处于“写入目标”状态、“参照目标”状态 以及“待机”状态的情况,从而表示输入同步缓存的“写入目标”状态、“参 照目标”状态以及“待机”状态。系统程序210在“PLC1的控制动作的执行 准备处理”(图5所示的步骤S1)中,在主存储器104内的控制程序的作业 区域1042中生成这些各个状态记录区域。能够适当地设定输入同步缓存为 “写入目标”状态/“参照目标”状态/“待机”状态的记录的方式。例如,能 够采用如下方式等:记录用于确定在以集中进行复制处理的单位进行了分组 后的输入同步缓存的分组中、处于“写入目标”状态、“参照目标”状态和/ 或“待机”状态的组的信息(输入同步缓存的分组的识别号等)的方式;对 这样的输入同步缓存的每个分组,设置用于表示是否处于“写入目标”状态/ “参照目标”状态/“待机”状态的标记或者状态变量而使用该标记或者状态 变量的值而记录的方式。尤其,在本实施方式中,也可以对一个输入同步缓 存,以不互相重复地赋予“写入目标”状态、“参照目标”状态或“待机” 状态,所以能够不划分这些记录区域而生成共同的状态记录区域,并使用一 组标记或者一个状态变量来表示是哪个状态。

另外,在实施方式6的时序图(图18)中表示的最新输入数据更新标记 1的垂直线(沿着时间轴的线)中、粗线的部分表示最新输入数据更新标记1 设为有效的情况。系统程序在“PLC1的控制动作的执行准备处理”中,在主 存储器104内的控制程序的作业区域1042中生成该最新输入数据更新标记1。 这里,对在成为集中进行复制时的复制目标的输入同步缓存的分组的每个集 合,设置最新输入数据更新标记1。

(k3:流程图)

图19是表示实施方式6的执行动作的流程图。在图19的流程图中,对 于与图16所示的流程图执行相同的处理的步骤,赋予与图16相同的步骤号。

图19所示的流程图与图16所示的流程图的不同点在于,代替步骤 S256A、S262A、S274A,分别执行步骤S256C、S262C、S274C的处理。以 下,主要说明这些不同点,对于其他的处理不重复详细的说明。

在接收到来自通信电路的接收完成通知的情况下(在步骤S254中“接收 完成通知”)执行的步骤S256C中,微处理器100(核1)将在接收缓存(PLC 系统总线接收缓存1044和/或场网络接收缓存1046)中存储的输入数据复制 到“写入目标”状态的输入同步缓存1(输入同步缓存1A、1B、1C中的其 中一个)中,进一步将处于“写入目标”状态的输入同步缓存1(输入同步 缓存1A、1B、1C中的其中一个)设定为“待机”状态,将处于“待机”状 态的输入同步缓存1(输入同步缓存1A、1B、1C中的其中一个)设定为“写 入目标”状态的基础上,将最新输入数据更新标记1从无效变更为有效(步 骤S256C)。

在控制程序1处于“执行结束”状态的情况下(在步骤S260中“执行结 束”)执行的步骤S262C中,若最新输入数据更新标记1设定为有效,则将 处于“待机”状态的输入同步缓存1(输入同步缓存1A、1B、1C中的其中 一个)设定为“参照目标”状态,且将处于“参照目标”状态的输入同步缓 存1(输入同步缓存1A、1B、1C中的其中一个)设定为“待机”状态的基 础上,将最新输入数据更新标记1从有效变更为无效(步骤S262C)。此外, 在步骤S262C中,微处理器100(核1)将控制程序1的执行状态设定为“执 行中”状态,且使核2开始控制程序1的执行(步骤S262C)。

另外,在控制程序1处于“执行中”状态或者“继续执行中”状态的情 况下(在步骤S260中“执行中”/“继续执行中”),微处理器100(核1) 将控制程序1的执行状态设定为“继续执行中”状态(步骤S264)。此时, 对应的输入同步缓存1(输入同步缓存1A、1B、1C中的其中一个)的“参 照目标”状态和“待机”状态都维持原样,继续控制程序1的执行。

在控制程序1处于“继续执行中”状态的情况下(在步骤S270中“继续 执行中”)执行的步骤S274C中,微处理器100(核1)将控制程序1的执 行状态设定为“执行结束”,并将在输出同步缓存1中存储的输出数据复制 到发送缓存(PLC系统总线发送缓存1043和/或场网络发送缓存1045)中(步 骤S274C)。此外,在步骤S274C中,微处理器100(核1)若最新输入数据 更新标记1设定为有效,则将处于“待机”状态的输入同步缓存1(输入同 步缓存1A、1B、1C中的其中一个)设定为“参照目标”状态,且将处于“参 照目标”状态的输入同步缓存1(输入同步缓存1A、1B、1C中的其中一个) 设定为“待机”状态的基础上,将最新输入数据更新标记1从有效变更为无 效。此时,若最新输入数据更新标记1为无效,则不变更输入同步缓存1的 “待机”状态和“参照目标”状态,最新输入数据更新标记1原样维持无效。 之后,将控制程序1的执行状态设定为“执行中”,并使核2开始控制程序 1的执行。

(k4:总结)

如上所述,在实施方式6中,作为与输入数据的输入有关的PLC1的控 制动作的执行准备处理,系统程序210包括以下的(a)~(c)的处理。

(a)在主存储器104(存储部件)内生成用于存储接收到的输入数据的 接收缓存(图4所示的PLC系统总线接收缓存1044和场网络接收缓存1046) 的处理(图19所示的步骤S1)。

(b)对从控制程序参照的每个输入数据,在主存储器104(存储部件) 内、作为输入同步缓存的组而生成该控制程序设为输入数据的参照目标的第 1输入同步缓存、第2输入同步缓存以及第3输入同步缓存(图18所示的输 入同步缓存1A、1B、1C)的处理(图19所示的步骤S1)。

(c)对每个控制程序,在主存储器104(存储部件)内生成最新输入数 据更新标记的处理(图19所示的步骤S1)。对第1输入同步缓存、第2输 入同步缓存以及第3输入同步缓存不重复地赋予了能够从接收缓存(图4所 示的PLC系统总线接收缓存1044和/或场网络接收缓存1046)复制输入数据 的状态的“写入目标”状态、能够从控制程序参照的状态的“参照目标”状 态以及“待机”状态中的其中一个状态。

此外,在实施方式6中,作为PLC1的控制动作的执行控制处理,系统 程序210包括以下的(d)和(e)的处理。

(d)将接收到的输入数据从接收缓存(图4所示的PLC系统总线接收 缓存1044和场网络接收缓存1046)复制到与该输入数据对应的“写入目标” 状态的输入同步缓存中,进一步对处于成为了复制目标的“写入目标”状态 的输入同步缓存以及在与该输入同步缓存属于同一个组中处于“待机”状态 的输入同步缓存,执行调换“写入目标”状态和“待机”状态的第1调换处 理,且将与该输入复制相关的最新输入数据更新标记设为有效的输入复制处 理(图19所示的步骤S256C)。

(e)将控制程序开始执行,进一步关于开始执行的控制程序的输入同步 缓存,以存储最新数据的输入同步缓存为“待机”状态为条件(即,以与开 始执行的控制程序的输入同步缓存相关的最新输入数据更新标记成为有效为 条件),对处于“待机”状态的输入同步缓存以及处于“参照目标”状态的 输入同步缓存执行将“待机”状态和“参照目标”状态调换的第2调换处理, 且将处于该有效状态的最新输入数据更新标记设为无效的控制程序开始处理 (图19所示的步骤S274C)。

根据如上所述的实施方式6的处理方式,关于各个控制程序,对从该控 制程序参照的每个输入数据,设置了3个输入同步缓存,且其中一个输入同 步缓存始终成为“写入目标”状态。因此,能够随时复制输入数据。此外, 在控制程序的执行开始时,通过将存储了被复制的最新数据的输入同步缓存 设定为“参照目标”状态,从而控制程序能够参照该执行开始时的最新的输 入数据。

根据实施方式6,作为在控制程序的执行开始时将存储了被复制的最新 数据的输入同步缓存作为参照目标的手段,在输入复制处理中进行输入同步 缓存的“写入目标”状态和“待机状态”的调换,并在控制程序开始处理中, 基于最新输入数据更新标记的状态,进行输入同步缓存的“待机”状态和“参 照目标”状态的调换。例如,在从接收缓存进行复制时处于“写入目标”状 态的输入同步缓存经过“待机”状态而成为“参照目标”状态。

在输入数据的数目多的情况下,从接收缓存到输入同步缓存的复制需要 某种程度的时间。在上述的实施方式4的情况下,不能同时进行控制程序开 始处理中的输入同步缓存的“写入目标”状态和“参照目标”状态的调换处 理(第3调换处理)与从接收缓存到输入同步缓存的复制,需要等待其中一 个处理的结束之后进行另一个处理,但在实施方式6的情况下,能够设计成 并行地执行控制程序开始处理中的输入同步缓存的“待机”状态和“参照目 标”状态的调换处理(第2调换处理)与从接收缓存到“写入目标”状态的 输入同步缓存的复制,比较有利。

<L.最新数据型的3输入同步缓存调换方式(实施方式7)>

(l1:概要)

如上所述,在实施方式7中,处理用于将存储了被复制的最新数据的同 步缓存作为参照目标而识别的信息。其中,输入同步缓存扩展为3个。

(l2:时序图)

在上述的图18的时序图中表示实施方式7的输入方向的动作。其中,图 18是用于与上述的实施方式6共同说明的时序图,在实施方式7中,仅着眼 于沿着输入同步缓存1A、1B、1C的时间轴而表示的“最新”状态的识别, 不需要“最新输入数据更新标记1”。

通过在写入目标状态记录区域、参照目标状态记录区域、待机状态记录 区域以及最新状态记录区域中分别记录输入同步缓存处于“写入目标”状态、 “参照目标”状态、“待机”状态以及“最新”状态的情况,从而表示输入 同步缓存的“写入目标”状态、“参照目标”状态、“待机”状态以及“最 新”状态。系统程序210在“PLC1的控制动作的执行准备处理”(图5所示 的步骤S1)中,在主存储器104内的控制程序的作业区域1042中生成这些 各个状态记录区域。能够适当地设定输入同步缓存为“写入目标”状态/“参 照目标”状态/“待机”状态/“最新”状态的记录的方式。例如,能够采用如 下方式等:记录用于确定在以集中进行复制处理的单位进行了分组后的输入 同步缓存的分组中、处于“写入目标”状态、“参照目标”状态、“待机” 状态和/或“最新”状态的分组的信息(输入同步缓存的分组的识别号等)的 方式;对这样的输入同步缓存的每个分组,设置用于表示是否处于“写入目 标”状态/“参照目标”状态/“待机”状态/“最新”状态的标记或者状态变 量而使用该标记或者状态变量的值而记录的方式。尤其,在本实施方式中, 也可以对一个输入同步缓存,以不互相重复地赋予“写入目标”状态、“参 照目标”状态或“待机”状态,所以能够不划分写入目标状态记录区域、参 照目标状态记录区域以及待机状态记录区域而生成共同的状态记录区域,并 使用一组标记或者一个状态变量来表示是“写入目标”状态、“参照目标” 状态以及“待机”状态中的哪个状态。

(l3:流程图)

图20是表示实施方式7的执行动作的流程图。在图20的流程图中,对 于与图17所示的流程图执行相同的处理的步骤,赋予与图17相同的步骤号。

图20所示的流程图与图17所示的流程图的不同点在于,代替步骤 S256B、S262B、S274B,分别执行步骤S256D、S262D、S274D的处理。以 下,主要说明这些不同点,对于其他的处理不重复详细的说明。

在接收到来自通信电路的接收完成通知的情况下(在步骤S254中“接收 完成通知”)执行的步骤S256D中,微处理器100(核1)将在接收缓存(PLC 系统总线接收缓存1044和/或场网络接收缓存1046)中存储的输入数据复制 到“写入目标”状态的输入同步缓存1(输入同步缓存1A、1B、1C中的其 中一个)中,进一步将处于“写入目标”状态的输入同步缓存1(输入同步 缓存1A、1B、1C中的其中一个)设定为“待机”状态且还设定为“最新” 状态,并将处于“待机”状态的输入同步缓存1(输入同步缓存1A、1B、1C 中的其中一个)设定为“写入目标”状态(步骤S256D)。

在控制程序1处于“执行结束”状态的情况下(在步骤S260中“执行结 束”)执行的步骤S262D中,若“最新”状态的输入同步缓存1为“待机” 状态,则将处于“待机”状态的输入同步缓存1(输入同步缓存1A、1B、1C 中的其中一个)设定为“参照目标”状态,且将处于“参照目标”状态的输 入同步缓存1(输入同步缓存1A、1B、1C中的其中一个)设定为“待机” 状态的基础上,将控制程序1的执行状态设定为“执行中”状态,且使核2 开始控制程序1的执行(步骤S262D)。

另外,在控制程序1处于“执行中”状态或者“继续执行中”状态的情 况下(在步骤S260中“执行中”/“继续执行中”),微处理器100(核1) 将控制程序1的执行状态设定为“继续执行中”状态(步骤S264)。此时, 对应的输入同步缓存1(输入同步缓存1A、1B、1C中的其中一个)的“参 照目标”状态和“待机”状态都维持原样,继续控制程序1的执行。

在控制程序1处于“继续执行中”状态的情况下(在步骤S270中“继续 执行中”)执行的步骤S274D中,微处理器100(核1)将控制程序1的执 行状态设定为“执行结束”,并将在输出同步缓存1中存储的输出数据复制 到发送缓存(PLC系统总线发送缓存1043和/或场网络发送缓存1045)中(步 骤S274D)。此外,在步骤S274D中,微处理器100(核1)若“最新”状 态的输入同步缓存1为“待机”状态,则将处于“待机”状态的输入同步缓 存1(输入同步缓存1A、1B、1C中的其中一个)设定为“参照目标”状态, 且将处于“参照目标”状态的输入同步缓存1(输入同步缓存1A、1B、1C 中的其中一个)设定为“待机”状态。此时,若“最新”状态的输入同步缓 存1为“参照目标”状态,则不变更输入同步缓存1的“待机”状态和“参 照目标”状态。之后,将控制程序1的执行状态设定为“执行中”,并使核 2开始控制程序1的执行。

(l4:总结)

如上所述,在实施方式7中,作为与输入数据的输入有关的PLC1的控 制动作的执行准备处理,系统程序210包括以下的(a)~(c)的处理。

(a)在主存储器104(存储部件)内生成用于存储接收到的输入数据的 接收缓存(图4所示的PLC系统总线接收缓存1044和场网络接收缓存1046) 的处理(图20所示的步骤S1)。

(b)对从控制程序参照的每个输入数据,在主存储器104(存储部件) 内、作为输入同步缓存的组而生成该控制程序设为输入数据的参照目标的第 1输入同步缓存、第2输入同步缓存以及第3输入同步缓存(图18所示的输 入同步缓存1A、1B、1C)的处理(图20所示的步骤S1)。

(c)在主存储器104(存储部件)内生成最新状态记录区域的处理(图 20所示的步骤S1)。对第1输入同步缓存、第2输入同步缓存以及第3输入 同步缓存不重复地赋予了能够从接收缓存(图4所示的PLC系统总线接收缓 存1044和/或场网络接收缓存1046)复制输入数据的状态的“写入目标”状 态、能够从控制程序参照的状态的“参照目标”状态以及“待机”状态中的 其中一个状态。

此外,在实施方式7中,作为PLC1的控制动作的执行控制处理,系统 程序210包括以下的(d)和(e)的处理。

(d)将接收到的输入数据从接收缓存(图4所示的PLC系统总线接收 缓存1044和场网络接收缓存1046)复制到与该输入数据对应的“写入目标” 状态的输入同步缓存中,进一步对处于成为了复制目标的“写入目标”状态 的输入同步缓存以及在与该输入同步缓存相同的组中处于“待机”状态的输 入同步缓存,执行调换“写入目标”状态和“待机”状态的第1调换处理, 且将复制目标的输入同步缓存处于“最新”状态的情况记录在最新状态记录 区域中的输入复制处理(图20所示的步骤S256D)。

(e)将控制程序开始执行,进一步执行包括第2调换处理的控制程序开 始处理,该第2调换处理关于开始执行的控制程序的输入同步缓存,以由最 新状态记录区域的内容所确定的处于“最新状态”的输入同步缓存为“待机” 状态为条件,对处于“待机”状态的输入同步缓存以及处于“参照目标”状 态的输入同步缓存执行将“待机”状态和“参照目标”状态调换(图20所示 的步骤S262D)。

另外,控制程序开始处理也可以如下表现。

(e’)将控制程序开始执行,进一步执行包括如下处理的控制程序开始 处理,该处理将由最新状态记录区域的内容所确定的处于“最新”状态的输 入同步缓存设为在该控制程序的执行中参照的“参照目标”状态,且将在与 设为“参照目标”状态的输入同步缓存相同的组的输入同步缓存且不是“写 入目标”状态的输入同步缓存设为“待机”状态(图20所示的步骤S262D)。

根据如上所述的实施方式7的处理方式,关于各个控制程序,对从该控 制程序参照的每个输入数据,设置了3个输入同步缓存,且其中一个输入同 步缓存始终成为“写入目标”状态。因此,能够随时复制输入数据。此外, 在控制程序的执行开始时,通过将存储了被复制的最新数据的输入同步缓存 设为参照目标,从而控制程序能够参照该执行开始时的最新的输入数据。

根据实施方式7,作为在控制程序的执行开始时将存储了被复制的最新 数据的输入同步缓存作为参照目标的手段,在输入复制处理中进行输入同步 缓存的“写入目标”状态和“待机状态”的调换,并在控制程序开始处理中, 基于最新输入数据更新标记的状态,进行输入同步缓存的“待机”状态和“参 照目标”状态的调换。例如,在从接收缓存进行复制时处于“写入目标”状 态的输入同步缓存经过“待机”状态而成为“参照目标”状态。

在输入数据的数目多的情况下,从接收缓存到输入同步缓存的输入数据 的复制需要某种程度的时间。在上述的实施方式5的情况下,不能同时进行 控制程序开始处理中的输入同步缓存的“写入目标”状态和“参照目标”状 态的调换处理(第3调换处理)与从接收缓存到输入同步缓存的复制,需要 等待其中一个处理的结束之后进行另一个处理,但在实施方式7的情况下, 能够设计成并行地执行控制程序开始处理中的输入同步缓存的“待机”状态 和“参照目标”状态的调换处理(第2调换处理)与从接收缓存到“写入目 标”状态的输入同步缓存的复制,比较有利。

<M.更新标记型的3输出同步缓存调换方式(实施方式8)>

(m1:概要)

在上述的实施方式6和7中,例示了利用3个输入同步缓存的结构,但 在实施方式8和后述的实施方式9中,将这些实施方式中的3缓存调换方式 应用于输出同步缓存中。

尤其在实施方式8和实施方式9中,与输出同步缓存分开,对每个输出 数据生成运算用缓存。并且,控制程序在该运算用缓存中存储输出数据。这 是基于以下的理由。即,在实施方式8和实施方式9中,由于存在3个输出 同步缓存,且成为写入目标的输出同步缓存依次变更,所以若控制程序在输 出同步缓存中存储了输出数据,则控制程序难以参照之前存储的输出数据。 因此,通过设置运算用缓存且控制程序将输出数据存储在该运算用缓存中, 从而控制程序能够从运算缓存中取得之前存储的输出数据。

另外,实施方式8和实施方式9的输出数据的输出方式,能够与上述的 实施方式1~7中的其中一个输入数据的输入方式任意地进行组合而实施。

(m2:时序图)

图21是表示实施方式8和9的输出方向的动作的时序图。在图21中, 关于实施方式8和后述的实施方式9,共同参照图21表示的时序图的同时说 明其细节。更具体地说,在参照图21说明实施方式8的情况下,仅着眼于“最 新输出数据更新标记1”,不需要沿着输出同步缓存1D、1E、1F的时间轴而 表示的“最新”状态的识别。另一方面,在参照图21说明实施方式9的情况 下,仅着眼于沿着输出同步缓存1D、1E、1F的时间轴而表示的“最新”状 态的识别,不需要“最新输出数据更新标记1”。

在本实施方式中,在各个输出同步缓存中,设定了“写入目标”状态、 “参照目标”状态以及“待机”状态中的其中一个。这些状态的记录方法与 在上述的实施方式6中说明的输入同步缓存的情况相同。关于最新输出数据 更新标记的状态的记录方法,也与在上述的实施方式6中说明的最新输入数 据更新标记的情况相同。

(m3:流程图)

图22是表示实施方式8的执行动作的流程图。在图22的流程图中,对 于与图19所示的流程图执行相同的处理的步骤,赋予与图19相同的步骤号。

图22所示的流程图与图19所示的流程图的不同点在于,追加了步骤 S251E的处理,且代替步骤S272以及S274C,分别执行步骤S272E以及S274E 的处理。以下,主要说明这些不同点,对于其他的处理不重复详细的说明。

在接收到控制循环开始的中断信号的情况下(在步骤S250中“是”)执 行的步骤S251E中,微处理器100(核1)若最新输出数据更新标记1设定为 有效,则将处于“待机”状态的输出同步缓存1(输出同步缓存1D、1E、1F 中的其中一个)设定为“参照目标”状态,且将处于“参照目标”状态的输 出同步缓存1(输出同步缓存1D、1E、1F中的其中一个)设定为“待机”状 态的基础上,将最新输出数据更新标记1从有效变更为无效(步骤S251E)。

另外,若最新输出数据更新标记1没有设定为有效(最新输出数据更新 标记1设定为无效),则不变更输出同步缓存1的“待机”状态和“参照目 标”状态,最新输出数据更新标记1也原样维持无效。

此外,在步骤S251E中,微处理器100(核1)将在处于“参照目标” 状态的输出同步缓存1中存储的输出数据复制到发送缓存(PLC系统总线发 送缓存1043和/或场网络发送缓存1045)中。

在控制程序1处于“执行中”状态的情况下(在步骤S270中“执行中”) 执行的S272E中,微处理器100(核1)在将控制程序1的执行状态设定为“执 行结束”,并将在运算用缓存1中存储的输出数据复制到“写入目标”状态 的输出同步缓存1(输出同步缓存1D、1E、1F中的其中一个)的基础上,将 处于“写入目标”状态的输出同步缓存1(输出同步缓存1D、1E、1F中的其 中一个)设定为“待机”状态且将处于“待机”状态的输出同步缓存1(输 出同步缓存1D、1E、1F中的其中一个)设定为“写入目标”状态的基础上, 将最新输出数据更新标记1从无效变更为有效(步骤S272E)。

在控制程序1处于“继续执行中”状态的情况下(在步骤S270中“继续 执行中”)执行的步骤S274E中,微处理器100(核1)将控制程序1的执行 状态设定为“执行结束”,并将在输出同步缓存1中存储的输出数据复制到 “写入目标”状态的输出同步缓存1(输出同步缓存1D、1E、1F中的其中一 个)的基础上,将处于“写入目标”状态的输出同步缓存1(输出同步缓存 1D、1E、1F中的其中一个)设定为“待机”状态且将处于“待机”状态的输 出同步缓存1(输出同步缓存1D、1E、1F中的其中一个)设定为“写入目标” 状态的基础上,将最新输出数据更新标记1从无效变更为有效(步骤S274E)。

进而,在步骤S274E中,若最新输入数据更新标记1设定为有效,则将 处于“待机”状态的输入同步缓存1(输入同步缓存1A、1B、1C中的其中 一个)设定为“参照目标”状态,且将处于“参照目标”状态的输入同步缓 存1(输入同步缓存1A、1B、1C中的其中一个)设定为“待机”状态的基 础上,将最新输入数据更新标记1从有效变更为无效。此时,若最新输入数 据更新标记1为无效,则不变更输入同步缓存1的“待机”状态和“参照目 标”状态,最新输入数据更新标记1原样维持无效。之后,将控制程序1的 执行状态设定为“执行中”,并使核2开始控制程序1的执行。

(m4:总结)

如上所述,在实施方式8中,作为PLC1的控制动作的执行准备处理, 系统程序210包括以下的(a)~(e)的处理。

(a)在主存储器104(存储部件)内生成用于存储接收到的输入数据的 接收缓存(图4所示的PLC系统总线接收缓存1044和场网络接收缓存1046) 以及存储应发送的输出数据的发送缓存(图4所示的PLC系统总线发送缓存 1043和场网络发送缓存1045)的处理(图22所示的步骤S1)。

(b)对从控制程序参照的每个输入数据,在主存储器104(存储部件) 内生成该控制程序作为输入数据的参照目标的输入同步缓存(任意一个或者 多个输入同步缓存)的处理(图22所示的步骤S1)。

(c)在主存储器104(存储部件)内生成控制程序存储输出数据的运算 用缓存(图21所示的运算用缓存1)的处理(图22所示的步骤S1)。

(d)对每个输出数据,在主存储器104(存储部件)内,作为输出同步 缓存的组而生成用于存储复制到发送缓存的输出数据的、第1输出同步缓存、 第2输出同步缓存以及第3输出同步缓存(图21所示的输出同步缓存1E、 1F、1G)的处理(图22所示的步骤S1)。

(e)对每个控制程序,在主存储器104(存储部件)内生成最新输出数 据更新标记的处理(图22所示的步骤S1)。对第1输出同步缓存、第2输 出同步缓存以及第3输出同步缓存不重复地赋予了能够从运算用缓存复制输 出数据的状态的“写入目标”状态、能够进行用于复制到发送缓存中的参照 的状态的“参照目标”状态以及“待机”状态中的其中一个状态。

此外,在实施方式8中,作为PLC1的控制动作的执行控制处理,系统 程序210包括以下的(f)~(i)的处理。

(f)将接收到的输入数据从接收缓存(图4所示的PLC系统总线接收 缓存1044和场网络接收缓存1046)复制到与该输入数据对应的输入同步缓 存的输入复制处理(图22所示的步骤S256C)。

(g)将控制程序开始执行的控制程序开始处理(图22所示的步骤 S262C)。

(h)若控制程序的执行结束,则将通过该控制程序的执行而生成的输出 数据从运算用缓存复制到处于“写入目标”状态的输出同步缓存中,进一步 对处于成为了复制目标的“写入目标”状态的输出同步缓存以及在与该输出 同步缓存属于同一个组中处于“待机”状态的输出同步缓存,执行调换“写 入目标”状态和“待机”状态的第4调换处理,且将与该输出复制相关的最 新输出数据更新标记设为有效的输出同步缓存存储处理(图22所示的步骤 S272E)。

(i)以存储最新数据的输出同步缓存处于“待机”状态为条件(即,以 与开始执行的控制程序的输出同步缓存相关的最新输出数据更新标记成为有 效为条件),对处于“待机”状态的输出同步缓存以及处于“参照目标”状 态的输出同步缓存执行将“待机”状态和“参照目标”状态调换的第5调换 处理,且将处于该有效状态的最新输出数据更新标记设为无效,以及将输出 数据从成为了“参照目标”状态的输出同步缓存复制到发送缓存中的输出复 制处理(图22所示的步骤S251E)。

根据如上所述的实施方式8的处理方式,关于各个控制程序,对该控制 程序生成的每个输出数据,设置了3个输出同步缓存,且其中一个输出同步 缓存始终成为“写入目标”状态。因此,能够随时从运算缓存对输出同步缓 存复制输出数据。

此外,根据实施方式8的处理方式,作为在控制程序的执行结束时将存 储了从运算缓存复制的最新数据的输出同步缓存作为参照目标(对于发送缓 存的复制源)的手段,在输出同步缓存存储处理中进行输出同步缓存的“写 入目标”状态和“待机状态”的调换(第4调换处理),并在输出复制处理 中,基于最新输出数据更新标记的状态,进行输出同步缓存的“待机”状态 和“参照目标”状态的调换(第5调换处理)。例如,在从运算缓存进行复 制时处于“写入目标”状态的输出同步缓存经过“待机”状态而成为“参照 目标”状态。

在输出数据的数目多的情况下,从运算缓存到输出同步缓存的输出数据 的复制、以及从输出同步缓存到发送缓存的输出数据的复制,分别需要某种 程度的时间。在实施方式8的情况下,能够设计成在这些复制的执行时期重 叠的情况下并行地执行复印,比较有利。

另外,将输出数据从输出同步缓存复制到发送缓存的输出复制处理,优 选在发送执行的紧跟前执行。例如,若在图21所示那样,在各个控制循环的 开头附近发送的情况下,在控制循环开始之后,首先执行输出复制处理,接 着执行发送较好。

<N.最新数据型的3输出同步缓存调换方式(实施方式9)>

(n1:概要)

如上所述,在实施方式9中,处理用于将存储了被复制的最新数据的同 步缓存作为“最新”状态而识别的信息。

(n2:时序图)

在上述的图21的时序图中表示实施方式9的输出方向的动作。其中,图 21是用于与上述的实施方式8共同地说明的时序图,在实施方式9中,仅着 眼于沿着输出同步缓存1D、1E、1F的时间轴而表示的“最新”状态的识别, 不需要“最新输出数据更新标记1”。

(n3:流程图)

图23是表示实施方式9的执行动作的流程图。在图23的流程图中,对 于与图22所示的流程图执行相同的处理的步骤,赋予与图22相同的步骤号。

图23所示的流程图与图22所示的流程图的不同点在于,代替步骤 S251E、S272E以及S274E,分别执行步骤S251F、S272F以及S274F的处理。 以下,主要说明这些不同点,对于其他的处理不重复详细的说明。

在接收到控制循环开始的中断信号的情况下(在步骤S250中“是”)执 行的步骤S251F中,微处理器100(核1)若“最新”状态的输出同步缓存1 (输出同步缓存1D、1E、1F中的其中一个)设定为“待机”状态,则将处 于“待机”状态的输出同步缓存1(输出同步缓存1D、1E、1F中的其中一个) 设定为“参照目标”状态,且将处于“参照目标”状态的输出同步缓存1(输 出同步缓存1D、1E、1F中的其中一个)设定为“待机”状态(步骤S251F)。

另外,若“最新”状态的输出同步缓存1设定为“参照目标”状态,则 不变更输出同步缓存1的“待机”状态和“参照目标”状态,原样维持。

此外,在步骤S251F中,微处理器100(核1)将在处于“参照目标” 状态的输出同步缓存1中存储的输出数据复制到发送缓存(PLC系统总线发 送缓存1043和/或场网络发送缓存1045)中。

在控制程序1处于“执行中”状态的情况下(在步骤S270中“执行中”) 执行的S272E中,微处理器100(核1)在将控制程序1的执行状态设定为“执 行结束”,并将在运算用缓存1中存储的输出数据复制到“写入目标”状态 的输出同步缓存1(输出同步缓存1D、1E、1F中的其中一个)的基础上,将 处于“写入目标”状态的输出同步缓存1(输出同步缓存1D、1E、1F中的其 中一个)设定为“待机”状态且还设定为“最新”状态,将处于“待机”状 态的输出同步缓存1(输出同步缓存1D、1E、1F中的其中一个)设定为“写 入目标”状态(步骤S272F)。

在控制程序1处于“继续执行中”状态的情况下(在步骤S270中“继续 执行中”)执行的步骤S274F中,微处理器100(核1)将控制程序1的执行 状态设定为“执行结束”,并将在运算用缓存1中存储的输出数据复制到“写 入目标”状态的输出同步缓存1(输出同步缓存1D、1E、1F中的其中一个) 的基础上,将处于“写入目标”状态的输出同步缓存1(输出同步缓存1D、 1E、1F中的其中一个)设定为“待机”状态且还设定为“最新”状态,将处 于“待机”状态的输出同步缓存1(输出同步缓存1D、1E、1F中的其中一个) 设定为“写入目标”状态(步骤S274F)。

此外,在步骤S274F中,若“最新”状态的输入同步缓存1设定为“待 机”状态,则将处于“待机”状态的输入同步缓存1(输入同步缓存1A、1B、 1C中的其中一个)设定为“参照目标”状态,且将处于“参照目标”状态的 输入同步缓存1(输入同步缓存1A、1B、1C中的其中一个)设定为“待机” 状态。此时,若“最新”状态的输出同步缓存1没有设定为“参照目标”状 态,则不变更输入同步缓存1的“待机”状态和“待机”状态。之后,将控 制程序1的执行状态设定为“执行中”,并使核2开始控制程序1的执行。

(m4:总结)

如上所述,在实施方式9中,作为PLC1的控制动作的执行准备处理, 系统程序210包括以下的(a)~(e)的处理。

(a)在主存储器104(存储部件)内生成用于存储接收到的输入数据的 接收缓存(图4所示的PLC系统总线接收缓存1044和场网络接收缓存1046) 以及存储应发送的输出数据的发送缓存(图4所示的PLC系统总线发送缓存 1043和场网络发送缓存1045)的处理(图23所示的步骤S1)。

(b)对从控制程序参照的每个输入数据,在主存储器104(存储部件) 内生成该控制程序作为输入数据的参照目标的输入同步缓存(任意一个或者 多个输入同步缓存)的处理(图23所示的步骤S1)。

(c)在主存储器104(存储部件)内生成控制程序存储输出数据的运算 用缓存(图21所示的运算用缓存1)的处理(图23所示的步骤S1)。

(d)对每个输出数据,在主存储器104(存储部件)内,作为输出同步 缓存的组而生成用于存储复制到发送缓存的输出数据的、第1输出同步缓存、 第2输出同步缓存以及第3输出同步缓存(图21所示的输出同步缓存1E、 1F、1G)的处理(图23所示的步骤S1)。

(e)在主存储器104(存储部件)内生成最新状态记录区域的处理(图 23所示的步骤S1)。对第1输出同步缓存、第2输出同步缓存以及第3输出 同步缓存不重复地赋予了能够从运算用缓存复制输出数据的状态的“写入目 标”状态、能够进行用于复制到发送缓存中的参照的状态的“参照目标”状 态以及“待机”状态中的其中一个状态。

此外,在实施方式9中,作为PLC1的控制动作的执行控制处理,系统 程序210包括以下的(f)~(i)的处理。

(f)将接收到的输入数据从接收缓存(图4所示的PLC系统总线接收 缓存1044和场网络接收缓存1046)复制到与该输入数据对应的输入同步缓 存的输入复制处理(图23所示的步骤S256D)。

(g)将控制程序开始执行的控制程序开始处理(图23所示的步骤 S262D)。

(h)若控制程序的执行结束,则将通过该控制程序的执行而生成的输出 数据从运算用缓存复制到处于“写入目标”状态的输出同步缓存中,进一步 对处于成为了复制目标的“写入目标”状态的输出同步缓存以及在与该输出 同步缓存属于同一个组中处于“待机”状态的输出同步缓存,执行调换“写 入目标”状态和“待机”状态的第4调换处理,且将复制目标的输出同步缓 存为最新状态的情况记录在最新状态记录区域中的输出同步缓存存储处理 (图23所示的步骤S272F)。

(i)以由最新状态记录区域的内容所确定的处于“最新”状态的输出同 步缓存为“待机”状态为条件,对处于“待机”状态的输出同步缓存以及处 于“参照目标”状态的输出同步缓存执行将“待机”状态和“参照目标”状 态调换的第5调换处理,且将输出数据从成为了“参照目标”状态的输出同 步缓存复制到发送缓存中的输出复制处理(图23所示的步骤S251F)。

根据如上所述的实施方式9的处理方式,关于各个控制程序,对该控制 程序生成的每个输出数据,设置了3个输出同步缓存,且其中一个输出同步 缓存始终成为“写入目标”状态。因此,能够随时从运算缓存对输出同步缓 存复制输出数据。

此外,根据实施方式9的处理方式,作为在控制程序的执行结束时将存 储了从运算缓存复制的最新数据的输出同步缓存作为参照目标(对于发送缓 存的复制源)的手段,在输出同步缓存存储处理中进行输出同步缓存的“写 入目标”状态和“待机状态”的调换(第4调换处理),并在输出复制处理 中,基于输出同步缓存的最新状态,进行输出同步缓存的“待机”状态和“参 照目标”状态的调换(第5调换处理)。例如,在从运算缓存进行复制时处 于“写入目标”状态的输出同步缓存经过“待机”状态而成为“参照目标” 状态。

在输出数据的数目多的情况下,从运算缓存到输出同步缓存的输出数据 的复制、以及从输出同步缓存到发送缓存的输出数据的复制,分别需要某种 程度的时间。在实施方式9的情况下,能够设计成在这些复制的执行时期重 叠的情况下并行地执行复印,比较有利。

另外,将输出数据从输出同步缓存复制到发送缓存的输出复制处理,优 选在发送执行的紧跟前执行。例如,若在图21所示那样,在各个控制循环的 开头附近发送的情况下,在控制循环开始之后,首先执行输出复制处理,接 着执行发送较好。

(m5:进一步扩展)

通过关于上述的实施方式8和9的说明,必然能够理解将实施方式6和 7的输入方式也应用于输出方式的情况。这里,不进行其详细的说明,但关 于实施方式2~5的输入方式,分别也能够应用于输出方式。此外,各个输入 方式和各个输出方式能够任意地组合而实施。

<O.执行循环同步型单一缓存式(实施方式10)>

(o1:概要)

在控制程序的执行循环横跨多个控制循环,且除此之外还存在执行优先 级更高的控制程序的情况下,会产生不能从循环内的最初的控制循环开始控 制程序的执行的情况。在上述的实施方式1~9中,这样的情况下,能够使用 在与实际开始控制程序的执行的控制循环相关的接收定时接收到的最新的输 入数据。

但是,取而代之,也存在通过将在控制程序的执行中使用的输入数据统 一为在与控制程序的执行循环开始的控制循环相关的接收定时接收到的输入 数据,从而想要将输入数据的有效的更新周期设为一定的情况。根据实施方 式10的输入方式,能够满足这样的要求。

另外,上述的“与控制循环相关的接收定时”意味着如下的定时。即, 在控制循环内采用在输入数据的接收之后执行控制程序的调度的情况下,意 味着该控制循环中的接收的定时。此外,在控制循环内采用在执行控制程序 之后接收输入数据的调度的情况下,意味着该控制循环的紧跟前的控制循环 中的接收的定时。

此外,作为其他状况,在控制程序的执行循环横跨多个控制循环的情况 下,会产生在执行循环内的最后的控制循环开始之前控制程序的执行结束, 且生成输出数据的情况。在上述的实施方式1~9中,这样的情况下,能够发 送未等待与最后的控制循环相关的发送定时而被更新的输出数据。

但是,取而代之,也存在通过将被更新的输出数据的发送定时统一为与 在执行循环内的最后的控制循环相关的发送定时,从而想要将发送的输出数 据的有效的更新周期设为一定的情况。根据实施方式10的输出方式,能够满 足这样的要求。

另外,上述的“与控制循环相关的发送定时”意味着如下的定时。即, 在控制循环内采用在输出数据的发送之后执行控制程序的调度的情况下,意 味着该控制循环的紧接着的控制循环中的发送的定时。此外,在控制循环内 采用在执行控制程序之后发送输出数据的调度的情况下,意味着该控制循环 中的发送的定时。

(o2:时序图)

图24是表示实施方式10的输入方向的动作的时序图。图25是表示实施 方式10的输出方向的动作的时序图。

关于实施方式10的输入方向/输出方向的动作,由于与上述的实施方式1 中的动作相同的点也比较多,所以主要说明两者之间的不同点,不重复其他 的相同部分的详细的说明。

首先,参照图24说明实施方式10的输入方式。关于输入方式,在实施 方式1中,在控制程序执行的期间,输入同步缓存成为“写入禁止”状态, 且除了复制目标的输入同步缓存成为“写入禁止”状态的情况之外,在每个 控制循环中进行从接收缓存到输入同步缓存的输入数据的复制。

相对于此,在实施方式10中,从接收缓存到输入同步缓存的输入数据的 复制仅在控制程序的执行循环开始的控制循环中进行。通过监视当前的控制 循环是否对应于执行循环的最初的控制循环,从而进行该复制控制。取而代 之,也可以通过若进行对于输入同步缓存的复制则将该输入同步缓存设为“写 入禁止”状态,若控制程序的执行循环结束则解除“写入禁止”状态,从而 仅在执行循环开始的最初的控制循环中执行对于输入同步缓存的复制。

接着,参照图25说明实施方式10的输出方式。关于输出方式,在实施 方式1中,若控制程序的执行结束,则进行从输出同步缓存到发送缓存的输 出数据的复制。之后,若开始下一个控制循环,则从发送缓存发送输出数据。

相对于此,在实施方式10中,若开始控制程序的执行循环,则进行从输 出同步缓存到发送缓存的输出数据的复制。之后,从发送缓存发送输出数据。

(o3:流程图)

图26是表示实施方式10的执行动作的流程图。参照图26,微处理器100 执行系统程序210中的、PLC1的控制动作的执行准备处理(步骤S1)。接 着,微处理器100执行系统程序210中的、PLC1的控制动作的执行控制处理 (图5所示的步骤S2)。该PLC1的控制动作的执行控制处理的详细的一例 相当于步骤S300~S348。

首先,微处理器100等待控制循环开始的中断信号(步骤S300)。若接 收到控制循环开始的中断信号(在步骤S300中“是”),则微处理器100在控 制程序1的执行循环从当前的控制循环开始的情况下,将控制程序1的执行 状态设定为“执行前”状态,且将在输出同步缓存1中存储的输出数据复制 到发送缓存(PLC系统总线发送缓存1043和/或场网络发送缓存1045)中(步 骤S302)。

接着,微处理器100在控制程序2的执行循环从当前的控制循环开始的 情况下,将控制程序2的执行状态设定为“执行前”状态,且将在输出同步 缓存2中存储的输出数据复制到发送缓存(PLC系统总线发送缓存1043和/ 或场网络发送缓存1045)中(步骤S304)。

接着,微处理器100对通信电路(PLC系统总线控制器120和/或场网络 控制器140)指示发送执行(步骤S306)。响应于发送执行的指示,在发送缓 存(PLC系统总线发送缓存1043和/或场网络发送缓存1045)中存储的数据 发送到其他的单元等。

之后,微处理器100等待来自通信电路(PLC系统总线控制器120和/ 或场网络控制器140)的接收完成通知(步骤S308)。

若接收到来自通信电路的接收完成通知(在步骤S308中“是”),则微处 理器100在控制程序1的执行循环从当前的控制循环开始的情况下,将在接 收缓存(PLC系统总线接收缓存1044和/或场网络接收缓存1046)中存储的 输入数据复制到输入同步缓存1中(步骤S310),在控制程序2的执行循环 从当前的控制循环开始的情况下,将在接收缓存(PLC系统总线接收缓存1044 和/或场网络接收缓存1046)中存储的输入数据复制到输入同步缓存2中(步 骤S312)。

接着,微处理器100判断控制程序1的执行状态(步骤S320)。

在控制程序1处于“执行前”状态的情况下(在步骤S320中“执行前”), 微处理器100将控制程序1的执行状态设定为“执行中”,开始控制程序1的 执行(步骤S322)。然后,处理进入步骤S326。

在控制程序1处于“执行中”状态的情况下(在步骤S320中“执行中”), 微处理器100开始执行控制程序1的未执行的部分(步骤S324)。然后,处 理进入步骤S326。

在控制程序1处于“执行结束”状态的情况下(在步骤S320中“执行结 束”),处理进入步骤S340。

若在步骤S322或S334中开始(或者,再次开始)控制程序1的执行, 则微处理器100等待控制程序1的执行结束通知或者下一个控制循环开始的 中断信号(步骤S326)。另外,通过在步骤S232或者S234中开始(或者, 再次开始)控制程序1的执行,从而在微处理器100中执行的处理从基于系 统程序的处理切换为基于控制程序1的处理。即,从控制程序1的执行开始 至执行结束为止的期间,微处理器100不执行系统程序。然后,若在结束控 制程序1的执行之前有下一个控制循环开始的中断,则实时OS200中断在微 处理器100中的控制程序1的执行,再次开始系统程序的执行。或者,若有 控制程序1的执行结束的通知(控制程序1的执行结束通知),则微处理器 100中的执行对象从控制程序2返回到系统程序。

若接收到控制程序1的执行结束通知(在步骤S336中“执行结束通知), 则微处理器100将控制程序1的执行状态设定为“执行结束”(步骤S328)。 然后,处理进入步骤S340。

另一方面,在控制程序1的执行结束通知之前接收到下一个控制循环开 始的中断(在步骤S336中“控制循环开始”),则在微处理器100中执行中的 控制程序1被中断,微处理器100再次执行步骤S302以下的处理。

在步骤S340中,微处理器100判断控制程序2的执行状态(步骤S340)。

在控制程序2处于“执行前”状态的情况下(在步骤S340中“执行前”), 微处理器100将控制程序2的执行状态设定为“执行中”,开始控制程序2的 执行(步骤S342)。然后,处理进入步骤S346。

在控制程序2处于“执行中”状态的情况下(在步骤S340中“执行中”), 微处理器100开始执行控制程序2的未执行的部分(步骤S344)。然后,处 理进入步骤S346。

在控制程序2处于“执行结束”状态的情况下(在步骤S340中“执行结 束”),处理进入步骤S300。

若在步骤S342或S344中开始(或者,再次开始)控制程序2的执行, 则微处理器100等待控制程序2的执行结束通知或者下一个控制循环开始的 中断信号(步骤S346)。

若接收到控制程序2的执行结束通知(在步骤S346中“执行结束通知), 则微处理器100将控制程序2的执行状态设定为“执行结束”(步骤S348)。 然后,处理进入步骤S300。

另一方面,在控制程序2的执行结束通知之前接收到下一个控制循环开 始的中断(在步骤S346中“控制循环开始”),则在微处理器100中执行中的 控制程序2被中断,微处理器100再次执行步骤S302以下的处理。

(o4:总结)

如上所述,在实施方式10中,作为与输入数据的输入有关的PLC1的控 制动作的执行准备处理,系统程序210包括以下的(a)和(b)的处理。另 外,在每个控制循环执行输入数据的接收。

(a)在主存储器104(存储部件)内生成用于存储接收到的输入数据的 接收缓存(图4所示的PLC系统总线接收缓存1044和场网络接收缓存1046) 的处理(图26所示的步骤S1)。

(b)对从控制程序参照的每个输入数据,在主存储器104(存储部件) 内(图4所示的输入同步缓存区域1042b)生成该控制程序作为输入数据的 参照目标的一个输入同步缓存(图24所示的输入同步缓存1和2)的处理(图 26所示的步骤S1)。

此外,在实施方式10中,作为PLC1的控制动作的执行控制处理,系统 程序210包括以下的(c)或者(d)的处理。

(c)以在与控制程序的执行循环开始的控制循环有关的接收定时接收到 该输入数据为条件,将接收到的输入数据从接收缓存(图4所示的PLC系统 总线接收缓存1044和场网络接收缓存1046)复制到与该输入数据对应的输 入同步缓存的输入复制处理(图26所示的步骤S310或者S312)。

(d)在控制循环的整数倍的每个执行循环,将控制程序开始执行的控制 程序开始处理(图26所示的步骤S322或者S342)。

根据如上所述的实施方式10的有关输入数据的处理方式,在控制程序的 执行循环横跨多个控制循环的情况下,能够将在控制程序的执行中使用的输 入数据统一为在与控制程序的执行循环开始的控制循环相关的接收定时接收 到的输入数据。

另外,上述的“在控制循环的整数倍的每个执行循环,将控制程序开始 执行”并不意味着排除执行循环时间变动的情况,例如包括如下情况:在控 制程序没有在该执行循环内结束的情况下,将执行循环每次延长1个控制循 环时间的情况。

另一方面,在实施方式10中,系统程序210若包括与输出数据的输出有 关的处理,则作为PLC1的控制动作的执行准备处理,包括以下的(α)~(γ) 的处理。

(α)在主存储器104(存储部件)内生成用于存储接收到的输入数据的 接收缓存(图4所示的PLC系统总线接收缓存1044和场网络接收缓存1046) 以及用于存储应发送的输出数据的发送缓存(图4所示的PLC系统总线发送 缓存1043和场网络发送缓存1045)的处理(图26所示的步骤S1)。

(β)对从控制程序参照的每个输入数据,在主存储器104(存储部件) 内(图4所示的输入同步缓存区域1042b)生成该控制程序作为输入数据的 参照目标的一个输入同步缓存(图24所示的输入同步缓存1和2)的处理(图 26所示的步骤S1)。

(γ)在主存储器104(存储部件)内(图4所示的输入同步缓存区域1042b) 生成用于存储复制到发送缓存的输出数据的输出同步缓存(图25所示的输出 同步缓存1和2)的处理(图26所示的步骤S1)。

此外,在实施方式10中,作为PLC1的控制动作的执行控制处理,系统 程序210包括以下的(δ)~(ζ)的处理。

(δ)将接收到的输入数据从接收缓存(图4所示的PLC系统总线接收 缓存1044和场网络接收缓存1046)复制到与该输入数据对应的输入同步缓 存的输入复制处理(图26所示的步骤S310或者S312)。

(ε)将控制程序开始执行的控制程序开始处理(图26所示的步骤S322 或者S342)。

(ζ)在生成了输出数据的控制程序执行的执行循环的下一个执行循环的 最初的控制循环中、该输出数据从发送缓存发送的定时,将该输出数据从输 出同步缓存复制到发送缓存中的输出复制处理(图26所示的步骤S302或者 S304)。

根据如上所述的实施方式10的有关输出数据的处理方式,在控制程序的 执行循环横跨多个控制循环的情况下,能够将更新的输出数据的发送定时统 一为与执行循环内的最后的控制循环相关的发送定时。

另外,在每个控制循环进行输出数据的发送的情况下,在与控制程序的 执行循环内的最后的控制循环有关的发送定时以外的发送定时,重复发送其 之前更新并存储在发送缓存中的输出数据。

<P.执行循环同步型更新标记型3缓存调换方式(实施方式11)>

(p1:概要)

与上述的实施方式10相同地,实施方式11以及后述的实施方式12以及 13是如下方式:应用在实施方式6~9中说明的3缓存调换方式,与控制程序 的执行循环同步地实现有效的输入数据的接收和输出数据的发送的方式。

(p2:时序图)

图27是表示实施方式11的输入方向的动作的时序图。图28是表示实施 方式11的输出方向的动作的时序图。实施方式11中的控制程序1和2是与 实施方式10的图24和图25中的控制程序1和2相同的程序,执行同样的调 度执行,但在图27和图28中只表示控制程序2,没有图示控制程序1。

关于实施方式11的输入方向/输出方向的动作,由于与上述的实施方式6 和8中的动作相同的点也比较多,所以主要说明不同点,不重复其他的相同 部分的详细的说明。

首先,参照图27说明实施方式11的输入方式。关于输入方式,在实施 方式6中,若“在控制程序的执行开始前”最新输入数据更新标记为有效, 则调换输入同步缓存的“待机”状态和“参照”状态,将最新输入数据更新 标记设为无效。

相对于此,在实施方式11中,“从接收缓存对输入同步缓存复制输入数 据之后,以控制程序的执行循环内的最初的控制循环为条件”,若最新输入 数据更新标记为有效,则调换输入同步缓存的“待机”状态和“参照”状态, 将最新输入数据更新标记设为无效。

接着,参照图28,说明实施方式11的输出方式。关于输出方式,在实 施方式8中,在“控制程序开始”时,若最新输出数据更新标记为有效,则 调换输出同步缓存的“待机”状态和“参照”状态,将最新输出数据更新标 记设为无效。

相对于此,在实施方式11中,在“控制程序的执行循环开始”时,若最 新输出数据更新标记为有效,则调换输出同步缓存的“待机”状态和“参照” 状态,将最新输出数据更新标记设为无效。

(p3:流程图)

图29是表示实施方式11的执行动作的流程图。在图29中没有记载有关 控制程序1的处理。参照图29,微处理器100执行系统程序中的、PLC1的 控制动作的执行准备处理(步骤S1)。接着,微处理器100执行系统程序210 中的、PLC1的控制动作的执行控制处理(图5所示的步骤S2)。该PLC1 的控制动作的执行控制处理的详细的一例相当于步骤S350~S376。

首先,微处理器100等待控制循环开始的中断信号(步骤S350)。若接 收到控制循环开始的中断信号(在步骤S350中“是”),则微处理器100在控 制程序2的执行循环从当前的控制循环开始的情况下,将控制程序2的执行 状态设定为“执行前”状态(步骤S352)。

接着,微处理器100在控制程序2的执行循环从当前的控制循环开始的 情况下,若最新输出数据更新标记1设定为有效,则将处于“待机”状态的 输出同步缓存2(输出同步缓存2D、2E、2F中的其中一个)设定为“参照目 标”状态,且将处于“参照目标”状态的输出同步缓存2(输出同步缓存2D、 2E、2F中的其中一个)设定为“待机”状态的基础上,将最新输出数据更新 标记2从有效变更为无效(步骤S354)。此外,若最新输出数据更新标记2 为无效,则不变更输出同步缓存2的“待机”状态和“参照目标”状态,最 新输出数据更新标记2也原样维持无效。

微处理器100将在“参照目标”状态的输出同步缓存2中存储的输出数 据复制到发送缓存(PLC系统总线发送缓存1043和/或场网络发送缓存1045) 中(步骤S356)。

接着,微处理器100对通信电路(PLC系统总线控制器120和/或场网络 控制器140)指示发送执行(步骤S358)。响应于发送执行的指示,在发送缓 存(PLC系统总线发送缓存1043和/或场网络发送缓存1045)中存储的数据 发送到其他的单元等。

之后,微处理器100等待来自通信电路(PLC系统总线控制器120和/ 或场网络控制器140)的接收完成通知(步骤S360)。

若接收到来自通信电路的接收完成通知(在步骤S360中“是”),则微处 理器100将在接收缓存(PLC系统总线接收缓存1044和/或场网络接收缓存 1046)中存储的输入数据复制到“写入目标”状态的输入同步缓存2(输入 同步缓存2A、2B、2C中的其中一个)中,且将处于“写入目标”状态的输 入同步缓存2(输入同步缓存2A、2B、2C中的其中一个)设定为“待机” 状态,将处于“待机”状态的输入同步缓存2(输入同步缓存2A、2B、2C 中的其中一个)设定为“写入目标”状态的基础上,将最新输入数据更新标 记2从无效变更为有效(步骤S362)。

接着,微处理器100在控制程序2的执行循环从当前的控制循环开始的 情况下,若最新输入数据更新标记1设定为有效,则将处于“待机”状态的 输入同步缓存2(输入同步缓存2A、2B、2C中的其中一个)设定为“参照 目标”状态,且将处于“参照目标”状态的输入同步缓存2(输入同步缓存 2A、2B、2C中的其中一个)设定为“待机”状态的基础上,将最新输入数 据更新标记2从有效变更为无效(步骤S364)。此时,若控制程序2的执行 循环没有从当前的控制循环开始,则不变更输出同步缓存2的“参照目标” 状态和“待机”状态,最新输入数据更新标记2也原样维持无效。

之后,微处理器100执行关于控制程序1的处理(步骤S366)。在步骤 S366中,微处理器100开始控制程序1的执行,从而在微处理器100中执行 的处理从基于系统程序的处理切换为基于控制程序1的处理。即,从控制程 序1的执行开始至执行结束为止的期间,微处理器100不执行系统程序。然 后,若在结束控制程序1的执行之前有下一个控制循环开始的中断,则实时 OS200中断在微处理器100中的控制程序1的执行,再次开始系统程序的执 行。或者,在接收到控制程序1的执行结束的通知(控制程序1的执行结束 通知),执行了关于控制程序1的规定的处理之后,处理进入步骤S368。

在步骤S368中,微处理器100判断控制程序2的执行状态(步骤S368)。

在控制程序2处于“执行前”状态的情况下(在步骤S368中“执行前”), 微处理器100将控制程序2的执行状态设定为“执行中”,开始控制程序2的 执行(步骤S370)。然后,处理进入步骤S374。

在控制程序2处于“执行中”状态的情况下(在步骤S368中“执行中”), 微处理器100开始执行控制程序2的未执行的部分(步骤S372)。然后,处 理进入步骤S374。

在控制程序2处于“执行结束”状态的情况下(在步骤S368中“执行结 束”),处理进入步骤S350。

若在步骤S370或S372中开始(或者,再次开始)控制程序2的执行, 则微处理器100等待控制程序2的执行结束通知或者下一个控制循环开始的 中断信号(步骤S374)。

若接收到控制程序2的执行结束通知(在步骤S374中“执行结束通知), 则微处理器100将控制程序2的执行状态设定为“执行结束”,将存储在运算 用缓存2中的输出数据复制到“写入目标”状态的输出同步缓存2(输出同 步缓存2D、2E、2F中的其中一个)中的基础上,将处于“写入目标”状态 的输出同步缓存2(输出同步缓存2D、2E、2F中的其中一个)设定为“待机” 状态,且将处于“待机”状态的输出同步缓存2(输出同步缓存2D、2E、2F 中的其中一个)设定为“写入目标”状态的基础上,将最新输出数据更新标 记2从无效变更为有效(步骤S376)。然后,处理进入步骤S350。

另一方面,在控制程序2的执行结束通知之前接收到下一个控制循环开 始的中断(在步骤S374中“控制循环开始”),则在微处理器100中执行中的 控制程序2被中断,微处理器100再次执行步骤S352以下的处理。

(p4:总结)

根据实施方式11,在PLC的系统程序采用了实施方式6~9所示的3缓 存方式的情况下,通过算法的稍微的变更,就能够实现与控制程序的执行循 环同步的输入数据的接收和输出数据的发送。

<Q.执行循环同步型最新数据型3缓存调换方式(实施方式12)>

(q1:概要)

如上所述,实施方式12是如下方式:应用在实施方式6~9中说明的3 缓存调换方式,与控制程序的执行循环同步地实现有效的输入数据的接收和 输出数据的发送的方式。

(q2:时序图)

关于实施方式12的输入方向/输出方向的动作,由于与上述的实施方式7 和8中的动作相同的点也比较多,所以主要说明不同点,不重复其他的相同 部分的详细的说明。

首先,参照图27说明实施方式12的输入方式。关于输入方式,在实施 方式7中,“在控制程序的执行开始前”,若“最新”状态的输入同步缓存 为“待机”状态,则调换输入同步缓存的“待机”状态和“参照”状态。

相对于此,在实施方式11中,“从接收缓存对输入同步缓存复制输入数 据之后,以控制程序的执行循环内的最初的控制循环为条件”,若“最新” 状态的输入同步缓存为“待机”状态,则调换输入同步缓存的“待机”状态 和“参照”状态。

接着,参照图28,说明实施方式12的输出方式。关于输出方式,在实 施方式9中,在“控制循环开始”时,若“最新”状态的输入同步缓存为“待 机”状态,则调换输出同步缓存的“待机”状态和“参照”状态。

相对于此,在实施方式11中,在“控制程序的执行循环开始”时,若“最 新”状态的输入同步缓存为“待机”状态,则调换输出同步缓存的“待机” 状态和“参照”状态。

(q3:流程图)

图30是表示实施方式2的执行动作的流程图。在图30中也没有记载有 关控制程序1的处理。

图30所示的流程图与图29所示的流程图的不同点在于,代替步骤S354、 S362、S364、S376,分别执行步骤S354A、S362A、S364A、S376A的处理。 以下,主要说明这些不同点,对于其他的处理不重复详细的说明。

在接着步骤S352执行的步骤S354A中,微处理器100在控制程序2的 执行循环从当前的控制循环开始的情况下,若“最新”状态的输出同步缓存 2(输出同步缓存2D、2E、2F中的其中一个)设定为“待机”状态,则将处 于“待机”状态的输出同步缓存2(输出同步缓存2D、2E、2F中的其中一个) 设定为“参照目标”状态,且将处于“参照目标”状态的输出同步缓存2(输 出同步缓存2D、2E、2F中的其中一个)设定为“待机”状态(步骤S354A)。

此时,若“最新”状态的输出同步缓存2处于“参照目标”状态,则不 变更输出同步缓存2的“待机”状态和“参照目标”状态,原样维持。

在接收到来自通信电路的接收完成通知的情况下(在步骤S360中“是”) 执行的步骤S362A中,微处理器100将在接收缓存(PLC系统总线接收缓存 1044和/或场网络接收缓存1046)中存储的输入数据复制到“写入目标”状 态的输入同步缓存2(输入同步缓存2A、2B、2C中的其中一个)中,且将 处于“写入目标”状态的输入同步缓存2(输入同步缓存2A、2B、2C中的 其中一个)设定为“待机”状态且还设定为“最新”状态,进一步将处于“待 机”状态的输入同步缓存2(输入同步缓存2A、2B、2C中的其中一个)设 定为“写入目标”状态(步骤S362A)。

在接着步骤S362A执行的步骤S364A中,微处理器100在控制程序2 的执行循环从当前的控制循环开始的情况下,若“最新”状态的输出同步缓 存2设定为“待机”状态,则将处于“待机”状态的输入同步缓存2(输出 同步缓存2A、2B、2C中的其中一个)设定为“参照目标”状态,且将处于 “参照目标”状态的输入同步缓存2(输入同步缓存2A、2B、2C中的其中 一个)设定为“待机”状态(步骤S364A)。此时,若控制程序2的执行循 环未从目前的控制循环开始,则不变更输入同步缓存2的“参照目标”状态 和“待机”状态,原样维持。

在接收到控制程序2的执行结束通知的情况下(在步骤S374中“执行结 束通知”)执行的步骤S376A中,微处理器100将控制程序2的执行状态设 定为“执行结束”,将在运算用缓存2中存储的输出数据复制到“写入目标” 状态的输出同步缓存2(输出同步缓存2D、2E、2F中的其中一个)中的基础 上,将处于“写入目标”状态的输出同步缓存2(输出同步缓存2D、2E、2F 中的其中一个)设定为“待机”状态且还设定为“最新”状态,将处于“待 机”状态的输出同步缓存2(输出同步缓存2D、2E、2F中的其中一个)设定 为“写入目标”状态(步骤S376A)。

(q4:总结)

根据实施方式12,在PLC的系统程序采用了实施方式6~9所示的3缓 存方式的情况下,通过算法的稍微的变更,就能够实现与控制程序的执行循 环同步的输入数据的接收和输出数据的发送。

<R.执行循环同步型更新确认省略型3缓存调换方式(实施方式13)>

(r1:概要)

如上所述,实施方式13是如下方式:应用在实施方式6~9中说明的3 缓存调换方式,与控制程序的执行循环同步地实现有效的输入数据的接收和 输出数据的发送的方式。

(r2:时序图)

表示实施方式13的输入方向的动作的时序图与上述的表示实施方式11 的输入方向的动作的图27实质上相同。此外,表示实施方式13的输出方向 的动作的时序图与上述的表示实施方式11的输出方向的动作的图28实质上 相同。

在上述的实施方式11中,使用最新输入数据更新标记和最新输出数据更 新标记,分别确认输入数据和输出数据的更新。此外,在上述的实施方式12 中,使用输入同步缓存和输出同步缓存的各自的最新状态,分别确认输入数 据和输出数据的更新。

但是,若至少在控制程序的执行循环内的最初的控制循环中可靠地进行 输入数据的接收和对于输入同步缓存的复制,则能够省略输入数据的更新确 认。此外,若在控制程序的每个执行循环可靠地进行输出数据的生成和对于 输出同步缓存的复制,则能够省略输出数据的更新。

因此,在实施方式13中,采用省略输入数据和输出数据的更新确认的方 式。

另外,在如下前提不一定成立的情况下,实施方式11或者12所示的、 进行输入数据和输出数据的更新确认的方式是有用的:在执行循环开头的控 制循环中必须有输入数据的接收,且在执行循环中(包括执行循环的延长) 必须生成输出数据。

(r3:流程图)

图31是表示实施方式13的执行动作的流程图。在图31中,也没有记载 有关控制程序1的处理。

图31所示的流程图与图29所示的流程图的不同点在于,代替步骤S354、 S362、S364、S376,分别执行步骤S354B、S362B、S364B、S376B的处理。 以下,主要说明这些不同点,对于其他的处理不重复详细的说明。

在接着步骤S352执行的步骤S354B中,微处理器100在控制程序2的 执行循环从当前的控制循环开始的情况下,将处于“待机”状态的输出同步 缓存2(输出同步缓存2D、2E、2F中的其中一个)设定为“参照目标”状态, 且将处于“参照目标”状态的输出同步缓存2(输出同步缓存2D、2E、2F 中的其中一个)设定为“待机”状态(步骤S354B)。

在接收到来自通信电路的接收完成通知的情况下(在步骤S360中“是”) 执行的步骤S362B中,微处理器100将在接收缓存(PLC系统总线接收缓存 1044和/或场网络接收缓存1046)中存储的输入数据复制到“写入目标”状 态的输入同步缓存2(输入同步缓存2A、2B、2C中的其中一个)中,且将 处于“写入目标”状态的输入同步缓存2(输入同步缓存2A、2B、2C中的 其中一个)设定为“待机”状态,将处于“待机”状态的输入同步缓存2(输 入同步缓存2A、2B、2C中的其中一个)设定为“写入目标”状态(步骤S362B)。

在接着步骤S362B执行的步骤S364B中,微处理器100在控制程序2 的执行循环从当前的控制循环开始的情况下,将处于“待机”状态的输入同 步缓存2(输出同步缓存2A、2B、2C中的其中一个)设定为“参照目标” 状态,且将处于“参照目标”状态的输入同步缓存2(输入同步缓存2A、2B、 2C中的其中一个)设定为“待机”状态(步骤S364B)。此时,若控制程序 2的执行循环未从目前的控制循环开始,则不变更输入同步缓存2的“参照 目标”状态和“待机”状态,原样维持。

在接收到控制程序2的执行结束通知的情况下(在步骤S374中“执行结 束通知”)执行的步骤S376B中,微处理器100将控制程序2的执行状态设 定为“执行结束”,将在运算用缓存2中存储的输出数据复制到“写入目标” 状态的输出同步缓存2(输出同步缓存2D、2E、2F中的其中一个)中的基础 上,将处于“写入目标”状态的输出同步缓存2(输出同步缓存2D、2E、2F 中的其中一个)设定为“待机”状态,且将处于“待机”状态的输出同步缓 存2(输出同步缓存2D、2E、2F中的其中一个)设定为“写入目标”状态(步 骤S376B)。

(r4:总结)

如上所述,在实施方式13中,作为与输入数据的输入有关的PLC1的控 制动作的执行准备处理,系统程序210包括以下的(a)和(b)的处理。另 外,在每个控制循环进行输入数据的接收。

(a)在主存储器104(存储部件)内生成用于存储接收到的输入数据的 接收缓存(图4所示的PLC系统总线接收缓存1044和场网络接收缓存1046) 的处理(图31所示的步骤S1)。

(b)对从控制程序参照的每个输入数据,在主存储器104(存储部件) 内作为输入同步缓存的组而生成第1输入同步缓存、第2输入同步缓存以及 第3输入同步缓存(图27所示的输入同步缓存2A、2B、2C)的处理(图31 所示的步骤S1)。对第1输入同步缓存、第2输入同步缓存以及第3输入同 步缓存不重复地赋予了能够从接收缓存(图4所示的PLC系统总线接收缓存 1044和/或场网络接收缓存1046)复制输入数据的状态的“写入目标”状态、 能够从控制程序参照的状态的“参照目标”状态以及“待机”状态中的其中 一个状态。

此外,在实施方式13中,作为PLC1的控制动作的执行控制处理,系统 程序210包括以下的(c)~(e)的处理。

(c)将接收到的输入数据从接收缓存(图4所示的PLC系统总线接收 缓存1044和场网络接收缓存1046)复制到与该输入数据对应的“写入目标” 状态的输入同步缓存,进一步对处于成为了复制目标的“写入目标”状态的 输入同步缓存以及在与该输入同步缓存相同的组中处于“待机”状态的输入 同步缓存,执行调换“写入目标”状态和“待机”状态的第1调换处理的输 入复制处理(图31所示的步骤S362B)。

(d)以是控制程序的执行循环开始的控制循环为条件,对处于“待机” 状态的输入同步缓存以及处于“参照目标”状态的输入同步缓存,执行调换 “待机”状态和“参照目标”状态的第2调换处理的执行循环输入初始处理 (图31所示的步骤S364B)。

(e)在控制循环的整数倍的每个执行循环,将控制程序开始执行的控制 程序开始处理(图31所示的步骤S370)。

另一方面,在实施方式13中,系统程序210若包括与输出数据的输出有 关的处理,则作为PLC1的控制动作的执行准备处理,包括以下的(α)~(γ) 的处理。

(α)在主存储器104(存储部件)内生成用于存储接收到的输入数据的 接收缓存(图4所示的PLC系统总线接收缓存1044和场网络接收缓存1046) 以及用于存储应发送的输出数据的发送缓存(图4所示的PLC系统总线发送 缓存1043和场网络发送缓存1045)的处理(图31所示的步骤S1)。

(β)对从控制程序参照的每个输入数据,在主存储器104(存储部件) 内(图4所示的输入同步缓存区域1042b)生成该控制程序作为输入数据的 参照目标的输入同步缓存(图27所示的输入同步缓存2A、2B、2C)的处理 (图31所示的步骤S1)。

(γ)在主存储器104(存储部件)内(图4所示的输出同步缓存区域 1042a),作为输出同步缓存的组而生成用于存储复制到发送缓存的输出数据 的、第1输出同步缓存、第2输出同步缓存以及第3输出同步缓存(图28所 示的输出同步缓存2D、2E、2F)的处理(图31所示的步骤S1)。对第1输 出同步缓存、第2输出同步缓存以及第3输出同步缓存不重复地赋予了能够 从运算用缓存复制输出数据的状态的“写入目标”状态、能够进行用于复制 到发送缓存中的参照的状态的“参照目标”状态以及“待机”状态中的其中 一个状态。

此外,在实施方式13中,作为PLC1的控制动作的执行控制处理,系统 程序210包括以下的(δ)~(ζ)的处理。

(δ)将接收到的输入数据从接收缓存(图4所示的PLC系统总线接收 缓存1044和场网络接收缓存1046)复制到与该输入数据对应的输入同步缓 存的输入复制处理(图31所示的步骤S362B)。

(ε)将控制程序开始执行的控制程序开始处理(图31所示的步骤S370)。

(ζ)若控制程序的执行结束,则将通过该控制程序的执行而生成的输出 数据从运算用缓存复制到处于“写入目标”状态的输出同步缓存中,进一步 对处于成为了复制目标的“写入目标”状态的输出同步缓存以及在与该输出 同步缓存相同的组中处于“待机”状态的输出同步缓存,执行调换“写入目 标”状态和“待机”状态的第4调换处理的输出同步缓存存储处理(图31所 示的步骤S376B)。

(η)在各个控制循环的开始之后、从发送缓存发送输出数据为止的期 间,将输出数据从处于“参照目标”状态的输出同步缓存复制到发送缓存中, 进一步以是控制程序的执行循环开始的控制循环为条件,在执行对于发送缓 存的复制之前,对处于“待机”状态的输出同步缓存以及处于“参照目标” 状态的输出同步缓存,执行调换“待机”状态和“参照目标”状态的第5调 换处理,由此,在生成了输出数据的控制程序执行的执行循环的下一个执行 循环的最初的控制循环中、成为从发送缓存发送的定时,将该输出数据从输 出同步缓存复制到发送缓存中的输出复制处理(图31所示的步骤S354B以 及S356)。

根据实施方式13,在PLC的系统程序采用了实施方式6~9所示的3缓 存方式的情况下,通过算法的稍微的变更,就能够实现与控制程序的执行循 环同步的输入数据的接收和输出数据的发送。

<S.支持装置>

接着,说明在PLC1中执行的程序的生成和用于进行PLC1的维护等的 PLC支持装置8。

图32是表示本发明的实施方式的连接到CPU单元而使用的PLC支持装 置8的硬件结构的示意图。参照图32,PLC支持装置8典型地由通用的计算 机构成。另外,从维护的观点出发,在可移动性方面优越的笔记本型的个人 计算机较好。

参照图32,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,所以不进行 除此之外的详细的说明。

图33是表示本发明的实施方式的连接到CPU单元而使用的PLC支持装 置8的软件结构的示意图。参照图33,在PLC支持装置8中执行OS310,提 供可执行在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的源程序。

编译程序322提供用于对控制程序230的源程序进行编译,从而生成可 在CPU单元13的微处理器100中执行的对象程序形式的用户程序236的功 能。此外,编译程序322提供用于对源程序330进行编译,从而生成可在PLC 支持装置8的CPU81中执行的对象程序形式的用户程序340的功能。该用户 程序340是用于通过PLC支持装置8对PLC1的动作进行仿真(模拟)的、 仿真用的对象程序。

调试程序323提供用于对控制程序230的源程序进行调试的功能。作为 该调试的内容,包括用于跟踪在源程序中将用户指定的范围部分性地执行的、 源程序的执行中的变量值的时间变化的动作。

调试程序323还提供用于执行控制程序230的仿真用的对象程序的功能。 在该仿真时,使用在PLC支持程序320中包括的仿真用时序命令运算程序324 和仿真用动作运算程序325,来代替在CPU单元13的系统程序中包括的时序 命令运算程序232和动作运算程序234。

通信程序326提供用于对PLC1的CPU单元13传送控制程序230的CPU 单元13用的对象程序的功能。

一般,在PLC1中安装的系统程序210,在CPU单元13的制造阶段存储 在CPU单元13的非易失性存储器106中。其中,若在CD-ROM9中存储系 统程序210,则用户还能够将CD-ROM9的系统程序210复制到PLC支持装 置8,利用通信程序326提供的功能而将复制的系统程序210传送到CPU单 元13。此外,若在CD-ROM9中存储在PLC1的CPU单元13中执行的实时 OS200,则也能够通过用户操作将实时OS200再次安装到PLC1中。

<T.其他方式>

上述的图13、15、18、21所示的时序图表示在PLC中使用了多核的微 处理器的情况的动作方式的一例。

例如,若使用具有第1核和第2核的微处理器,则在安装上,能够并行 执行第1核执行的输入输出处理和第2核执行的控制程序。但是,在PLC中 执行的控制程序使用接收到的输入数据,生成应发送的输出数据,所以交替 地执行输入输出处理和控制程序是基本的动作方式。此外,优选在每个控制 循环,尽量以一定的周期执行输入输出处理。

有关在这样的PLC中执行的控制程序的制约,在使用了多核的微处理器 的情况下也不变。因此,即使在使用了多核的微处理器的情况下,若将第1 核执行的输入输出处理和第2核执行的控制程序始终并行执行,则增加不会 对控制动作产生作用的多余的动作。

另一方面,由于控制程序的执行时间根据输入数据的内容等的条件而变 动,所以若控制循环的周期设定为比控制程序的平均执行时间稍微长的程度, 则存在在输入输出处理的结束之后开始执行的控制程序在下一个输入输出处 理的开始之前没有结束的情况。

在这样的情况下,使用单核的微处理器的情况下,考虑以下的对策。

·控制程序的执行结束为止延长该控制循环(此时,输入输出处理的周 期紊乱)。

·中断控制程序的执行而进行输入输出处理,之后再次开始控制程序的 执行(在再次开始的控制循环中原本应新开始执行的控制程序的执行被取 消)。

相对于此,在使用了多核的微处理器的情况下,利用能够并行执行输入 输出处理和控制程序的情况,即使在控制循环内控制程序的执行没有结束, 也原样继续执行,若在下一个控制循环中执行结束,则接着能够开始控制程 序的新的执行。将这样的思想具体化的方式就是图13等所示的动作方式。

具有这样的动作方式的PLC能够如下表现。即,一种对控制对象进行控 制的PLC的CPU单元,包括微处理器、存储部件以及通信电路。该PLC的 CPU单元通过重复输出数据的发送、输入数据的接收、使用输入数据而生成 输出数据的控制程序的执行,从而对控制对象进行控制。存储部件用于控制 程序和系统程序的存储。微处理器至少具有第1核和第2核。通信电路发送 输出数据并且接收输入数据。系统程序在微处理器的其中一个核中执行。系 统程序包括用于使第1核和第2核如下动作的处理。即,第1核在每个控制 循环控制输入输出处理的执行,该输入输出处理包括可发送控制程序生成的 输出数据以及控制程序可利用接收到的输入数据。第2核控制如下处理:(1) 在第1控制循环中的输入输出处理的执行结束之后,开始控制程序的第1执 行;(2)若在第1控制循环的下一个第2控制循环中的输入输出处理的执行 结束之前控制程序的第1执行结束,则在第2控制循环中的输入输出处理的 执行结束之后开始控制程序的第2执行;(3)若在第2控制循环中的输入输 出处理的执行结束之前控制程序的第1执行没有结束,则在控制程序的第1 执行的结束之后,开始控制程序的第2执行而不等待第2控制循环的下一个 第3控制循环中的输入输出处理的执行结束。

根据这样的PLC,即使在第1控制循环中开始了第1执行的控制程序的执 行没有在第2控制循环中的输入输出处理的开始之前结束,也存在在该输入 输出处理的结束之前控制程序的第1执行结束的可能性。此时,等待该输入 输出处理的结束而新开始执行的控制程序能够使用新的输入数据。

此外,在第1控制循环中开始了第1执行的控制程序的执行没有在第2 控制循环中的输入输出处理的结束之前结束的情况下,在控制程序的第2执 行的开始晚,但若控制程序的平均执行时间比从输入输出处理的结束到下一 次开始为止的时间短,则在几次控制循环之间,能够返回到接着输入输出处 理的结束而开始控制程序的执行的状态的可能性高。在这个期间,PLC也能 够以如下状态动作:在控制程序中尽可能使用新接收到的输入数据,尽可能 发送新生成的输出数据。

应认为本次公开的实施方式在所有方面都是例示,并不是限制性的。本 发明的范围并非由上述的说明所表示,而是由权利要求书所表示,意图包括 与权利要求书的范围等同的含义和范围内的全部变更。

标号说明:

1 PLC、2场网络、3伺服电动机驱动器、4伺服电动机、5远程IO终 端、6检测开关、7继电器、8PLC支持装置、9CD-ROM、10连接电缆、 11PLC系统总线、12电源单元、13CPU单元、14、53IO单元、15特殊单 元、51终端总线、52通信耦合器、81CPU、83RAM、85键盘、86鼠标、 87监视器、88驱动器、100微处理器、102芯片组、104主存储器、106非 易失性存储器、108系统定时器、110USB连接器、120PLC系统总线控制 器、122DMA控制电路、124PLC系统总线控制电路、126、146缓存存储器、 130连接器、140场网络控制器、142DMA控制电路、144场网络控制电路、 200实时OS、210、220系统程序、212调度程序、214输出处理程序、216 输入处理程序、218IO处理程序、230控制程序、232时序命令运算程序、 234动作运算程序、236、340用户程序、320支持程序、321编辑程序、322 编译程序、323调试程序、324仿真用时序命令运算程序、325仿真用动作 运算用程序、326通信程序、330源程序、1041程序区域、1042控制程序 的作业区域、1042a输出同步缓存区域、1042b输入同步缓存区域、1043 PLC 系统总线发送缓存、1044PLC系统总线接收缓存、1045场网络发送缓存、 1046场网络接收缓存、SYS系统。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号