パソコンから 操作する |
Excel® を起動し、新しいブックを作成します。
Visual Basic Editor を起動します。
メニューの[開発 → Visual Basic Editor] のボタンを押すか、「Alt + F11」キーを押して、Visual Basic Editor を起動します。
開発用ファイルがインストールされたフォルダを開きます。
開発用ファイルは「USBMTools」、または、「LANMTools」のインストール時にパソコン内にコピーされます。通常は、[スタート → プログラム → テクノウェーブ → ライブラリ] から開くことができます。
「TWB.bas」をブックに追加します。
開発用ファイルの中から「TWB.bas」をドラッグし、Visual Basic Editor のプロジェクトウィンドウ(画面左)にドロップします。
「TWB.bas」はファイル内にコピーされます。新しいバージョンのファイルに更新するためには、一度「TWB.bas」を解放し、新しいファイルを再度追加してください。
また、プロジェクトフォルダを移動すると、正しくファイルを参照できなくなる可能性があります。その場合、再度ファイルをプロジェクトに追加してください。
ボードを制御するためには、まず接続の操作が必要になります。そこで、作成するプログラムに「接続」ボタンを用意します。
「開発」メニューの「挿入」から「コマンド ボタン(ActiveX コントロール)」を選択し、シート上にボタンを1つ配置してください。
配置したボタンを右クリックして、「プロパティ」を表示し、「(オブジェクト名)」を "Connect"、「Caption」の欄を "接続" に変更します。
シート上の「接続」ボタンをダブルクリックするとコード入力の画面になりますので、下のようにプログラムを入力してください。
Option Explicit Dim m_hDev As Long 'ハンドルを格納する変数 Private Sub Connect_Click() TWB_Open m_hDev, vbNullString, 0, IF_ANY Or LIST_UPDATE 'ボードへ接続 If m_hDev <> 0 Then MsgBox "ボードに接続しました。" 'メッセージを表示 TWB_Initialize m_hDev, TWB_INIT_OPT.All 'ボードの初期化 Connect.Enabled = False '接続ボタンを無効にする Disconnect.Enabled = True '切断ボタンを有効にする OnTimer 'ポートチェック用関数の最初の呼び出し Else MsgBox "ボードに接続できませんでした。" End If End Sub
リスト中の "TWB_" で始まる関数が、マルチファンクションI/Oボードを制御するためのライブラリ関数です。これらの関数は「TWB.dll」というDLL ファイルに収められており、「TWBライブラリ」と呼んでいます。
「TWB_Open m_hDev, ...」 がボードに接続する部分です。成功すると m_hDev に 0 以外のある整数が格納されます。格納された整数は一般に「ハンドル」と呼ばれるもので、接続したボードを操作するために必要となりますので、プログラムを通じて参照できるようにグローバルな変数に格納しています。
「TWB_Initailize m_hDev, ...」 は、接続したボードを初期化している部分です。以前の操作状態がボードに残っている可能性がありますので、ここで初期状態に戻しています。
「OnTimer()」 はポートを監視するための関数です。後ほどプログラムに追加します。
次にボードの制御を終了するための「切断」ボタンを用意します。
シートに、ボタンを1つ追加します。「接続」ボタン同様に、「プロパティ」を開き、「(オブジェクト名)」に "Disconnect"、「Caption」に "切断" と入力してください。
シート上の「切断」ボタンをダブルクリックして、以下のプログラムを入力します。
Private Sub Disconnect_Click() If m_hDev <> 0 Then TWB_Close m_hDev '切断 m_hDev = 0 'ハンドルを0に初期化 Disconnect.Enabled = False '切断ボタンを無効にする Connect.Enabled = True '接続ボタンを有効にする End If End Sub
「TWB_Close m_hDev」 が切断処理です。ハンドルの値は無効になりますので、ボードと接続されていないことがわかるように m_hDev を 0 に戻しています。
次に、ブックが開かれたときに追加したボタンを初期化するための処理を追加します。
「プロジェクト」ウィンドウの「This Workbook」をダブルクリックして開きます。 図のように「オブジェクト」から「Workbook」を選択し、以下のように入力してください。
Option Explicit Private Sub Workbook_Open() Sheet1.Connect.Enabled = True Sheet1.Disconnect.Enabled = False End Sub
ブックが開かれたときに、必ず「接続」ボタンが有効、「切断」ボタンが無効になるようにしています。
次にデジタル入力(P40)の端子状態を定期的に読み出して表示を行います。
シートのA5の位置に "P40" と書き込んでください。
Visual Basic Editor を表示し、Sheet1の最後に以下のプログラムを追加します。
Sub OnTimer() Dim Status As Long Dim Data As Byte If m_hDev = 0 Then Exit Sub '接続されていない場合何もしない Status = TWB_PortRead(m_hDev, TWB_RPORT.P4, Data) 'ポート4の読み出し If Status <> TW_OK Then Disconnect_Click '切断処理の呼び出し MsgBox "エラーが発生しました。: " & Status 'メッセージとエラー番号の表示 Exit Sub End If '読み出したデータの0ビット(P40端子に対応)を調べる If Data And &H1 Then Cells(6, 1) = "1" '1の場合セルに"1"を設定 Else Cells(6, 1) = "0" '0の場合セルに"0"を設定 End If '1秒後に再度呼び出されるように設定 Application.OnTime Now + TimeValue("00:00:01"), "Sheet1.OnTimer" End Sub
「Status = TWB_PortRead(...)」 の部分がポート4(P40-P47)の端子状態を読み出している部分です。P40 が "Hi" の場合、Data 変数のビット0(最下位ビット)が "1" となり、"Lo" の場合は、Data のビット0 が "0" となります。P41 の状態は同様にビット1 に格納され、以下同様に P47 までの 8ビットが、それぞれビット7(MSB)までの 8ビットに格納されます。
TWB_PortRead() 関数が成功した場合、Status には "TW_OK" という定数が入ります。"TW_OK" は「TWB.bas」の中で定義されている定数で、値は "0" になります。関数が失敗した場合には、Status が "TW_OK" 以外(0以外)の値となります。
最後のApplication.OnTime Now + TimeValue("00:00:01"), "Sheet1.OnTimer" は1秒後にOnTimer() 関数が、再度自動的に呼び出されるように設定しています。
次にデジタル出力(POUT0#)を変更する処理を追加します。
シートの C5 の位置に "POUT0" と書き込んでください。
Visual Basic Editor を表示し、OnTimer() のApplication.OnTime() の呼び出しの前に以下のプログラムを追加します。
'セルの値をチェックし、POUT0#に出力する If Cells(6, 3) = "1" Then Status = TWB_PortWrite(m_hDev, TWB_WPORT.POUT, &H1) Else Status = TWB_PortWrite(m_hDev, TWB_WPORT.POUT, &H0) End If If Status <> TW_OK Then Disconnect_Click '切断処理の呼び出し MsgBox "エラーが発生しました。: " & Status 'メッセージとエラー番号の表示 Exit Sub End If
「TWB_PortWrite(..., &H1)」 の部分が POUT0# の出力を "ON" にしている部分です。"&H1" の部分には8ビット(Byte)の数値を指定できます。ポート入力の場合と同様にビット0 - ビット7 が、それぞれ、POUT0# - POUT7# 端子に対応しています。POUT# はオープンコレクタ出力となっていますので、"ON" になると端子から GND へ電流を流します。 この例では、B6 のセルに "1" が書かれている場合に、POUT0# を "ON" にし、それ以外では "OFF" にしています。 追加後の OnTimer() 関数は下のようになります。
Sub OnTimer() Dim Status As Long Dim Data As Byte If m_hDev = 0 Then Exit Sub '接続されていない場合何もしない Status = TWB_PortRead(m_hDev, TWB_RPORT.P4, Data) 'ポート4の読み出し If Status <> TW_OK Then Disconnect_Click '切断処理の呼び出し MsgBox "エラーが発生しました。: " & Status 'メッセージとエラー番号の表示 Exit Sub End If '読み出したデータの0ビット(P40端子に対応)を調べる If Data And &H1 Then Cells(6, 1) = "1" '1の場合セルに"1"を設定 Else Cells(6, 1) = "0" '0の場合セルに"0"を設定 End If 'セルの値をチェックし、POUT0#に出力する If Cells(6, 3) = "1" Then Status = TWB_PortWrite(m_hDev, TWB_WPORT.POUT, &H1) Else Status = TWB_PortWrite(m_hDev, TWB_WPORT.POUT, &H0) End If If Status <> TW_OK Then Disconnect_Click '切断処理の呼び出し MsgBox "エラーが発生しました。: " & Status 'メッセージとエラー番号の表示 Exit Sub End If '1秒後に再度呼び出されるように設定 Application.OnTime Now + TimeValue("00:00:01"), "Sheet1.OnTimer" End Sub
それでは、作成したプログラムを実行し、動作確認を行います。
M3069評価ボードが利用可能な場合は、評価ボード上にマイコンボードを取付けてください。評価ボードが無い場合は、「動作確認用の回路」に従って、簡単な回路を構成すれば、動作確認が可能になります。
ボードをパソコン、または、ネットワークに接続し、電源を入れ、通信可能な状態にします。
「デザインモードの終了」ボタンを押し(図参照)、プログラムを実行可能な状態にします。
「接続」ボタンをクリックします。成功すると図のようにメッセージが表示されますので「OK」ボタンを押してください。
「P40」と書かれた下のセルに、P40 端子の入力レベルを表示します。"Hi "が入力されている場合には "1"、"Lo" が入力されている場合には "0" が表示されます。
M3069評価ボードに接続している場合は、SW1 のディップスイッチの1番を "ON" にすると "0"。逆に "OFF" にすると "1" と表示されます。
動作確認用の回路がある場合も同様に、スイッチを "ON" にすると "0" が表示されます。
「POUT0」と書かれた下のセルに、"1" を書くと POUT0# の出力が "ON" になります。M3069評価ボードに接続している場合は、対応する LED が点灯します。
動作確認用の回路がある場合も同様に、接続した LED が点灯するはずです。
"1" 以外を書いた場合はPOUT0# 出力が "OFF" になり、LED は消えます。
ハードウェアや、各機能の使用方法に関しての詳細は、以下のマニュアルでご案内しています。