Delphi で IP Sensor 9201 を使ってみる

ネットワークを介して、入力信号 4 点を取り込むボードです。リンクは、こちらです。
部品を実装していないだけで、ボードとしては、8 点入力に対応しているようです。



IPアドレスのデフォルト値は、"192.168.0.100"です。
ブラウザで、192.168.0.100 を開き、ユーザー名:admin パスワード:12345678 を入力すると、
I/O のチェックや、IP アドレス、パスワードの変更が行えるユーティリティが立ち上がります。
添付の CD-ROM に英語と中国語のマニュアルが入っています。
VC++, VB のサンプルも入っていますが、同梱の socket.dll を使うだけなので、解凍する必要はありません。

完成ボード2枚(テスト用スイッチ、LED付)、接続ケーブル、ACアダプター、これだけ入って \3,000.
※入手したものは、ボードの半田付け 8 か所の修正が必要でした。日本語の説明書が入っていました。

通信エラーの検出が出来ないようですが、マルチスレッドを使えば、どうにかなるかも・・・です。


同梱の socket.dll を Delphi で使う
※exe と同じフォルダに socket.dll をコピーして下さい。

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

  //************************************************
  // for IP Sensor 92XX
  // exe と同じフォルダに socket.dll が必要
  //************************************************
  // set up IP Address
  procedure setip( m_IPaddress: AnsiString); stdcall;
        external 'socket.dll' name  'setip'; // Setting IP Address

  // setup status of output(P6)
  function  setdata(m_setdata: integer): integer; stdcall; // Setting P6 value
        external 'socket.dll' name  'setdata';

  // Clear the output status (P6)
  function cleandata(m_cleandata: integer):integer; stdcall; // Clean P6 value
        external 'socket.dll' name  'cleandata';

  // receive status of input(P6)
  function receivep6(): integer; stdcall; // Get P6 status
        external 'socket.dll' name  'receivep6';

  // receive status of input (P5)
  function receive(): integer; stdcall; // Get P5 status
        external 'socket.dll' name  'receive';

  function transfer(m_iostatus: integer): integer; stdcall; // Setting P6 status
        external 'socket.dll' name  'transfer';

  function transferp5(m_iostatus: integer): integer; stdcall; // For 9203E(IP Motor)
        external 'socket.dll' name  'transferp5';


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  src: AnsiString;
begin
  src := '192.168.0.100';

  // IP アドレスをセット
  setip(src);

  // 8 ビット整数が返ってくる (通信異常は、検出できない)
  // 実装は、1, 4, 32, 128 の 4 点
  Edit1.Text := IntToStr(255 - receive);

end;

end.