PowerShellのスクリプトからJoyWatcherのタグ値を読み書きします。実行には、 jwComDNet.dll を使います。
□ プログラム例
プログラムの実行環境
- windows のバージョンwindows11
- powershell のバージョン5.1
- joyWatcher のバージョン10.1
- 接続PLC三菱電機(株)iQ-R
下記プログラムと jwComDNet.dll は、同じフォルダに置きます。Powershell は、 32ビット版を使用して下さい。
# jwcom.ps1 jwcom操作例 jwComDNet.dll 32bit
Set-StrictMode -Version latest
Add-Type -Path (Join-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 $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.D120`$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_LS($itag, [ref]$obrv) # タグ値読み込み
if ($ir -ne 0){
Write-Host ("タグ値読み込みエラー:" + [string]$ir)
$jwComDNetd.close()
exit
}
# タグ値表示
$il = $obrv.Length
for($ia = 0; $ia -lt $il; $ia++){
Write-Host $obrv[$ia].ToString()
}
[object[]] $obwv = New-Object object[] 6 # 書き込みデータ
$obwv[0] = 123 # word
$obwv[1] = 0x100000 # dword 1048576
$obwv[2] = 2.236 # float
$obwv[3] = 6.02e23 # double 6.02×10~23
$obwv[4] = "漢字英数字123ABCabc" # 文字列
$obwv[5] = $obrv[10] -bxor 0x1 # bit反転
[int[]] $iwtag = New-Object int[] 6 # 書き込みデータ用タグID
$iwtag[0] = $itag[0] # D0
$iwtag[1] = $itag[2] # D10,D11 dword
$iwtag[2] = $itag[4] # D40,D41 float
$iwtag[3] = $itag[6] # D50-D53 double
$iwtag[4] = $itag[8] # D100~ string
$iwtag[5] = $itag[10] # M0
$ir = $jwComDNetd.jwWrite_LS($iwtag, $obwv) # タグ値書き込み
if ($ir -ne 0){
Write-Host ("タグ値書き込み失敗" + [string]$ir)
$jwComDNetd.close()
exit
}
pause
$jwComDNetd.close()
Write-Host "Jw 切断"
□ jwComDNet.dll
jwComDNet.dll は、joyWatcher のタグ値を読み書きする.NET用のDLLです。 32ビット版で、実行には .NET Framework 4.5 が必要です。C# でも使用可能です。
クラス JwCom のメソッド一覧
| メソッド名 | 説明 |
|---|---|
| open | joyWatcherのネットワークに接続します。 |
| close | joyWatcherとの接続を切断します。 |
| closeForce | joyWatcher との接続を強制的に切断します。 |
| getTagID | タグの登録を行いタグのIDを取得します。 |
| jwRead | タグの現在値を読み込みます。 |
| jwRead1 | 1タグの現在値を読み込みます。 |
| jwRead_LS | タグの現在値を読み込みます。文字列は、長さ16文字(16バイト)以上に対応します。 |
| jwWrite | 指定されたタグに値を書き込みます。 |
| jwWrite1 | 指定された1タグに値を書き込みます。 |
| jwWrite_LS | 指定されたタグに値を書き込みます。文字列は、長さ16文字(バイト)以上に対応します。 |
| getVersion | 本 Dll のバージョン情報を取得します。 |
jwComDNet.dll は、JoyWaApi.dll をコール(使用)しています。
joyWatcher は、東京ガス(株)の製品です。
jwComDNet.dll の価格、内容等については、こちらから問い合わせください。
