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 は、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 の価格、内容等については、こちらから問い合わせください。