当社のデジタル入出力デバイスを使用するための準備から基本的なプログラム開発までの一連の流れをご紹介します。 このチュートリアルでは、デバイスを初めてご使用される方向けに、スイッチ等の外部機器との接続や、ソフトウァのインストール(セットアップ)、デジタル入出力のプログラムの組み方をご紹介しています。 ご紹介する主な内容は、以下となります。
今回使用する条件は以下となります。 その他のOS、デバイスをご使用の場合、オンラインヘルプも合わせてご確認ください。
■目次 1.ハードウェア編セットアップ 1.1 デジタルデバイス~端子台の接続 1.2 外部機器の配線1-スイッチ- 1.3 外部機器の配線2-LEDランプ- 1.4 デバイスのセットアップ 1.5 ハードウェアのインストール 1.6 診断プログラムによる動作確認 2.ソフトウェア編 プログラムの作成 2.1 プロジェクトの作成 Visual C# / VC++ / VB.NET / Python
2.プログラムの作成 この章ではVisual Studio 2019を使用してVisual C# / VC++ / VB.NET / Pythonでのプログラムの作成を行います。 Visual Studioのバージョンが異なる場合、項目やコマンドが異なる場合があります
~Python のプログラム例~ 2.1 ファイルの作成 2.2 Dio関数使用のための設定 2.3 コードの作成 2.4 プログラムの実行
拡張子が.pyのファイルを作成します。 お好みのテキストエディタで、拡張子が.pyのファイルを作成します。 この例ではファイル名をtext.pyにしています。
ファイルの追加 Pythonでデバイスドライバの関数を使用するためには、cdio.pyファイルを追加する必要があります。 cdio.pyファイルを使うために、プロジェクトの保存場所にファイルをコピーします。 cdio.pyは「<インストール先フォルダ>¥DIOWDM ¥ Sample ¥Inc」にあります。
コードの追加 追加したcdio.pyを使用するために、以下のコードをソースコード、今回の例ではtest.pyに追加します。
先頭に追加
import ctypesimport ctypes.wintypesimport cdio
プロジェクトの作成、 cdio.pyの importが完了したら、プログラムを作成します。 プログラム例では起動したら入力ポート0のスイッチを確認し、出力する値を変更することでポート0のランプを点灯します。 内部処理的には、入力論理ポート0の入力値を確認し、出力論理ポート0に任意値を出力するプログラムを作成します。
■コードの記述
• 初期化処理 初期化処理を行い、デバイスIdを取得し、デバイスにアクセス可能にします。DioInit(初期化処理)が正常終了した後、DioExit(終了処理)を呼び出すまで各機能関数が使えるようになります。 デバイス名は"DIO000“としていますが、異なる場合は登録したデバイス名を使用してください。(デバイスマネージャー>製品のプロパティ>共通設定 で入力した値です。)
Ret = ctypes.c_long() # 戻り値Id = ctypes.c_short() # デバイスIdDevicename = ctypes.c_char() # デバイス名DeviceName = “DIO000” # デバイス名を格納Ret.value = cdio.DioInit(DeviceName.encode(), ctypes.byref(Id)) # デバイスIdを取得し、デバイスにアクセス可能にする
• デジタル入力処理 入力ポードから1バイト(8ビット)入力します。スイッチの状態がONかOFFかを確認します。
Data = ctypes.c_ubyte() # 値PortNo = ctypes.c_short() # ポート番号PortNo = 0Ret.value = cdio.DioInpByte(Id, PortNo, ctypes.byref(Data)) # PortNoから1ポート入力print(f'DioInpByte port : data = 0x{Data.value:02x}’) # データの表示
• デジタル出力ポートの状態確認 出力ポートの状態を1ポート分確認します。現在の出力を確認し、出力処理で出す値を変更します。
Data = input("出力値を入れてください(hex) : ") # 出力するデータを入力Data = ctypes.c_ubyte(int(Data, 16)) # 出力するデータを設定
• デジタル出力処理 出力ポートに1バイト(8ビット)出力します。
Ret.value = cdio.DioOutByte(Id, PortNo, Data) # PortNo,にDataを出力
• 終了処理 終了処理を行い、デジタル入出力デバイスへのアクセス不能にします。 DioExit(終了処理)を呼び出すまで各機能関数が使えなくなります。
Ret.value = cdio.DioExit(Id) # Idのデバイスをアクセス不能にします
コード_(test.py)
import ctypesimport ctypes.wintypesimport cdio#==========================================# 変数の宣言#==========================================Id = ctypes.c_short() # 戻り値Ret = ctypes.c_long() # デバイスIdDeviceName = ctypes.c_char() # デバイス名PortNo = ctypes.c_short() # ポート番号Data = ctypes.c_ubyte() # 値PortNo = 0#==========================================# 初期化処理#==========================================DeviceName = "DIO000" # デバイス名を格納Ret.value = cdio.DioInit(DeviceName.encode(), ctypes.byref(Id)) # デバイスIdを取得し、デバイスにアクセス可能にする#==========================================# 入力処理#==========================================Ret.value = cdio.DioInpByte(Id, PortNo, ctypes.byref(Data)) # 1ポート入力print(f'DioInpByte port : data = 0x{Data.value:02x}') # データの表示(16進数)#==========================================# 出力処理時のデータ#==========================================Data = input("出力値を入れてください(hex) : ") # 出力するデータを入力(16進数)Data = ctypes.c_ubyte(int(Data, 16)) # 出力するデータを設定(16進数)#==========================================# 出力処理#==========================================Ret.value = cdio.DioOutByte(Id, PortNo, Data) # Dataを出力#==========================================# 終了処理#==========================================Ret.value = cdio.DioExit(Id) # Idのデバイスをアクセス不能にします
返ってきた値を確認し正常に終了したかを確認することができます。正常終了の場合0、エラーの場合0以外が返ってきます。 本ページでは割愛していますが、実システムを作成する場合は関数実行後エラー処理のコードを追加するようにしてください。 戻り値処理(例)
ErrorString = ctypes.create_string_buffer(256) # エラー文字入力用変数if (Ret.value != 0) : # 戻り値が正常終了以外の場合 Ret.value = cdio.DioGetErrorString ( Ret , ErrorString ) # エラー確認
コードが完成したら、プログラムの実行を行います。 コマンドプロンプトを使用して実行します。
コマンドプロンプトで「cd ファイルの場所」を入力し作成したファイルの場所へ移動後、作成したファイル名(test.py)を入力すると実行されます。
実行するとDIO000のポート0の入力の入力を確認し、コマンドプロンプトに入力した数値を出力ポート0から出力します。
提供されるAPI関数一覧 デジタル入出力ドライバソフトウェア API-DIO(WDM) は、当社製デジタルデバイスを簡単に制御できるさまざまな関数を用意しています。それぞれの関数は、処理ごとに分かりやすく分類されており、また処理の内容が一目で分かるような名称となっています。これらの関数を使用すれば、さらに高度な処理も可能です。各処理の詳しい内容は「オンラインヘルプ>デジタル入出力用ドライバ>関数リファレンス」をご覧ください。
サンプルプログラム プログラムの例として単純入出力、複数ポート・ビットの入出力、トリガ監視、割り込み(コールバック)など豊富な種類のサンプルプログラムが添付されています。 Python版 の他にも Visual C# 版 や Visual C++ 版 、 Visual Basic 版も用意されています。サンプルのコードは以下の場所にあります。 <開発環境をインストールした場所> ¥DIOWDM ¥ Sample ¥ Python3
• Pythonの場合
• Linuxを使用したい場合 Linuxを使用される場合はAPI-DIO(LNX) を使用してください。 インストール方法もWindowsと異なります。(オンラインヘルプ)