テクセル

PowerShellでJoyWatcherのタグ値を読み書き


PowerShellのスクリプトからJoyWatcherのタグ値を読み書きします。実行には、 jwComDNet.dll を使います。また、 PowerShellは、32ビット版を使用します。下記プログラムと jwComDNet.dll を同じフォルダに置きます。

使用例


# jwcom.ps1 jwComDNet操作例

Set-StrictMode -Version latest

Add-Type -Path ($PSScriptRoot + "/jwComDNet.dll")

$jwComDNetd = New-Object jwComDNet.JwCom

$sv = ""      # バージョン情報取得
$dv = $jwComDNetd.getVersion([ref]$sv)
Write-Host ($sv + ":" + $dv.toString())

$ir = $jwComDNetd.open()
Write-Host [string]$ir
if ($ir -eq 0){
   Write-Host "jw 接続失敗"
   exit
}
Write-Host "jw 接続"

[string[]] $stag = New-Object string[] 12
$stag[0] = "RCPU`$WORD.D0`$VALUE"               # word
$stag[1] = "RCPU`$WORD.D1`$VALUE"
$stag[2] = "RCPU`$DWORD.D20`$VALUE"             # dword
$stag[3] = "RCPU`$DWORD.D22`$VALUE"
$stag[4] = "RCPU`$FLOAT.D40`$VALUE"             # float
$stag[5] = "RCPU`$FLOAT.D42`$VALUE"
$stag[6] = "RCPU`$DOUBLE.D50`$VALUE"            # double
$stag[7] = "RCPU`$DOUBLE.D54`$VALUE"
$stag[8] = "RCPU`$STR.D100`$VALUE"              # string
$stag[9] = "RCPU`$STR.D110`$VALUE"
$stag[10] = "RCPU`$MDEV.M0`$VALUE"              # bool
$stag[11] = "RCPU`$MDEV.M1`$VALUE"
[int[]] $itag = New-Object int[] 0
$br = $jwComDNetd.getTagId($stag, [ref]$itag)   # タグ登録 id取得
if ($br -ne 0){
   Write-Host "タグ登録失敗"
   $jwComDNetd.close()
   exit
}

[object[]] $obrv = New-Object object[] 0
$ir = $jwComDNetd.jwRead($itag, [ref]$obrv)     # タグ値読み込み
if ($ir -ne 0){
   Write-Host ("タグ値読み込みエラー:" + [string]$ir)
   $jwComDNetd.close()
   exit
}

Write-Host $obrv[0]
Write-Host $obrv[2]
Write-host $obrv[4]
Write-Host $obrv[6]
Write-Host $obrv[8]
Write-Host $obrv[10]

[object[]] $obwv = New-Object object[] 6    # 書き込みデータ
$obwv[0] = $obrv[0] + 2
$obwv[1] = $obrv[2] + 4
$obwv[2] = $obrv[4] + 2.5
$obwv[3] = $obrv[6] * 1.2
$obwv[4] = "漢字英数字123ABC"
$obwv[5] = $obrv[10] -bxor 0x1              # ビットの反転
[int[]] $iwtag = New-Object int[] 6         # 書き込みデータ用タグID
$iwtag[0] = $itag[1]
$iwtag[1] = $itag[3]
$iwtag[2] = $itag[5]
$iwtag[3] = $itag[7]
$iwtag[4] = $itag[9]
$iwtag[5] = $itag[11]

$ir = $jwComDNetd.jwWrite($iwtag, $obwv)    # タグ値書き込み
if ($ir -ne 0){
   Write-Host ("タグ値書き込み失敗" + [string]$ir)
   $jwComDNetd.close() 
   exit
}

$obv = $jwComDNetd.jwRead1($itag[1])        # 1タグ値を読み込み
Write-Host $obv
$ir = $jwComDNetd.jwWrite1($itag[3], 5423)  # 1タグ値書き込み

#pause
#Start-Sleep -m 10000

$jwComDNetd.close()
   

jwComDNet.dll

jwComDNet.dll は、joyWatcher のタグを読み書きする.NET用のDLLです。 32ビット版で、実行には .NET Framework 4.5 が必要です。C# でも使用可能です。

関数一覧

関数名 説明
open joyWatcherのネットワークに接続します。
close joyWatcherとの接続を切断します。
closeForce joyWatcher との接続を強制的に切断します。
getTagID タグの登録を行いタグのIDを取得します。
jwRead タグの現在値を読み込みます。
jwRead1 1タグの現在値を読み込みます。
jwWrite 指定されたタグに値を書き込みます。
jwWrite1 指定された1タグに値を書き込みます。
jwWrite_LS 指定されたタグに値を書き込みます。文字列は、16文字(バイト)以上指定可能です。

jwComDNet.dll は、JoyWaApi.dll をコール(使用)しています。
joyWatcher は、東京ガス(株)の製品です。
jwComDNet.dll の価格、内容等については、こちらから問い合わせください。

PowerShellメモ
©2023 TEXCELL CORPORATION
テクセル株式会社