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 サーバ通信用 DLL jwComDNet.dll を参照してください。
joyWatcher は、東京ガス(株)の製品です。
