Posted at

UnityでCONTECの産業用リレーボードを制御する


1. 概要

I/Oで外部機器とやりとりする際に、Arduinoなどではなく産業用の機器を使いたいことってありますよね。そんなときに頼りになるのがCONTEC。ここではCONTECのリレーボードをUnityから使う方法を説明します。


2. 環境


3. 参考サイト


4. 手順


4.1 ドライバライブラリのダウンロード、インストール


  • ドライバライブラリ API-USBP(WDM) デジタル入出力ドライバ 開発環境(フルセット) Ver. 6.30をダウンロード


    • ダウンロードには会員登録が必要です。




  • INF - WDM - DioForWin10に入っているSetup.exeを実行


    • ダイアログに従ってインストール




  • APIUSBP - DIO - Disk1に入っているsetup.exeを実行


    • ダイアログに従ってインストールする

    • インストールが終了するとヘルプが立ち上がる





4.2 テスト


  • この辺りはマニュアルに沿って実行します。

  • リレーボードに付属の電源を挿し、Mini USBでPCに接続します

  • デバイスマネージャーを開きデバイスのプロパティを開きます


  • 共通設定タブの診断を押します


  • 12個ある緑のボタンを押すと機器からリレーが切り替わる音が聞こえると思います。



4.3 Unityから制御する


  • Unityで空のプロジェクトを立ち上げます。


  • 先程インストールしたAPI-USBPの以下のフォルダ(例:C:\Program Files (x86)\CONTEC\API-USBP(WDM)\Dio\Samples\Inc)に入っているCdioCs.csをAssetフォルダにコピーします。


  • コンソールを見ると以下のようなエラーが沢山出ています。


error CS0227: Unsafe code requires the `unsafe` command line option to be specified. Enable "Allow 'unsafe' code" in Player Settings to fix this error.


  • エラー通りにメニューのEdit - Project Setting - Playerを選びOther Setting - ConfigrationAllow 'unsafe' settingにチェックを入れる。


  • エラーが消えたことを確認


  • HierarchyのCreate - UI - Buttonでボタンを配置する


  • 以下のスクリプトを作成しボタンのOnClickイベントに紐付ける



button.cs

    using System.Collections;

using System.Collections.Generic;
using UnityEngine;
using CdioCs;

public class ButtonTest : MonoBehaviour {

int Ret;
short Id;
bool isState0 = false;

Cdio dio = new Cdio();

void Start () {
Ret = dio.Init ( "DIO000" , out Id );
Ret = dio.ResetDevice ( Id );

Debug.Log("State 0");
Ret = dio.OutBit(Id, 0, 0);
Ret = dio.OutBit(Id, 1, 1);
isState0 = true;
}

public void OnClick() {
isState0 = !isState0;

short[] BitNo = new short[2];
byte[] Data = new byte[2];

if(isState0){
Debug.Log ("State 0");
Ret = dio.OutBit ( Id , 0 , 0 );
Ret = dio.OutBit ( Id , 1 , 1 );
}
else {
Debug.Log ("State 1");
Ret = dio.OutBit ( Id , 0 , 1 );
Ret = dio.OutBit ( Id , 1 , 0 );
}
}
}



  • 実行するとカチっという音が鳴り以下の状態になる。


  • ボタンを押すと再度音が鳴り以下の状態になる。以降ボタンを押すたびに上と下の状態を繰り返す。


  • あとはお好きなように使ってください。