|
|
Q&A 技術部 |
■ デバイスドライバのインストール
Q1 : デバイスドライバをインストールしたあとで、デバイスマネージャを開いたが、
DACS製品に該当するようなデバイス名がどこにもない。
A1 デバイスドライバをインストール前に、パソコンにDACS製品を接続し、デバイスマネージャを開くと、その他のデバイスに、DACS製品に該当するデバイス名がありますが、インストール後には、USB Serial converter として登録されています。DACS製品名はデバイスマネージャにはでてきません。
Q2 : デバイスドライバをインストールするため、デバイスマネージャを開いたが、
その他のデバイスにDACS製品に該当するようなデバイス名がない。
A2 すでにデバイスドライバがインストールされている状態です。まずはサンプルプログラムを動作させてみてください。サンプルプログラムが動作すれば、デバイスドライバは正常にインストールされています。サンプルプログラムが動作しない場合は、Windowsの復元機能を使用して、間違ったデバイスがインストールされた状態以前に戻し、再度、インストール操作を行ってください。
Q3 : 製品型番の異なるDACS製品を使用するため、デバイスドライバをインストールしようとしたが、
デバイスマネージャを開いても、その他のデバイスにDACS製品に該当するようなデバイス名がない。
A3 弊社USBインターフェイス製品のデバイスドライバは、すべての製品で共通です。新たにインストールする必要はありません。
Q4 : 接続するUSBポートによりデバイスを認識しないことがある。
A4 (1) USB延長ケーブルを使用するなどにてケーブル長を5m以上にしていませんか。
(2) 弊社ボードから+5V電源を外部に取出していませんか。電源出力コネクタをはずして改善するようでしたら、取扱説明書で電流値制限を確認してください。
電源を接続している機器の電源回路に電解コンデンサまたは高容量のセラミックコンデンサを使用している場合、電源投入時の突入電流により影響を受けることがあります。
■ デバイスドライバの 仮想COM版 と ダイレクト版
Q1 : 仮想COM版とダイレクト版のいずれでプログラミングすればよいか。
A1 デバイスドライバをインストールすると、仮想COM版とダイレクト版の両ドライバがインストールされます。インストール後にデバイスマネージャをみると、接続したデバイス用のCOMポートが追加になっています。COMポートを利用したプログラミングに慣れている方は、接続したデバイスを、仮想COMとしてプログラミングをすることが(一見)簡単に思えるのですが、コマンドとレスポンスの送受信速度を向上させたい場合などは、このCOMポートを使用するのではなく、ダイレクト版にてプログラミングされることを強くお勧めします。ダイレクト版を使用すれば、複数のCOMポートが存在する場合でも、アプリケーションでCOMポート番号を識別する必要はありません。
ダイレクト版はRead/Write関数を使用した単純でわかりやすい方法です。
Q2 : C# でダイレクト版のプログラミングは
A2 C#でプログラミングをされている方から、「仮想COMでしか利用できないの?」というご質問を多くいただきます。C#でも容易にダイレクト版のプログラミングが可能です。こちらのコマンド送受信サンプルプログラム説明書をご覧ください。 サンプルソースなどはダウンロードページ (dacs2500K_STDフォルダ) に掲載しています。
Q3 : 仮想COM版のボーレート設定は
A3 サンプルプログラムをご覧ください。適当な最大ボーレートで設定しています。仮想COM版でもUSBデバイスとして動作しますので、このボーレートはパソコンとデバイス間の通信仕様には関係しません。
(1) DACS-8200、DACS-9600K などのデバイスでは、ボード内部の動作仕様により、指定されたボーレートをプログラミングで設定して動作させます。このボーレートが、パソコンのデバイスマネージャなどで確認したボーレートと異なっていても問題はありません。
(2) DACS-8200 を、高速ボーレートが設定できないターミナルツールなどで動作させる場合は、取扱説明書をご覧いただき、低速ボーレートに設定変更して使用してください。
■ コマンド送受信
Q1 : 文字列 (例 W0100000) を送信したが応答がない。
Q2 : 文字列 (例 W0100000\n) を送信したが応答がない。
A1, A2 これらのご質問には、こちらでお答えしています。
Q3 : read関数にて受信データ読取りを実行したところ、関数から制御が戻ってこない。
A3 read関数は、読取りを指定した文字数が受信バッファに整うまで処理を継続します。read関数を使用するときは、必ず受信バッファの受信文字数(バイト数)を確認して、受信文字数以内で読取りを実行してください。手順の詳細はサンプルプログラムをご覧ください。
Q4~Q10 はプログラム開発中のいずれも同じ原因によるトラブルです。
Q4 : デジタル出力などを連続して実行すると、しばらくしてシステムがフリーズする。
Q5 : デジタル入力を受信データにて読取ると、1サイクル(または数サイクル)前のデジタル入力状態となっている。
Q6 : デジタル入力状態などを受信はできるが、時刻がずいぶん前のデータとなっている。しばらくすると、システムがフリーズする。
Q7 : PWMパルス出力基板で、PWMパルス出力コマンドを送信し続けると、システムがフリーズする。
Q8 : カウンタでカウント値を読取ると、1サイクル前のカウント値となっている。または別のチャンネルのカウンタ値となっている。
Q9 : モーションコントローラで軸位置を読取ると、1サイクル前の位置データとなっている。違う軸の位置データとなっている。
移動開始/停止のステータスが実際の動作から遅れている。
Q10 : モーションコントローラで、軸移動関連のコマンド(P,Qコマンド)を送信し続けると、システムがフリーズする。
A4, A5, A6, A7, A8, A9, A10 「ボードの動作がおかしい」とのお問合せをいただくことがありますが、すべて同じ単純な理由にて問題が発生しています。
お客様の作成されたプログラムで、コマンド送信に対して、毎回、レスポンスの読取りを実行していないことが原因です。
Why?
コマンド送信をすると、ボードから必ずレスポンスを返してきます。受信処理をしなければ、デバイスからの応答はないと考えるのは、致命的な間違いです。デジタル出力を送信した場合はもちろんのこと、カウンタのモード設定とかモーションコントローラの速度/加速度設定のようなコマンドを送信した場合も必ず応答があります。この応答を残らず読取る必要があります。
レスポンスはシステムの受信バッファに蓄積されます。受信バッファはFIFO(ファーストイン・ファーストアウト)です。コマンド送信に対し、毎回、確実に受信データの読取りを実行していないと、受信データがシステムの受信バッファに蓄積されてゆき、受信データを読取っても、直前の応答ではなく、それ以前の読取っていなかった古いデータを読取る結果となります。そのうちに、受信バッファのオーバーフローとなって、システムがハングアップするという最悪の結果も引き起こします。
How! まずは、弊社よりご提供するサンプルプログラムで動作を確認してください。サンプルプログラムで問題なく動作をすれば、インターフェイス基板のトラブルではないことになりますので、お客様にて作成されたプログラムを見直してください。データ受信の都度、残留データ数の確認を行うことで、このようなトラブルを防ぐことができます。
カウンタ、モーションコントローラを使用したプログラミンクをされているお客様から、「サンプルプログラムを参考にしてプログラムを作っているのに」というご質問を、しばしばいただきますが、サンプルプログラムでは、タイマーイベントを使用して、コマンド送信とは独立して、受信データ数を確認しながら、受信データがあれば、必ずデータを読取って、常に受信バッファーが空(または9文字未満の残留データ数)になるように動作しています。つまり、モード設定コマンドに対するボードからの応答も、逃さず受信できるようになっています。お客様で作成されたプログラム動作での、この種のトラブルの多くは、モード設定に対する応答を読取っていないことが原因となっています。
詳しくはこちらの図解をご覧ください。
Q11 : 受信した文字列の先頭がずれる。文字数が一致しない。受信バッファに9文字に満たない文字列が残る。
A11 弊社のサンプルプログラムでは、コマンド送信の後、タイマーイベントにより受信処理を行っています。お客様によっては、これを簡略化して、ループ処理にて予定受信データ数になるまで待つ、簡易プログラムを作成されるケースがあります。
待ちループ処理の場合、待ちループを離脱するタイムアウト処理にて、受信データ数を確認する関数(FT_GetStatus)の実行速度を甘くみないようにしてください。CPUが高速化した昨今、ループ回数が1000回ぐらいでは、タイムアウトで抜けてしまうことがあります。この状態でタイムアウト時の不要受信データ読取処理を行うと、受信途中の文字列の一部を削除することになり、それ以降の応答文字列の先頭がずれてしまう結果となります。
弊社がご提供するVBサンプルプログラムの一部で、キー入力による単純なハンドシェイクには、この待ちループ処理の例がありますが、カウンタあるいはモーションコントローラなど、プログラムから自動的に繰返してコマンドを送信するような処理では、タイマーイベント方式となっていることにご留意ください。
Q12 : デジタル出力コマンド (Wコマンド) の文字列中に、文字Xなどで Don't care を指定しているのに、出力が変化してしまう。
A12 Don't care が有効になるのは、Wコマンドを連続して送信している場合のみです。Wコマンドの前に、Wコマンド以外の、MコマンドとかP,Qコマンドなどを送信している場合は、Don't care は成立しません。間違って使用すると出力が意図しない状態となります。Wコマンドの Don't care に関する説明の注意事項をご確認ください。
ダウンロードページでご提供している、カウンタおよびモーションコントローラのサンプルソフトは、MコマンドとかQコマンドを自動的に送信しています。このためキー入力でWコマンドを実行する場合、Don't care は使用できません。
(追記 2024年10月17日) DACS-2500KBシリーズではこの問題を改善しています。異なるコマンドを使用したあとでも、Wコマンドの Don't care が利用可能です。
Q13 : コマンド文字列の区切りマークに &文字を使用して、複数のコマンドを1行の文字列で送信したところ、受信した応答文字列の途中(一部)が欠落する。
A13 たとえば、DACS-2500K-CNTカウンタ基板で、カウンタ値の読み取りのため、M00&M01&M02&M03(CR) と連続したコマンドを1行の文字列で送信したとします。この文字列は、&で連続しているだけでなく、各コマンド文字列が省略されて短くなっていることに注目してください。 基板側は受信したデータを次々に実行してゆきますが、コマンドの文字数が少ないと、実行間隔が極端に短くなり(数μs以下となり)、前のコマンドの応答を送信中に、次のコマンドの応答を送信し始め、この結果、パソコン側では受信した応答文字列が途中で重なるという問題が生じます。&文字でコマンドを連続して送信する場合は、その前に、I(アイ)コマンドにてコマンド実行間隔を設定するのが基本です。設定する実行間隔は、10μsもあれば十分です。もちろん、コマンド文字列を省略して短くしなければ、I(アイ)コマンドで実行間隔を設定する必要はありません。なお、パルス出力基板 DACS-2500K-RCP24 などは、I(アイ)コマンドが使用できませんので、&でコマンドを継続する場合は、コマンド文字列の省略をしないようにしてください。
(追記 2024年10月17日) DACS-2500KBシリーズではこの問題を改善しています。複数の省略したコマンドを1行で送信する場合で、実行間隔の指定が無用の場合は、I(アイ)コマンドで実行間隔を設定する必要はありません。
Q14 : コマンド送受信の繰返し速度は、どれくらいまで上げられるのか。
A14 このご質問には、こちらでお答えしています。
■ DACS製USBデバイスの最大接続数
Q1 : DACS製USBデバイス DACS-2500(K/KB)、DACS-8200などを、USBハブを使用して8個接続し、ダウンロードページのサンプルプログラムにて動作確認をおこなったところ、認識しないデバイスがある。
A1 サンプルプログラムでは、最大4個までのデバイスを対象としています。
これ以上のデバイスを接続した場合、5個目のデバイスは動作しません。また、プログラム起動の都度、認識できないデバイスが変わることもあります。
5個以上のDACS製USBデバイスを接続する場合は、こちらのサンプルプログラム(VC2008ソースファイル添付) をご利用ください。最大8個までのデバイスに対応しています。
DACS-1700(K)、DACS-2500(K/KB)、DACS-8200に対応しています。混在していても動作します。
Q2 : 仮想COMを使用した複数デバイス対応のプログラムを作成したところ、ポート番号の大きいデバイスが認識できない。
A2 仮想COM版サンプルプログラムのCOMポート番号文字列"COM3"を変更すると、異なるポート番号のデバイスに対応させることができますが、このままで変更可能なのは"COM9"までです。COM10からは"COM10"としても認識できません。
COM10以後は、たとえばCOM12の場合、"\\\\.\\COM12"と記述すると、認識できるようになります。
でも、デバイスを交換するとCOM番号が変わりますし、こんなに多くのCOMポートを管理するのは大変困難です。
複数個のデバイスを接続する場合は、前述A1のダイレクト版を使用したプログラミングを強く推奨いたします。
■ パソコンのタイマーによるスリープ機能の問題
Q1 : 計測ソフトを使用して自動計測をしていたが、しばらくするとパソコンがスリーブ状態となり、計測ソフトが動作しなくなる。
Q2 : モーションコントローラソフトを動作させていて、パソコンがスリープから復帰した後、ソフトが動作しない。
A1, A2 計測ソフトまたはモーションコントローラソフトを使用するときは、パソコンのタイマーによるスリープおよび休止機能を無効設定としてください。ご提供している、計測ソフト、モーションコントローラソフトは、ソフトを起動した状態で何も操作をしていなくても、USBに接続した計測ユニットなどとの通信を継続しています。この状態でパソコンがスリープモードになると、デバイスとソフトウェアとの接続が解除されてしまい、次にスリープから復帰してもプログラムの動作を続けることができません。
■ ソフトウェアのコピー先
Q1 : 計測ソフト、モーションコントローラソフトのほか、弊社よりご提供しているサンプルソフトを、Windows Cドライブのフォルダ Program Files にコピーした場合、管理者権限がないログオンユーザにてこのプログラムを起動すると、データファイルなどの書込みができない不具合が発生します。
A1 起動時に「管理者として実行する」を選択するか、Cドライブの直下などに、別のフォルダを新規に作成して、その中にプログラムをコピーしてください。計測ソフトとモーションコントローラソフトの取扱説明書にコピー先の例として、フォルダ名 Program Files を記述しておりましたが、2016年8月よりこの記述を訂正しています。
■ 電源コネクタ
Q1 : 電源を接続するためのケーブル側コネクタが添付されていない。
A1 DACS-2500(K/KB)シリーズなどの基板製品は、USBケーブルを通じてパソコンから+5V電源を受電するバスパワー仕様となっています。
外部電源を接続する必要はありません。
基板上の電源コネクタ(DACS-2500(K/KB)などではCN3が該当)は、アダプタ基板を接続する場合に、+5V電源を取出すための電源出力用です。
接続に使用するケーブル付きコネクタは、アダプタ基板側に添付されています。
なお、外部に電源を取出す用途の多い、モーションコントロール基板では、電源接続用のケーブル付きコネクタが標準添付となっています。
また、外部から電源を供給する必要のある、リモートIO、ワイヤレスIOなどの基板タイプ子機には、電源接続用のケーブル付きコネクタを添付しています。
詳しくは各製品解説ページの付属品明細にてご確認をお願いします。
Q2 : 電源を外部に取り出したいがコネクタの型式がわからない。
A2 各製品にオプション品として販売している、電源接続用のケーブル付きコネクタをご使用ください。
ご参考 DACS-2500(K/KB)シリーズ CN3 ケーブル側コネクタ JST XHP-3
■ USBコネクタ位置詳細図
Q1 : 基板上のUSBコネクタ位置がわかる詳細図がほしい。
A1 こちらをクリックしてPDFをご覧ください。 使用コネクタ オムロン XM7B-0442
USBコネクタ(CN2)とデジタル信号入出力コネクタ(CN1)の位置は、DACS-2500(K/KB) DACS-8200 基板で共通です。
■ デジタル入出力基板の部品最大高さ
Q1 : デジタル入出力コネクタの高さ。 基板上の部品最大高さは。
A1 USB接続デジタル入出力製品 DACS-1700(K)、DACS-2500(K/KB)、DACS-2600、DACS-8200、DACS-9600K
各シリーズでは、デジタル入出力コネクタにフラットケーブルコネクタを接続した状態の部品高さが、基板面から平均14mm(最大15mm)となり、
この位置が部品の最大高さとなります。
なお、デジタル入出力コネクタは、上側に差込み口がありますので、コネクタ脱着作業のとき、基板上面が解放できることが必要となります。
基板板厚は1.6mm。
基板裏面(ハンダ面)は、面実装部品などがあり最大2mmの高さとなります。
■ フラットケーブルのカラーとピン番号対応
Q1 : 製品に添付されている入出力用フラットケーブルの、ケーブル色とピン番号対応がわかる資料はありませんか。
A1 こちらをクリックしてご覧ください。
■ カウンタ動作
Q1 : カウンタが動作しない。
Q2 : カウント入力がないのに勝手にカウンタが進む。
Q3 : ロータリエンコーダのA/B相カウントを使用しているが、カウンタが0と1を往復するのみで正常にカウントしない。
Q4 : ロータリエンコーダのA/B相カウントを使用しているが、アップカウンタのみでダウンカウントしない。
Q5 : ロータリエンコーダのA/B相カウントを使用しているが、カウント値がエンコーダ分解能の4倍にならない。
A1, A2, A3, A4, A5 これらのご質問には、こちらでお答えしています。
Q6 : カウント値を読取ると、1サイクル前のカウント値となっている。
Q7 : カウント値を読取ると、別チャンネルのカウンタ値となっている。
A6, A7 このご質問の答えは 「コマンド送受信」 欄をご覧ください。
Q8 : カウント値を一定した正確な時間間隔で読取りたい。
A8 I(アイ)コマンドにてコマンド実行間隔を設定することで実現できます。たとえばch0のカウント値を、100ms間隔で読取る場合は、次のようになります。
(1) コマンド実行間隔を50msに設定します。(例 I000C34D(CR)を送信します。)
C34D(H)-->49997(D) 3μsだけ値が小さい理由は取扱説明書のIコマンドの項をご覧ください。
50msを設定するのは、下記のように読取りコマンドを2個実行するためです。
(2) ch0のカウント値読取指示 M00&M01(CR)を送信します。
(3) ch0のLow-wordデータ、つづいてHigh-wordデータの応答があるのを待ちます。
上記の(2)(3)を繰返すことにより100ms間隔のカウント値を取得することができます。
カウント値読取指示 M00&M01(CR)は、データ受信後ただちに送信することが肝要です。
Low-wordデータとHigh-wordデータの受信には、50msの時間差がありますが、
どちらのデータも、Low-wordデータ読取りコマンドを実行したときにラッチした値で、
両データは同時刻のものです。この機能の詳細は取扱説明書をご覧ください。
Q9 : パルス周波数/間隔を広い周波数範囲で高分解能にて計測するには
A9 このご質問には、こちらでお答えしています。
Q10 : ゲート入力信号を変化させて、カウント値をホールドレジスタにセットするようにしているが、
そのときにレジスタ値読取りを実行すると、ひとつ前のホールド値となる。
A10 ゲート入力信号の極性(High/Low)を確認してください。TTL入力ではHighからLowの変化(立ち下がり)でホールドします。フォトカプラ入力ではOpenからCloseの変化でホールドします。(DACS-2500K-CNT では入力極性設定機能があります。)
******** 「極性は間違いない」場合 ********
ゲート入力信号の立下がりにてホールドレジスタにカウント値をホールドする機能では、ゲート入力信号のチャタリングまたはリンギングによる誤動作を防ぐため、約1msの遅延動作を行っています。すなわちゲート入力信号がHighからLowに変化して、1ms以上Low状態が継続しない限り、ホールド機能は動作しません。詳細は取扱説明書をご覧ください。もしも、チャタリング状態が長く続く場合があると、ゲート入力信号LowをWコマンドなどで確認して、すぐにホールドレジスタを読取ると、まだホールドしていない値を読取る結果になります。このような場合は、ゲート入力信号のチャタリングがなくなるまでの時間を待って、ホールドレジスタの読取りを行ってください。
■ PWMパルス出力
Q1 : PWMパルス出力にRCサーボを接続したが、サーボが移動時に激しくがたがたと振動する。
A1 サーボ用の電源にDCDCコンバータまたはACアダプタなどを使用していませんか? RCサーボはNiCd充電電池など、高電流出力が可能な電源を想定しています。RCサーボは見かけによらず、予想外に大きな起動電流を必要とすることがあり、起動時にDCDCコンバータなどの最大出力電流以上となって、出力電圧の低下と復帰を繰り返すことになります。PWMパルス出力が振動しているわけではありません。サーボ用電源にDCDCコンバータなどを使用するときは、十分に余裕をもった出力電流のものを使用してください。
Q2 : PWMパルス出力コマンドを送信し続けると、システムがフリーズする。
A2 このご質問の答えは 「コマンド送受信」 欄をご覧ください。
■ モーションコントローラ
Q1 : モータが回らない。
A1 考えられる原因があまりにも広範囲なため、次の手順にて問題を切り分けてください。
(1) モーションコントローラ基板(ユニット)とパソコンとをUSBケーブルで接続します。そのほかの接続ははずしておきます。この段階と下記2~4の動作確認では入出力ケーブルは接続しないでください。
サンプルソフトを起動して、W0000000(enter)などのデジタル出力コマンドをキー入力して送信します。R0xxxxxx などの応答が表示されればOK。そうでない場合はデバイスドライバのインストールを確認してください。
(2) モーションコントローラ取扱説明書の最後に記述しているサンプルプログラム操作例をご覧ください。キー入力例に従って軸移動操作を試みてください。画面表示で各軸位置が変化するようであれば、基板の軸移動機能は正常に動作しています。モータが回らないのは、モータドライバなどとのハードウェア接続に原因があることになります。
(3) キー入力例に従って軸移動操作を試みても、画面表示で各軸位置が変化しない場合。画面表示のステータス番号を確認してください。ステータス番号が30(H)など0以外の場合は、基板電源投入以降に、リミットスイッチ設定コマンドなどを送信して、リミットスイッチ作動中となっていることが考えられます。ユーザサイドにて作成されたプログラムをサンプルプログラムの前に動作させるなどが原因で、この状態となっています。作成されたプログラムとリミットスイッチ入力の状態を確認してください。「参考」基板電源投入後、リミットスイッチの設定を実行していない状態では、すべてのリミットスイッチは無効になっています。
(4) ステータス番号が0にもかかわらず、軸移動が開始しない場合は、キー入力したコマンドのいずれかに間違いがあります。再度、取扱説明書にて確認してください。
基板をUSBケーブルからいったんはずして、再度USBケーブルを接続します。サンプルプログラムを再起動します。特に、速度と加速度指定の P08----- P09----- にて0を指定していないかを確認してください。
それでも動作しない場合は、モーションコントローラソフト PMC-600 を使用して、手動操作にて軸移動を試みてください。マウスで簡単に操作できます。 モーションコントローラソフト PMC6.exe は、ダウンロードページの PMC600フォルダにあります。PMC-600 にて軸移動が動作(各軸位置表示が変化)すれば、基板の動作には問題ないことがわかります。再度、上記(2)~(3)にてコマンド入力などに間違いがないか確認してください。
Q2 : サンプルプログラムまたはモーションコントローラソフトの画面表示では位置が変化しているのに、モータが回らない。
A2 モータドライバとのハードウェア結線に間違いがあると考えられます。
モーションコントローラの出力は、製品型式により、 (1) TTL電圧出力と (2) オープンコレクタ(無電圧)出力 の違いがあります。
最も多いトラブル例は、オープンコレクタ(無電圧)出力なのに、電圧出力と勘違いして接続されている場合です。
DACS-2500KD-PMV6-ISO、DACS-2500KEX-PMV6-ISO などの絶縁出力タイプは、オープンコレクタ(無電圧)出力となっています。
オープンコレクタ(無電圧)出力の製品では
モータドライバ側にプルアップ用電源が準備されている場合は、モータドライバ側の取扱説明書で結線方法をご確認ください。
モータドライバ側にもプルアップ用電源がない場合は、こちらの接続図 を参考にしてください。
Q3 : 軸位置を読取ると、1サイクル前の位置データとなっている。
Q4 : 軸位置を読取ると、違う軸の位置データとなっている。
Q5 : 移動開始/停止のステータスが実際の動作から遅れている。
Q6 : 軸移動関連のコマンド(P,Qコマンド)を送信し続けると、システムがフリーズする。
A3, A4, A5, A6 このご質問の答えは 「コマンド送受信」 欄をご覧ください。
Q7 : モータ制御用に使用しないbitをデジタル出力に使用したい。
A7 Pコマンドを送信するまでは、デジタル出力24bitすべてがデジタル出力として使用できます。Pコマンド送信後は、6軸制御の場合でモータ制御用に使用しない bit23~bit12 を、デジタル出力として使用できます。(ただし、RS422出力を選択した場合はすべての出力がモータ制御用となります。)
送信するデジタル出力コマンドは W0YYYZZZ(CR) となります。Yには0~9,A~Fのうちいずれかの文字を指定します。Yに指定する文字に Don't care 指定はできません。モーションコントローラでは、P,Qコマンドを送信するため、Wコマンドのみを使用することがまれなためです。Zには Don't care のX文字または 0~9,A~F のいずれかの文字を指定します。Zに指定した文字はダミー文字となり、パルス出力には全く影響しません。また、P,Qコマンド送信により、Wコマンドで指定したデジタル出力bit23~bit12が変化することもありません。
Q8 : 非常停止またはリミットスイッチ入力を有効にすると、入力がないのに異常停止することがある。
A8 TTL入力タイプのモーションコントローラをご使用いただいている場合、非常停止スイッチまでのケーブル長を長く(30cm以上に)した場合、あるいは、+5Vへのプルアップ抵抗の抵抗値を10KΩ以上の高抵抗値とした場合には、入力信号にノイズが混入して、非常停止でないのに、非常停止機能が頻繁に作動するトラブルが発生します。リミットスイッチについても同様です。
TTL入出力仕様のモーションコトンローラ製品ページには、「リミットスイッチなどの接点に直接接続できない」旨のご注意を明記しております。
絶縁入出力仕様のユニットをご使用ください。
■ DACS-G400/E350-STD 電源立上げ時の注意
Q1 : DACS-G400/E350-STD の電源を入れた直後に、PC側のプログラムを起動すると、通信を開始できないことがある。その後は、PC側のプログラムを再起動しても、DACS-G400/E350-STD から応答がない。
A1 DACS-G400/E350-STD には、OSとして Linux を搭載しています。このため、基板の電源を投入してから、OS の Linux が起動し、通信を開始できる状態になるまでに、約10秒の時間を必要とします。この起動時間中に、PCからUSBインターフェイスの仮想シリアルポートを使用して通信を開始しようとすると、DACS-G400/E350-STD は、その信号をボードのデバイス設定操作とみて、OS起動を停止します。これは、Windowsパソコンに例えると、PC起動直後にBIOS設定の画面に入り込む状態と類似しています。この起動異常を避けるためには、DACS-G400/E350-STD 電源投入直後の10秒間(余裕をみて15秒間)は、PC側のプログラムを起動しないようにしてください。
PCプログラムでの対策
OS Linuxの起動を停止した状態の DACS-G400/E350-STD を、電源の再投入をしないで、PC側から再起動させることもできます。Linuxの起動を停止した状態の DACS-G400/E350-STD に、reset コマンド(文字列reset+CRコード)を送信すると、DACS-G400/E350-STD がリブート(再起動)します。この処理を追加したサンプルプログラムのソースと実行ファイルは ダウンロードページの dacsG400 より。
このサンプルプログラムでは、Linuxの起動が立上げ途中で停止した場合、その状態を判断して、reset コマンドを自動送信します。正常に起動している場合は、reset コマンドを送信しませんので、直ちに準備完了となります。また、Linuxがboot途中でboot中のいろいろなメッセージを出力しているときは、この出力状況をみて、bootが完了するまで待つようになっています。
なお、LAN接続の DACS-G400/E350-LAN は、USBインターフェイスの仮想シリアルポートをPCと接続していないため、この問題は起こりません。ただし、ネットワーク設定などのために、USBインターフェイスをPCと接続しているときは、同様の注意が必要です。
Q2 : DACS-G400/E350-STD の電源を入れたあと、20秒から1分ぐらいの間に、random: nonblocking pool is initialized というメッセージが(一度だけ)送られてくることがある。
A2 DACS-G400/E350-STD に搭載している Linux は、乱数発生機能をもっています。random: nonblocking pool is initialized というメッセージは、この準備ができたという知らせです。この機能は DACS-G400/E350-STD では使用しておりませんが、残念ながらこのメッセージを抑制する方法がありません。パソコン側でこのメッセージを受信したときは、受信データを破棄してください。
PCプログラムでの対策
正常な受信文字列12文字のあとにメッセージを受信する場合は、改行文字LF(0xa)を受信するまで読み飛ばすことで処理できますが、まれに、正常な受信文字列12文字の途中に、このメッセージが入り込むことがあります。サンプルプログラムでは、この場合でも、メッセージ random: nonblocking pool is initialized のみを削除して、正常な受信データを破棄しないようにしているため、不正データを受信したときの処理は少々複雑となっています。
一方、この問題は、DACS-G400/E350-STD の電源投入後、1分以内の一度だけということもありますので、単純に受信データを一括して破棄し、タイムアウトで次の処理に移行するのが簡単です。サンプルプログラムには、こちらの簡単な方法も、あわせてソースファイルにコメントで記述しています。
このページに直接こられた方は、こちらをクリックして、
ダックス技研株式会社 計測制御用電子機器のHOMEに移動してください。
USB接続のDIO、計測ユニットなどDACS製品を掲載しています。 |
|