[go: up one dir, main page]

KR20190089155A - Plc, 네트워크 유닛, cpu 유닛, 및 데이터 전송 방법 - Google Patents

Plc, 네트워크 유닛, cpu 유닛, 및 데이터 전송 방법 Download PDF

Info

Publication number
KR20190089155A
KR20190089155A KR1020197006804A KR20197006804A KR20190089155A KR 20190089155 A KR20190089155 A KR 20190089155A KR 1020197006804 A KR1020197006804 A KR 1020197006804A KR 20197006804 A KR20197006804 A KR 20197006804A KR 20190089155 A KR20190089155 A KR 20190089155A
Authority
KR
South Korea
Prior art keywords
data
unit
shared memory
data area
area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
KR1020197006804A
Other languages
English (en)
Other versions
KR102016629B1 (ko
Inventor
가츠히로 안넨
Original Assignee
미쓰비시덴키 가부시키가이샤
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 미쓰비시덴키 가부시키가이샤 filed Critical 미쓰비시덴키 가부시키가이샤
Publication of KR20190089155A publication Critical patent/KR20190089155A/ko
Application granted granted Critical
Publication of KR102016629B1 publication Critical patent/KR102016629B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/056Programming the PLC
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/054Input/output
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/12Programme control other than numerical control, i.e. in sequence controllers or logic controllers using record carriers
    • 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/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/408Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by data handling or data format, e.g. reading, buffering or conversion of data
    • 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/13015Semi automatic, manual automatic

Landscapes

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

Abstract

네트워크 유닛(200)의 수신 데이터 기입부(262)는, 제1 슬레이브국(1001)과 제2 슬레이브국(1002)으로부터 수신한 수신 데이터 중, 데이터의 동시성을 보증하는 데이터를, 기입이 가능한 것을 나타내는 플래그가 세트되었을 경우에 제1 데이터 영역(211)에 기록하고, 수신 데이터 중 리얼 타임성을 보증하는 데이터를 제2 데이터 영역(212)에 기록한다. CPU 유닛(100)의 제1 전송부(142)는, 제1 전송 주기로, 또한 판독이 가능한 것을 나타내는 플래그가 세트되었을 경우에 제1 데이터 영역(211)의 데이터를 제1 기억부(111)에 전송한다. CPU 유닛(100)의 제2 전송부(143)는 제2 전송 주기로, 제2 데이터 영역(212)의 데이터를 제2 기억부(112)에 전송한다.

Description

PLC, 네트워크 유닛, CPU 유닛, 및 데이터 전송 방법
본 발명은 PLC, 네트워크 유닛, CPU 유닛, 및 데이터 전송 방법에 관한 것이다.
FA(Factory Automation) 제어 시스템에 있어서 사용되고 있는 PLC(Programmable Logic Controller)에서는, PLC 전체를 제어하는 CPU(Central Processing Unit) 유닛과 기능 유닛의 하나이며, 네트워크를 통해서 다른 기기로부터 데이터를 수신하는 네트워크 유닛이 공유 메모리를 사용하여 서로 데이터를 교환한다.
네트워크 유닛이 공유 메모리의 데이터를 갱신하고 있는 도중에, CPU 유닛이 공유 메모리로부터 데이터를 읽어내면, CPU 유닛이 읽어낸 데이터는, 네트워크 유닛이 전회(前回)의 사이클 타임에서 수신하여, 이미 공유 메모리에 기입되어 있던 데이터와, 네트워크 유닛이 이번 사이클 타임에에서 수신한 데이터가 혼재된 것이 된다. 네트워크 유닛이 수신하는 데이터는 일정한 덩어리(chunk)로 의미를 가지는 경우가 있고, 이 경우, 한 번에 읽어내야 할 데이터가 동시에 읽어내지는 것, 즉, 데이터의 동시성을 보증할 수 없다.
이 문제를 해소하기 위해, 특허 문헌 1에는 플래그를 사용하여, CPU 유닛과 기능 유닛이 공유 메모리의 데이터의 읽기 쓰기를 동시에 행하지 않도록 배타 제어하는 것이 기재되어 있다.
종래의 배타 제어의 일례로서 이하와 같이 플래그를 사용하는 제어 방식이 있다. 공유 메모리에 대한 액세스의 상태를, 네트워크 유닛이 기입 가능한 상태 「0」, CPU 유닛이 판독 가능한 상태 「1」, CPU 유닛이 판독 중인 상태 「2」의 3개로 구분한다. 이들 3개의 구분의 상태를 나타내는 플래그의 값을, 「0」에서 「1」로, 「1」에서 「2」로, 「2」에서 「0」으로 변경한다. CPU 유닛과 네트워크 유닛은, 플래그의 값이 공유 메모리에 액세스 가능한 것을 나타내는 경우에, 공유 메모리에 액세스한다.
특허 문헌 1: 일본국 특개 2004-265001호 공보
상술한 3값의 플래그를 사용하는 경우, 「0」으로 나타내지는 네트워크 유닛이 기입 가능한 상태의 전(前) 상태는, 「2」로 나타내지는 CPU 유닛이 판독 중인 상태이다. 즉, CPU 유닛이 데이터를 공유 메모리로부터 읽어낸 후가 아니면, 네트워크 유닛은 공유 메모리에 기입할 수 없다.
여기서, CPU 유닛의 사이클 타임은 네트워크 유닛의 사이클 타임과 상이한 경우가 많다. CPU 유닛의 사이클 타임이 네트워크 유닛의 사이클 타임보다 긴 경우에는, CPU 유닛의 공유 메모리로부터의 읽기의 간격은, 네트워크 유닛의 공유 메모리로의 기입의 간격에 대해서 길어진다. 네트워크 유닛은 CPU 유닛의 읽기를 기다리다가, 공유 메모리에 쓰게 되기 때문에, 네트워크가 공유 메모리에 기입할 수 없는 타이밍이 생겨 버린다.
또한, 네트워크 유닛의 수신 버퍼의 용량은 한정된 것이어서, 동일 슬레이브국으로부터의 수신 데이터는 최신의 1건밖에 유지할 수 없는 경우가 있다. 이 때문에, 네트워크 유닛이 공유 메모리에 기입할 수 없는 기간에, 네트워크 유닛이 슬레이브국으로부터 데이터를 수신했을 경우, 수신 버퍼 내의 이전에 수신된 데이터가 새롭게 수신된 데이터로 덮어 써진다.
이 결과, 네트워크 유닛은 덮어 써진 데이터를 공유 메모리에 쓰지 못하고, CPU 유닛은 덮어 써진 데이터를 취득할 수 없다. 따라서, CPU 유닛이 네트워크 유닛으로부터 취득하는 데이터의 일부가 소실되어 버린다.
이러한 상황을 피하기 위해, 네트워크 유닛이 수신 버퍼가 덮어 써지기 전에, 수신 버퍼의 데이터를 다른 기억 영역에 저장시키는 것과 같은 방법도 생각할 수 있지만, 네트워크 유닛측의 구성이 복잡하게 되어 버린다.
본 발명은 상기 실정에 감안하여 이루어진 것으로, 데이터의 동시성을 유지하면서, 간이한 방법으로 CPU 유닛이 네트워크 유닛으로부터 취득하는 데이터의 결락을 저감시키는 것을 목적으로 한다.
상기 목적을 달성하기 위해, 본 발명에 따른 PLC는 CPU 유닛과, 네트워크 유닛과, CPU 유닛과 네트워크 유닛이 읽기 쓰기 가능한 공유 메모리를 포함한다. 공유 메모리는 제1 데이터 영역과 제2 데이터 영역을 포함한다. 네트워크 유닛의 수신 데이터 기입부는, 네트워크를 통해서 접속된 기기로부터 수신한 수신 데이터 중 데이터의 동시성을 보증하는 데이터를, 제1 데이터 영역에 기입이 가능한 것을 나타내는 플래그가 세트되었을 경우에 제1 데이터 영역에 기록하고, 수신 데이터 중 리얼 타임성을 보증하는 데이터를 제2 데이터 영역에 기록한다. CPU 유닛의 제1 전송부는 제1 전송 주기로, 또한 제1 데이터 영역으로부터 판독이 가능한 것을 나타내는 플래그가 세트되었을 경우에, 데이터의 동시성을 보증하는 데이터를 제1 데이터 영역으로부터 읽어내어, CPU 유닛의 기억부에 전송한다. CPU 유닛의 제2 전송부는 제1 전송 주기와는 상이한 제2 전송 주기로, 리얼 타임성을 보증하는 데이터를 제2 데이터 영역으로부터 읽어내어, 기억부에 전송한다.
본 발명에 따른 PLC에서는, 네트워크 유닛은 수신 데이터 중 데이터의 동시성을 보증하는 데이터를, 제1 데이터 영역에 기입이 가능한 것을 나타내는 플래그가 세트되었을 경우에 제1 데이터 영역에 기록하고, 수신 데이터 중 리얼 타임성을 보증하는 데이터를 제2 데이터 영역에 기록한다. CPU 유닛은 리얼 타임성을 보증하는 데이터를, 데이터의 동시성을 보증하는 데이터의 제1 전송 주기와는 상이한 제2 전송 주기로, 제2 데이터 영역으로부터 기억부에 전송한다.
이러한 구성을 구비함으로써, 데이터의 동시성을 보증하는 데이터에 대해서는 동시성을 유지하면서, 리얼 타임성을 보증하는 데이터에 대해서는, 데이터의 결락을 저감시킬 수 있다.
도 1은 본 발명의 실시 형태 1에 따른 PLC의 구성을 나타내는 블록도이다.
도 2a는 실시 형태 1에 따른 CPU 유닛의 설정 테이블에 등록되는 정보의 예를 나타내는 도면이다.
도 2b는 실시 형태 1의 제1 플래그에 세트되는 값의 예를 나타내는 도면이다.
도 2c는 실시 형태 1에 따른 네트워크 유닛의 설정 테이블에 등록되는 정보의 예를 나타내는 도면이다.
도 3은 실시 형태 1의 네트워크 유닛의 수신 데이터 기입 처리의 순서도이다.
도 4a는 실시 형태 1의 CPU 유닛의 제1 전송 처리의 순서도이다.
도 4b는 실시 형태 1의 CPU 유닛의 제2 전송 처리의 순서도이다.
도 5는 실시 형태 1에 따른 네트워크 유닛, 공유 메모리, CPU 유닛의 사이에서 데이터가 전송되는 모습을 나타내는 도면이다.
도 6은 실시 형태 2에 따른 PLC의 구성을 나타내는 블록도이다.
도 7은 실시 형태 2의 네트워크 유닛의 수신 데이터 기입 처리의 순서도이다.
도 8은 실시 형태 2의 CPU 유닛의 제2 전송 처리의 순서도이다.
도 9는 실시 형태 2에 있어서의, 네트워크 유닛, 공유 메모리, CPU 유닛의 사이에서 데이터가 전송되는 모습을 나타내는 도면이다.
(실시 형태 1)
이하, 본 발명의 실시 형태 1에 따른 PLC(1)를 설명한다.
도 1에 나타내는 것처럼, PLC(1)는 마스터국으로서 기능하고, 네트워크(1000)를 통해서 접속된 제1 슬레이브국(1001)과 제2 슬레이브국(1002)을 관리한다. PLC(1)는 PLC(1) 전체를 제어하는 CPU 유닛(100)과, 제1 슬레이브국(1001)과 제2 슬레이브국(1002)과 통신하는 네트워크 유닛(200)을 포함한다.
도 1에서는 도시하고 있지 않지만, CPU 유닛(100)과 네트워크 유닛(200)은 전원 유닛과 함께, 베이스 유닛에 장착되어, 전원 유닛으로부터 공급된 전원에 의해서 동작한다. CPU 유닛(100)과 네트워크 유닛(200)은 공유 버스(300)에 의해서 접속되어, 서로 통신한다.
제1 슬레이브국(1001)의 예로서는, 스위치, 센서, 표시등 등의 입출력 기기, 액츄에이터, 드라이버 등의 제어 기기, 퍼스널 컴퓨터와 같은 정보 통신 기기가 있다. 제2 슬레이브국(1002)도 마찬가지이다. 제1 슬레이브국(1001)은 본 발명의 제1 기기의 일례이다. 제2 슬레이브국(1002)은 본 발명의 제2 기기의 일례이다.
CPU 유닛(100)은 제1 슬레이브국(1001)과 제2 슬레이브국(1002)으로부터 취득한 입력 데이터를 사용하여 연산을 행하고, 연산 결과에 기초하여, 제1 슬레이브국(1001)과 제2 슬레이브국(1002)을 관리한다. 이하, 제1 슬레이브국(1001)을 예로 설명하지만, 제2 슬레이브국(1002)에 대해서도 마찬가지이다.
CPU 유닛(100)이 연산에 사용하는 입력 데이터는, 예를 들면, 제1 슬레이브국(1001)에 접속되어 있는 스위치가 온된 것을 나타내는 정보, 스위치가 오프된 것을 나타내는 정보이다. 우선, 제1 슬레이브국(1001)은 입력 데이터를 네트워크 유닛(200)에 송신한다. 네트워크 유닛(200)은 제1 슬레이브국(1001)으로부터 수취한 입력 데이터를, 후술하는 공유 메모리(210)를 통해서, CPU 유닛(100)에 공급한다.
CPU 유닛(100)은 취득한 입력 데이터를 사용하여, 연산을 행하고, 연산 결과로부터, 제1 슬레이브국(1001)을 제어하기 위한 제어 데이터를 출력한다. CPU 유닛(100)이 출력하는 제어 데이터는, 예를 들면, 제1 슬레이브국(1001)에 접속되어 있는 액츄에이터의 구동을 지시하는 정보, 액츄에이터의 정지를 지시하는 정보이다. 이와 같이 하여, PLC(1)는 제1 슬레이브국(1001)을 관리한다.
실시 형태 1에서는, 본 발명의 데이터의 동시성을 보증하는 데이터로서, 네트워크 유닛(200)이 제1 슬레이브국(1001)과 제2 슬레이브국(1002)으로부터 수신하는 데이터 중, 데이터의 동시성을 보증하는 데이터의 범위를 설정한다. 구체적으로는, 데이터의 동시성을 보증하는 데이터를, 제1 슬레이브국(1001)으로부터 수신하는 데이터로 한다. 제1 슬레이브국(1001)으로부터 수신하는 데이터에 대해서는, 데이터의 동시성을 보증할 수 있도록, 공유 메모리(210)의 액세스의 배타 제어를 행한다. 이하, 제1 슬레이브국(1001)으로부터 수신하는 데이터를 제1 범위의 데이터라고 부르는 경우가 있다.
또, 본 발명의 리얼 타임성을 보증하는 데이터로서, 네트워크 유닛(200)이 제1 슬레이브국(1001)과 제2 슬레이브국(1002)으로부터 수신하는 데이터 중, 데이터의 동시성을 보증하지 않는 데이터의 범위를 설정한다. 구체적으로는, 리얼 타임성을 보증하는 데이터를, 제2 슬레이브국(1002)으로부터 수신하는 데이터로 한다. 제2 슬레이브국(1002)으로부터 수신하는 데이터에 대해서는, 공유 메모리(210)의 액세스의 배타 제어를 행하지 않는다. 제2 슬레이브국(1002)으로부터 수신하는 데이터에 대해서는, 취득 데이터의 결락을 저감시키도록, 공유 메모리(210)로부터의 판독 타이밍을, 제1 범위의 데이터의 판독 타이밍과는 상이하게 한다. 이하, 제2 슬레이브국(1002)으로부터 수신하는 데이터를 제2 범위의 데이터라고 부르는 경우가 있다.
CPU 유닛(100)은 각종 데이터를 기억하는 내부 메모리(110)와, 후술하는 설정 툴(301)과 통신을 행하기 위한 설정 툴 인터페이스(120)와, 공유 버스(300)를 통한 통신을 위한 공유 버스 인터페이스(130)와, CPU 유닛(100) 전체를 제어하는 연산부(140)를 포함한다. 각부는 버스(190)를 통해서 접속되어 있다.
내부 메모리(110)는 ROM(Read Only Memory), RAM(Random Access Memory), 메모리 카드 등을 포함한다. 내부 메모리(110)는 제1 기억부(111)와, 제2 기억부(112)와, 설정 테이블(113)과, 유저 프로그램(114)을 가진다.
제1 기억부(111)와 제2 기억부(112)는, CPU 유닛(100)에 의한 사이클릭 처리에 의해, 후술하는 네트워크 유닛(200)의 공유 메모리(210)로부터 읽어내지는 데이터를 격납하는 영역이다.
설정 테이블(113)은 공유 메모리(210) 내에 있어서, 제1 범위의 데이터가 격납되어 있는 영역을 나타내는 정보와, 제2 범위의 데이터가 격납되어 있는 영역을 나타내는 정보를 포함한다. 설정 테이블(113)은 후술하는 제1 전송 처리와 제2 전송 처리에 사용된다. 설정 테이블(113)은 설정 툴(301)을 유저가 조작함으로써 내부 메모리(110)에 격납된다. 또, 설정 테이블(113)에 격납된 정보는 후술하는 네트워크 유닛(200)의 수신 데이터 기입 처리에도 사용된다. 이 때문에, CPU 유닛(100)은 네트워크 유닛(200)의 기동시에, 설정 테이블(113)에 격납된 정보를 네트워크 유닛(200)에 제공한다.
도 2a에 설정 테이블(113)에 등록되는 정보의 예를 나타낸다. 설정 테이블(113)에는 제1 범위의 데이터인 제1 슬레이브국(1001)으로부터 수신하는 데이터의 격납처가, 제1 데이터 영역(211)인 것을 나타내는 정보와, 제2 범위의 데이터인 제2 슬레이브국(1002)으로부터 수신하는 데이터의 격납처가, 제2 데이터 영역(212)인 것을 나타내는 정보가 등록되어 있다.
유저 프로그램(114)은 래더 로직의 프로그램을 포함하고, PLC(1)가 관리 대상으로 하는 제1 슬레이브국(1001)과 제2 슬레이브국(1002)을 제어하기 위한 프로그램이다. 유저 프로그램(114)에 포함되는 명령은, 제1 슬레이브국(1001)과 제2 슬레이브국(1002)으로부터의 수신 데이터를 입력으로 하여 온 또는 오프하고, 온의 상태가 된 명령이 실행된다. 유저 프로그램(114)의 명령의 실행에 의해, 예를 들면, 입력치를 사용한 연산, 연산치의 출력 등이 행해진다. 유저 프로그램(114)은 도시하지 않은 프로그램 작성 지원 장치를 이용하여 작성된다. 프로그램 작성 지원 장치는, 퍼스널 컴퓨터에 전용 프로그램을 인스톨한 장치이다. 프로그램 작성 지원 장치로 작성된 유저 프로그램(114)은, PLC(1)의 CPU 유닛(100)에 업 로드되어 내부 메모리(110)에 격납된다.
설정 툴 인터페이스(120)는 CPU 유닛(100)이, 설정 툴(301)과 통신하기 위한 통신 인터페이스이다. 설정 툴 인터페이스(120)는 연산부(140)의 제어에 따라서 동작한다.
공유 버스 인터페이스(130)는 CPU 유닛(100)이 공유 버스(300)를 통해서 네트워크 유닛(200)과 통신하기 위한 통신 인터페이스이다. 공유 버스 인터페이스(130)는 연산부(140)의 제어에 따라서 동작한다.
연산부(140)는 MPU(Micro-processing Unit)를 포함하고, 프로그램을 실행하여, 각종 연산, CPU 유닛(100)의 각부의 제어를 행한다. 연산부(140)는 프로그램 실행부(141), 제1 전송부(142), 제2 전송부(143)를 가진다.
프로그램 실행부(141)는 제1 기억부(111)와 제2 기억부(112)에 격납된 데이터를 사용하여, 유저 프로그램(114)을 반복하여 실행한다. 프로그램 실행부(141)가, 유저 프로그램(114)을 실행하는 주기를 CPU 유닛(100)의 제어 주기, 또는 사이클 타임이라고 한다. 프로그램 실행부(141)는 CPU 유닛(100)의 제어 주기로, 유저 프로그램(114) 내의 온된 명령을 차례로 처리해 간다. 프로그램 실행부(141)는 유저 프로그램(114)의 명령을 모두 실행하면, 유저 프로그램(114)의 실행을 정지한다. 프로그램 실행부(141)는, 다음의 제어 주기에서, 다시 유저 프로그램(114)의 실행을 개시한다.
제1 전송부(142)는 제1 슬레이브국(1001)으로부터 송신된 데이터를, 설정 테이블(113)에 기초하여 공유 메모리(210)로부터 읽어내어, 내부 메모리(110)의 지정된 영역에 전송한다. 여기에서는, 제1 기억부(111)가 지정된 영역이다. 전송처를 지정하는 방법으로서, 설정 툴(301)에서 미리 설정해 두는 방법과 유저 프로그램(114)으로 지정하는 방법이 있다. 제1 전송부(142)는 CPU 유닛(100)의 제어 주기와 같은 주기인 제1 전송 주기로 동작한다. 덧붙여 CPU 유닛(100)의 연산 능력상, 가장 짧은 주기보다도 큰 범위이면, 제1 전송 주기는, 유저가 후술하는 설정 툴(301)을 이용하여 변경하는 것도 가능하다.
제2 전송부(143)는 제2 슬레이브국(1002)으로부터 송신된 데이터를, 설정 테이블(113)에 기초하여 공유 메모리(210)로부터 읽어내어, 내부 메모리(110)의 지정된 영역에 전송한다. 여기에서는, 제2 기억부(112)가 지정된 영역이다. 전송처를 지정하는 방법으로서 설정 툴(301)로 미리 설정해 두는 방법과 유저 프로그램(114)으로 지정하는 방법이 있다. 제2 전송부(143)는 CPU 유닛(100)의 제어 주기보다 짧은 제2 전송 주기로 동작한다. 제2 전송 주기는 유저가 후술하는 설정 툴(301)을 이용하여 설정한다.
네트워크 유닛(200)은 네트워크 유닛(200)과 CPU 유닛(100)의 어느 것도 읽기 기입이 가능한 공유 메모리(210)와, 각종 데이터를 기억하는 내부 메모리(220)와, 공유 버스(300)를 통해서 CPU 유닛(100)와 통신하기 위한 공유 버스 인터페이스(230)와, 제1 슬레이브국(1001)과 제2 슬레이브국(1002)과 통신하기 위한 네트워크 인터페이스(240)와, 제1 슬레이브국(1001)과 제2 슬레이브국(1002)으로부터 수신한 데이터를 일시적으로 유지하기 위한 수신 버퍼(250)와, 네트워크 유닛(200) 전체의 제어를 실행하는 연산부(260)와, 후술하는 설정 툴(301)과 통신하기 위한 설정 툴 인터페이스(270)를 포함한다. 각부는 버스(290)를 통해서 접속되어 있다.
공유 메모리(210)는 RAM을 포함하고, 제1 데이터 영역(211)과, 제2 데이터 영역(212)과, 제1 플래그(213)를 가진다. 제1 데이터 영역(211)에는, 제1 슬레이브국(1001)으로부터 수신된 데이터가 격납된다. 제2 데이터 영역(212)에는, 제2 슬레이브국(1002)으로부터 수신된 데이터가 격납된다.
제1 플래그(213)에는 제1 데이터 영역(211)의 기입 가부(可否)와 판독 가부를 나타내는 값을 세트한다. 제1 플래그(213)에 세트되는 값은 이하와 같다. 도 2b에 나타내는 것처럼, 네트워크 유닛(200)이 제1 데이터 영역(211)에 기입 가능한 상태에서는, 제1 플래그(213)에는 "0"이 세트된다. CPU 유닛(100)이 제1 데이터 영역(211)으로부터 판독 가능한 상태에서는, 제1 플래그(213)에는 "1"이 세트된다. CPU 유닛(100)이 제1 데이터 영역(211)으로부터 판독 중인 상태에서는, 제1 플래그(213)에는 "2"가 세트된다. 제1 플래그(213)는 CPU 유닛(100) 또는 네트워크 유닛(200)이 세트한다.
내부 메모리(220)는 ROM, RAM, 메모리 카드 등을 포함한다. 내부 메모리(220)는 설정 테이블(221)을 가진다. 설정 테이블(221)은 후술하는 수신 데이터 기입 처리에 사용된다. 설정 테이블(221)은 제1 슬레이브국(1001)과 제2 슬레이브국(1002)으로부터 수신한 데이터를 격납하는 영역을 나타내는 정보를 포함한다. 설정 테이블(221)에는 네트워크 유닛(200)의 기동시에 CPU 유닛(100)으로부터 제공된 정보가 격납되어 있다. 구체적으로는, 설정 테이블(113)에 격납되어 있는 정보가 CPU 유닛(100)으로부터 네트워크 유닛(200)에 제공된다.
도 2c에 설정 테이블(221)에 등록되는 정보의 예를 나타낸다. 설정 테이블(221)은 제1 슬레이브국(1001)으로부터 송신된 데이터의 격납처로서, 네트워크 유닛(200)의 공유 메모리(210)의 제1 데이터 영역(211)을 나타내는 정보가 등록되어 있다. 또한, 설정 테이블(221)에는 제2 슬레이브국(1002)으로부터 송신된 데이터의 격납처로서, 공유 메모리(210)의 제2 데이터 영역(212)을 나타내는 정보가 등록되어 있다.
네트워크 인터페이스(240)는 연산부(260)의 제어에 따라서, 제1 슬레이브국(1001)과 제2 슬레이브국(1002)에 대해서, 정해진 타이밍에서 데이터의 송신을 요구한다. 네트워크 인터페이스(240)는 제1 슬레이브국(1001)과 제2 슬레이브국(1002)으로부터 수신한 데이터를 수신 버퍼(250)에 기입한다.
수신 버퍼(250)는 네트워크 유닛(200)이 수신한 데이터를 일시적으로 유지 한다. 수신 버퍼(250)에는 네트워크 유닛(200)이 수신한 데이터와, 당해 데이터의 송신원을 나타내는 정보가 차례로 기록된다. 수신 버퍼(250)는 송신원의 슬레이브국마다 할당된 영역을 포함한다. 구체적으로는, 네트워크 유닛(250)이 제1 슬레이브국(1001)으로부터 수신한 데이터는, 수신 버퍼(250)의 제1 슬레이브국(1001)을 위해서 할당된 영역에 격납된다. 네트워크 유닛(250)이 제2 슬레이브국(1002)으로부터 수신한 데이터는, 수신 버퍼(250)의 제2 슬레이브국(1002)을 위해서 할당된 영역에 격납된다. 네트워크 유닛(250)이 어느 슬레이브국으로부터 데이터를 수신하면, 수신 버퍼(250)의 당해 슬레이브국을 위해서 할당된 영역에 격납되어 있는 데이터가 덮어 써진다.
연산부(260)는 데이터 수신부(261), 수신 데이터 기입부(262)를 포함한다.
데이터 수신부(261)는 네트워크 인터페이스(240)에 제1 슬레이브국(1001)과 제2 슬레이브국(1002)에 데이터의 송신을 요구하는 제어 신호를 정해진 타이밍에서 송신하게 한다. 데이터 수신부(261)는 네트워크 인터페이스(240)에 제1 슬레이브국(1001)과 제2 슬레이브국(1002)으로부터 수신한 데이터를 수신 버퍼(250)에 격납시킨다.
수신 데이터 기입부(262)는 수신 버퍼(250)에 유지된 데이터를, 설정 테이블(221)에 기초하여, 공유 메모리(210)에 기록한다. 도 2c에 나타내는 예에서는, 수신 데이터 기입부(262)는 제1 플래그(213)를 확인하여, 제1 플래그의 값이 0인 경우에, 제1 슬레이브국(1001)으로부터 수신한 데이터를 제1 데이터 영역(211)에 기록한다. 이 때, 제1 데이터 영역(211)에 이미 기록되어 있는 데이터는 덮어 써진다. 또, 수신 데이터 기입부(262)는 제1 플래그(213)의 값에 관계없이, 제2 슬레이브국(1002)으로부터 수신한 데이터를 제2 데이터 영역(212)에 기록한다. 이 때 제2 데이터 영역(212)에 이미 기록되어 있는 데이터는 덮어 써진다. 수신 데이터 기입부(262)는 네트워크 유닛(200)의 제어 주기로 동작한다.
설정 툴(301)은 전용의 응용 프로그램을 인스톨한 퍼스널 컴퓨터를 포함한다. 유저는 설정 툴(301)과 CPU 유닛(100)을 통신 케이블로 접속하고, 설정 툴(301)을 조작하여, CPU 유닛(100)의 내부 메모리(110)에, 도 2a에 나타내는 설정 테이블(113)을 격납한다.
본 실시 형태에서는, 제1 슬레이브국(1001)으로부터 송신되는 데이터는, 일정한 덩어리로 의미를 가지며, 데이터의 동시성을 보증하는 것이 바람직한 데이터인 것으로 한다. 데이터의 동시성을 보증하는 것이 바람직한 데이터의 예로서는, 사이즈가 큰 데이터, 자리수가 큰 숫자 데이터 등을 들 수 있다. 제2 슬레이브국(1002)으로부터 송신되는 데이터는, 데이터의 동시성을 보증할 필요가 없는 데이터로 한다. 예를 들면, 제2 슬레이브국(1002)으로부터는, 기온, 기압 등과 같은, 로깅에서 사용되고, 리얼 타임으로 취득하는 것이 바람직한 데이터(리얼 타임성을 보증하는 데이터)가 네트워크 유닛(200)에 송신될 수 있다.
우선, 네트워크 유닛(200)의 수신 데이터 기입부(262)가 제1 슬레이브국(1001)과 제2 슬레이브국(1002)으로부터 수신한 데이터를, 공유 메모리(210)에 기입하는 수신 데이터 기입 처리를 설명한다. 수신 데이터 기입부(262)는 수신 데이터 기입 처리를 네트워크 유닛(200)의 제어 주기로 실행한다.
도 3에 나타내는 것처럼, 네트워크 유닛(200)의 수신 데이터 기입부(262)는, 제1 플래그(213)의 값이 "0"인지 여부를 판별한다(스텝 S11). 수신 데이터 기입부(262)는 제1 플래그(213)의 값이 "0"이라고 판별되면(스텝 S11;Yes), 수신 버퍼(250)에 격납되어 있는 데이터 중 제1 슬레이브국(1001)으로부터 수신한 데이터를, 제1 데이터 영역(211)에 기입한다(스텝 S12). 그 후, 수신 데이터 기입부(262)는 제1 플래그(213)의 값을“1"로 변경하고(스텝 S13), 스텝 S14의 처리를 실행한다.
한편, 스텝 S11에서, 수신 데이터 기입부(262)는 제1 플래그(213)의 값이 "0"이 아니라고 판별되면(스텝 S11;No), 스텝 S14의 처리를 실행한다.
스텝 S14에 있어서, 수신 데이터 기입부(262)는 수신 버퍼(250)에 격납되어 있는 데이터 중 제2 슬레이브국(1002)으로부터 수신한 데이터를, 제2 데이터 영역(212)에 기입한다(스텝 S14).
이어서, CPU 유닛(100)이 공유 메모리(210)의 데이터를 읽어내어, 내부 메모리(110)에 전송하는 처리를 설명한다.
우선, 제1 전송부(142)가 제1 데이터 영역(211)으로부터 내부 메모리(110)에 데이터를 전송하는 제1 전송 처리를 설명한다. 제1 전송부(142)는 CPU 유닛(100)의 제어 주기로 제1 전송 처리를 실행한다.
도 4a에 나타내는 것처럼, 제1 전송부(142)는 CPU 유닛(100)의 제어 주기로 제1 전송 처리를 실행한다. 우선, 제1 전송부(142)는 네트워크 유닛(200)의 제1 플래그(213)의 값을 읽어내어, 제1 플래그(213)의 값이 "1"인지 여부를 판별한다(스텝 S21). 제1 전송부(142)는 제1 플래그(213)의 값이 "1"이라고 판별되면(스텝 S21;Yes), 제1 플래그(213)의 값을 "2"로 변경한다(스텝 S22). 그 후, 제1 전송부(142)는 네트워크 유닛(200)의 제1 데이터 영역(211)에 격납되어 있는 데이터를 읽어내어, 내부 메모리(110)의 제1 기억부(111)에 전송한다(스텝 S23). 구체적으로는, 제1 전송부(142)는 제1 데이터 영역(211)에 격납되어 있는 데이터를 제1 기억부(111)에 카피한다.
그 후, 제1 전송부(142)는 제1 플래그(213)의 값을 "0"으로 변경한다(스텝 S24). 이것에 의해, 네트워크 유닛(200)이 다시 공유 메모리(210)의 제1 데이터 영역(211)에 기입 가능하게 된다. 이상이 제1 전송부(142)의 제1 전송 처리이다.
다음에, 제2 전송부(143)가 제2 데이터 영역(212)으로부터 내부 메모리(110)에 데이터를 전송하는 제2 전송 처리를 설명한다. 제2 전송부(143)는 CPU 유닛(100)의 제어 주기보다 짧은 주기로 제2 전송 처리를 실행한다. 이하, 제2 전송부(143)가 제2 전송 처리를 개시하는 주기를 제2 전송 주기로 한다.
도 4b에 나타내는 것처럼, 제2 전송부(143)는 제2 데이터 영역(212)에 격납되어 있는 데이터를 읽어내어, 내부 메모리(110)의 제2 기억부(112)에 전송한다(스텝 31). 제2 데이터 영역(212)에는 플래그가 설정되어 있지 않기 때문에, 제2 전송 처리는 이상과 같다.
상기의 처리에 의해, 공유 메모리(210)의 제1 데이터 영역(211)에 격납된 데이터는 CPU 유닛(100)의 제1 기억부(111)에 전송된다. 공유 메모리(210)의 제2 데이터 영역(212)에 격납된 데이터는, CPU 유닛(100)의 제2 기억부(112)에 전송된다.
도 5를 참조하여, 상기의 수신 데이터 기입 처리, 제1 전송 처리, 제2 전송 처리의 실행에 의해, 네트워크 유닛(200)이 제1 슬레이브국(1001)과 제2 슬레이브국(1002)으로부터 수신한 데이터가 어떻게 CPU 유닛(100)에 전송되는지를 설명한다.
시각 t1의 시점에서, 네트워크 유닛(200)의 수신 버퍼(250)에는, 제1 슬레이브국(1001)으로부터 수신된 데이터 S1001_1과, 제2 슬레이브국(1002)으로부터 수신된 S1002_1이 격납되어 있는 것으로 한다. 제1 슬레이브국(1001)과 제2 슬레이브국(1002)으로부터는 정해진 타이밍에서 데이터가 송신되어 있고, 도 5의 예에서는, 시각 t1, t4, t6, t8, t11, t13, t15, t18의 각 시점에 있어서, 수신 버퍼(250)의 데이터는 새로운 수신 데이터로 덮어 써져 있는 것으로 한다.
또, 제2 전송 주기는 네트워크 유닛(200)의 제어 주기와 거의 같아지도록 설정되어 있다. 덧붙여 제2 전송 주기와, 네트워크 유닛(200)의 제어 주기는 비동기이다.
시각 t1에 있어서, 수신 데이터 기입부(262)는 제1 플래그(213)의 값이 "0"이므로 데이터 S1001_1을 제1 데이터 영역(211)에 기입한다. 아울러, 수신 데이터 기입부(262)는 데이터 S1002_1을 제2 데이터 영역(212)에 기입한다. 이어서, 수신 데이터 기입부(262)는 제1 플래그(213)의 값을 "1"로 변경한다.
시각 t2에 있어서, 제1 전송부(142)는 제1 플래그(213)의 값이 "1"이므로, 제1 플래그(213)의 값을 "2"로 변경하고, 제1 데이터 영역(211)의 데이터를 읽어내어, 제1 기억부(111)에 전송한다. 따라서, 제1 기억부(111)에는 데이터 S1001_1이 격납된다. 그 후, 제1 전송부(142)는 제1 플래그(213)의 값을 "0"으로 변경한다.
시각 t3에 있어서, 제2 전송부(143)는 제2 데이터 영역(212)의 데이터를 읽어내어, 제2 기억부(112)에 전송한다. 따라서, 제2 기억부(112)에는 데이터 S1002_1이 격납된다.
시각 t4에 있어서, 수신 데이터 기입부(262)는 제1 플래그(213)의 값이 "0"이므로, 데이터 S1001_2를 읽어내어, 제1 데이터 영역(211)에 기입한다. 아울러, 수신 데이터 기입부(262)는 데이터 S1002_2를 읽어내어, 제2 데이터 영역(212)에 기입한다. 이어서, 수신 데이터 기입부(262)는 제1 플래그(213)의 값을 "1"로 변경한다.
시각 t5에 있어서, 제2 전송부(143)는 제2 데이터 영역(212)의 데이터를 읽어내어, 제2 기억부(112)에 전송한다. 따라서, 제2 기억부(112)에는 데이터 S1002_2가 격납된다. 덧붙여 시각 t5는 CPU 유닛(100)의 제어 주기는 아니기 때문에, 제1 전송부(142)는 제1 데이터 영역(211)의 데이터를 제1 기억부(111)에 전송하지 않는다.
시각 t6에 있어서, 수신 데이터 기입부(262)는 제1 플래그(213)의 값이 "1"이므로, 제1 데이터 영역(211)에 데이터 S1001_3을 기입하지 않고, 제2 데이터 영역(212)에만 데이터 S1002_3을 기입한다.
시각 t7에 있어서, 제2 전송부(143)는 제2 데이터 영역(212)의 데이터를 읽어내어, 제2 기억부(112)에 전송한다. 따라서, 제2 기억부(112)에는 데이터 S1002_3이 격납된다. 덧붙여 시각 t7은 CPU 유닛(100)의 제어 주기는 아니기 때문에, 제1 전송부(142)는 제1 데이터 영역(211)의 데이터를 제1 기억부(111)에 전송하지 않는다.
시각 t8에 있어서, 수신 데이터 기입부(262)는 제1 플래그(213)의 값이 "1"이기 때문에, 데이터 S1001_4를 제1 데이터 영역(211)에 기입하지 않고, 데이터 S1002_4만을 읽어내어 제2 데이터 영역(212)에 기입한다.
시각 t9에 있어서, 제1 전송부(142)는 제1 플래그(213)의 값이 "1"이므로, 제1 플래그(213)의 값을 "2"로 변경하고, 제1 데이터 영역(211)의 데이터를 읽어내어, 제1 기억부(111)에 전송한다. 따라서, 제1 기억부(111)에는 데이터 S1001_2가 격납된다. 그 후, 제1 전송부(142)는 제1 플래그(213)의 값을 "0"으로 변경한다.
시각 t10에 있어서, 제2 전송부(143)는 제2 데이터 영역(212)의 데이터를 읽어내어, 제2 기억부(112)에 전송한다. 따라서 제2 기억부(112)에는 데이터 S1002_4가 격납된다. 덧붙여 시각 t10은 CPU 유닛(100)의 제어 주기는 아니기 때문에, 제1 전송부(142), 제1 데이터 영역(211)의 데이터를 제1 기억부(111)에 전송하지 않는다. 시각 t11 이후에 대해서는 설명을 생략하지만, 수신 데이터 기입부(262), 제1 전송부(142), 제2 전송부(143)는 마찬가지로 처리를 계속한다.
상기와 같이, 수신 데이터 기입부(262)는 제1 데이터 영역(211)에 기입 가능한 경우에, 제1 슬레이브국(1001)으로부터 수신한 데이터를 읽어내어, 제1 데이터 영역(211)에 기입한다. 제1 전송부(142)는 CPU 유닛(100)이 제1 데이터 영역(211)으로부터 판독 가능한 경우에, 제1 데이터 영역(211)으로부터 읽어낸 데이터를 내부 메모리(110)의 제1 기억부(111)에 전송한다. 따라서, 제1 슬레이브국(1001)으로부터 수신된 데이터에 대해서는, 데이터의 동시성이 보증된다.
또, 수신 데이터 기입부(262)는 제2 데이터 영역(212)의 읽기 쓰기의 상태에 관계없이, 제2 슬레이브국(1002)으로부터 수신한 데이터를 제2 데이터 영역(212)에 기입한다. 또한, 제2 전송부(143)는 CPU 유닛(100)의 제어 주기보다 짧은 주기이고, 또한 제2 데이터 영역(212)의 읽기 쓰기의 상태에 관계없이, 공유 메모리(210)의 제2 데이터 영역(212)의 데이터를 읽어내어, 제2 기억부(112)에 전송한다. 이 경우, 데이터의 동시성은 보증되지 않기는 하지만, 네트워크 유닛(200)이 제2 슬레이브국(1002)으로부터 수신한 데이터의 대부분을, 제2 데이터 영역(212)에 전송하는 것이 가능해진다.
도 5에 나타내는 예에서는, 네트워크 유닛(200)이 모든 제어 주기에 있어서 제2 슬레이브국(1002)으로부터 수신한 데이터를, CPU 유닛(100)의 제2 기억부(112)에 전송하는 것이 가능하게 되어 있다. 이것은, 제2 전송 주기를, 네트워크 유닛(200)의 제어 주기와 거의 같게 설정했기 때문이다.
제2 전송 주기를, 네트워크 유닛(200)의 제어 주기의 기간보다 길게 했을 경우, 제2 슬레이브국(1002)으로부터 송신된 데이터의 일부에 대해서는 전송되지 않는 사태가 발생할 수 있다고 생각할 수 있다. 이 때문에, 제2 전송 주기를 CPU 유닛(100)의 제어 주기보다 짧게 한 다음, 제2 전송부(143)가 제2 데이터 영역(212)으로부터 제2 기억부(112)로 데이터를 전송할 시간을 확보하면서, 네트워크 유닛(200)의 제어 주기의 기간에 맞추는 것이 바람직하다.
제2 전송 주기를, CPU 유닛(100)의 제어 주기보다 짧게 함으로써, 전송되는 데이터의 누락이 생겼다고 하더라도, 그 수는 적다고 생각할 수 있다. 이와 같이, CPU 유닛(100)에 전송되는 데이터의 누락을 저감시킬 수 있다.
상기의 실시 형태 1에서는, 리얼 타임성을 보증하는 데이터로서 설정한 제2 슬레이브국(1002)으로부터 공급된 데이터에 대해서는, 데이터의 동시성을 보증할 수 없다.
(실시 형태 2)
실시 형태 2에서는, 제2 범위의 데이터에 대해서도, 데이터의 동시성을 보증하는 구성을 설명한다. 실시 형태 2에 따른 PLC(2)는 실시 형태 1의 PLC(1)와 마찬가지로, CPU 유닛(100)과 네트워크 유닛(200)을 가진다. 이하, 실시 형태 1과 상이한 점을 중심으로 설명한다.
실시 형태 2에서는, 데이터의 동시성을 보증하는 데이터를, 제1 슬레이브국(1001)으로부터 수신하는 데이터로 한다. 실시 형태 1과 마찬가지로, 제1 슬레이브국(1001)으로부터 수신하는 데이터에 대해서는, 데이터의 동시성을 보증할 수 있도록, 공유 메모리(210)의 액세스의 배타 제어를 행한다. 이하, 제1 슬레이브국(1001)으로부터 수신하는 데이터를 제1 범위의 데이터라고 부르는 경우가 있다.
또, 리얼 타임성을 보증하는 데이터를, 제2 슬레이브국(1002)으로부터 수신하는 데이터로 한다. 제2 슬레이브국(1002)으로부터 수신하는 데이터에 대해서는, 데이터의 동시성을 보증하면서, 취득 데이터의 결락을 저감시킨다. 이 때문에, 제2 슬레이브국(1002)으로부터 수신하는 데이터에 대해서는, 공유 메모리(210)의 액세스의 배타 제어를 행하고, 공유 메모리(210)로부터의 판독 타이밍을, 제1 범위의 데이터의 판독 타이밍과는 상이하게 한다. 이하, 제2 슬레이브국(1002)으로부터 수신하는 데이터를 제2 범위의 데이터라고 부르는 경우가 있다.
도 6에 나타내는 것처럼, PLC(2)에서는, 네트워크 유닛(200)의 공유 메모리(210)는 제2 플래그(214)를 추가로 포함한다. 제2 플래그(214)에는, 제2 데이터 영역(212)의 액세스의 배타 제어를 위한 플래그이다. 제2 플래그(214)에 세트하는 값은, 제1 플래그(213)와 같다. 도 2b에 나타내는 것처럼, 네트워크 유닛(200)이 제2 데이터 영역(212)에 기입 가능한 상태에서는, 제1 플래그(213)에는 "0"이 세트된다. CPU 유닛(100)이 제2 데이터 영역(212)으로부터 판독 가능한 상태에서는, 제2 플래그(214)에는 "1"이 세트된다. CPU 유닛(100)이 제1 데이터 영역(211)으로부터 판독 중인 상태에서는, 제2 플래그(214)에는 "2"가 세트된다.
도 7을 참조하여, 네트워크 유닛(200)의 수신 데이터 기입부(262)가, 제1 슬레이브국(1001)과 제2 슬레이브국(1002)으로부터 수신한 데이터를, 공유 메모리(210)에 기입하는 처리를 설명한다. 수신 데이터 기입부(262)는 네트워크 유닛(200)의 제어 주기로 하기의 처리를 실행한다.
도 7에 나타내는 것처럼, 네트워크 유닛(200)의 수신 데이터 기입부(262)는 제1 플래그(213)의 값이 "0"인지 여부를 판별한다(스텝 S41). 수신 데이터 기입부(262)는 제1 플래그(213)의 값이 "0"이라고 판별되면(스텝 S41;Yes), 수신 버퍼(250)에 격납되어 있는 데이터 중 제1 슬레이브국(1001)으로부터 수신한 데이터를 제1 데이터 영역(211)에 기입한다(스텝 S42). 그 후, 수신 데이터 기입부(262)는 제1 플래그(213)의 값을“1"로 변경하고(스텝 S43), 스텝 S44의 처리를 실행한다.
한편, 스텝 S41에서, 수신 데이터 기입부(262)는 제1 플래그(213)의 값이 "0"이 아니라고 판별되면(스텝 S41;No), 스텝 S44의 처리를 실행한다. 스텝 S44에 있어서, 수신 데이터 기입부(262)는 제2 플래그(214)의 값이 "0"인지 여부를 판별한다(스텝 S44).
수신 데이터 기입부(262)는 제2 플래그(214)의 값이 "0"이라고 판별되면(스텝 S44;Yes), 수신 버퍼(250)에 격납되어 있는 데이터 중 제2 슬레이브국(1002)으로부터 수신한 데이터를 제2 데이터 영역(212)에 기입한다(스텝 S45). 그 후, 수신 데이터 기입부(262)는 제2 플래그(214)의 값을 "1"로 변경한다(스텝 S46).
한편, 스텝 S44에서, 수신 데이터 기입부(262)는 제1 플래그(213)의 값이 "0"이 아니라고 판별되면(스텝 S44;No), 수신 버퍼(250)의 데이터를 제2 데이터 영역(212)에 기입하지 않고 수신 데이터 기입 처리를 종료한다.
CPU 유닛(100)의 제1 전송부(142)가 실행하는 제1 전송 처리는, 실시 형태 1의 도 4a에 나타낸 플로우와 같으므로, 여기에서는 설명을 생략한다.
이하, 도 8을 참조하면서, 제2 전송부(143)가 공유 메모리(210)에 격납된 데이터를 읽어내어, 내부 메모리(110)에 전송하는 제2 전송 처리를 설명한다. 제2 전송부(143)는 CPU 유닛(100)의 제어 주기보다 짧은 제2 전송 주기로 제2 전송 처리를 실행한다.
우선, 제2 전송부(143)는 제2 플래그(214)의 값이 "1"인지 여부를 판별한다(스텝 S51). 제2 전송부(143)는 제2 플래그(214)의 값이 "1"이라고 판별되면(스텝 S51;Yes), 제2 플래그(214)의 값을 "2"로 변경한다(스텝 S52). 그 후, 제2 전송부(143)는 네트워크 유닛(200)의 제2 데이터 영역(212)에 격납되어 있는 데이터를 읽어내어, 내부 메모리(110)의 제2 기억부(112)에 전송한다(스텝 S53). 구체적으로는, 제2 전송부(143)는 제2 데이터 영역(212)에 격납되어 있는 데이터를 제2 기억부(112)에 카피한다.
그 후, 제2 전송부(143)는 제2 플래그(214)의 값을 "0"으로 변경한다(스텝 S54). 이것에 의해, 네트워크 유닛(200)이 다시 공유 메모리(210)의 제2 데이터 영역(212)에 기입 가능하게 된다.
한편, 스텝 S51에서, 수신 데이터 기입부(262)는 제2 플래그(214)의 값이 "1"이 아니라고 판별되면(스텝 S51;No), 수신 버퍼(250)의 데이터를 제2 데이터 영역(212)에 기입하지 않고 제2 전송 처리를 종료한다.
이어서, 도 9를 참조하여, 상기의 수신 데이터 기입 처리, 제1 전송 처리, 제2 전송 처리의 실행에 의해, 네트워크 유닛(200)이 제1 슬레이브국(1001)과 제2 슬레이브국(1002)으로부터 수신한 데이터가 어떻게 전송되는지를 설명한다.
시각 t1의 시점에서, 네트워크 유닛(200)의 수신 버퍼(250)에는 제1 슬레이브국(1001)과 제2 슬레이브국(1002)으로부터 수신된 데이터 S1001_1, S1002_1이 격납되어 있는 것으로 한다. 제1 슬레이브국(1001)과 제2 슬레이브국(1002)으로부터는 정해진 타이밍에서 데이터가 송신되고 있고, 도 9의 예에서는, 시각 t1, t4, t6, t8, t11, t13, t15, t18의 각 시점에 있어서, 수신 버퍼(250)의 데이터는, 새로운 수신 데이터로 덮어 쓰여지고 있는 것으로 한다.
또, 도 5의 예와 같이, 제2 전송부(143)가 전송 처리를 개시하는 제2 전송 주기는, 네트워크 유닛(200)의 제어 주기와 거의 같아지도록 설정되어 있다. 덧붙여 제2 전송 주기와, 네트워크 유닛(200)의 제어 주기는 비동기이다.
시각 t1에 있어서, 수신 데이터 기입부(262)는 제1 플래그(213)의 값이 "0"이므로, 데이터 S1001_1을 제1 데이터 영역(211)에 기입하고, 제1 플래그(213)의 값을 "1"로 변경한다. 아울러, 수신 데이터 기입부(262)는 제2 플래그(214)의 값이 "0"이므로 데이터 S1002_1을 제2 데이터 영역(212)에 기입한다. 이어서, 수신 데이터 기입부(262)는 제2 플래그를 "1"로 변경한다.
시각 t2에 있어서, 제1 전송부(142)는 제1 플래그(213)의 값이 "1"이므로, 제1 플래그(213)의 값을 "2"로 변경하고, 제1 데이터 영역(211)의 데이터를 읽어내어, 제1 기억부(111)에 전송한다. 따라서, 제1 기억부(111)에는 데이터 S1001_1이 격납된다. 그 후, 제1 전송부(142)는 제1 플래그(213)의 값을 "0"으로 변경한다.
시각 t3에 있어서, 제2 전송부(143)는 제2 플래그(214)의 값이 "1"이므로, 제2 플래그(214)의 값을 "2"로 변경하고, 제2 데이터 영역(212)의 데이터를 읽어내어, 제2 기억부(112)에 전송한다. 따라서, 제2 기억부(112)에는 데이터 S1002_1이 격납된다. 그 후, 제2 전송부(143)는 제2 플래그(214)의 값을 "0"으로 변경한다.
시각 t4에 있어서, 수신 데이터 기입부(262)는 제1 플래그(213)의 값이 "0"이므로, 데이터 S1001_2를 제1 데이터 영역(211)에 기입하고, 제1 플래그(213)의 값을 "1"로 변경한다. 아울러, 수신 데이터 기입부(262)는 제2 플래그(214)의 값이 "0"이므로, 데이터 S1002_2를 제2 데이터 영역(212)에 기입한다. 이어서, 수신 데이터 기입부(262)는 제2 플래그를 "1"로 변경한다.
시각 t5에 있어서, 제2 전송부(143)는 제2 플래그(214)의 값이 "1"이므로, 제2 플래그(214)의 값을 "2"로 변경하고, 제2 데이터 영역(212)의 데이터를 읽어내어, 제2 기억부(112)에 전송한다. 따라서, 제2 기억부(112)에는 데이터 S1002_2가 격납된다. 그 후, 제2 전송부(143)는 제2 플래그(214)의 값을 "0"으로 변경한다. 덧붙여 시각 t5는, CPU 유닛(100)의 제어 주기는 아니기 때문에, 제1 전송부(142)는 제1 데이터 영역(211)의 데이터를 제1 기억부(111)에 전송하지 않는다.
시각 t6에 있어서, 제1 플래그(213)의 값이 "1"이기 때문에, 수신 데이터 기입부(262)는 제1 데이터 영역(211)에 데이터 S1001_3을 기입하지 않는다. 수신 데이터 기입부(262)는 제2 플래그(214)의 값이 "0"이므로, 데이터 S1002_3을 제2 데이터 영역(212)에 기입한다. 이어서, 수신 데이터 기입부(262)는 제2 플래그를 "1"로 변경한다.
시각 t7에 있어서, 제2 전송부(143)는 제2 플래그(214)의 값이 "1"이므로, 제2 플래그(214)의 값을 "2"로 변경하고, 제2 데이터 영역(212)의 데이터를 읽어내어, 제2 기억부(112)에 전송한다. 따라서, 제2 기억부(112)에는 데이터 S1002_3이 격납된다. 그 후, 제2 전송부(143)는 제2 플래그(214)의 값을 "0"으로 변경한다. 덧붙여 시각 t7은 CPU 유닛(100)의 제어 주기는 아니기 때문에, 제1 전송부(142)는 제1 데이터 영역(211)의 데이터를 제1 기억부(111)에 전송하지 않는다.
시각 t8에 있어서, 수신 데이터 기입부(262)는 제1 플래그(213)의 값이 "1"이기 때문에, 제1 데이터 영역(211)에 데이터 S1001_4를 기입하지 않는다. 수신 데이터 기입부(262)는 제2 플래그(214)의 값이 "0"이므로, 데이터 S1002_4를 제2 데이터 영역(212)에 기입한다. 이어서, 수신 데이터 기입부(262)는 제2 플래그를"1"로 변경한다.
시각 t9에 있어서, 제1 전송부(142)는 제1 플래그(213)의 값이 "1"이기 때문에, 제1 플래그(213)의 값을 "2"로 변경하고, 제1 데이터 영역(211)의 데이터를 읽어내어, 제1 기억부(111)에 전송한다. 따라서, 제1 기억부(111)에는 데이터 S1001_2가 격납된다. 그 후, 제1 전송부(142)는 제1 플래그(213)의 값을 "0"으로 변경한다.
시각 t10에 있어서, 제2 전송부(143)는 제2 플래그(214)의 값이 "1"이므로, 제2 플래그(214)의 값을 "2"로 변경하고, 제2 데이터 영역(212)의 데이터를 읽어내어, 제2 기억부(112)에 전송한다. 따라서, 제2 기억부(112)에는 데이터 S1002_4가 격납된다. 그 후, 제2 전송부(143)는 제2 플래그(214)의 값을 "0"으로 변경한다.
덧붙여 시각 t10은 CPU 유닛(100)의 제어 주기는 아니기 때문에, 제1 전송부(142)는 제1 데이터 영역(211)의 데이터를 제1 기억부(111)에 전송하지 않는다. 시각 t11 이후에 대해서는 설명을 생략하지만, 수신 데이터 기입부(262), 제1 전송부(142), 제2 전송부(143)는 같은 처리를 계속한다.
실시 형태 2에 있어서는, 제1 데이터 영역(211), 제2 데이터 영역(212)의 각각에 대해서 제1 플래그(213), 제2 플래그(214)를 사용하여, 공유 메모리(210)의 읽기 쓰기의 제어를 행했기 때문에, 제1 슬레이브국(1001)으로부터 송신된 데이터, 제2 슬레이브국(1002)으로부터 송신된 데이터의 어느 것에 대해서도 데이터의 동시성이 보증된다.
또한, 도 9에 나타내는 예에서는, 실시 형태 1과 마찬가지로, 네트워크 유닛(200)이 모든 제어 주기에 있어서 제2 슬레이브국(1002)으로부터 수신한 데이터를, CPU 유닛(100)에 전송할 수 있었다. 이것은, 제2 전송 주기를, 네트워크 유닛(200)의 제어 주기와 거의 같게 설정했기 때문이다.
제2 전송 주기를, 네트워크 유닛(200)의 제어 주기의 기간보다 길게 했을 경우, 제2 슬레이브국(1002)으로부터 송신된 데이터의 일부에 대해서는 전송되지 않는 사태가 발생할 수 있다고 생각할 수 있다. 이 때문에, 제2 전송 주기를, CPU 유닛(100)의 제어 주기보다 짧게 한 다음, 제2 전송부(143)의 제2 데이터 영역(212)으로부터 제2 기억부(112)로의 전송을 위한 시간을 확보하면서, 네트워크 유닛(200)의 제어 주기의 기간에 맞춘 기간으로 하는 것이 바람직하다.
실시 형태 2에 있어서는, 제2 슬레이브국(1002)으로부터 수신한 데이터에 대해서도 제2 플래그(214)를 사용하여, 공유 메모리(210)의 제2 데이터 영역(212)의 읽기 쓰기를 제한하기 때문에, 실시 형태 1의 구성보다도, 수신 데이터 기입부(262)가 제2 데이터 영역(212)에 기입할 수 없는 경우가 많아지는 것이 예상된다. 그렇지만, 실시 형태 2에 있어서도, 제2 슬레이브국(1002)으로부터의 수신 데이터의 전송 주기를, 제1 슬레이브국(1001)으로부터의 수신 데이터의 전송 주기보다 짧게 하고 있기 때문에, 제2 슬레이브국(1002)으로부터 수신한 데이터의 누락을 저감시키는 것이 가능하다.
(변형예 1)
실시 형태 1 및 2에서는, 제1 슬레이브국(1001)으로부터 수신한 데이터를 데이터의 동시성을 보증하는 데이터인 제1 범위의 데이터로 하고, 제2 슬레이브국(1002)으로부터 수신한 데이터를 리얼 타임성을 보증하는 데이터인 제2 범위의 데이터로 설정했지만, 이들 데이터의 범위는 임의로 결정할 수 있다. 예를 들면, 제1 범위의 데이터를 복수의 슬레이브국 A, B, C로부터 수신한 데이터로 하고, 제2 범위의 데이터를 다른 복수의 슬레이브국 D, E, F로부터 수신한 데이터로 설정해도 된다.
혹은, 데이터의 동시성을 보증하는 데이터인 제1 범위의 데이터와, 리얼 타임성을 보증하는 데이터인 제2 범위의 데이터를 송신하는 슬레이브국의 일부가 중복되어도 된다. 예를 들면, 제1 범위의 데이터를 슬레이브국 A, B, C로부터 수신한 데이터로 하고, 제2 범위의 데이터를 슬레이브국 A, D, E로부터 수신한 데이터로 설정해도 된다. 이 경우, 제1 범위의 데이터에 대해서만 배타 제어를 행하고 있었다고 하고, 슬레이브국 A로부터 수신하는 데이터에 대해서, 제1 범위의 데이터와 제2 범위의 데이터를 병합, 수정함으로써, 데이터의 동시성을 보증하면서, 데이터의 결락을 저감시키는 것이 가능하다.
또, 혹은, 데이터의 동시성을 보증하는 데이터인 제1 범위의 데이터를 송신하는 슬레이브국의 전부와 리얼 타임성을 보증하는 데이터인 제2 범위의 데이터를 송신하는 슬레이브국의 전부가 중복되어도 된다. 이 경우도, 제1 범위의 데이터와 제2 범위의 데이터를 병합, 수정함으로써, 모든 슬레이브국에 대해서, 데이터의 동시성을 보증하면서, 데이터의 결락을 저감시키는 것이 가능하다.
(변형예 2)
또, 동일한 슬레이브국으로부터 수신한 데이터의 일부를, 데이터의 동시성을 보증하는 데이터인 제1 범위의 데이터로 하고, 그 외의 범위를 리얼 타임성을 보증하는 데이터인 제2 범위의 데이터로 설정해도 된다. 예를 들면, 슬레이브국 A로부터, 온도의 계측치와, 습도의 계측치가 송신되고 있다. 또, 슬레이브국 A의 기기는, 온도의 변화에는 별로 영향을 받지 않고, 습도의 변화에 큰 영향을 받는 기기이다. 이 경우, 온도의 계측치에 대해서는 제1 범위의 데이터에 포함시키고, 습도의 계측치에 대해서는 제2 범위에 포함시켜도 된다. 네트워크 유닛(200)은 슬레이브국 A의 수신 데이터의 헤더 정보에 기초하여, 온도의 계측치와, 습도의 계측치를 배분하여 공유 메모리에 기록한다. 이와 같이 하여, 제2 범위의 데이터인 습도의 계측치의 누락을 저감시킬 수 있고, 슬레이브국 A의 기기의 상태를 감시하는데 유효하다.
(변형예 3)
또 설정하는 범위의 수는, 2개로 한정되지 않는다. 제1 범위의 데이터, 제2 범위의 데이터, 제3 범위의 데이터를 설정해도 된다. 이 경우, 공유 메모리(210)에는, 또한, 제3 데이터 영역을 확보한다. 공유 메모리의 모든 데이터 영역에 플래그를 설정해도 되고, 일부에 플래그를 설정해도 된다. CPU 유닛(100)의 내부 메모리(110)에는, 추가로 제3 기억부를 확보한다. 혹은, 설정하는 범위의 수가 4개 이상인 경우도 마찬가지이다.
(변형예 4)
상술한 실시 형태 1, 2에서는, 공유 메모리(210)의 제2 데이터 영역(212)을 항상 사용하는 예를 설명했지만, 공유 메모리(210)의 제2 데이터 영역(212)을 사용하는지 여부를 설정하고, 사용하지 않는다고 설정했을 경우에는, 공유 메모리(210)의 제1 데이터 영역(211)만을 사용해도 된다.
이 경우, 설정 툴(301)에 의해, CPU 유닛(100)의 설정 테이블(113), 네트워크 유닛(200)의 설정 테이블(221)에 각각 네트워크 유닛(200)의 공유 메모리(210)의 제2 데이터 영역(212)의 사용의 가부를 나타내는 정보를 등록하면 된다. 네트워크 유닛(200)은 수신 데이터 기입 처리에 있어서, 설정 테이블(221)에 등록된 제2 데이터 영역(212)의 사용의 가부를 나타내는 정보에 기초하여, 제2 데이터 영역(212)에 기입하거나, 또는 기입하지 않도록 하면 된다. 또, CPU 유닛(100)은 제2 전송 처리에 있어서, 설정 테이블(113)에 등록된 제2 데이터 영역(212)의 사용의 가부를 나타내는 정보에 기초하여, 제2 데이터 영역(212)의 데이터의 전송을 행하거나, 또는 데이터의 전송을 행하지 않도록 하면 된다.
(변형예 5)
실시 형태 1, 2에서는, 공유 메모리(210)와, CPU 유닛(100)의 내부 메모리(110)는, 각각 제1 범위의 데이터와 제2 범위의 데이터를 각각 격납하는 영역을 가지고 있지 않아도 된다. 도 1에 나타내는 예에서는, 이들 영역은 제1 데이터 영역(211), 제2 데이터 영역(212), 제1 기억부(111), 제2 기억부(112)이다. 그러나 공유 메모리(210), 내부 메모리(110)에 이러한 영역을 마련하지 않아도 된다. 예를 들면, 네트워크 유닛(200)은 수신한 데이터의 헤더 정보에 기초하여, 그 데이터의 송신원을 나타내는 정보와 함께, 수신한 데이터를 공유 메모리(210)에 기입한다. CPU 유닛(200)은 공유 메모리(210)로부터, 송신원 정보와 함께 수신 데이터를 읽어내고, 읽어낸 송신원 정보와 수신 데이터를, 내부 메모리(110)에 기입하면 된다.
본 발명은 광의의 정신과 범위를 일탈하는 일 없이, 여러가지 실시 형태 및 변형이 가능하게 되는 것이다. 또, 상술한 실시 형태는, 본 발명을 설명하기 위한의 것이며, 본 발명의 범위를 한정하는 것은 아니다. 즉, 본 발명의 범위는 실시 형태가 아니고, 청구 범위에 의해서 나타내진다. 그리고 청구 범위 내 및 그것과 동등한 발명의 의의의 범위 내에서 실시되는 여러가지 변형이, 본 발명의 범위 내로 간주된다.
1, 2: PLC 100: CPU 유닛
110: 내부 메모리 111: 제1 기억부
112: 제2 기억부 113: 설정 테이블
114: 유저 프로그램 120: 설정 툴 인터페이스
130: 공유 버스 인터페이스 140: 연산부
141: 프로그램 실행부 142: 제1 전송부
143: 제2 전송부 190: 버스
200: 네트워크 유닛 210: 공유 메모리
211: 제1 데이터 영역 212: 제2 데이터 영역
213: 제1 플래그 214: 제2 플래그
220: 내부 메모리 221: 설정 테이블
230: 공유 버스 인터페이스 240: 네트워크 인터페이스
250: 수신 버퍼 260: 연산부
261: 데이터 수신부 262: 수신 데이터 기입부
270: 설정 툴 인터페이스 290: 버스
300: 공유 버스 301: 설정 툴
1000: 네트워크 1001: 제1 슬레이브국
1002: 제2 슬레이브국

Claims (10)

  1. CPU 유닛과, 네트워크 유닛과, 상기 CPU 유닛과 네트워크 유닛이 읽기 쓰기 가능한 공유 메모리를 포함하는 PLC로서,
    상기 공유 메모리는 제1 데이터 영역과, 제2 데이터 영역을 포함하고,
    상기 네트워크 유닛은
    네트워크를 통해서 접속된 기기로부터 수신한 수신 데이터 중 데이터의 동시성을 보증하는 데이터를, 상기 제1 데이터 영역에 기입이 가능한 것을 나타내는 플래그가 세트되었을 경우에 상기 제1 데이터 영역에 기록하고, 상기 수신 데이터 중 리얼 타임성을 보증하는 데이터를 상기 제2 데이터 영역에 기록하는 수신 데이터 기입부를 가지고,
    상기 CPU 유닛은
    기억부와,
    제1 전송 주기로, 또한 상기 제1 데이터 영역으로부터 판독이 가능한 것을 나타내는 플래그가 세트되었을 경우에, 상기 데이터의 동시성을 보증하는 데이터를 상기 제1 데이터 영역으로부터 읽어내어, 상기 기억부에 전송하는 제1 전송부와,
    상기 제1 전송 주기와는 상이한 제2 전송 주기로, 상기 리얼 타임성을 보증하는 데이터를 상기 제2 데이터 영역으로부터 읽어내어, 상기 기억부에 전송하는 제2 전송부를 가지는 PLC.
  2. 청구항 1에 있어서,
    상기 제1 전송 주기는 상기 CPU 유닛의 사이클 타임이고,
    상기 제2 전송 주기는 상기 제1 전송 주기보다 짧은 PLC. 
  3. 청구항 1 또는 청구항 2에 있어서,
    상기 제1 데이터 영역에 대해서 배타 제어를 행하고,
    상기 제2 데이터 영역에 대해서 배타 제어를 행하지 않는 PLC.
  4. 청구항 1 또는 청구항 2에 있어서,  
    상기 제1 데이터 영역과 상기 제2 데이터 영역에 대해서 배타 제어를 행하는 PLC.
  5. 청구항 1 내지 청구항 4 중 어느 한 항에 있어서,
    상기 데이터의 동시성을 보증하는 데이터는, 제1 기기로부터 수신한 데이터이고,
    상기 리얼 타임성을 보증하는 데이터는, 상기 제1 기기와는 상이한 제2 기기로부터 수신한 데이터인 PLC.
  6. PLC에 포함되고, 상기 PLC에 포함되는 CPU 유닛과 공유 메모리를 통해서 데이터의 수수(授受)를 행하는 네트워크 유닛으로서,
    상기 공유 메모리는 CPU 유닛으로 제1 전송 주기로 전송 가능하고, 또한 데이터의 동시성을 보증하는 데이터를 기억하는 제1 데이터 영역과, 상기 CPU 유닛으로 제2 전송 주기로 전송 가능하고, 또한 리얼 타임성을 보증하는 데이터를 기억하는 제2 데이터 영역을 포함하고,
    상기 제1 데이터 영역에 기입이 가능한 것을 나타내는 플래그가 세트되었을 경우에, 네트워크를 통해서 접속된 기기로부터 수신한 데이터 중 상기 데이터의 동시성을 보증하는 데이터를 상기 제1 데이터 영역에 기록하고,
    상기 기기로부터 수신한 데이터 중 상기 리얼 타임성을 보증하는 데이터를 상기 제2 데이터 영역에 기록하는 네트워크 유닛.
  7. PLC에 포함되고, 상기 PLC에 포함되는 네트워크 유닛과 공유 메모리를 통해서 데이터의 수수를 행하는 CPU 유닛으로서,
    기억부와,
    제1 전송 주기로, 또한 상기 공유 메모리로부터 판독이 가능한 것을 나타내는 플래그가 세트되었을 경우에, 상기 공유 메모리에 격납되어 있는 데이터 중 데이터의 동시성을 보증하는 데이터를 읽어내고, 읽어낸 데이터를 상기 기억부에 전송하는 제1 전송부와,
    상기 제1 전송 주기와는 상이한 제2 전송 주기로, 상기 공유 메모리에 격납되어 있는 데이터 중 리얼 타임성을 보증하는 데이터를 읽어내고, 읽어낸 데이터를 상기 기억부에 전송하는 제2 전송부를 포함하는 CPU 유닛.
  8. 청구항 7에 있어서,  
    상기 제1 전송부는 상기 CPU 유닛의 사이클 타임마다, 상기 공유 메모리로부터 상기 데이터의 동시성을 보증하는 데이터를 상기 기억부에 전송하고,
    상기 제2 전송부는 상기 CPU 유닛의 사이클 타임보다 짧은 주기로, 상기 공유 메모리로부터 상기 리얼 타임성을 보증하는 데이터를 상기 기억부에 전송하는 CPU 유닛.
  9. PLC의 CPU 유닛과 네트워크 유닛의 사이에서 상기 CPU 유닛과 상기 네트워크 유닛이 읽기 쓰기 가능한 공유 메모리를 통해서 데이터를 전송하는 데이터 전송 방법으로서,
    상기 네트워크 유닛이, 상기 공유 메모리에 기입이 가능한 것을 나타내는 플래그가 세트되었을 경우에, 네트워크를 통해서 접속된 기기로부터 수신한 수신 데이터 중 데이터의 동시성을 보증하는 데이터를, 상기 공유 메모리에 기록하는 스텝과,
    상기 네트워크 유닛이, 상기 수신 데이터 중 리얼 타임성을 보증하는 데이터를 상기 공유 메모리에 기록하는 스텝과,
    상기 CPU 유닛이, 제1 전송 주기로, 또한 상기 공유 메모리로부터 판독이 가능한 것을 나타내는 플래그가 세트되었을 경우에, 상기 공유 메모리로부터 상기 데이터의 동시성을 보증하는 데이터를 읽어내어 상기 CPU 유닛의 기억부에 전송하는 스텝과,
    상기 CPU 유닛이, 상기 제1 전송 주기와는 상이한 제2 전송 주기로, 상기 공유 메모리로부터 상기 리얼 타임성을 보증하는 데이터를 읽어내어 상기 기억부에 전송하는 스텝을 포함하는 데이터 전송 방법.
  10. 청구항 9에 있어서,
    상기 제1 전송 주기는 상기 CPU 유닛의 사이클 타임이고,
    상기 제2 전송 주기는 상기 제1 전송 주기보다 짧은 데이터 전송 방법.
KR1020197006804A 2018-01-18 2018-01-18 Plc, 네트워크 유닛, cpu 유닛, 및 데이터 전송 방법 Active KR102016629B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2018/001390 WO2019142288A1 (ja) 2018-01-18 2018-01-18 Plc、ネットワークユニット、cpuユニット、及びデータ転送方法

Publications (2)

Publication Number Publication Date
KR20190089155A true KR20190089155A (ko) 2019-07-30
KR102016629B1 KR102016629B1 (ko) 2019-08-30

Family

ID=64098814

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197006804A Active KR102016629B1 (ko) 2018-01-18 2018-01-18 Plc, 네트워크 유닛, cpu 유닛, 및 데이터 전송 방법

Country Status (6)

Country Link
US (1) US10656615B2 (ko)
JP (1) JP6419400B1 (ko)
KR (1) KR102016629B1 (ko)
CN (1) CN110278716B (ko)
DE (1) DE112018000092T5 (ko)
WO (1) WO2019142288A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112018007978T5 (de) * 2018-10-15 2021-05-20 Mitsubishi Electric Corporation Programmierbare Logiksteuerung, externes Gerät, Verfahren und Programm
JP6988863B2 (ja) * 2019-08-08 2022-01-05 横河電機株式会社 プロトコルコンバータ、データ伝送方法、データ伝送プログラム、及び、データ伝送システム

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004265001A (ja) 2003-02-28 2004-09-24 Omron Corp プロセスコントロール機器及びcpuユニット
JP2007249560A (ja) * 2006-03-15 2007-09-27 Fuji Electric Systems Co Ltd プログラマブルコントローラにおけるcpuモジュール
JP2016005247A (ja) * 2014-06-19 2016-01-12 富士電機株式会社 ネットワーク伝送システム、そのマスタノード、スレーブノード
JP2016110458A (ja) * 2014-12-08 2016-06-20 株式会社キーエンス プログラマブル・ロジック・コントローラ、基本ユニット、制御方法およびプログラム
JP2016194839A (ja) * 2015-04-01 2016-11-17 富士電機株式会社 制御装置および通信インタフェース回路

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5157775A (en) * 1989-12-15 1992-10-20 Eastman Kodak Company Dual port, dual speed image memory access arrangement
JPH0973417A (ja) * 1995-09-04 1997-03-18 Mitsubishi Electric Corp 多重メモリ制御方法
CN1166134C (zh) * 1999-05-12 2004-09-08 华为技术有限公司 用于atm交换结构中的流水线式共享存储器读写方法
JP2008083761A (ja) 2006-09-26 2008-04-10 Matsushita Electric Works Ltd ロボットコントローラおよびロボット
WO2010109584A1 (ja) 2009-03-23 2010-09-30 三菱電機株式会社 A/d変換装置およびプログラマブルコントローラシステム
KR102188061B1 (ko) * 2014-07-29 2020-12-07 삼성전자 주식회사 메모리 장치, 메모리 시스템 및 메모리 장치의 동작방법
JP6470955B2 (ja) 2014-12-08 2019-02-13 株式会社キーエンス プログラマブルコントローラ及びプログラマブルコントローラの拡張ユニット
DE102015103809B3 (de) * 2015-03-16 2016-07-07 Intel IP Corporation Verfahren und Vorrichtung zum Schützen eines Datentransportblocks gegen Speicherfehler und Übertragungsfehler
KR102652293B1 (ko) * 2016-03-03 2024-03-29 에스케이하이닉스 주식회사 메모리 관리방법
CN106155596B (zh) * 2016-08-03 2020-01-17 深圳市文鼎创数据科技有限公司 数据写入方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004265001A (ja) 2003-02-28 2004-09-24 Omron Corp プロセスコントロール機器及びcpuユニット
JP2007249560A (ja) * 2006-03-15 2007-09-27 Fuji Electric Systems Co Ltd プログラマブルコントローラにおけるcpuモジュール
JP2016005247A (ja) * 2014-06-19 2016-01-12 富士電機株式会社 ネットワーク伝送システム、そのマスタノード、スレーブノード
JP2016110458A (ja) * 2014-12-08 2016-06-20 株式会社キーエンス プログラマブル・ロジック・コントローラ、基本ユニット、制御方法およびプログラム
JP2016194839A (ja) * 2015-04-01 2016-11-17 富士電機株式会社 制御装置および通信インタフェース回路

Also Published As

Publication number Publication date
WO2019142288A1 (ja) 2019-07-25
KR102016629B1 (ko) 2019-08-30
JPWO2019142288A1 (ja) 2020-01-23
US10656615B2 (en) 2020-05-19
CN110278716B (zh) 2020-10-27
CN110278716A (zh) 2019-09-24
DE112018000092T5 (de) 2019-10-02
US20190377314A1 (en) 2019-12-12
JP6419400B1 (ja) 2018-11-07

Similar Documents

Publication Publication Date Title
CN110161984B (zh) 控制装置、控制系统、控制方法以及存储介质
CN111095138B (zh) 控制装置、控制装置的控制方法、信息处理程序及记录介质
EP1850196A1 (en) Programmable controller with communication unit capable of responding in real time to request of I/O data
KR102016629B1 (ko) Plc, 네트워크 유닛, cpu 유닛, 및 데이터 전송 방법
WO2021002059A1 (ja) 制御システム、設定装置およびコンピュータプログラム
JP2018064178A (ja) スレーブ機器
CN105393241B (zh) 控制系统、主控站点以及远程站点
US10712732B2 (en) Slave device, master device, and industrial network system
KR102732904B1 (ko) 제어 장치
JP2005092520A (ja) 2重化コントローラシステム、その等値化方法
JP7076654B1 (ja) プログラマブルコントローラの通信ユニット、受信データ記憶方法及びプログラム
US12117788B2 (en) Control device with second processing unit that accesses variable via first processing unit
JP6878705B1 (ja) 通信装置、通信システム、通信方法、およびプログラム
JP6686521B2 (ja) 制御システムおよび制御方法
KR101805866B1 (ko) 소프트웨어 디파인드 라디오를 위한 전자 장치 및 그 스케줄링 방법
JP2008077265A (ja) プログラマブルコントローラのプログラム更新方法
JPWO2008068795A1 (ja) 通信システムおよび通信装置
JP2013246584A (ja) 制御装置、データ出力制御ユニット、データ入力制御ユニット、および制御ユニット
JP6678787B1 (ja) リモートi/oシステム
KR101856006B1 (ko) 소프트웨어 디파인드 라디오를 위한 메모리 구조
JP4854598B2 (ja) データ転送制御装置
KR100584583B1 (ko) 직렬 버스 제어 장치 및 방법
JPH11196097A (ja) データ通信制御装置、及びデータ通信制御方法
JP2021114015A (ja) 制御装置
JP2005285018A (ja) 2重化コントローラシステム、その稼動/待機切換え方法

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
PA0105 International application

Patent event date: 20190307

Patent event code: PA01051R01D

Comment text: International Patent Application

PA0201 Request for examination
PA0302 Request for accelerated examination

Patent event date: 20190307

Patent event code: PA03022R01D

Comment text: Request for Accelerated Examination

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20190730

PG1501 Laying open of application
GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20190826

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20190827

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20220720

Start annual number: 4

End annual number: 4

PR1001 Payment of annual fee

Payment date: 20230718

Start annual number: 5

End annual number: 5

PR1001 Payment of annual fee

Payment date: 20240725

Start annual number: 6

End annual number: 6