JP6587566B2 - 半導体装置 - Google Patents

半導体装置 Download PDF

Info

Publication number
JP6587566B2
JP6587566B2 JP2016058614A JP2016058614A JP6587566B2 JP 6587566 B2 JP6587566 B2 JP 6587566B2 JP 2016058614 A JP2016058614 A JP 2016058614A JP 2016058614 A JP2016058614 A JP 2016058614A JP 6587566 B2 JP6587566 B2 JP 6587566B2
Authority
JP
Japan
Prior art keywords
counter
timer
value
time
interrupt
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016058614A
Other languages
English (en)
Other versions
JP2017174092A5 (ja
JP2017174092A (ja
Inventor
鈴木 慎一
慎一 鈴木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2016058614A priority Critical patent/JP6587566B2/ja
Priority to US15/413,634 priority patent/US10255130B2/en
Priority to CN201710171555.6A priority patent/CN107229543B/zh
Publication of JP2017174092A publication Critical patent/JP2017174092A/ja
Publication of JP2017174092A5 publication Critical patent/JP2017174092A5/ja
Application granted granted Critical
Publication of JP6587566B2 publication Critical patent/JP6587566B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/14Time supervision arrangements, e.g. real time clock
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2221Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test input/output devices or peripheral units
    • GPHYSICS
    • G04HOROLOGY
    • G04DAPPARATUS OR TOOLS SPECIALLY DESIGNED FOR MAKING OR MAINTAINING CLOCKS OR WATCHES
    • G04D7/00Measuring, counting, calibrating, testing or regulating apparatus
    • G04D7/002Electrical measuring and testing apparatus
    • G04D7/003Electrical measuring and testing apparatus for electric or electronic clocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/0635Clock or time synchronisation in a network
    • H04J3/0685Clock or time synchronisation in a node; Intranode synchronisation
    • H04J3/0697Synchronisation in a packet node
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/14Monitoring arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Microcomputers (AREA)

Description

本開示は半導体装置に関し、例えばタイマを内蔵する半導体装置に適用可能である。
家電製品、AV機器、携帯電話、自動車、及び産業機械等の機器には、マイクロコントローラが組み込まれている。マイクロコントローラは、メモリに記憶されているプログラムにしたがって処理を行うことで、それぞれの機器の制御を行う半導体装置である。これらの機器に組み込まれるマイクロコントローラを含む部品は、用途に応じた信頼性が要求される。そのため、マイクロコントローラは、例えば、制御対象であるセンサやアクチュエータ等の診断を行ってこれらの故障を検出するだけでなく、マイクロコントローラ自身の故障も検出する必要がある。
米国特許出願公開第2013/20978号明細書
本開示の課題は半導体装置に内蔵するタイマの効率的な故障診断技術を提供することである。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
本開示のうち、代表的なものの概要を簡単に説明すれば、下記のとおりである。
すなわち、半導体装置は、第1カウンタを有し、半導体装置の外部機器の時刻と時刻同期する第1タイマと、第2カウンタを有する第2タイマと、CPUを有し、第1カウンタのカウント値と第2カウンタのカウント値とを比較し、比較結果に基づいて第2タイマの動作不良を検出する制御装置と、を備える。
上記半導体装置によれば、内蔵タイマを効率的に診断することができる。
実施例1に係るマイクロコントローラを説明するためのブロック図 図1のEPTPCを説明するためのブロック図 時刻同期を説明するための図 EPTPCカウンタとMTUカウンタの関係を説明するためのタイミング図 タイマのカウンタ故障診断時の定常処理の動作を説明するためのフローチャート タイマのカウンタ故障診断時の時刻一致イベント割り込み処理の動作を説明するためのフローチャート タイマのカウンタ故障診断時のオーバフロー割り込み処理の動作を説明するためのフローチャート 実施例2に係る機能安全対応の産業モータシステムを説明するためのブロック図 複数台の産業モータシステムを説明するためのブロック図 機能安全対応の産業モータシステムでの論理構成を説明するためのブロック図 タイマのPWM波形生成時に係るカウンタ故障診断時の定常処理の動作を説明するためのフローチャート タイマのPWM波形生成時に係るカウンタ故障診断時のPTPコマンド受信割り込み処理の動作を説明するためのフローチャート タイマのPWM波形生成時に係るカウンタ故障診断時のコンペアマッチ割り込み処理の動作を説明するためのフローチャート タイマのPWM波形生成時のカウンタ動作を説明するためのタイミング図 実施例3に係る産業モータシステムを説明するためのブロック図 PWM波形比較時の概要動作を説明するためのタイミング図 PWM波形比較時の定常処理の動作を説明するためのフローチャート PWM波形比較時の立ち上がりエッジ割り込み処理の動作を説明するためのフローチャート PWM波形比較時のコンペアマッチ割り込み処理の動作を説明するためのフローチャート 実施例4に係る32ビットカウンタの動作を説明するためのタミング図
以下、実施形態および実施例について、図面を用いて説明する。ただし、以下の説明において、同一構成要素には同一符号を付し繰り返しの説明を省略することがある。
産業機器や自動車製品の機能安全対応の機器に搭載するマイクロコントローラでは、CPUや内蔵メモリのみでなく、多機能タイマ、割り込みコントローラ、AD変換等の周辺モジュールに発生する故障の検出が必須である。特に多機能タイマはカウンタの回路規模が大きく、故障が発生しやすい。また、オーバフロー、閏時間対応等で設計が複雑となる。故障には永久に復帰できないハードエラーと一時的で復帰可能なソフトエラーがあり、例えば、マイクロコントローラに搭載するMTU(Multi-Function Timer Pulse Unit)は他の周辺モジュールに比較しソフトエラーの発生確率が高く、多機能タイマの効率のよい故障診断が課題である。
本願発明者は内蔵タイマ診断について下記の方法を検討した。
(1)検証プログラムによる診断
設計時に使用した検証用プログラムを応用し、開始、カウントアップ、停止等の基本動作を確認する。
(2)別の内蔵タイマを使用した診断
検証対象の内蔵タイマとは別の内蔵タイマを検証用に動作させ、カウンタの差異を比較する。
しかし、上記(1)の方法では、論理的なオン・オフや単一の動作の確認のみで、カウンタ等の定量的な値、PWM(Pulse Width Modulation)波形生成等の組み合わせ動作は確認できない。上記(2)の方法では、検証対象の内蔵タイマと別の内蔵タイマとのカウント動作の基になる発振子は共通である場合、ともに誤動作すると故障を検出できない可能性が高い。また、上記(1)、(2)の場合、ユーザプログラムを一時的に停止し診断する必要があり、ユーザプログラムの処理効率が低下する。
実施形態では、特定の時間間隔で同期Etherコントローラが多機能タイマのカウンタを動作・停止させ、同期Etherで時刻合わせしたカウンタと比較することで、多機能タイマの故障を診断する。
実施形態によれば、外部の時刻を使用するので、多機能タイマの故障検出率が高くなる。また、時刻同期シーケンスと並列に多機能タイマの故障診断をするこができ、ユーザプログラを一時的に停止する必要がなくなる。
実施例1に係るマイクロコントローラについて図1を用いて説明する。図1は実施例に係るマイクロコントローラの構成を示すブロック図である。実施例1に係るマイクロコントローラ10は、リードオンリメモリ(ROM)11と、ランダムアクセスメモリ(RAM)12と、中央処理装置(CPU)13と、を備える。また、マイクロコントローラ10は、IEEE1588コントローラ(以後、EPTPC)14と、多機能タイマ(MTU)15と、ICU(Interrupt Controller Unit)16と、ELC(Event Link Controller)17と、I/Oポート18と、を備える。マイクロコントローラ10は1つの半導体チップ(半導体基板)で形成される半導体装置である。ROM11およびCPU13を制御装置ともいう。なお、制御装置にはRAM12やICU16を含んでもよい。MTU15の故障診断にIEEE1588規格(参考文献1)の時刻同期プロトコル(以後、PTP(Precision Time Protocol))を使用する。
[参考文献1]IEEE1588-2008 Ver2.0 (IEEE1588同期Ether規格)。
ROM11はMTU15の故障を検出するプログラムを格納する。ROM11は例えばフラッシュメモリ等の不揮発性メモリで構成される。RAM12はプログラム実行時のワークデータを格納する。RAM11は例えばSRAM等の揮発性メモリで構成される。CPU13はROM12から読み出したプログラムに従い、機器の制御演算や通信処理等のユーザアプリケーションの処理に加え、MTU15の故障を検出する処理(故障判定)や復帰処理をする。EPTPC14はEtherの回線を使用しPTPにより外部の機器(時刻配信元)2と時刻同期をする。MTU15は複数のチャネルを備え、それぞれのチャネルはカウントアップやカウントダウンによる計数動作に加え、PWM波形を生成し出力する機能やインプットキャプチャ機能を用いて産業モータを制御する機能等の複数機能を持つ多機能タイマである。ICU16はEPTPC14とMTU15からの割り込み要求をCPU13に通知する。ELC17はEPTPC14のカウンタが特定の時刻になる毎に、MTU15の動作を開始するようにイベント信号の接続をすることで、ソフトウェアの介在による遅延を低減する。
次に、EPTPC14について図2を用いて説明する。図2は図1のEPTPCとその関連ハードウェアの構成を示すブロック図である。
EPTPC14は、第0チャネルPTPプロトコル処理部(CH0)141、第1チャネルPTPプロトコル処理部(CH1)142、パケット中継部143、およびクロック(時刻)補正部144で構成する。第0チャネルPTPプロトコル処理部(CH0)141および第1チャネルPTPプロトコル処理部(CH1)142はPTPのフレーム送受信やコマンドシーケンス等のプロトコル処理をする。パケット中継部143は第0チャネルPTPプロトコル処理部141および第1チャネルPTPプロトコル処理部(CH1)142で処理されたEtherフレーム(以後、フレーム)の中継や補正処理をする。クロック(時刻)補正部144は、EPTPC14のカウンタとなるローカルクロックカウンタ1441を備え、時刻配信元に合わせた時刻の補正、特定の時刻でICU16を介してCPU13に割り込みを通知する等の機能を持つ。
通常EPTPC14は、第0チャネルETHERC(Ethernet Controller)(CH0)21および第1チャネルETHERC(CH1)22と、第0チャネルEDMAC(DMA Controller for the Ethernet Controller)(CH0)23および第1チャネルEDMAC(CH1)24と、PTPEDMAC25と、を組み合わせて使用する。第0チャネルETHERC(CH0)21および第1チャネルETHERC(CH1)22はMAC層に相当する処理をする。第0チャネルEDMAC(CH0)23および第1チャネルEDMAC(CH1)24は標準フレームを効率的に処理し管理する、CPUとのインタフェースである。PTPEDMAC25はPTPのフレームを処理する。そして、アナログ信号への変換を行う物理層(PHY)(不図示)とEtherコネクタ(一般的にはRJ−45)7経由でEtherケーブル5にフレームを入出力する。また、EPTPC14は、MTU15、I/Oポート18にELC17を介して接続しており、PTPで同期した時刻でのMTU15のタイマカウンタの計数開始や後述するパルス出力機能(パルス出力タイマ機能)を有する。図2には2チャネルの第0チャネルPTPプロトコル処理部(CH0)141および第1チャネルPTPプロトコル処理部(CH1)142、第0チャネルETHERC(CH0)21および第1チャネルETHERC(CH1)22、第0チャネルEDMAC(CH0)23および第1チャネルEDMAC(CH1)24を搭載する場合を示すが、1チャネルでもよい。
次に、MTU15の故障診断の構成について図3Aおよび図3Bを用いて説明する。図3Aは機能安全対応機器と時刻配信元である外部機器との時刻同期を示す図である。図3BはEPTPCカウンタとMTUカウンタの関係を示すタイミング図である。
図3A、3Bの故障診断の構成は、マイクロコントローラ10を搭載した機能安全対応機器1上で、PTPにより、時刻配信元である外部機器2と時刻同期をするとともに、MTU15でカウンタの計数をする場合である。
(11)機能安全対応機器1のマイクロコントローラ10は故障検出の時間間隔をPTPの時刻一致イベントの間隔として設定する。
(12)マイクロコントローラ10はPTPにより一定の時刻合わせのコマンド間隔(ここでは1秒としている)で時刻配信元である外部機器2との時刻同期を開始する。PTPの時刻合わせのコマンドはSync、Follow_Up、Delay_Req、Delay_Resp等である。
(13)マイクロコントローラ10はEPTPC14のローカルクロックカウンタ1441のt(1)でMTU15のカウンタのカウントアップを開始する。
(14)マイクロコントローラ10は、上記(11)で設定したPTPの時刻一致イベント毎(t(2)、t(4)、・・・、t(2n))に、同期したEPTPCカウンタとMTUカウンタの進みの度合いを比較する。
(15)マイクロコントローラ10は、上記(14)でカウンタの差異の絶対値が、あらかじめ定義した閾値(thresh)の範囲を超えていれば、故障として検出する。また、閾値範囲内であれば、上記(14)の時刻同期毎の比較を継続する。
図3Bの破線はEPTPCカウンタとMTUカウンタとに差異がない場合(カウンタ差異=0)であり、実線はMTUカウンタがEPTPCカウンタより進んでいる場合(カウンタ差異がある場合)である。図3Bでは、t(2)のカウンタ差異(D2)、t(4)のカウンタ差異(D(4))、・・・、t(N−2)のカウンタ差異(D(N−2))は、いずれも閾値範囲内であるが、t(N)のカウンタ値(D(N))は閾値を外れ故障が検出される。
次に、タイマカウンタの故障診断のソフトウェアによる動作フローについて図4、5A、5Bを用いて説明する。図4はタイマカウンタの故障診断時の定常処理の動作を示すフローチャートである。図5Aはタイマカウンタの故障診断時の時刻一致イベント割り込み処理の動作を示すフローチャートである。図5Bはタイマカウンタの故障診断時のオーバフロー割り込み処理の動作を示すフローチャートである。ここで、割り込みはEPTPC14からの時刻一致イベントとMTU15からのオーバフロー割り込みを使用する。時刻一致イベント割り込みは、EPTPC14のローカルクロックカウンタ1441が特定の設定した値に一致した場合に、割り込みが発生するとともにMTU15のタイマカウンタの計数を開始する。MTU15のオーバフロー割り込みは、MTU15のタイマカウンタ(例えば16ビットカウンタ)の値がオーバフローした場合に発生する。
<定常処理>
ステップS11:CPU13は、ユーザアプリケーション起動後、タイマ故障診断のソフトウェアを開始する。そして、MTU15のプリスケーラ(MTU15への供給クロックとMTU15のタイマカウンタの出力の周波数比)、カウント動作モード(フリーラン、コンペアマッチ、PWM波形出力等)、割り込みの設定、MTUカウンタの初期化(mtu_count ← 0)等をする。
ステップS12:CPU13は、EPTPC14の同期モード、時刻一致イベント、時刻一致イベントの発生時刻の設定等をする。
ステップS13:CPU13は、EPTPC14の時刻一致イベントをMTU15の開始要因に接続するようにELC17を設定する。
ステップS14:CPU13は、MTU15からのオーバフロー割り込みとEPTPC14からの時刻一致イベント割り込みをCPU13に通知するようにICU16を設定する。また、時刻一致イベントフラグを初期化する(ptp_flag←false)。
ステップS15:CPU13は故障検出の判定に使用するMTUカウンタ(mtu_count)とEPTPCカウンタ(ptp_count)との差異の絶対値の上限値を閾値として設定する。閾値(thresh)は発振子によるMTU15のタイマカウンタの誤差、割り込み処理による遅延、PTPのプロトコル動作上の誤差等を考慮して設定する。閾値の一例は後述の式(2)で示す。ここで、MTUカウンタ(mtu_count)およびEPTPCカウンタ(ptp_count)は故障検出の判定に使用するソフトウェア上のものであって、それぞれハードウェアのMTU15のタイマカウンタおよびEPTPC14のローカルクロックカウンタ1441ではない。
ステップS16:CPU13は、EPTPC14を使用し、PTPにより時刻配信元の外部機器2と時刻同期を開始する。ここで、時刻配信元の外部機器2は1または複数の中で最も精度のよいクロックを持つ機器がPTPにより選択される。
ステップS17:CPU13は時刻一致イベントの発生有無を確認する。発生有無は時刻一致イベントフラグ(ptp_flag)で判定する。YES(時刻一致イベントの発生)の場合(ptp_flag=true)はステップS18の処理に移り、NOの場合はステップS1Bの処理に移る。なお、時刻一致イベントフラグ(ptp_flag)は後述する割り込み処理のステップS28で設定される。
ステップS18:CPU13はカウンタ差異の絶対値が閾値を超えているかどうかを確認する。カウンタ差異はMTUカウンタ(mtu_count)からEPTPCカウンタ(ptp_count)にMTU15の動作周波数(fmtu)とEPTPC14の動作周波数(fptp)の比で重み付けをしたものの差分とする。
カウンタ差異=|mtu_count−(fmtu/fptp)ptp_count|
カウンタ差異が閾値を超えていれば(YESの場合)、CPU13は故障として検出し、エラー終了する。カウンタ差異が閾値を越えてなければ(NOの場合)、ステップS9の処理に移る。
ステップS19:CPU13は時刻一致イベントフラグをクリアする(ptp_flag←false)。
ステップS1A:CPU13はMTUカウンタをクリアする(mtu_count←0)。
ステップS1B:CPU13はユーザアプリケーションが終了しているかどうかを判定する。ユーザアプリケーションが終了していれば(YESの場合)、処理を終了する。終了していなければ(NOの場合)、ステップS17に戻り処理を継続する。
<割り込み処理>
時刻一致イベント割り込みの処理について以下説明する。
ステップS21:CPU13は、EPTPC14からの時刻一致イベント割り込みが発生した場合(t(0)、t(1)、t(3)、t(4)、・・・、t(N−1)、T(N))、時刻一致イベントの割り込み回数を示す割り込みカウンタを1増やし更新する(N←N+1)。
ステップS22:CPU13は、奇数回目の割り込み(t(1)、t(3)、・・・、t(2n−1))であるかどうかを判定する。判定は割り込みカウンタ(N)を参照することで行う。奇数回目の割り込みである場合(YESの場合)、ステップS23の処理に移る。偶数回目の割り込みである場合(NOの場合)、ステップS25の処理に移る。
ステップS23:MTU15のタイマカウンタはカウントアップ動作を開始する。ここで、MTU15のタイマカウンタのカウントアップはELC17によるイベント接続で開始するので、CPU13によるソフトウェア処理は不要であるが、動作の説明上記載する。なお、ELC17を用いない場合はCPU13によるソフトウェア処理が必要になる。
ステップS24:CPU13はEPTPC14のローカルクロックカウンタ1441のカウンタ値(LCCV)を読み出し、EPTPCカウンタの開始値として設定する(ptp_start←LCCV)。その後、ステップS29の処理に移る。
ステップS25:CPU13はMTU15のタイマカウンタのカウントアップ動作を終了させる。
ステップS26:CPU13はMTU15のタイマカウンタのカウンタ値(TCNT)を読み出し、MTUカウンタを更新する。更新値は現在のMTUカウンタにMTU15のタイマカウンタのカウンタ値を加えた値となる(mtu_count←mtu_count+TCNT)。MTUカウンタはステップS31のMTU15のオーバフロー割り込みで更新されている場合もある。
ステップS27:CPU13はEPTPC14のローカルクロックカウンタ1441のカウンタ値を読み出し、EPTPCカウンタを更新する。更新値はEPTPC14のローカルクロックカウンタ1441のカウンタ値からステップS24で設定したEPTPCカウンタの開始値を減じた値となる(ptp_count←LCCV-ptp_start)。
ステップS28:CPU13は時刻一致イベントフラグを設定する(ptp_flag←true)。
ステップS29:CPU13は次の時刻一致イベントを発生させる時刻をEPTPC14に設定する。なお、時刻は前回と同じ時間間隔となる時刻でもよく、時間間隔を変更してもよい。
次に、オーバフロー割り込みについて以下説明する。
ステップS31:CPU13は、MTU15からのオーバフロー割り込みが発生した場合、現在のMTUカウンタにオーバフロー値(16ビットカウンタの場合、216=65,536)を加えた値にMTUカウンタを更新する(mtu_count←mtu_count+オーバフロー値)。
<閾値の一例>
閾値(thresh)の一例を示す。閾値を発振子によるMTU15のタイマカウンタの誤差に起因するthreshosc、PTPのプロトコル動作上の誤差に起因するthreshptp、割り込み処理に起因するthreshint、CPU13のパイプラインやバス状態による処理の揺らぎthreashfluに分離すると式(1)となる。
thresh=threshosc+threshptp+threshint+threshflu・・・(1)
ここで、温度特性等の他の寄与は前記の寄与に比較し十分小さいものとして無視している。
MTU15の動作周波数をfmtu、MTU15に供給する発振子の精度をxosc、時刻一致イベント間隔をtp1とすると、発振子によるMTU15のタイマカウンタの誤差に起因するthreshoscは、MTUカウンタのカウント数で式(1−1)となる。
threshosc=fmtu*xosc*tp1 ・・・(1−1)
例えば、fcpu=120MHz、MTU15をプリスケーラで16分周しfmtu=fcpu/16=7.5MHz、xosc=100ppm、tp1=100msとすると、threshosc=75サイクルとなる。
PTPのプロトコル動作上の誤差は、MTU15と同様にEPTPC14に供給する発振子の誤差、時刻合わせのコマンド間隔、Ethernet上のバス状況によるコマンド遅延等がある。マイクロコントローラ10に組み込んだ場合には、プロトコル動作のハードウェアによる実行とクロック(時刻)補正部144の時刻配信元である外部機器2に合わせた時刻の補正により、時間で1μs〜100nsまで誤差の低減が可能となる。その場合、MTUカウンタのカウント数で10サイクル〜1サイクルであり、threshptp<threshoscとなる。
CPU13の動作周波数をfcpu、割り込み処理の発生回数をxint、割り込み処理のサイクル数をnintとすると、割り込み処理に起因するthreshintは、MTUカウンタのカウント数で式(1−2)となる。
threshint=(fmtu/fcpu)*(xint*nint) ・・・(1−2)
ここで、時刻一致イベント割り込みとオーバフロー割り込みの処理は、近似的にCPU13の動作周波数で同じサイクル数としている。
cpu=120MHz、fmtu=fcpu/16=7.5MHzとする。割り込み処理は、割り込み応答と復帰時間も加え、割り込み応答時間を10サイクル、割り込み復帰時間を10サイクル、割り込み処理を平均的に80サイクルとして、nint=100サイクルとする。16ビットカウンタのオーバフローが8.7ms(=65,536/7.5*10s)毎に発生することから、オーバフロー割り込みを11回(=100/8.7)とすると時刻一致イベント割り込みの2回を加え、xint=13回となり、threshint=81サイクルとなる。
threshfluはマイクロコントローラ10のCPU13の処理の揺らぎの上限値でありthreshintよりは小さいとして、threshflu<threshintとする。
threshoscは誤差の上限値であるのに対し、threshintは割り込み処理の平均的な値である。threshintの寄与がthreshoscの寄与に比較し大きいが、故障検出としては、ワースト値として適用する。上記より式(1)を式(2)に近似する。
thresh=threshosc+threshptp+threshint+threshflu
<threshosc+threshosc+threshint+threshint
=(fmtu/fcpu)*(2*fcpu*xosc*tp1+2*xint*nint)・・・(2)
上記の数値を式(2)に適用するとthresh=312サイクルとなる。
実施例1は、時刻配信元である外部機器2に時刻を合わせたEPTPC14(第1タイマ)のローカルクロックカウンタ(第1カウンタ)1441によりMTU15(第2タイマ)のタイマカウンタ(第2カウンタ)を診断する。
実施例1によれば、PTPにより外部の複数の時刻をタイマの故障診断に使用できるので、診断時の共通の発振子異常による誤動作がなく、また、精度のよい時刻を基にしたタイマの故障診断をすることができる。また、PTPの時刻同期動作と並列にタイマの故障診断ができるので、ユーザプログラムを停止しタイマの故障診断をした場合に比較し、ユーザプログラムの処理効率の低下を低減することができる。
機能安全対応の産業機器にマイクロコントローラを適用する場合について図6を用いて説明する。図6は実施例2に係る産業モータ制御システムの構成を示すブロック図である。
マイクロコントローラ10Aは機能安全対応機器1A上に実装され、機能安全対応機器1Aを制御し、産業モータ3を制御し、Etherケーブル5と接続される他の産業機器4(ロボット、ACサーボ、工作機等)とネットワークにより通信をする。なお、機能安全規格(IEC61508(参考文献2)等)では準拠の水準に応じて相互監視が必要であり、マイクロコントローラを2個(マイクロコントローラ10Aとマイクロコントローラ20Aとを)実装する場合もある。
[参考文献2]IEC61508 Part7(機能安全規格)
機能安全対応にはメモリ管理ユニット(MMU)やメモリプロテクションユニット(MPU)によりROM11とRAM12上の安全データを配置する領域と非安全データを配置する領域を分離し保護する必要がある。そのため、マイクロコントローラ10Aは、実施例1のマイクロコントローラ10の構成に加え、図示しないメモリ管理ユニット(MMU)またはメモリプロテクションユニット(MPU)を搭載する。マイクロコントローラ10Aと産業モータ3はモータドライバ6経由で接続する。そして、MTU15が生成し、I/Oポート18から出力するPWM波形によりモータドライバ6を制御することで、産業モータ3を制御する。
図6の機能安全対応機器を、複数台の産業モータシステムに組み込んだ場合について図7を用いて説明する。図7は複数台の産業モータシステムの構成を示すブロック図である。時刻配信元であるマスタA(2A)にPTPにより複数台の機能安全機器であるスレーブB(1A1)、スレーブB(1A2)、・・・、スレーブBN−1(1AN−1)が時刻同期し、特定の時刻AでN台(N=2、3、・・・)の産業モータ3A、3A1、3A2、・・・、3AN−1を同時に動作開始し、各機能安全機器に搭載されるMTU15の診断も行う。
図8は機能安全対応機器に適用した場合の論理構成を示す図である。実施例1の図2ではEPTPC関連のハードウェアが2チャネルの場合を示したが、ここでは1チャネルの構成で説明する。
通信アプリケーション、制御アプリケーションは安全データと非安全データを取り扱い、処理内容、バス、配置するメモリをハードウェア的に互いに分離する。そこで、ソフトウェアは安全対応と非安全で固有のものを作成し使用する。また、時刻同期とタイマ診断の機能を持つアプリケーション(以後、同期・タイマ診断アプリ)は安全データを取り扱い、非安全データを取り扱う時刻同期アプリも搭載する。
通信アプリケーションは産業用Etherの通信アプリケーションで、代表的な産業用Ether規格としてEtherNet/IP、PROFINET、EtherCAT等がある。制御アプリケーションはACサーボやロボットに組み込まれた産業用モータを制御する。TCP、UDP/IPは論理的な通信接続管理、TCPまたはUDPのパケット送受信処理、接続機器情報の管理等をする。また、PTPではUDPのパケットまたはフレームのみを取り扱うので、UDP/IPのみを実装したミドルウェア、またはミドルウェアの実装なしでもよい。EtherドライバはETHERC21とEDMAC23を使用しフレームの送受信処理、Etherケーブル5の接続検出等をする。EPTPCドライバはEPTPC14を使用しPTPによる時刻同期をする。MTUドライバはMTU15を使用し、MTU15のタイミング信号を基に産業用モータ3の制御信号であるPWM波形を生成する。そして、I/Oポート18経由でPWM波形を出力する。ETHERC21とEDMAC23は実施例1で説明済みなので省略する。
本応用例の同期・タイマ診断アプリで、MTU15の動作モードとしてPWMモード1を使用した場合の動作フローについて図9、10A、10B、11を用いて説明する。図9はタイマのPWM波形生成時に係るカウンタ故障診断時の定常処理の動作フローチャートである。図10AはタイマのPWM波形生成時に係るカウンタ故障診断時のPTPコマンド受信割り込み処理の動作フローチャートである。図10BはタイマのPWM波形生成時に係るカウンタ故障診断時のコンペアマッチ割り込み処理の動作フローチャートである。図11はタイマのPWM波形生成時のMTUのタイマカウンタの動作を示すタイミング図である。ここで、割り込みはEPTPC14からのPTPコマンド受信とMTU15からのコンペアマッチ割り込みを使用する。PTPコマンド受信割り込みは、EPTPC14が時刻配信元からPTPのSyncコマンドを受信し、時刻配信元との時刻差異(offsetFromMaster)を更新した場合に発生する。MTU15のコンペアマッチ割り込みは、図11に示すようにMTU15のPWMを生成するタイマカウンタがPWM波形の周期でクリアされる場合に発生する。
<定常処理>
ステップS41:CPU13はユーザアプリケーション起動後、同期・タイマ診断アプリを開始する。そして、CPU13は、MTU15のプリスケーラの設定、カウント動作モード(PWM動作モード1)の設定、PWMの周期の設定、割り込みの設定、およびMTUカウンタの初期化(mtu_count ← 0)等をする。
ステップS42:CPU13はEPTPC14の同期モード、PTPコマンド受信割り込みの設定等をする。
ステップS43:CPU13はMTU15からのコンペアマッチ割り込みとEPTPC14からのPTPコマンド受信割り込みをCPU13に通知するようにICU16を設定する。また、CPU13はPTPコマンド受信フラグを初期化する(ptp_flag←false)。
ステップS44:CPU13は故障検出の判定に使用するMTUカウンタ(mtu_count)とEPTPCカウンタ(ptp_count)差異の絶対値の上限値を閾値として設定する。閾値(thresh)は発振子によるMTU15のカウンタの誤差、割り込み処理による遅延、PTPのプロトコル動作上の誤差等を考慮して設定する。閾値の一例は後述の式(4)で示す。
ステップS45:CPU13はEPTPC14を使用し、PTPにより時刻配信元である外部機器2Aの時刻と時刻同期を開始する。ここで、時刻配信元は1または複数の中で最も精度のよいクロックを持つ機器がPTPにより選択される。
ステップS46:CPU13はEPTPC14のローカルクロックカウンタ1441のカウント値を読み出し、EPTPCカウンタの開始値として設定する(ptp_start←LCCV)。
ステップS47:CPU13はMTU15のPWM波形の出力の開始を指示する。また、実施例1のステップS23で説明したように、ELC17によるイベント接続でMTU15のPWM波形の出力開始をすることもできる。ここで、MTU15の動作について図11を用いて説明する。MTU15のタイマカウンタはカウントアップし、カウント値(TCNT)がTGRDになると、I/Oポート18の出力をLowからHighに反転する。カウントアップを続け、カウント値がTGRCになると、I/Oポート18の出力をHighからLowに反転し、コンペマッチ割り込みをCPU13に通知する。この動作を繰り返すことにより、PWM波形をI/Oポート18から出力する。図11では、周期が400μs、パルス幅が200μs、デューティが50%のPWM波形が示されている。
ステップS48:CPU13はPTPコマンド受信の発生有無を確認する。発生有無はPTPコマンド受信フラグ(ptp_flag)で判定する。PTPコマンド受信が発生している合(YESの場合)、ステップS49の処理に移る。PTPコマンド受信が発生していない場合(NOの場合)、ステップS4Cの処理に移る。
ステップS49:CPU13は、カウンタ差異の絶対値が閾値を超えているかどうかを確認する。カウンタ差異はMTUカウンタ(mtu_count)からEPTPCカウンタ(ptp_count)にMTUの動作周波数(fmtu)とEPTPCの動作周波数(fptp)の比で重み付けをしたものの差分とする。
カウンタ差異=|mtu_count−(fmtu/fptp)ptp_count|
カウンタ差異が閾値を超えている場合(YESの場合)、故障として検出し、エラー終了する。カウンタ差異が閾値を超えていない場合(NOの場合)、ステップS4Aの処理に移る。
ステップS4A:CPU13はPTPコマンド受信フラグをクリアする(ptp_flag←false)。
ステップS4B:CPU13はMTUカウンタをクリアする(mtu_count←0)。
ステップS4C:CPU13はユーザアプリケーションが終了しているかを判定する。ユーザアプリケーションが終了している場合(YESの場合)、処理を終了する。終了していない場合(NOの場合)、ステップS48に戻り処理を継続する。
<割り込み処理>
PTPコマンド受信割り込みについて以下説明する。
ステップS51:CPU13は、EPTPC14からのPTPコマンド受信割り込みが発生した場合、EPTPC14のローカルクロックカウンタ1441のカウンタ値を読み出し、EPTPCカウンタを更新する。更新値はEPTPC14のローカルクロックカウンタ1441のカウンタ値(LCCV)から、前回のPTPコマンド受信割り込み、または、定常処理にて設定したEPTPCカウンタの開始値を減じた値となる(ptp_count←LCCV-ptp_start)。
ステップS52:CPU13はMTU15のカウンタのカウンタ値(TCNT)を読み出し、MTUカウンタを更新する。更新値は現在のMTUカウンタにMTU15のカウンタのカウンタ値(TCNT)を加えた値となる(mtu_count←mtu_count+TCNT)。
ステップS53:CPU13はEPTPC14のローカルクロックカウンタ1441のカウンタ値を読み出し、EPTPCカウンタの開始値として設定する(ptp_start←LCCV)。
ステップS54:CPU13はPTPコマンド受信フラグを設定する(ptp_flag←true)。
次に、コンペアマッチ割り込みについて以下説明する。
ステップS61:CPU13は、MTU15からのコンペアマッチ割り込みが発生した場合、現在のMTUカウンタにPWM波形の周期に相当するカウンタ値(PWMP)を加えた値にMTUカウンタを更新する(mtu_count←mtu_count+PWMP)。
<閾値の一例>
閾値(thresh)の一例を示す。実施例1と同様に、閾値を発振子によるMTU15のカウンタの誤差に起因するthreshosc、PTPのプロトコル動作上の誤差に起因するthreshptp、割り込み処理に起因するthreshint、CPU13のパイプラインやバス状態による処理の揺らぎthreshfluに分離すると式(3)となる。
thresh=threshosc+threshptp+threshint+threshflu ・・・(3)
CPU13の動作周波数をfcpu、MTU15の動作周波数をfmtu=fcpu/16、MTU15に供給する発振子の精度をxosc、PTPコマンド受信間隔をtp2とすると、発振子によるMTU15のカウンタの誤差に起因するthreshoscは、MTUカウンタのカウント数で式(3−1)となる。
threshosc=fmtu*xosc*tp2 ・・・(3−1)
cpu=120MHz、fmtu=(fcpu/16)=7.5MHz、xosc=100ppm、tp2=1sとすると、threshosc=750サイクルとなる。
PTPのプロトコル動作上の誤差は、実施例1と同様にthreshptp<threshoscで近似する。
CPU13の動作周波数をfcpu、割り込み処理の発生回数をyint、割り込み処理のサイクル数をnintとすると、割り込み処理に起因するthreshintは、MTUカウンタのカウント数で式(3−2)となる。
threshint=(fmtu/fcpu)*(yint*nint) ・・・(3−2)
ここで、PTPコマンド受信割り込みとコンペアマッチ割り込みの処理は、近似的にCPU13の動作周波数で同じサイクル数とした。
cpu=120MHz、fmtu=(fcpu/16)=7.5MHzとする。割り込み処理は、割り込み応答と復帰時間も加え、割り込み応答時間を10サイクル、割り込み復帰時間を10サイクル、割り込み処理を平均的に80サイクルとして、nint=100サイクルとする。yintは、16ビットカウンタのコンペアマッチ割り込みが400μs毎に発生することから、yint=2,500回とすると、threshint=15,625サイクルとなる。
上記より、threshint≫threshosc>threshptpであり、実施例1と同様にthreshfluはマイクロコントローラ10AのCPU13の処理の揺らぎの上限値でありthreshintよりは小さいとして、式(3)を式(4)で近似する。
thresh ? threshint+threshflu
<threshint+threshint
=2*(fmtu/fcpu)*(yint*nint) ・・・(4)
上記の数値を式(4)に適用するとthresh=31,250サイクルとなる。
実施例2は、MTU15のタイマカウンタを用いてPWM波形を出力して産業用モータを制御し、これに並行してEPTPC14のローカルクロックカウンタ1441を用いてMTU15のタイマカウンタを診断する。
実施例2によれば、タイマのPWM波形生成時のカウンタ動作の故障診断をすることができる。また、産業モータ制御機器と機能安全機器(IEC61508規格準拠等)に適用することができる。
図12は実施例3に係る産業モータ制御システムの構成を示すブロック図である。図13はPWM波形比較時のEPTPCのパルス出力タイマおよびMTUのタイマカウンタの動作を示すタイミング図である。
2種のタイマ(EPTPC14、MTU15)を基に生成した第1パルスと第2パルスを第1ポート(PORT1)18_1と第2ポート(PORT2)18_2から出力し、それぞれ、モータドライバ6B1、6B2経由で第1産業モータ3B1と第2産業モータ3B2に接続する。また、マイクロコントローラ10Bの外部に配置した接続回路8経由で、第1パルスと第2パルスを分岐し、他の汎用ポートである第3ポート(PORT3)18_3と第4ポート(PORT4)18_4に、それぞれ、第1パルスと第2パルスを入力する。そして、パルス幅を測定し、比較することでタイマの故障を検出する。分岐でなく、外部から操作可能な物理的なスイッチを設置することで、モータ制御時は第1産業モータ3B1と第2産業モータ3B2にPWM波形を出力し、診断時は第3ポート18_3と第4ポート18_4にPWM波形を入力してもよい。ここで、第1ポート18_1、第2ポート18_2、第3ポート18_3、第4ポート18_4はI/Oポート18の一部を構成するI/Oポートである。
第1パルスはEPTPC14のパルス出力タイマの立ち上がりエッジをトグル出力させることでPWM波形を生成する。第2パルスはMTU15のチャネル0(MTU0)のPWM波形生成機能(PWMモード1)により生成し、EPTPC14の時刻一致イベントで第1パルスと同期して出力を開始する。
なお、相互監視でマイクロコントローラを2個搭載する場合、PWM波形の出力とPWM波形の入力(及び比較)は個々のマイクロコントローラで独立に行うこと、または、PWM波形の出力とPWM波形の入力(及び比較)を2重化して行ってもよい。
本応用例の動作フローについて図14、15A、15Bを用いて説明する。図14はPWM波形比較時の定常処理の動作フローチャートである。図15AはPWM波形比較時の立ち上がりエッジ割り込み処理の動作フローチャートである。図15BはPWM波形比較時のコンペアマッチ割り込み処理の動作フローチャートである。割り込みはEPTPC14からのパルス出力の立ち上がりエッジとMTU0からのコンペアマッチ割り込みを使用する。EPTPC14のパルス出力の立ち上がりエッジ割り込みは、図13に示すようにEPTPC14のパルス出力タイマから出力する波形がLowからHighに変化する立ち上がりで発生する。MTU0のコンペアマッチ割り込みは、図13に示すようにMTU0のPWMを生成するタイマカウンタがPWM波形の周期でクリアされる場合に発生する。
<定常処理>
ステップS71:CPU13はEPTPC14のパルス出力タイマとMTU0のカウンタを特定の時刻(Tとする)で同期開始する。同期開始はELC17のイベント信号の接続により行う。
ステップS72:CPU13はEPTPC14のパルス出力をELC17によりI/Oポート18(第1ポート18_1)の出力に接続する。そして、ポート出力はEPTPCパルスのトグル出力とする。
ステップS73:CPU13はEPTPC14のパルス出力タイマのタイマスタート時刻を同期開始時刻(TMSTTR←TS)、周期を200μs(TMCYCR←200,000)、パルス幅を100μs(TMPLSR←100,000)に設定する。
ステップS74:CPU13はMTU0の動作モードをPWMモード1に設定する。そして、MTU0への供給クロック周波数を120MHz(PCLKA←120MHz)、プリスケーラをPCLKA/16、LowからHighに反転するカウンタ比較値を200μs(TGRD←0x5DC)、HighからLowに反転するカウンタ比較値を400μs(TGRC←0xBB8)に設定する。また、開始直後にLowからHighに反転するように開始時のカウンタ値をLowからHighに反転するカウンタ比較値の1カウント小さい値を設定する(TCNT←0x5DB(=TGRD-1))。
ステップS75:CPU13はEPTPC14のパルス出力の立ち上がりエッジ割り込みとMTU0のHighからLowに反転するカウンタでのコンペアマッチ割り込みを通知するようにICU16を設定する。また、EPTPC14のパルス出力の立ち上がりエッジ割り込みフラグとMTU0のコンペアマッチ割り込みフラグを初期化する(ptp_flag←false、mtu0_flag←false)。
ステップS76:入力パルスのパルス幅測定用にPWM出力とは別チャネルを使用し、第1パルスのパルス幅測定にはチャネル1(MTU1)、第2パルスのパルス幅測定にはチャネル2(MTU2)を割り当てる。そして、CPU13はMTU1への供給クロック周波数を120MHz(PCLKA←120MHz)、プリスケーラをPCLKA/1、動作モードを外部パルス幅測定機能とし、Highパルス幅を測定するように設定する。MTU2も同様に設定する。
ステップS77:CPU13は故障検出の判定に使用するパルス幅差異の絶対値の上限値を閾値として設定する。閾値(thresh)は発振子によるMTU15のカウンタの誤差、PTPのプロトコル動作上の誤差等を考慮して設定する。閾値の一例は後述の式(6)で示す。
ステップS78:CPU13はEPTPC14を使用し、PTPにより外部の他の機器と時刻同期を開始する。ここで、時刻配信元は1または複数の中で最も精度のよいクロックを持つ機器がPTPにより選択される。
ステップS79:EPTPC14のローカルクロックカウンタ1441のカウンタ値がステップS73で設定したTになると、EPTPC14が生成した第1パルスとMTU15が生成した第2パルスを、それぞれ、第1ポート18_1と第2ポート18_2から出力する。なお、このステップは以下のようにハードウェアが行う。
まず、EPTPC14のパルス出力タイマを用いたPWM波形出力動作について図13を用いて説明する。EPTPC14のパルス出力タイマのタイマスタート時刻(Ts)に同期してパルス出力タイマはLowからHighに立ち上がって、周期が200μs、パルス幅が100μsのパルスを出力する。パルス出力タイマの立ち上がりで、第1パルスがLowからHighに立ち上がり第1ポート18_1の出力が開始される。次のパルス出力タイマの立ち上がりで、第1パルスはHighからLowに反転し、パルス出力の立ち上がりエッジ割り込みが発生する。この動作を繰り返すことにより、第1パルスのPWM波形を第1ポート18_1から出力する。このPWM波形は周期が400μs、パルス幅が200μs、デューティが50%である。
次に、MTU0のタイマカウンタを用いたPWM波形出力動作について図13を用いて説明する。MTU0のタイマカウンタはカウントアップし、カウント値(TCNT0)がTGRDになると、第2ポート18_2の出力をLowからHighに反転する。このタイミングはTsと同期されている。カウントアップを続け、カウント値がTGRCになると、第2ポート18_2の出力をHighからLowに反転し、コンペアマッチ割り込みが発生する。この動作を繰り返すことにより、第2パルスのPWM波形を第2ポート18_2から出力する。このPWM波形は周期が400μs、パルス幅が200μs、デューティが50%である。
ステップS7A:第1ポート18_1から出力した第1パルスを第3ポート18_3に入力し、第2ポート18_2から出力した第2パルスを第4ポート18_4に入力する。なお、このステップも以下のようにハードウェアが行う。
まず、MTU1のタイマカウンタを用いた第1パルスのパルス幅の測定について図13を説明する。第3ポート18_3に入力される第1パルスの立ち上がりでMTU1のタイマカウンタの計数を開始し、第1パルスの立下りで計数を終了する。このときのタイマカウンタのカウント値(TCNT1)に基づいてHighパルス幅を測定する。
次に、MTU2のタイマカウンタを用いた第2パルスのパルス幅の測定について図13を説明する。第4ポート18_4に入力される第2パルスの立ち上がりでMTU2のタイマカウンタの計数を開始し、第2パルスの立下りで計数を終了する。このときのタイマカウンタのカウント値(TCNT2)に基づいてHighパルス幅を測定する。
ステップS7B:CPU13はパルス幅の取得が完了したかどうかを判定する。判定はEPTPC14のパルス出力の立ち上がりエッジ割り込みフラグ(ptp_flag)とMTU15のコンペアマッチ割り込みフラグ(mtu_flag)がともに設定されていることで行う。パルス幅の取得が完了している場合(YESの場合)はステップS7Cの処理に移り、パルス幅の取得が完了していない場合(NOの場合)はステップS7Eの処理に移る。
ステップS7C:CPU13はパルス幅の差異の絶対値が閾値を超えているかどうかを確認する。
パルス幅差異=|mtu1_count - mtu2_count|
パルス幅差異が閾値を超えていれば、故障として検出し、エラー終了する。
ステップS7D:CPU13は、ステップS7Cでパルス幅差異が閾値を越えてなければ、EPTPC14のパルス出力の立ち上がりエッジ割り込みフラグとMTU15のコンペアマッチ割り込みフラグをクリアする(ptp_flag←false, mtu_flag←false)
ステップS7E:CPU13はユーザアプリケーションが終了しているかを判定する。ユーザアプリケーションが終了していれば、処理を終了する。終了していなければ、ステップS7Bに戻り処理を継続する。
<割り込み処理>
上述したように、MTU1のタイマカウンタは第3ポート18_3から入力した第1パルスのHigh期間にカウントアップ動作をし、Low期間はカウントアップ動作を停止する。また、MTU2のタイマカウンタは第4ポート18_4から入力した第2パルスのHigh期間にカウントアップ動作をし、Low期間はカウントアップ動作を停止する。
パルス出力の立ち上がりエッジ割り込みについて以下説明する。
ステップS81:CPU13はEPTPC14のパルス出力の立ち上がりエッジ割り込みが発生した場合、MTU1のタイマカウンタのカウント値(TCNT1)を読み出し、第1パルスのパルス幅として取得する(mtu1_count←TCNT1)。
ステップS82:CPU13はMTU1のタイマカウンタをクリアする(TCNT1←0)。
ステップS83:CPU13はEPTPC14のパルス出力の立ち上がりエッジ割り込みフラグを設定する(ptp_flag←true)。
コンペアマッチマッチ割り込みについて以下説明する。
ステップS91:CPU13は、MTU0のHighからLowに反転するカウンタでのコンペアマッチ割り込みが発生した場合、MTU2のタイマカウンタのカウンタ値(TCNT2)を読み出し、第2パルスのパルス幅として取得する(mtu2_count←TCNT2)。
ステップS92:CPU13はMTU2のタイマカウンタをクリアする(TCNT2←0)。
ステップS93:CPU13はMTU0のHighからLowに反転するカウンタでのコンペアマッチ割り込みフラグを設定する(mtu0_flag←true)。
<閾値の一例>
閾値(thresh)の一例を示す。閾値を発振子によるMTUカウンタの誤差に起因するthreshosc、PTPのプロトコル動作上の誤差に起因するthreshptpに加え、マイクロコントローラ外部の接続回路を経由するパルスの伝搬遅延threshppgに分離すると式(5)となる。
thresh=threshosc+threshptp +threshppg ・・・(5)
なお、本応用例ではパルス幅の取得に使用するタイマカウンタはハードウェアで開始と停止することから割り込み処理での遅延の影響はない。
threshoscは立ち上がりエッジ割り込み間隔をtp3とすると、実施例2と同様に式(5−1)となり、fcpu=120MHz、fmtu=fcpu=120MHz、xosc=100ppm、tp3=400μsとすると、threshosc=5サイクルとなる。
threshosc=fmtu*xosc*tp3 ・・・(5−1)
PTPのプロトコル動作上の誤差は、実施例1と同様に時間で1μs〜100nsまで誤差の低減が可能で、MTUカウンタのカウント数でthreshptp=8〜80サイクルとなる。
パルスの伝搬遅延は、高速を3.0x10m/s、パルスが伝搬する導体の比誘電率を10、配線距離を10cmとすると、10ns以下となりthreshppg<threshoscで近似する。
上記より、式(5)を式(6)で近似する。
thresh ? threshosc+threshptp+threshppg
<2*threshosc+threshptp・・・(6)
上記の数値を式(6)に適用するとthresh100サイクルとなる。
実施例3は、ローカルクロックカウンタ(第1カウンタ)の所定値でEPTPC14(第1タイマ)のパルス出力タイマで生成するPWMを第1のI/Oポートから出力し、第3のI/Oポートから入力してMTU15(第2タイマ)のタイマカウンタ(第3カウンタ)でパルス幅を測定する。ローカルクロックカウンタ(第1カウンタ)の所定値でMTU15(第2タイマ)のタイマカウンタ(第2カウンタ)で生成されるPWMを第2のI/Oポートから出力し、第4のI/Oポートから入力してMTU15(第2タイマ)のタイマカウンタ(第4カウンタ)でパルス幅を測定する。これにより、ユーザプログラムを停止することなく、タイマによるPWM波形生成と出力の機能の診断をすることができる。
実施例1のMTU15は複数のチャネルを備えるので、2つのチャネルの16ビットカウンタをカスケード接続して32ビットカウンタとして使用する。32ビットカウンタでは、オーバフローは実動作での発生はない。
図16は実施例4に係る32ビットカウンタの動作を示すタイミング図である。実施例4に係る32ビットカウンタはMTU15のチャネル1(MTU1)のカウンタを上位16ビット、MTU15のチャネル2(MTU2)のカウンタを下位16ビットとして構成される。MTU2のカウンタがオーバフローする毎に、MTU1のカウンタがカウントアップされ、MTU2のカウンタはクリアされ0からカウントアップを再開することで、32ビットのカウンタとして動作する。
構成と動作は、MTU15のMTU1のカウンタとMT2のカウンタを使用し、カスケード接続による32ビットの動作設定が必要となることおよび実質的にオーバフロー割り込みがなくなること以外は実施例1と同様なので省略する。カスケード接続するカウンタはチャネル1とチャネル2のカウンタに限定されるものではない。
<閾値>
閾値(thresh)の一例は実施例1と同様に式(7)と近似する。
thresh ? (fmtu/fcpu)*(2*fcpu*xosc*tp1+2*xint*nint) ・・・(7)
ここで、CPU13の動作周波数をfcpu、MTU15の動作周波数をfmtu=fcpu/16、MTU15に供給する発振子の精度をxosc、時刻一致イベント間隔をtp1、割り込み処理の発生回数をxint、割り込み処理のサイクル数をnintとした。
MTU15のオーバフロー割り込みがなくなるので、割り込み処理の発生回数であるxintが実施例1に比較し13回から時刻一致イベント割り込みの2回に減少する。fcpu=120MHz、fmtu=(fcpu/16)=7.5MHz、xosc=100ppm、tp1=100ms、xint=2、nint=100とすると、thresh=175サイクルとなる。
実施例4は16ビットカウンタを2つカスケード接続して32ビットカウンタを構成する。これによれば、割り込み発生回数を少なくすることで、実施例1に比較し精度のよいタイマの診断をすることができる。また、タイマを32ビットカウンタとして使用した場合のタイマの診断をすることができる。
以上、本発明者によってなされた発明を実施形態および実施例に基づき具体的に説明したが、本発明は、上記実施形態および実施例に限定されるものではなく、種々変更可能であることはいうまでもない。
1・・・機能安全対応機器
2・・・外部機器
3・・・産業モータ
4・・・産業機器
5・・・Etherケーブル
6・・・モータドライバ
7・・・Etherコネクタ
8・・・接続回路
10・・・マイクロコントローラ
11・・・ROM
12・・・RAM
13・・・CPU
14・・・EPTPC
141・・・第0チャネルPTPプロトコル処理部(CH0)
142・・・第1チャネルPTPプロトコル処理部(CH1)
143・・・パケット中継部
144・・・クロック(時刻)補正部
1441・・・ローカルクロックカウンタ
15・・・MTU
16・・・ICU
17・・・ELC
18・・・I/Oポート
18_1・・・第1ポート
18_2・・・第2ポート
18_3・・・第3ポート
18_4・・・第4ポート
21・・・第0チャネルETHERC(CH0)
22・・・第1チャネルETHERC(CH1)
23・・・第0チャネルEDMAC(CH0)
24・・・第1チャネルEDMAC(CH1)
25・・・PTPEDMAC
26・・・CPUインタフェース

Claims (15)

  1. 半導体装置は、
    第1カウンタを有し、前記半導体装置の外部機器の時刻と時刻同期する第1タイマと、
    第2カウンタを有する第2タイマと、
    CPUを有し、前記第1カウンタのカウント値と前記第2カウンタのカウント値とを比較し、比較結果に基づいて前記第2タイマの動作不良を検出する制御装置と、
    を備え
    前記第1タイマはネットワークの時刻同期プロトコル(PTP)により時刻同期を行い、前記第1カウンタのカウント値を前記外部機器の時刻に合わせるよう構成され、
    前記制御装置は、前記時刻同期に基づいて前記第1タイマが生成する割り込みにより、前記第1カウンタのカウンタ値および前記第2カウンタのカウンタ値を読み出し、前記読み出したカウンタ値に基づいて、前記第1カウンタと前記第2カウンタとのカウンタ差異を求め、前記カウンタ差異が所定値よりも大きい場合、前記第2タイマを動作不良と判定するよう構成される。
  2. 請求項の半導体装置において、
    前記第1タイマは前記第1カウンタが所定の値に一致した場合に前記割り込みを生成し、
    前記第2カウンタは前記割り込みに基づいて計数を開始し、前記割り込みの次の割り込みに基づいて計数を停止するよう構成される。
  3. 請求項の半導体装置において、
    さらに、I/Oポートを備え、
    前記第1タイマは前記第1カウンタのカウント値に基づいてパルス幅変調信号を生成し、
    前記I/Oポートは前記パルス幅変調信号を前記半導体装置の外部に出力し、
    前記第1タイマは前記外部機器からの同期コマンドを受信し、前記外部機器との時刻差異を更新した場合に前記割り込みを生成するよう構成される。
  4. 請求項の半導体装置において、
    前記外部機器の時刻は、1または複数の中で最も精度のよいクロックを有する機器の時刻が前記PTPにより選択されるよう構成される。
  5. 請求項の半導体装置において、
    前記所定値は一定の誤差を含む。
  6. 請求項の半導体装置において、
    前記所定値は前記第2タイマの発振源となる発振子の精度と前記CPUの割り込み処理サイクルに基づいて設定されるよう構成される。
  7. 請求項の半導体装置において、
    前記第2カウンタがオーバフローする場合は、前記読み出される第2カウンタのカウンタ値にオーバフロー値が加算されるよう構成される。
  8. 請求項の半導体装置において、
    前記第2タイマは複数のカウンタを備え、該カウンタをカスケード接続してカウンタを構成し、オーバフロー値を大きくするよう構成される。
  9. 半導体装置は、
    第1カウンタおよびパルス出力タイマを有し、前記半導体装置の外部機器の時刻と時刻同期する第1タイマと、
    第2カウンタ、第3カウンタおよび第4カウンタを有する第2タイマと、
    前記パルス出力タイマで生成される第1パルスを出力する第1I/Oポートと、
    前記第2カウンタの計数に基づいて生成される第2パルスを出力する第2I/Oポートと、
    前記第1I/Oポートから出力される前記第1パルスを入力する第3I/Oポートと、
    前記第2I/Oポートから出力される前記第2パルスを入力する第4I/Oポートと、
    CPUを含む制御装置と、
    を備え、
    前記第3カウンタは前記第3I/Oポートから入力される前記第1パルスのパルス幅を計数し、
    前記第4カウンタは前記第4I/Oポートから入力される前記第2パルスのパルス幅を計数し、
    前記制御装置は前記第3カウンタのカウント値と前記第4カウンタのカウント値とを比較し、比較結果に基づいて前記第2タイマの動作不良を検出するよう構成される。
  10. 請求項の半導体装置において、
    前記第1タイマはネットワークの時刻同期プロトコル(PTP)により時刻同期を行い、前記第1カウンタが示す時刻を前記外部機器の時刻に合わせるよう構成される。
  11. 請求項10の半導体装置において、
    前記パルス出力タイマは、前記第1カウンタのカウンタ値が所定値になる毎に同期して、前記第1パルスを生成し、
    前記第2タイマは、前記第1カウンタのカウンタ値が所定値になる毎に同期して、前記第2パルスを生成し、
    前記制御装置は、前記第1タイマが生成する第1割り込みにより前記第3カウンタのカウンタ値を読み出し、前記第2タイマが生成する第2割り込みにより前記第4カウンタのカウンタ値を読み出し、前記読み出したカウンタ値に基づいて、前記第3カウンタと前記第4カウンタとのカウンタ差異を求め、前記カウンタ差異が所定値よりも大きい場合、前記第2タイマを動作不良と判定するよう構成される。
  12. 請求項11の半導体装置において、
    前記第1タイマは前記パルス出力タイマのパルスが立ち上がる場合に前記第1割り込みを生成し、
    前記第2タイマは前記第2カウンタのカウント値が所定の値と一致する場合に前記第2割り込みを生成するよう構成される。
  13. 請求項10の半導体装置において、
    前記外部機器の時刻は、1または複数の中で最も精度のよいクロックを有する機器の時刻が前記PTPにより選択されるよう構成される。
  14. 請求項11の半導体装置において、
    前記所定値は一定の誤差を含む。
  15. 請求項14の半導体装置において、
    前記所定値は前記第2タイマの発振源となる発振子の精度と前記PTPによる時刻同期の誤差に基づいて設定されるよう構成される。
JP2016058614A 2016-03-23 2016-03-23 半導体装置 Active JP6587566B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2016058614A JP6587566B2 (ja) 2016-03-23 2016-03-23 半導体装置
US15/413,634 US10255130B2 (en) 2016-03-23 2017-01-24 Semiconductor device
CN201710171555.6A CN107229543B (zh) 2016-03-23 2017-03-22 半导体装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016058614A JP6587566B2 (ja) 2016-03-23 2016-03-23 半導体装置

Publications (3)

Publication Number Publication Date
JP2017174092A JP2017174092A (ja) 2017-09-28
JP2017174092A5 JP2017174092A5 (ja) 2018-11-22
JP6587566B2 true JP6587566B2 (ja) 2019-10-09

Family

ID=59897981

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016058614A Active JP6587566B2 (ja) 2016-03-23 2016-03-23 半導体装置

Country Status (3)

Country Link
US (1) US10255130B2 (ja)
JP (1) JP6587566B2 (ja)
CN (1) CN107229543B (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220189217A1 (en) * 2019-03-26 2022-06-16 Hitachi Astemo, Ltd. Electronic Control Device and Diagnosis Method of Electronic Control Device
JP2021179882A (ja) * 2020-05-15 2021-11-18 日立Astemo株式会社 電子制御装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01227524A (ja) * 1988-03-07 1989-09-11 Fujitsu Ltd カウンタ障害検出方式
JPH10124465A (ja) * 1996-10-16 1998-05-15 Fuji Xerox Co Ltd 情報処理装置
JP3072720B2 (ja) * 1997-07-11 2000-08-07 日本電気株式会社 情報処理装置
JP4147103B2 (ja) * 2002-12-18 2008-09-10 アマノ株式会社 時刻情報取得システム
JP4313715B2 (ja) * 2004-04-01 2009-08-12 Okiセミコンダクタ株式会社 同期確立回路および同期確立方法
US8179924B2 (en) * 2006-05-31 2012-05-15 Applied Micro Circuits Corporation Timer with network synchronized time base
FR2939587B1 (fr) * 2008-12-09 2011-04-08 Alcatel Lucent Horloge pour un noeud d'un reseau a commutation de paquets et procede de synchronisation associe.
US8229056B2 (en) * 2010-12-17 2012-07-24 Nxp B.V. Universal counter/timer circuit
JP5568048B2 (ja) * 2011-04-04 2014-08-06 株式会社日立製作所 並列計算機システム、およびプログラム
JP5722150B2 (ja) 2011-07-21 2015-05-20 ルネサスエレクトロニクス株式会社 マイクロコントローラ
JP5984508B2 (ja) * 2012-05-25 2016-09-06 ルネサスエレクトロニクス株式会社 半導体データ処理装置及びエンジン制御装置
US9746876B2 (en) * 2015-01-06 2017-08-29 Oracle International Corporation Drift compensation for a real time clock circuit

Also Published As

Publication number Publication date
CN107229543A (zh) 2017-10-03
CN107229543B (zh) 2022-04-22
US20170277584A1 (en) 2017-09-28
US10255130B2 (en) 2019-04-09
JP2017174092A (ja) 2017-09-28

Similar Documents

Publication Publication Date Title
US8996754B2 (en) Integrated counters in an input module for an industrial controller
US7979730B2 (en) Method and device for synchronizing cycle time of a plurality of TTCAN buses based on determined global time deviations and a corresponding bus system
US7366205B2 (en) Method for synchronizing nodes of a communications system
CN111052006B (zh) 控制装置以及控制方法
JP2738106B2 (ja) 多重通信制御装置
CN111030909B (zh) 一种应用于can总线多主设备通讯间时间同步的方法
CN111953469B (zh) 一种伺服驱动器与Ethercat DC时钟的同步方法、装置及电子设备
US10924371B2 (en) Method for monitoring a first node in a communications network and monitoring system
US20090240857A1 (en) Method and device for controlling a bus system and a corresponding bus system
JP6587566B2 (ja) 半導体装置
US9081371B2 (en) Method for synchronizing an operating clock with a time clock of an automation network
CN115428406A (zh) 同步脉冲宽度调制控制
JP6029433B2 (ja) マイコン
US10853288B2 (en) Bus system
US20220278872A1 (en) Method, system, and gateway for linking time-sensitive fieldbuses
JP2009251854A (ja) データ処理装置及び同期方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181015

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181015

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190314

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190416

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190606

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190820

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190910

R150 Certificate of patent or registration of utility model

Ref document number: 6587566

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150