(57)【特許請求の範囲】
【請求項１】
可動接点を回転させて複数の固定接点のいずれかに接続するロータリスイッチの固定接点からの出力コードの信号を、接点レシーバを介して受信し、該受信した前記ロータリスイッチの前記出力コードに基づいて指令を出力するロータリスイッチを備えた制御装置において、
前記ロータリスイッチから出力される前記出力コードの信号からチャタリングを除去し、前記チャタリングを除去された出力コードの遷移のみを監視し、前記ロータリスイッチが正常に動作する場合の前記チャタリングを除去された出力コードの遷移パターンと一致しない遷移を検出したとき、前記ロータリスイッチの故障と判断する故障検出手段と、
前記接点レシーバの出力信号の電圧が予め決められた電圧範囲にはいっている時間を計測する計測手段と、
前記計測手段での計測値が予め決められた時間に達したとき故障の予兆を知らせる信号を出力する手段からなる故障予兆検出手段を備え、
前記計測手段の前記予め決められた電圧範囲は、故障検知用の閾値電圧より大きくオフ電圧より低い電圧であり、かつ、故障検知用の閾値電圧より小さくオン電圧より大きい電圧であり、
前記故障検出手段は、マイクロコンピュータと該マイクロコンピュータで動作するソフトウェアで構成され、前記接点レシーバの出力は前記マイクロコンピュータの入力ポートに接続され、前記ソフトウェアによって前記入力ポートの信号状態より求められる前記出力コードを求め監視しロータリスイッチの故障と判断するロータリスイッチを備えた制御装置。
【請求項２】
前記マイクロコンピュータの入力ポートは、デジタル入力ポートである請求項１に記載のロータリスイッチを備えた制御装置。
【請求項３】
前記マイクロコンピュータの入力ポートは、アナログポートで構成され、
前記故障検出手段は、予め決められた電圧と前記入力ポートに入力される信号の電圧とを比較し、接点のＯＮ／ＯＦＦ状態を判定して前記出力コードを判別し、該出力コードの遷移よりロータリスイッチの故障と判断する請求項１に記載のロータリスイッチを備えた制御装置。
【請求項４】
前記故障検出手段は、更に、前記ロータリスイッチの出力コードに割り当てられてないコードを検出し、未使用コードアラーム信号を出力する請求項１に記載のロータリスイッチを備えた制御装置。
【請求項５】
前記マイクロコンピュータの電源又は該電源へ電力を供給する生成元の電圧低下を検出する電圧低下監視手段と、電気的に書き込み可能な不揮発性メモリとを設け、
前記マイクロコンピュータは、前記電圧低下監視手段で電圧低下を検出すると、前記入力ポートから入力される出力コードを前記不揮発性メモリに書き込み保存し、
前記マイクロコンピュータへの次の電源投入時に、前記入力ポートから入力される出力コードと前記不揮発性メモリに保存された出力コードを比較し、２つの前記出力コードが不一致のときアラームを出力するようにし、
オペレータは、前記アラームを契機として、現在のロータリスイッチのポジションから期待される指令内容と実際の指令内容を比較し、２つの前記指令内容が一致していることを確認すれば前記アラームを解除し、２つの前記指令内容が一致していないことを確認すれば、前記ロータリスイッチの故障と判断する請求項１乃至３の内いずれか１項に記載のロータリスイッチを備えた制御装置。
【請求項６】
可動接点を回転させて複数の固定接点のいずれかに接続するロータリスイッチの固定接点からの出力コードの信号を、接点レシーバを介して受信し、該受信した前記ロータリスイッチの前記出力コードに基づいて指令を出力するロータリスイッチを備えた制御装置において、
前記ロータリスイッチから出力される前記出力コードの信号からチャタリングを除去するチャタリング除去手段と、
前記チャタリングを除去された出力コードの遷移のみを監視し、前記ロータリスイッチが正常に動作する場合の前記チャタリングを除去された出力コードの遷移パターンと一致しない遷移を検出したとき、前記ロータリスイッチの故障と判断する故障検出手段を有し、
前記接点レシーバの出力信号の電圧が予め決められた電圧範囲にはいっている時間を計測する計測手段と、該計測手段での計測値が予め決められた時間に達したとき故障の予兆を知らせる信号を出力する手段からなる故障予兆検出手段を備え、
前記予め決められた電圧範囲は、故障検知用の閾値電圧より大きくオフ電圧より低い電圧であり、かつ、故障検知用の閾値電圧より小さくオン電圧より大きい電圧である、ことを特徴とするロータリスイッチを備えた制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、各種電子機器で使用されるロータリスイッチの制御装置に関し、特に、ロータリスイッチの故障を検出できる制御装置に関する。
【背景技術】
【０００２】
各種電子機器、電気機器等で使用されるロータリスイッチは、可動接点を回転させて複数の固定接点のいずれかに接続して、その回転位置に応じたコードを出力するものであり、ロータリスイッチとその制御装置は、一般的に図１に示す形態である。  
この図１で示す例では、固定接点ＳＷ０〜ＳＷ３の４接点、５端子、１６ポジション、０Ｖコモンを使用したロータリスイッチの例を示している。ロータリスイッチ１はその回転位置（ポジション）に応じて固定接点ＳＷ０〜ＳＷ３がＯＮ／ＯＦＦし、ＯＮ／ＯＦＦによる出力コードを出力し、接点レシーバ３（３−０、３−１、３−２、３−３）は、このロータリスイッチの接点出力を電気信号に変換し、マイクロコンピュータ（以下マイコンという）２の入力ポートＰＴ０〜ＰＴ３が受けられる信号としてマイコン２に出力する。マイコン２は入力ポートＰＴ０〜ＰＴ３で受信した信号の電圧レベルに基づいてその出力コードを解析し、ロータリスイッチで指令された指令を出力する。
【０００３】
接点レシーバ３は、マイコン２の入力ポートＰＴ０〜ＰＴ３としてデジタル信号の入力ポートを使用する場合には、プルアップ抵抗、ローパスフィルタ、波形成形回路、電圧レベル変換回路等で構成されている。なお、マイコン２のソフトウェアによる解析では、入力ポートＰＴ０〜ＰＴ３にハイレベルの信号が入力されたときには、ロータリスイッチの接点がＯＮと判定するのが直感的であるため（正論理）、図１では接点レシーバ３にインバータ３−０、３−１、３−２、３−３を用いているが、このインバータによる反転は必須のものではない。
【０００４】
また、ロータリスイッチ１の出力コードがグレーコードで構成されている場合は、図２で示す出力コード表となる。また、ロータリスイッチ１の出力コードがバイナリコード出力の場合には、図３に示すコード表となる。  
この図２、図３の出力コード表で、「１」は固定接点ＳＷ０〜ＳＷ３がＯＮ、「０」はＯＦＦを意味する。
【０００５】
このロータリスイッチ１を使用する例として、例えば、工作機械のモータの速度を設定するオーバドライブスイッチにロータリスイッチを用いる場合がある。この例の場合、マイコン２が入力ポートＰＴ０〜ＰＴ３に入力される信号に基づいて、ロータリスイッチ１の出力コードを読み取り解析して、速度指令（オーバライド値）を出力するが、例えば、ロータリスイッチ１の出力コードが図２で示したグレーコードである場合には、図４に示すようなモータ速度指令を出力することになる。なお、図４で、出力するモータ速度は基準値の百分率（％）で表わしている。
【０００６】
ロータリスイッチをこのような工作機械のオーバライドスイッチとして使用される場合、このロータリスイッチ（オーバライドスイッチ）１が故障し、異常なコードを出力するとモータが意図しない速度で回転し、工作機械や被加工物を壊したり、危険な場合がある。  
例えば、モータを停止させるためにロータリスイッチのポジションを「０」に操作したとき、固定接点ＳＷ３が故障してオン状態「１」で、出力コード「１０００」（ＳＷ３＝１、ＳＷ２＝０、ＳＷ１＝０、ＳＷ０＝０）となった場合、マイコン２から速度指令（オーバライド値）１５０％が出力される。これによってモータは意図しない速度（基準速度の１５０％の速度）で回転することになり、危険である。
【０００７】
そこで、このような危険、不具合を防止するために、ロータリスイッチの故障を検出する方法として、図５に示すようなパリティビット付のロータリスイッチ１’が採用されている。図５で示す例は、図１に示したロータリスイッチ１にパリティビットの固定接点ＳＷＰ（パリティビット端子）が追加されたもので、５接点、６端子、１６ポジション、０Ｖコモンを使用したものである。パリティビットの固定接点ＳＷＰの出力も接点レシーバを介してマイコン２の入力ポートに接続されている。また、このロータリスイッチ１’の出力コードが図２に示すような、グレーコード出力で構成されているときは、図６の出力コード表で示すコードを出力する。この例では、偶数パリティの場合を示している。マイコン２は、格納されているソフトウェアで、パリティチェックを行い、パレティアラームを検出したら、ロータリスイッチの故障と判断し、工作機械等の機器を安全な状態に移行させ、アラーム表示等を行うようにしている。  
なお、パリティビット付のロータリスイッチを用いる先行例として、特許文献１等がある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００５−６３７５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ロータリスイッチの故障は、パリティビット付のロータリスイッチとすることによって検出しているが、パリティビット付のロータリスイッチは大型のロータリスイッチしかなく、小型のロータリスイッチにはない。
【００１０】
そこで、本発明の目的は、パリティビットの接点を設ける必要がなく、小型のロータリスイッチもロータリスイッチの故障を検出できるロータリスイッチの制御装置を提供することにある。
【課題を解決するための手段】
【００１１】
本願の請求項１に係る発明は、可動接点を回転させて複数の固定接点のいずれかに接続するロータリスイッチの固定接点からの出力コードの信号を、接点レシーバを介して受信し、該受信した前記ロータリスイッチの前記出力コードに基づいて指令を出力するロータリスイッチを備えた制御装置において、前記ロータリスイッチから出力される前記出力コードの信号からチャタリングを除去し、前記チャタリングを除去された出力コードの遷移のみを監視し、前記ロータリスイッチが正常に動作する場合の前記チャタリングを除去された出力コードの遷移パターンと一致しない遷移を検出したとき、前記ロータリスイッチの故障と判断する故障検出手段と、前記接点レシーバの出力信号の電圧が予め決められた電圧範囲にはいっている時間を計測する計測手段と、前記計測手段での計測値が予め決められた時間に達したとき故障の予兆を知らせる信号を出力する手段からなる故障予兆検出手段を備え、前記計測手段の前記予め決められた電圧範囲は、故障検知用の閾値電圧より大きくオフ電圧より低い電圧であり、かつ、故障検知用の閾値電圧より小さくオン電圧より大きい電圧であり、前記故障検出手段は、マイクロコンピュータと該マイクロコンピュータで動作するソフトウェアで構成され、前記接点レシーバの出力は前記マイクロコンピュータの入力ポートに接続され、前記ソフトウェアによって前記入力ポートの信号状態より求められる前記出力コードを求め監視しロータリスイッチの故障と判断するロータリスイッチを備えた制御装置である。
【００１２】
請求項２に係る発明は、前記マイクロコンピュータの入力ポートは、デジタル入力ポートである請求項１に記載のロータリスイッチを備えた制御装置である。  
請求項３に係る発明は、前記マイクロコンピュータの入力ポートは、アナログポートで構成され、前記故障検出手段は、予め決められた電圧と前記入力ポートに入力される信号の電圧とを比較し、接点のＯＮ／ＯＦＦ状態を判定して前記出力コードを判別し、該出力コードの遷移よりロータリスイッチの故障と判断する請求項１に記載のロータリスイッチを備えた制御装置である。
【００１３】
請求項４に係る発明は、前記故障検出手段は、前記ロータリスイッチの出力コードに割り当てられてないコードを検出し、未使用コードアラーム信号を出力する未使用コード検出手段を備える請求項１に記載のロータリスイッチを備えた制御装置である。
請求項５に係る発明は、前記マイクロコンピュータの電源又は該電源へ電力を供給する生成元の電圧低下を検出する電圧低下監視手段と、電気的に書き込み可能な不揮発性メモリとを設け、前記マイクロコンピュータは、前記電圧低下監視手段で電圧低下を検出すると、前記入力ポートから入力される出力コードを前記不揮発性メモリに書き込み保存し、前記マイクロコンピュータへの次の電源投入時に、前記入力ポートから入力される出力コードと前記不揮発性メモリに保存された出力コードを比較し、２つの前記出力コードが不一致のときアラームを出力するようにし、オペレータは、前記アラームを契機として、現在のロータリスイッチのポジションから期待される指令内容と実際の指令内容を比較し、２つの前記指令内容が一致していることを確認すれば前記アラームを解除し、２つの前記指令内容が一致していないことを確認すれば、前記ロータリスイッチの故障と判断する請求項１乃至３の内いずれか１項に記載のロータリスイッチを備えた制御装置である。
請求項６に係る発明は、可動接点を回転させて複数の固定接点のいずれかに接続するロータリスイッチの固定接点からの出力コードの信号を、接点レシーバを介して受信し、該受信した前記ロータリスイッチの前記出力コードに基づいて指令を出力するロータリスイッチを備えた制御装置において、前記ロータリスイッチから出力される前記出力コードの信号からチャタリングを除去するチャタリング除去手段と、前記チャタリングを除去された出力コードの遷移のみを監視し、前記ロータリスイッチが正常に動作する場合の前記チャタリングを除去された出力コードの遷移パターンと一致しない遷移を検出したとき、前記ロータリスイッチの故障と判断する故障検出手段を有し、前記接点レシーバの出力信号の電圧が予め決められた電圧範囲にはいっている時間を計測する計測手段と、該計測手段での計測値が予め決められた時間に達したとき故障の予兆を知らせる信号を出力する手段からなる故障予兆検出手段を備え、前記予め決められた電圧範囲は、故障検知用の閾値電圧より大きくオフ電圧より低い電圧であり、かつ、故障検知用の閾値電圧より小さくオン電圧より大きい電圧である、ことを特徴とするロータリスイッチを備えた制御装置である。
【発明の効果】
【００１５】
本願各発明は、パリティビット付きではない小型のロータリスイッチにおいても、該ロータリスイッチの故障を検出できる。
【図面の簡単な説明】
【００１６】
【図１】従来のロータリスイッチとその制御装置の概要図である。
【図２】ロータリスイッチがグレーコードを用いているときの出力コード表である。
【図３】ロータリスイッチがバイナリコードを用いているときの出力コード表である。
【図４】ロータリスイッチをオーバライドスイッチとして使用したときの出力コードと速度指令の関係を表わす表である。
【図５】パリティビット付のロータリスイッチの構成図である。
【図６】パリティビット付のロータリスイッチが偶数パリティのグレーコードを用いているときの出力コード表である。
【図７】本発明の第１の実施形態の概要図である。
【図８】同第１の実施形態でのロータリスイッチの固定接点のＯＮ／ＯＦＦ読み取りの動作説明図である。
【図９】同第１の実施形態でのロータリスイッチの故障検出処理のアルゴリズムを示すフローチャートにおける初期設定のフローチャートである。
【図１０】同第１の実施形態でのロータリスイッチの故障検出処理として所定周期毎定期的に行う処理のアルゴリズムを示すフローチャートである。
【図１１】図１０に続くフローチャートである。
【図１２】フィルタを用いてチャタリング除去を行う本発明の第２の実施形態の概要図である。
【図１３】ロータリスイッチの故障をハードウェア手段で検出するようにした本発明の第３の実施形態の概要図である。
【図１４】本発明の第３の実施形態の故障検出回路における同期化回路、チャタリング除去回路、遅延回路の構成図である。
【図１５】同第３の実施形態の故障検出回路における異常遷移検出回路の構成図である。
【図１６】同第３の実施形態の故障検出回路における未使用コード検出回路の構成図である。
【図１７】本発明の第４の実施形態の概要図である。
【図１８】故障の予兆を検出する第４の実施形態における予兆検出動作の説明図（予兆を検出しないときの図）である。
【図１９】同予兆検出動作の説明図（予兆を検出するときの図）である。
【図２０】予兆検出処理のアルゴリズムを示すフローチャートである。
【図２１】本発明の第５の実施形態の概要図である。
【図２２】本発明の第５の実施形態の別の態様を示す概要図である。
【発明を実施するための形態】
【００１７】
本発明は、ロータリスイッチを操作したとき発生する信号の遷移によって、該ロータリスイッチの故障を検出する点に特徴を有するものである。ポジションｉの位置のロータリスイッチを操作したとき、ロータリスイッチのポジションはポジションｉから、ポジション（ｉ−１）、ポジション（ｉ−２）・・・と遷移するか、又は、ポジション（ｉ＋１）、ポジション（ｉ＋２）・・・と遷移し、出力コードもそのポジションの遷移に応じて遷移する。ロータリスイッチの出力は、ポジションｉの出力コードから隣接するポジション（ｉ−１）若しくはポジション（ｉ＋１）の出力コードに遷移するはずである。このように、ロータリスイッチを操作したとき、ロータリスイッチから出力され出力コードの遷移は決まっているから、この出力コードの遷移によって、ロータリスイッチの故障を判別するようにする。
【００１８】
例えば、図２、図４で示されるようなグレーコードを出力するロータリスイッチの場合、出力コードが「００００」（ポジション０でＳＷ３＝０、ＳＷ２＝０、ＳＷ１＝０、ＳＷ０＝０）から許容される出力コードの遷移は「０００１」（ポジション１でＳＷ３＝０、ＳＷ２＝０、ＳＷ１＝０、ＳＷ０＝１）であり、これ以外の遷移はあり得ないので、これ以外の出力コードの遷移であるときはロータリスイッチの故障と判断する。
なお、４ケタで表わされる出力コードの表示は、１ケタ目は固定接点ＳＷ０、２ケタ目は固定接点ＳＷ１、３ケタ目は固定接点ＳＷ２、４ケタ目は固定接点ＳＷ３の出力を表わす。
【００１９】
また、出力コードが「０００１」（ポジション１）から許容される出力コードの遷移は、隣接するポジションの出力コード「００１１」（ポジション２でＳＷ３＝０、ＳＷ２＝０、ＳＷ１＝１、ＳＷ０＝１）か「００００」（ポジション０）の２通りであり、これ以外の遷移あり得ないので、これ以外の出力コードの遷移であるときはロータリスイッチの故障と判断する。同様に、
出力コード「００１１」から遷移する出力コードは「００１０」か「０００１」
出力コード「００１０」から遷移する出力コードは「０１１０」か「００１１」
・
・
出力コード「１０００」から遷移する出力コードは「１００１」
であり、これ以外に遷移したときは、ロータリスイッチの故障と判断する。
【００２０】
このように、本発明においてはロータリスイッチを操作したとき出力コードの遷移は、ある決まった遷移となることを利用して、ロータリスイッチの故障を判別する。
【００２１】
ただし、固定接点（ＳＷ０〜ＳＷ３）にはチャタリングが存在する。そのため、チャタリング中の出力コードに基づいてロータリスイッチの故障と誤判定する可能性がある。しかし、チャタリング時間の最大値はロータリスイッチにより決まっているので、この最大値の時間以下の短い時間しか続かない出力コードを無視するチャタリング除去処理をすることによって、チャタリング中の出力コードを除去した出力コードよりロータリスイッチの故障を判別する。
【００２２】
また、４ビットグレーコード出力のロータリスイッチで、ポジション数が１６未満のものを使用する場合、例えばポジション数が１２の場合は、割り当てられていない４つの未使用コードが存在する。チャタリング除去後のコードに、未使用コードを検出した場合は、直ちに、故障と判断する。これにより、回す前に故障を見つけられる可能性がある。
【００２３】
また、ロータリスイッチの出力コードが図３に示すようなバイナリコードである場合には、隣接するポジション間で出力コードが２ビット以上変化する場合がある。しかも、この２つのビットが全く同時に変化することは非常に少ないので、ポジション切り替え時に隣接ポジションのいずれにも該当しない信号が、短時間出力される場合がある。
【００２４】
例えば、ポジション１からポジション２にロータリスイッチを操作したとき、ロータリスイッチの出力コードは「０００１」から「００１０」に遷移する。固定接点ＳＷ０が「１」から「０」に、固定接点ＳＷ１が「０」から「１」に変化し、２つのビットが変化する。このビット変化順が、固定接点ＳＷ０が変化し、次に固定接点ＳＷ１の変化であると、出力コードの変化は、
「０００１」→「００００」→「００１０」となり、
ビット変化順が逆で、固定接点ＳＷ１、次に固定接点ＳＷ０であると、出力コードは
「０００１」→「００１１」→「００１０」となる。
このように、ロータリスイッチのポジションが「１」から「２」に変わり出力コードが「０００１」から「００１０」に変わるとき、その中間で継続時間の短い出力コード「００００」又は「００１１」が出力されることになる。このうち、出力コード「００１１」はポジション１の隣接するポジション０の出力コード「００００」又はポジション２の出力コード「００１０」ではないので、故障と判定される恐れがある。しかし、このポジション切り替え時に現れる中間の出力コードは、継続時間が短いのでチャタリング除去の方法によって除去されるので、この中間に現れる短期間の出力コードによって、誤判定がなされることはない。  
【００２５】
以下、本発明の実施形態を図面と共に説明する。
図７は本発明の第１の実施形態であり、この第１の実施形態はマイコン２の入力ポートとしてアナログの入力ポート（マイコン内蔵のＡ／Ｄコンバータの入力）を使用し、接点レシーバ３は、プルアップ抵抗だけで構成されている。これらの構成は従来のロータリスイッチの制御装置と変わりはなく、後述するようにマイコンのソフトウェアで構成される手段の故障検出手段が設けられている点において相違する。
【００２６】
固定接点（ＳＷ０〜ＳＷ３）がＯＮすれば、Ａ／Ｄコンバータの端子（ＡＤ０〜ＡＤ３）に、電圧ＶＣＣを接点のオン抵抗（Ｒｏｎ）とプルアップ抵抗Ｒｕｐで分圧したオン電圧Ｖｏｎが印加され、接点がＯＦＦすれば接点のオフ抵抗（Ｒｏｆｆ）とプルアップ抵抗Ｒｕｐで分圧したオフ電圧Ｖｏｆｆが印加される。そこで、ＯＮ／ＯＦＦ判別の閾値電圧を電圧Ｖｏｎと電圧Ｖｏｆｆの間の適切な値に設定しておき、マイコン２のソフトウェアで接点のＯＮ／ＯＦＦ状態を判別することによって出力コードを読み取る。この出力コードを読み取るまでは従来と同様であるが、さらに、この第１の実施形態は、こうして読み取られた出力コードにより、ロータリスイッチの故障を検出するもので、ソフトウェアによって故障検出手段を構成している。
【００２７】
以下、このＡ／Ｄコンバータの各端子（ＡＤ０〜ＡＤ３）に入力される信号、及びその電圧は、ロータリスイッチの固定接点ＳＷ０〜ＳＷ３のＯＮ／ＯＦＦによる接点レシーバ３を介して電圧であるので、このＡ／Ｄコンバータの各端子（ＡＤ０〜ＡＤ３）に入力される信号を接点出力信号ＳＳＷ０〜ＳＳＷ３としその電圧を接点出力電圧という。
【００２８】
図８は、この第１の実施形態における接点のＯＮ／ＯＦＦを判定する例として、グレーコード（図２）のロータリスイッチ１をポジション０からポジション３に回した際、マイコン２が行う接点のＯＮ／ＯＦＦを判定して読み取る、固定接点ＳＷ０の場合を例として記載したものである。他の固定接点ＳＷ１、ＳＷ２、ＳＷ３の場合も同様である。
【００２９】
図８において、
ＶＨＬ：接点がＯＦＦからＯＮに切り替わったことを判別する閾値電圧であり、マイコ
ンは、Ａ／Ｄコンバータの端子（ＡＤ０）に入力された電圧（接点出力信号ＳＳ
Ｗ０の電圧）が該閾値電圧ＶＨＬを上から下に横切った時（端子入力電圧が該閾
値電圧ＶＨＬより高い状態から低い状態になった時）、接点（ＳＷ０）がＯＮし
たと判断する。  
ＶＬＨ：接点がＯＮからＯＦＦに切り替わったことを判別する閾値電圧であり、マイコ
ンは、Ａ／Ｄコンバータの端子（ＡＤ０）に入力された電圧（接点出力信号ＳＳ
Ｗ０の電圧）が該閾値電圧ＶＬＨを下から上に横切った時（端子入力電圧が該閾
値電圧ＶＬＨより低い状態から高い状態になった時）、接点（ＳＷ０）がＯＦＦ
したと判断する。
ＳＷ０_２：マイコンの内部信号で、Ａ／Ｄコンバータの端子ＡＤ０に入力されるＳＳ
Ｗ０電圧と閾値電圧ＶＨＬ、ＶＬＨでマイコンのソフトウェアで判断した固定
接点ＳＷ０のＯＮ／ＯＦＦ状態を示す信号であり、チャタリング処理前の信号
である。
ＳＷ０_３：マイコンの内部信号で、内部信号ＳＷ０＿２よりチャタリングを除去した
信号であり、この信号に基づいてロータリスイッチの出力コードを判別する。
【００３０】
ロータリスイッチが回されてポジション０からポジション１になった時、固定接点ＳＷ０はＯＮとなり、Ａ／Ｄコンバータの端子ＡＤ０に入力された電圧（ＳＳＷ０電圧）はオフ電圧Ｖｏｆｆからオン電圧Ｖｏｎに低下する。この電圧低下によって、接点ＯＮを判別する閾値電圧ＶＨＬを上から下に横切るので内部信号ＳＷ０_２は「１（ＯＮ）」となり、この信号がチャタリング除去処理されて内部信号ＳＷ０_３が「１（ＯＮ）」となる。
【００３１】
さらにロータリスイッチ１が回されてポジション３に達すると、固定接点ＳＷ０はＯＦＦなることから、Ａ／Ｄコンバータの端子ＡＤ０に入力された電圧（ＳＳＷ０電圧）はオン電圧Ｖｏｎからオフ電圧Ｖｏｆｆまで立ち上がる。この立ち上がり途中で、閾値電圧ＶＬＨを超えるので、内部信号ＳＷ０_２が「０（ＯＦＦ）」となり、チャタリング除去処理されて内部信号ＳＷ０_３が「０（ＯＦＦ）」となる。
【００３２】
同様に、Ａ／Ｄコンバータの端子ＡＤ１、ＡＤ２、ＡＤ３に入力される電圧に基づいて、同様な処理が行われ、接点ＳＷ１、ＳＷ２、ＳＷ３のＯＮ、ＯＦＦを示す内部信号ＳＷ１_３、ＳＷ２_３、ＳＷ３_３が求められ、この内部信号ＳＷ０_３、ＳＷ１_３、ＳＷ２_３、ＳＷ３_３ で示されるコードによって出力コードを判別し、さらに、ロータリスイッチの故障を判断する。
【００３３】
図９、図１０、図１１は、故障検出手段として、マイコン２が実施するロータリスイッチの故障を検出するソフトウェアのアルゴリズムを示すフローチャートである。このソフトウェアは、図９に示す初期処理と図１０、図１１で示す所定周期毎実施される処理で構成される。初期処理は所定周期の処理で使われる変数に初期値を与える処理であり、電源投入時に一回だけ実行される。所定周期の処理は、初期処理終了後、例えば１ms毎に行われる処理であり、下記の処理で構成される。
・ロータリスイッチの出力コードのチャタリング除去処理
・チャタリング除去後のコードに対し、コード遷移異常と未使用コードを検出する処理。
・その他の処理
【００３４】
まず、図９、図１０、図１１で使用する変数を説明する。
ＡＬＭ：初期値０  
チャタリング除去後のロータリスイッチの出力コードに、ロータリスイ
ッチが正常に動作する場合の信号の遷移パターンと一致しない遷移を検
出したら１とする。故障アラームを示す。
ＡＬＭ２：初期値０  
チャタリング除去後のロータリスイッチの出力コードに、未使用コード
を検出したら１とする。未使用コードアラームを示す。
ＦＬＡＧ：フラグとして機能し、初期値０、SW_CLN_Ｎが確定したら１
ｎ：カウンタで、初期値０  
チャタリング除去前のコードを所定周期毎監視し、同一コードが連続し
て検出された回数を示す。チャタリング除去に使用する。  
ｎがＮに達するとクランプされ、現在のコードはチャタリングではない
と判断する。  
チャタリング除去前のコードが、前周期のコードと異なる場合は、０に
クリアされる。
Ｎ：ｎの増加をクランプする値。ｎの説明を参照。  
「所定周期毎の処理」が1ｍｓ毎に行われ、チャタリング時間の最大値が
１０ｍｓの場合、Ｎ＝１０ｍｓ／１ｍｓ＝１０である。
【００３５】
SW_DTY_Q：SW_DTY_Q（3:0）の略。前回の周期での処理でサンプリングした、
チャタリング除去前の信号（出力コード）を記憶する。
SW_DTY_N：SW_DTY_N（3:0）の略。今回の周期での処理でサンプリングした、
チャタリング除去前の信号（出力コード）を記憶する。
SW_CLN_Q：SW_CLN_Q（3:0）の略。前回の周期のチャタリング除去後の信号
（出力コード）を記憶する。
SW_CLN_N：SW_CLN_N（3:0）の略。今回の周期でのチャタリング除去後の信号
（出力コード）を記憶する。
ＳＳＷ（3：0）：固定接点ＳＷ０〜ＳＷ３からの接点出力信号ＳＳＷ０〜ＳＳＷ３で
構成される４ビット接点出力信号で出力コードを表す。
【００３６】
図９は、電源投入時に一回だけ実行される初期処理であり、電源が投入されると、故障アラームを示す変数ＡＬＭ、未使用コードアラームを示す変数ＡＬＭ２を「０」にセットし、当該周期に入力ポートから入力されている信号（出力コード）を記憶する変数SW_DTY_Nに、この電源投入時の４ビット接点出力信号（出力コード）ＳＳＷ（3：0）を格納する。また、フラグとして機能する変数ＦＬＡＧ、カウンタｎを「０」にセットし、この初期処理を終了する。
【００３７】
次に、マイコン２はロータリスイッチの故障を検出するための図１０、図１１で示す処理を所定周期ごと実施する。
まず、故障アラームを示す変数ＡＬＭが「１」（初期設定で０）か否か判断し（処理１）、「１」でなければ、未使用コードアラームを示す変数ＡＬＭ２が「１」（初期設定で０）か否か判断し（処理２）、「１」でなければ、変数SW_DTY_Nに記憶する出力コード（最初は図９に示す初期設定で電源投入時の出力コードが記憶されている）を、変数SW_DTY_Qに格納する（処理３）。次に、入力ポートから入力されている固定接点ＳＷ０〜ＳＷ３からの接点出力信号（出力コード）ＳＳＷ（3：0）を読み取り変数SW_DTY_Nに格納する（処理４）。その結果、変数SW_DTY_Nには当該周期でサンプリングした出力コード、変数SW_DTY_Qには、前回の周期でサンプリングした出力コード（最初は初期設定時に設定された電源投入時の出力コード）が記憶されていることになり、この２つの変数に記憶されている出力コードが一致するか否か判断し（処理５）、一致していれば、カウンタとしての変数ｎの値が設定されたクランプ値Ｎと等しいか判別し（処理６）、等しくなければ該変数ｎに１加算し（処理７）、当該周期の処理を終了する。以下、ロータリスイッチ１が操作されない間は、各周期毎、処理１〜処理７の処理を繰り返し実行する。
【００３８】
処理１〜処理７の処理を繰り返し実行し、変数Ｎの値が設定クランプ値Ｎに達すると（Ｎ周期の間出力コードの変化がないことを意味する）、フラグＦＬＡＧが「１」か判断し（処理８）、最初は初期設定で該フラグＦＬＡＧは「０」にセットしてあるから、処理９に進み変数SW_DTY_Nに記憶する出力コードを変数SW_CLN_Ｎに格納し、フラグＦＬＡＧを「１」にセットし（処理９）、当該周期の処理を終了する。以下、ロータリスイッチ１が操作されない間、各周期毎、処理１〜処理６、処理８、処理１０〜処理４３の処理を繰り返し実行する。
【００３９】
なお、処理９で変数SW_CLN_Ｎに格納される出力コードは、少なくともカウンタｎがクランプ値Ｎまでカウントアップする間、変化がなかった出力コードを記憶するものであり、後述するように、チャタリングによって発生した出力コードではないものが記憶されるものとなる。また、図１０で、符号１０１で示すこの処理８、９の処理は、変数SW_CLN_Ｎの初期値設定処理である。
【００４０】
一方、ロータリスイッチ１が操作されて、処理５で判断される変数SW_DTY_Nと変数SW_DTY_Qに記憶する当該周期で求めた出力コードと前周期で求めた出力コードが一致しないときには、カウンタを示す変数ｎを「０」にリセットし（処理４５）当該周期の処理を終了する。
【００４１】
変数SW_DTY_Nと変数SW_DTY_Qに記憶する出力コードが一致しない場合は、カウンタｎはリセットされ、一致しても、処理６、７の処理により該カウンタｎがクランプ値Ｎに達する前に不一致が検出されるとカウンタｎはリセットされ、処理８に進むことはない。すなわち、ロータリスイッチ１が回され、その間にチャタリングが発生しても、そのチャタリングにより発生する出力コードは短時間であり、カウンタｎがクランプ値Ｎまでカウントアップされるまでの時間（Ｎ×サンプリング周期の時間）内に終了するので、この短時間のチャタリングによる出力コードが発生している間は処理６から処理８に進むことはない。このように、図１０に符号１００で示す処理３から処理７の処理は、チャタリング除去処理を示している。
【００４２】
一方、カウンタｎがクランプ値Ｎに達するまで、出力コードに変化がないとき（変数SW_DTY_Nと変数SW_DTY_Qで記憶する出力コードが一致と処理５で判別されたとき）、処理６から処理８に進むが、すでにロータリスイッチ１を操作しないときに、図１０の符号１０１で示す初期値処理の処理９でフラグＦＬＡＧは「１」にセットされているから、処理１０（図１１参照）に進み、変数SW_CLN_Ｎに記憶する出力コード（最初は処理９で、以後は前周期の処理１０で記憶している出力コード）を変数SW_CLN_Qに格納し、さらに、変数SW_CLN_ＮにSW_DTY_Nに記憶する出力コード（処理４で読み込まれ、カウンタｎがクランプ値Ｎに達するまで変化のなかった出力コード）を格納する。すなわち、変数SW_CLN_Qには前周期（１つ前の周期）に読み取ったチャタリング除去処理後の出力コードを、変数SW_CLN_Ｎに当該周期（今周期）で読み取ったチャタリング除去処理後の出力コードを記憶することになる。
【００４３】
次に処理１１から処理４２の処理によって、出力コードの遷移が正常か否かを判断する。変数SW_CLN_Qに記憶する前周期に読み取った出力コードが、ロータリスイッチ１の各ポジションで発生する出力コードの何れかと一致するか判断する。この実施形態ではロータリスイッチ１は図２に示すように１６ポジションを取るから、出力コードが「００００」か、「０００１」か、「００１１」か、・・・「１０００」かの１６個の何れかの出力コードと一致するかの判断する（処理１１〜２６）。すなわち、ロータリスイッチ１の1６ポジションの各ポジションで発生する１６個の出力コードといずれかと一致するか判断する。変数SW_CLN_Qに記憶する出力コードが、ロータリスイッチ１の各ポジションで発生する出力コードと一致しないときには（この実施形態では１６個の出力コードと一致しないときには）、変数ＡＬＭ２を「１」にセットし、未使用コードアラームを出力するようにする（処理４４）。以後の周期では処理１、処理２を処理してその周期の処理を終了することになる。
【００４４】
一方、変数SW_CLN_Qに記憶する前周期に読み取った出力コードが、ロータリスイッチ１の各ポジションで発生するいずれかの出力コードと一致するときは、変数SW_CLN_Ｎに記憶する当該周期で読み出された出力コードが、変数SW_CLN_Qに記憶する出力コード、若しくは、そのコードを出力するポジションの前後のポジションの出力コードと一致するか判別する。
【００４５】
例えば、変数SW_CLN_Qに記憶する出力コードが「００００」と判別されたときには（処理１１）、処理２７に移行して、変数SW_CLN_Ｎに記憶する今周期読み取った出力コードが、変数SW_CLN_Qに記憶する前の周期で読み取った出力コード「００００」、若しくは、この出力コードを出力するポジション０の後のポジション１の出力コード「０００１」と一致するか判断する。なおポジション０は前のポジションがないので、前後のポジションは１つのポジションだけである（図２のグレーコード表参照）。
【００４６】
同様に、変数SW_CLN_Qに記憶する出力コードが「０００１」と判別されたときには（処理１２）、処理２８に移行して、変数SW_CLN_Ｎに記憶する今周期読み取った出力コードが、変数SW_CLN_Qに記憶する前周期で読み取った出力コード「０００１」、若しくは、この出力コードを出力するポジション１の前後のポジション０及び２の出力コード「００００」、「００１１」と一致するか判断する。以下、処理２９〜４２で
変数SW_CLN_Q=「００１１」のとき
→変数SW_CLN_Ｎ=「０００１」、「００１１」、「００１０」か、
変数SW_CLN_Q=「００１０」のとき
→変数SW_CLN_Ｎ=「００１１」、「００１０」、「０１１０」か、
変数SW_CLN_Q=「０１１０」のとき
→変数SW_CLN_Ｎ=「００１０」、「０１１０」、「０１１１」か、
・  ・
・  ・
変数SW_CLN_Q=「１００１」のとき
→変数SW_CLN_Ｎ=「１０１１」、「１０００１」、「１０００」か、
変数SW_CLN_Q=「１０００」のとき
→変数SW_CLN_Ｎ=「１００１」、「１０００」か、
と判断する。
【００４７】
処理２７〜４２の処理で、変数SW_CLN_Ｎに記憶する今周期読み取った出力コードが、変数SW_CLN_Qに記憶する前周期読み取った出力コード、若しくは、該コードを出力するポジションの前後のポジションから出力される出力コードと一致しているときは、ロータリスイッチ１は正常であり当該周期の処理を終了する。しかし、出力コードが一致しない場合は、ロータリスイッチ１が回されたとき、発生する出力コードの遷移は、自己のポジションの出力コードから前後のポジションのコードに変化するはずにもかかわらず、これとは異なるコードが出力されていることから、ロータリスイッチ１は故障しているものとして、変数ALMを１にセットし（処理４３）、故障示すアラームを出力するようにする。変数ALMが１にセットされた後の周期では処理１を行ってその周期の処理を終了するようになる。  
上述したように、図１１で示す処理は、未使用コードとコード遷移異常を検出処理である。
【００４８】
上述した第１の実施形態では、チャタリング除去をマイコンのソフトウェア（図１０で符号１０１に示すチャタリング処理）で行うようにしたが、チャタリング除去を、フィルタを用いて行うようにしてもよい。  
図１２はチャタリング除去をマイコンのソフトウェアで行わずに、ローパスフィルタＬＰＦを用いてチャタリングを除去する第２の実施形態のブロック図である。  
第１の実施形態を示す図７のブロック図において接点レシーバ３にローパスフィルタＬＰＦが付加され、Ａ／Ｄコンバータの各端子ＡＤ０〜ＡＤ３には、各接点ＳＷ０、ＳＷ１、ＳＷ２、ＳＷ３からの信号がローパスフィルタＬＰＦを介して入力されている点で第１の実施形態（図７）とは相違する。そして、各端子ＡＤ０〜ＡＤ３に入力されている信号はチャタリングがローパスフィルタＬＰＦで除去されて存在しないから、図８における内部信号ＳＷ０_２（ＳＷ１_２、ＳＷ２_２、ＳＷ３_２）には、チャタリングは存在しないので、この内部信号ＳＷ０_２、ＳＷ１_２、ＳＷ２_２、ＳＷ３_２に基づいて出力コードが求められ、該出力コードによりロータリスイッチの故障が判断されることになる。この場合は、マイコン２で実施する図１０、図１１に示すロータリスイッチの故障検出処理において、図１０中、符号１００で示した処理３から処理７及び処理４５のチャタリング除去処理は必要がなく、処理１０では、変数SW_DTY_Ｎに記憶する出力コードの代わりに読み取った接点出力信号（出力コード）ＳＳＷ（3：0）が、変数SW_CLN_Ｎに格納されることになる。なお、ローパスフィルタＬＰＦでチャタリングの一部を除去し、残ったチャタリングをマイコンのソフトウェアで除去するようにしてもよく、この場合は、ローパスフィルタＬＰＦでチャタリングの一部を除去して得られた内部信号ＳＷ０_２、ＳＷ１_２、ＳＷ２_２、ＳＷ３_２をさらにチャタリング除去処理をして得られた内部信号ＳＷ０_３、ＳＷ１_３、ＳＷ２_３、ＳＷ３_３に基づいてロータリスイッチの故障を判別することになる。マイコン２によるソフトウェアによるロータリスイッチの故障検出処理は、前述した通り、図１０、図１１の処理となる。
【００４９】
上述した各実施形態は、ロータリスイッチの故障を検出する故障検出手段を、マイコンのソフトウェア処理で構成し、ソフトウェア処理で故障を検出するようにしていたが、このロータリスイッチの故障検出をハードウェアのみで行うことも可能である。
【００５０】
図１３は、故障検出手段をハードウェアで構成された故障検出回路４で構成し、該故障検出回路４でロータリスイッチの故障を検出するようにした第３の実施形態の概要図である。図１で示した従来例と比較し、マイコン２が故障検出回路４に代わっている点で異なるのみである。
【００５１】
図１４、図１５、図１６は故障検出回路４の詳細ブロック図である。故障検出回路４は接続レシーバの出力を故障検出回路のクロックに同期させる同期化回路４０、チャタリング除去回路４１、遅延回路４２、異常遷移検出回路４３、未使用コード検出回路４４で構成されている。
【００５２】
接点レシーバ３から出力される接点出力信号ＳＳＷ（３：０）は故障検出回路４のクロックとは非同期で変化するため、このまま使用すると後続の回路が誤動作するおそれがあるから、２段のフリップフロップＦＦ１、ＦＦ２で構成される同期化回路４０に入力され、クロックに同期した接点信号H_SW_DTY_N（3:0）に変換される。接点出力信号ＳＳＷ（３：０）、クロックに同期した接点信号H_SW_DTY_N（3:0）等の信号線は太線で記載しているが、それぞれ４ビットの信号線であることを示す。クロックは図示していないが故障検出回路４を構成する全てのフリップフロップＦＦとカウンタのクロック端子Ｃｌに入力されている。
【００５３】
クロックに同期した接点信号H_SW_DTY_N（3:0）は、チャタリング除去回路４１の遅延回路４５とゲートＧ１に入力される。遅延回路４５はフリップフロップＦＦ３で構成され、接点信号H_SW_DTY_N（3:0）を１クロック時間遅延させ、遅れ接点信号H_SW_DTY_Q（3:0）とし、ゲートＧ１と保持回路４７に出力する。ゲートＧ１で遅れ接点信号H_SW_DTY_Q（3:0）と接点信号H_SW_DTY_N（3:0）との一致を検出する。つまりロータリスイッチの出力が変化していないことを検出する。接点信号H_SW_DTY_N（3:0）が変化していない間、ゲートＧ１は一致信号H_MATCHを１にし、接点信号H_SW_DTY_N（3:0）が変化したら、１クロック時間一致信号H_MATCHを０にする。
【００５４】
カウンタ４６は、一致信号H_MATCHが１であるクロック数、つまり、ロータリスイッチの出力信号が変化していない時間を計測するためのカウンタであり、初期値が０で、ロータリスイッチの出力信号が変化していない間は、ＣＥ端子（Count Enable端子）に一致信号H_MATCHの１が、Ｒ端子（負論理の同期Reset端子）に１が入力されているので、クロックの立ち上がりでカウントアップする。カウント値は最大値Ｈ_Ｎ（チャタリング時間に相当）でクランプされ、Ｈ_Ｎに達したタイミングで、１クロック間ＲＣ端子を介して信号H_RCを１にし、接点信号H_SW_DTY_N（3:0）がチャタリング時間以上継続して同じ値を保っていることを、後続のフリップフロップＦＦ４で構成された保持回路４７に通知する。Ｈ_Ｎの値は、例えば、チャタリング時間が最大１０ms、異常検出回路のクロックが１MHzの場合は、Ｈ_Ｎ=１０ms×１M=１００００とする。
【００５５】
保持回路（FF4）４７は、信号H_RCが１になったらその時の、遅れ接点信号H_SW_DTY_Q（3:0）をチャタリング除去処理された接点信号H_SW_CLN_N（3:0）として出力する。カウンタ４６はＲ端子に０が入力されると、カウント値を０にするカウンタで、一致信号H_MATCHが０の場合は、ゲートＧ２により、カウンタのＲ端子に０が入力され、カウント値を０にする。こうして、チャタリングを取り除いた接点信号H_SW_CLN_N（3:0）が得られる。  
なお、信号ＸＰＣＬはパワーオンリセット信号であり、０の時に、カウンタ４６と保持回路（ＦＦ４）４７がリセットされる。
【００５６】
チャタリング除去処理された接点信号H_SW_CLN_N（3:0）は、フリップフロップＦＦ５で構成された遅延回路４２に入力され1クロック時間遅延させた遅れ接点信号H_SW_CLN_Ｑ（3:0）を得る。
【００５７】
このチャタリング除去処理され相対的に１クロック遅れた２つの接点信号H_SW_CLN_N（3:0）とH_SW_CLN_Ｑ（3:0）は、図１５で示す異常遷移検出回路４３のデコーダ４８に入力される。デコーダ４８は、２つの接点信号H_SW_CLN_N（3:0）とH_SW_CLN_Ｑ（3:0）が異常な組み合わせだと判別されると信号Ｓ１を１にしてフリップフロップＦＦ１１とゲートＧ３で構成された保持回路４９に出力する。保持回路４９は、信号Ｓ１を保持し、ロータリスイッチの故障を示すアラーム信号H_ALMを１にして周辺の回路に通知され、機械を安全な状態に移行させる等の必要な処理が行われる。
【００５８】
２つの接点信号H_SW_CLN_Q（3:0）とH_SW_CLN_N（3:0）の組み合わせ16×16=256通りのうち、正常な組み合わせは、４６通りであるため（ポジション１〜１４に対しては３通り、ポジション０とポジション１５は２通りであるから、合計４６通り）、信号Ｓ１を１にする組み合わせは、２５６−４６＝２１０通り存在する。例えば、００００から００１０への信号遷移は異常であるので、H_SW_CLN_Q（3:0）、H_SW_CLN_N（3:0）=００００、００１０は、信号Ｓ１を１にする要因の一つである。従って、デコーダ1は、積和標準形では、8入力の論理積210個の論理和となり、巨大なものとなる。ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）やＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）で実現する場合は、このサイズでも問題ないが、ディスクリート部品で実現する場合は、プリント板の実装面積の制限で、論理圧縮が必要となるサイズである。なお、論理圧縮はすでに公知の技術である。
【００５９】
一方、チャタリングを取り除いた接点信号H_SW_CLN_N（3:0）は図１６で示す未使用コード検出回路４４のデコーダ５０にも入力され、該デコーダ５０は未使用コードをデコードすると、信号Ｓ２を１にし、フリップフロップＦＦ２１とゲートＧ４で構成された保持回路５１に出力し、保持回路５１ではこの信号Ｓ２を保持し、未使用コードアラーム信号H_ALM2を１にする。この未使用コードアラーム信号H_ALM2が「１」になると、この信号が周辺の回路に通知され、機械を安全な状態に移行させる等の必要な処理が行われる。
４ビットグレーコード出力で、ポジション数１２のロータリスイッチを使用した場合、未使用コードは、４つであるので、デコーダ５０は積和標準形では、４入力の論理積４個の論理和で表される。  
なお、デコーダ４８は、未使用コードへの遷移を異常遷移としてデコードしているため、このようなデコーダをデコーダ５０に利用することで、デコーダ５０の回路規模を小さくすることができる。また、未使用コードがないロータリスイッチ場合は、図１６の未使用コード検出回路４４を設ける必要はない。
【００６０】
上述した各実施形態では、ロータリスイッチを実際に使用し操作したとき、その故障を検出している。アラームが出力され故障と判別されたときには、ロータリスイッチ１はすでに使用できない状態であり、その時点で実行していた作業、例えば工作機械のオーバライドスイッチとしてロータリスイッチが用いられているときには、工作機械による切削作業等が無駄なものになってしまう。故障の予兆を検知できれば、この無駄な作業発生を防止できる。  
ロータリスイッチは、回転回数を重ねると、接点の劣化が進み、接点のオン抵抗Ｒｏｎの増加や、オフ抵抗Ｒｏｆｆの低下が見られる。この現象はＡ／Ｄコンバータの端子（ＡＤ０〜ＡＤ３）に入力される、接点レシーバ３の電圧ＶＣＣを接点のオン抵抗Ｒｏｎとプルアップ抵抗Ｒｕｐで分圧した電圧Ｖｏｎの上昇、および電圧ＶＣＣを接点のオフ抵抗Ｒｏｆｆとプルアップ抵抗Ｒｕｐで分圧した電圧Ｖｏｆｆの低下となる。オン電圧Ｖｏｎが上昇して閾値電圧ＶＨＬより高くなると、固定接点ＳＷ０〜ＳＷ３がＯＦＦからＯＮに切り替わったことを検出できなくなり、ロータリスイッチの故障と判定される。同様に、オフ電圧Ｖｏｆｆが閾値電圧ＶＬＨより低くなると、固定接点ＳＷ０〜ＳＷ３がＯＮからＯＦＦに切り替わったことを検出できなくなり、ロータリスイッチの故障と判定される。（図８及び後述する図１８、図１９参照）
【００６１】
そこで、ロータリスイッチが故障と判定される前に、ロータリスイッチの故障の予兆（ロータリスイッチの劣化）を検出するようにする。ロータリスイッチの故障の予兆を検出するには、接点レシーバの出力電圧をアナログ値で監視する必要があることから、ロータリスイッチの各固定接点に対応する接点レシーバの出力はマイコンのアナログ入力ポートに接続する必要があり、このロータリスイッチの故障の予兆を検出する第４の実施形態のハードウェア構成は、図７に示す第１の実施形態の構成や図１２に示す第２の実施形態の構成と同じで、マイコン２でソフトウェアによりロータリスイッチの故障の判定を行うと共に、故障の予兆も判定するようにする。
【００６２】
また、図１３で示す第３の実施形態のように、ロータリスイッチの故障検出をハードウェアで構成された故障検出回路４で行うような場合はマイコンを追加したものが第４の実施形態となる。図１７はロータリスイッチの故障はハードウェアの故障検出回路４で検出し、故障の予兆はマイコン２のソフトウェアによって検出するようにした本発明の第４の実施形態の概要図である。図１３で示す第３の実施形態にマイコン２が追加され、ロータリスイッチ１の各固定接点ＳＷ０、ＳＷ１、ＳＷ２、ＳＷ３の接点レシーバの出力をマイコンのアナログ入力ポート（Ａ／Ｄコンバータの端子ＡＤ０、ＡＤ１、ＡＤ２、ＡＤ３）に接続して、ロータリスイッチの故障は故障検出回路４で検出し、故障の予兆はマイコン２で検出するようにする。なお、図１７において故障検出回路４とマイコン２による予兆検出には、それぞれチャタリング除去が必要であるが、個別にチャタリング除去を行う必要がないので、接点レシーバ３にローパスフィルタＬＰＦを入れてチャタリング除去を一括して行うようにしている。
【００６３】
図１８、図１９は予兆検出方法を説明する動作タイミングチャートである。グレーコード出力のロータリスイッチ１をポジション０からポジション３に回した時の動作タイミングチャートを例に取って説明するものである。図１８は、故障予兆のワーニング信号が発生しないときの例であり、図１９は、故障予兆のワーニング信号が発生するときの例である。なお、固定接点ＳＷ２、ＳＷ３のＯＮ／ＯＦＦは変化がなくＯＦＦのままであるから、図１８、図１９では省略して記載していない。
【００６４】
図１８、図１９において、
ＳＳＷ０電圧、ＳＳＷ１電圧：マイコンのアナログ入力ポート（Ａ／Ｄコンバータの端子）ＡＤ０、ＡＤ１に入力される電圧であり、ＶＬＨ、ＶＨＬは、図８の説明で説明したように、ロータリスイッチの故障を検出するための閾値電圧である。
Ｖ１：オフ抵抗Ｒｏｆｆの減少を検出するための閾値電圧であり、故障の予兆を知らせるためのワーニング、故障を知らせるアラームをこの順で発生させるために、故障検知用の閾値電圧ＶＬＨより大きくオフ電圧Ｖｏｆｆより低い電圧に設定されている。
Ｖｏｆｆ＞Ｖ１＞ＶＬＨ。
Ｖ２：オン抵抗Ｒｏｎの増大を検出するための閾値電圧であり、この閾値電圧Ｖ２も故障の予兆を知らせるためのワーニング、故障を知らせるアラームをこの順で発生させるために、故障検知用の閾値電圧ＶＨＬより小さくオン電圧Ｖｏｎより大きい電圧に設定されている。
Ｖｏｎ＜Ｖ２＜ＶＨＬ。
Ｓ：マイコン内の内部信号であり、マイコンの入力ポート（ＡＤ０、ＡＤ１、ＡＤ２、ＡＤ３）に入力される電圧（ＳＳＷ０電圧、ＳＳＷ１電圧等）の少なくとも一つが閾値電圧Ｖ２以上で閾値電圧Ｖ１以下のときアサートされ「１」となる信号である。
ＣＴ：信号Ｓが「１」（アサートされているとき）である時間を計測するカウンタである。
ＣＴＬ：故障予兆のワーニング信号を出すための設定値で、カウンタＣＴの計測値がこの設定値ＣＴＬに達したときワーニング信号を出力する。
【００６５】
ロータリスイッチ１が操作されず回されていない時には、固定接点ＳＷ０〜ＳＷ３のＯＮ／ＯＦＦはなく各入力ポートＡＤ０〜ＡＤ３に入力されるＳＳＷ０電圧〜ＳＳＷ３電圧の変化はないので、信号Ｓはアサートされず、ワーニング信号も発生しない。一方、ロータリスイッチ１を操作し、ポジション０からポジション１に移動すると固定接点ＳＷ０がＯＮされ、入力ポートＡＤ０に入力されるＳＳＷ０電圧は、オフ電圧Ｖｏｆｆからオン電圧Ｖｏｎに低下する。
【００６６】
この電圧低下過程でＳＳＷ０電圧が閾値電圧Ｖ１以下で閾値電圧Ｖ２以上の区間、信号Ｓがアサートされる。また、信号Ｓがアサートされ「１」である時間をカウンタＣＴは計測するが、図１８に示す例では、ＳＳＷ０電圧が短時間で閾値電圧Ｖ２以下となることから、カウンタＣＴの計測値はワーニング用に設定された設定値ＣＴＬには達しない。
【００６７】
また、ロータリスイッチ１がポジション２まで回転させられた時には、固定接点ＳＷ１がＯＮとなり、ＳＳＷ１電圧が低下するが、この場合も該ＳＳＷ１電圧が、閾値電圧Ｖ１以下で閾値電圧Ｖ２以上の区間は短く、アサートされる信号Ｓも短いので、同様にカウンタＣＴでの計測値は設定値ＣＴＬに達することはない。さらに、ロータリスイッチ１がポジション３に達すると、固定接点ＳＷ０がＯＦＦとなり、ＳＳＷ０電圧はオフ電圧Ｖｏｆｆまで上昇する。この電圧上昇過程で、ＳＳＷ０電圧が閾値電圧Ｖ２以上で閾値電圧Ｖ１以下の区間では信号Ｓがアサートされるが、この場合もアサート期間が短く、カウンタＣＴの計測時間は設定値ＣＴＬまで達せず、故障予兆のワーニング信号は出力されない。  
この図１８で示す例は、ロータリスイッチ１が劣化しておらず、正常に作動しているときの例である。
【００６８】
一方、ロータリスイッチが劣化し、固定接点ＳＷ０〜ＳＷ３のオン抵抗Ｒｏｎが大きくなり、入力ポートに入力されるオン電圧Ｖｏｎが閾値電圧Ｖ２以下まで低下しない状態となると、故障予兆のワーニング信号を発生する。図１９は、固定接点ＳＷ０のオン抵抗Ｒｏｎが大きくなり入力ポートＡＤ０に入力されるＳＳＷ０電圧のオン電圧Ｖｏｎが、閾値電圧Ｖ２以下まで低下しない状態となったときの例を示している。
【００６９】
ロータリスイッチ１が回されてポジション１になると固定接点ＳＷ０がＯＮとなりＳＳＷ０電圧はオフ電圧Ｖｏｆｆからオン電圧Ｖｏｎに低下する。しかし、固定接点ＳＷ０のオン抵抗Ｒｏｎが大きいことから、オン電圧Ｖｏｎは閾値電圧Ｖ２以下まで低下せず、ロータリスイッチがポジション３まで回され固定接点ＳＷ０がＯＦＦとなるまで、ＳＳＷ０電圧はこのオン電圧Ｖｏｎを持続する。その結果、固定接点ＳＷ０がＯＮとなってＳＳＷ０電圧が閾値電圧Ｖ１以下に達し、固定接点ＳＷ０がＯＦＦとなってＳＳＷ０電圧が閾値電圧Ｖ１を超えるまでの期間（Ｖ２＜ＳＳＷ０電圧＜Ｖ１の期間）、信号Ｓは「１」にアサートされる。この信号Ｓが「１」にアサートされるとカウンタＣＴは時間を計測開始し、ワーニングように設定された設定値ＣＴＬに達すると、ワーニング信号を出力する。
【００７０】
この図１９で示した例では、オン抵抗Ｖｏｎは、固定接点（ＳＷ０）のＯＮ／ＯＦＦ判定のために設定されている閾値電圧ＶＨＬ以下に達していることから、故障を示すアラームを発生することはなく、ロータリスイッチは継続して使用することは可能である。しかし、オン抵抗Ｖｏｎが閾値電圧ＶＨＬ以下まで低下しない状態になるまで固定接点（ＳＷ０）が劣化すれば、前述した方法によって、ロータリスイッチの故障を示すアラーが発生する。
【００７１】
図１９で示した例は、固定接点ＳＷ０〜ＳＷ３のオン抵抗Ｒｏｎが大きくなり、オン電圧Ｖｏｎが閾値電圧Ｖ２以下まで低下しない状態まで接点が劣化した例を示したが、ロータリスイッチが劣化し、固定接点ＳＷ０〜ＳＷ３のいずれかのオフ抵抗Ｒｏｆｆが小さくなり、入力ポートに入力されるオフ電圧Ｖｏｆｆが閾値電圧Ｖ１以上とならない状態に劣化したときも、その劣化した接点から入力されるＳＳＷ電圧（ＳＳＷ０電圧〜ＳＳＷ３電圧のいずれか）のオフ電圧Ｖｏｆｆは閾値電圧Ｖ１に達することがないから、その劣化した接点がＯＦＦのポジションにある間、信号Ｓがアサートされ、カウンタＣＴの時間計測値は設定値ＣＴＬに達するのでワーニング信号ＷＳを出力することになる。なお、オン抵抗Ｒｏｎの増加、オフ抵抗Ｒｏｆｆの減少の両方が発生した場合にも、当然上述のようにしてワーニング信号ＷＳが出力される。
【００７２】
図２０は第４の実施形態におけるマイコン２が実施する予兆検出処理のアルゴリズムを示すフローチャートである。マイコン２は所定周期毎図２０に示す処理を実施する。なお、初期設定で、ワーニング状態を示す変数ＷＳ、カウンタＣＴは「０」にセットされている。
【００７３】
まず、ワーニング状態を示す変数ＷＳが「１」か否か判断し（処理ａ）、最初は、初期設定で該変数ＷＳは「０」がセットされているので処理ｂに移行し、入力ポートに入力されている接点出力信号ＳＳＷ（３：０）（＝ＳＳＷ０〜ＳＳＷ３）を読み取る。この読み取った各接点出力信号ＳＳＷ（３：０）の値が設定閾値Ｖ１とＶ２の区間にあるか判断する（Ｖ２＜ＳＳＷ（３：０）＜Ｖ１）（処理ｃ）。すべての接点出力信号（ＳＳＷ０〜ＳＳＷ３）がこの区間になければ、カウンタＣＴが０でないことを確認後（処理ｆ）、カウンタＣＴから１を減算して（処理ｇ）、この周期の処理を終了する。また、カウンタＣＴが０である場合は（処理ｆ）、０のまま保持し、この周期の処理を終了する。
【００７４】
一方、接点出力信号の大きさが１つでも設定閾値Ｖ１とＶ２の区間にあれば、カウンタＣＴに１加算し（処理ｄ）、該カウンタの値が設定値ＣＴＬに達しているか判別し（処理ｅ）、達していなければ当該周期の処理を終了する。以下、次の周期からは、接点出力信号（ＳＳＷ０〜ＳＳＷ３）の大きさが１つでも設定閾値Ｖ１とＶ２の区間にある限り、処理ａ〜ｅの処理を実施する。そして、カウンタＣＴが設定値ＣＴＬに達する前に、すべての接点出力信号（ＳＳＷ０〜ＳＳＷ３）が設定閾値Ｖ１とＶ２の区間にないと処理ｃで判断されたときには、カウンタＣＴが０でないことを確認後（処理ｆ）、カウンタＣＴから１を減算し（処理ｇ）当該周期の処理を終了する。すなわち、すべての接点出力信号（ＳＳＷ０〜ＳＳＷ３）が設定閾値Ｖ１とＶ２の区間にないと処理ｃで判断されている間は、カウンタＣＴから１が繰り返し減算され、カウンタＣＴが０になった時点で、０が保持される。
【００７５】
しかし、カウンタＣＴの値が設定値ＣＴＬに達するまで、接点出力信号（ＳＳＷ０〜ＳＳＷ３）の大きさが１つでも設定閾値Ｖ１とＶ２の区間にある状態が持続すると処理ｅから処理ｈに進み、ワーニング状態を示す変数ＷＳを「１」にセットし、当該周期の処理を終了し、ワーニング信号を発生させる。以後の周期からは、処理ａのみ実施して当該の周期の処理を終了する。このように、接点出力信号（ＳＳＷ０〜ＳＳＷ３）の大きさが１つでも設定閾値Ｖ１とＶ２の区間にある時間が、「ＣＴＬ×処理周期時間」まで継続して発生すると、ロータリスイッチの故障の予兆を示すワーニング信号を発生させるようにする。
【００７６】
上述した各実施形態では、ロータリスイッチを回転さることによって、該ロータリスイッチから出力されるコード信号の遷移状態に基づいてロータリスイッチの故障、及び予兆を検出している。しかし、電源ＯＦＦしてから電源ＯＮするまでの間にロータリスイッチが壊された場合、この場合も、該ロータリスイッチを操作して回転させたとき、前述した出力コードの遷移によって該ロータリスイッチの故障を検出できるが、電源ＯＮしたとき、壊れたロータリスイッチから誤った出力コードが出力され、これにより誤った指令が出される恐れがある。前述のように、ロータリスイッチを工作機械のモータの速度を制御するオーバライドスイッチとして使用しているときなどは、電源ＯＮ時に誤った出力コードによりモータが予期せぬ速度で回転する恐れがある。
【００７７】
そこで本発明の第５の実施形態は、電源ＯＦＦから電源ＯＮの間にロータリスイッチが壊れた場合、これを検出するものである。この第５の実施形態においても、電源ＯＦＦから電源ＯＮの間にロータリスイッチの壊れによる出力コードの遷移があることから、この出力コードの遷移によってロータリスイッチの壊れを検出する。
【００７８】
図２１は、この第５の実施形態の概要を示すブロック図である。
ロータリスイッチ１の各固定接点ＳＷ０〜ＳＷ３の出力は接点レシーバ３を介してマイコン２の入力ポートに接続されている。なお、この入力ポートはデジタル（ＰＴ０〜ＰＴ３）、アナログ（ＡＤ０〜ＡＤ３）のどちらでもよい。マイコン２には不揮発性メモリ５が接続され、さらに、電源１０の出力電圧の低下を検出する電圧低下監視回路１１、及び該電圧低下監視回路１１の出力ＩＮＴを所定時間遅延させる遅延回路１２が設けられている。電源１０からマイコン２に電力が供給される。電圧低下監視回路１１は電源１０から出力される電圧ＶＣＣ１を監視し、該電圧ＶＣＣ１の低下を検出すると電源断の予告信号ＩＮＴを遅延回路１２とマイコン２に出力する。また、遅延回路１２は予告信号ＩＮＴを所定時間遅延させてマイコン２のパワーオンリセット信号ＸＲＳＴを作成しマイコン２に出力する。
【００７９】
予告信号ＩＮＴは、マイコン２の入力ポートや、割り込み入力端子に接続されており、入力ポートに接続されている場合には、マイコン２はこの入力ポートを定期的に監視しており、電源１０がＯＦＦとなりその出力電圧ＶＣＣ１が低下すると、電圧低下監視回路１１はその電圧低下を検出し予告信号ＩＮＴをアサートする。マイコン２はこの予告信号ＩＮＴがアサートになったことを検出すると、遅延回路１２から出力されるパワーオンリセット信号ＸＲＳＴがアサートされるまでの間に、ロータリスイッチ１からの出力コードを読み取り電気的に書き込み可能な不揮発性メモリ（例えばＥＥＰＲＯＭ）に書き込む。
【００８０】
また、予告信号ＩＮＴがマイコン２の割り込み入力端子に入力されるように接続されている場合には、予告信号ＩＮＴがアサートされたらマイコン２は割り込処理を起動し、パワーオンリセット信号ＸＲＳＴがアサートされるまでの間に、ロータリスイッチ１からの出力コードを読み取り電気的に書き込み可能な不揮発性メモリに書き込む。
【００８１】
一方、電源ＯＮ時には、マイコン２は、ロータリスイッチ１から出力される出力コードを読み取ると共に不揮発性メモリ５に保存された電源ＯＦＦ時の出力コードを読みだし、両者を比較して不一致を検出したときアラームを出力する。
【００８２】
この第５の実施形態では、電源ＯＦＦ中にロータリスイッチ１のポジションを変更すると、ロータリスイッチ１に故障はなく良品である場合でもアラームが出力されることになる。そこで、電源ＯＮ時にアラームが発生したときには、オペレータは、現在のロータリスイッチのポジションから期待される指令内容（オーバライド値等）と実際の指令内容（オーバライド値等）を比較し、一致していることが確認できれば、ロータリスイッチは良品と考えられるのでアラームを解除するようにすればよい。
【００８３】
図２２は、電源ＯＦＦから電源ＯＮの間にロータリスイッチが壊れたことを検出する別の態様である。  
この態様は、電源１０に電力を提供する生成元の電圧ＶＣＣ０の低下を検出して予告信号ＩＮＴをマイコンに出力する電圧低下監視回路１３を設け、電源１０から出力される電圧ＶＣＣ１の低下を監視する電圧低下監視回路１１は、マイコン２にパワーオンリセット信号ＸＲＳＴを出力するようにして遅延回路を設けていない点で図２１に示す第５の実施形態と相違するのみである。
【００８４】
この実施形態においては、予告信号ＩＮＴがアサートされてから、パワーオンリセット信号ＸＲＳＴがアサートされるようにそのタイミングを設計する必要がある。例えば、電圧低下監視回路１１で電圧低下と判断する電圧レベルを、電圧低下監視回路１３で電圧低下と判断する電圧レベルよりも低いレベルにして時間差を設けるようにする。
【符号の説明】
【００８５】
１  ロータリスイッチ
２  マイクロコンピュータ（マイコン）
３  接点レシーバ
４  故障検出回路
５  不揮発性メモリ
１０  電源
１１、１３  電圧低下監視回路
１２  遅延回路
４０  同期化回路
４１  チャタリング除去回路
４２、４５  遅延回路
４３  異常遷移検出回路
４４  未使用コード検出回路
４６  カウンタ
４７  保持回路
４８、５０  デコーダ
４９、５１  保持回路
【図１】
0006557086.tif 000002
【図２】
0006557086.tif 000003
【図３】
0006557086.tif 000004
【図４】
0006557086.tif 000005
【図５】
0006557086.tif 000006
【図６】
0006557086.tif 000007
【図７】
0006557086.tif 000008
【図８】
0006557086.tif 000009
【図９】
0006557086.tif 000010
【図１０】
0006557086.tif 000011
【図１１】
0006557086.tif 000012
【図１２】
0006557086.tif 000013
【図１３】
0006557086.tif 000014
【図１４】
0006557086.tif 000015
【図１５】
0006557086.tif 000016
【図１６】
0006557086.tif 000017
【図１７】
0006557086.tif 000018
【図１８】
0006557086.tif 000019
【図１９】
0006557086.tif 000020
【図２０】
0006557086.tif 000021
【図２１】
0006557086.tif 000022
【図２２】
0006557086.tif 000023