テクセル

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


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


PowerShellスクリプト