ID : 5189
SysInfo
機能
コントローラのシステム情報を返します。
構文
SysInfo(インデックス番号)
指定項目
- インデックス番号
- インデックス番号を整数型データで指定します。
戻り値
バリアント(Variant)型で指定した変数に、インデックス番号に応じたデータ型のデータを返します
解説
下記のようなシステム情報を取得できます。
インデックス番号 | システム情報 | データ型 |
---|---|---|
0 | 製造番号(コントローラのシリアル番号) | 文字列型 |
1 | コントローラ内蔵のネットワークカードのMACアドレス | 文字列型 |
2 | ペンダント接続状態 0:未接続 |
整数型 |
3 | グローバル変数個数情報 配列の0~7の各要素は下に示す変数の個数を示す 0:I型 |
整数型配列 |
4 | CPU情報 0:不明(仮想環境) |
整数型 |
5 | ログイン ユーザ レベル 1000:オペレータ |
整数型 |
6 | 特権タスク動作中 -1:動作中 0:動作中でない |
整数型 |
7 | 操作盤表示中 -1:表示中 0:表示中でない |
整数型 |
8 | 総通電時間(分) | 整数型 |
9 | 総稼働時間(分) | 整数型 |
10 | 累積通電時間(分) | 整数型 |
11 | 累積稼働時間(分) | 整数型 |
12 | 電源入り通電時間(分) | 整数型 |
13 | 電源入り稼働時間(分) | 整数型 |
14 | モータON回数 | 整数型 |
15 | エンコーダバッテリ点検日 -1:超えている 0:超えていない |
整数型 |
16 | コントローラバッテリ点検日 -1:超えている 0:超えていない |
整数型 |
29 | コントローラタイプ 0:RC8 1:RC8A |
整数型 |
30 | セーフティタイプ 0:なし 1:セーフティモーション仕様 |
整数型 |
インデックス番号6~16はVer.1.8.*から使用可能です。
インデックス番号29、30はVer.2.1.*から使用可能です。
関連項目
注意事項
-
用例
用例1
'!TITLE "製造番号の取得"
'製造番号の取得と表示
Sub Sample_SysInfo
Dim aaa As Variant
'製造番号の取得
aaa = SysInfo(0)
'メッセージウィンドウに製造番号を表示
PrintDbg aaa
End Sub
用例2
プログラムを、固有のコントローラでしか動作できないようにするプロテクトの例を下に示します。
以下の手順で実施します。
- プログラム作成者は、プログラム利用者から使用するコントローラのMacアドレスを入手し、プログラムに記述した計算式で解除コードを作成します。作成した解除コードは、プログラム利用者に連絡しておきます。
- プログラム作成者はプログラムを暗号化し、プログラム利用者に渡します。(暗号化操作は「ソースコードの暗号化」を参照)
- プログラム利用者は解除コードをグローバル変数"S0"に入力し、プログラムを実行します。実行時に、プログラムがコントローラのMacアドレスを読込み、解除コード"lic"を生成し、"S0"と比較しますので、正しいコントローラの場合のみ処理が実行されます。
Sub Main
#pragma encrypt(on)
if IsLocked() Then Exit Sub
'ここに処理を記述
#pragma encrypt(off)
End Sub
#pragma encrypt(on)
Function IsLocked( ) As Integer
Dim mac As Variant
Dim lic As String
Dim key As Variant
Dim n As Integer
key = Array( &HAA, &HF5, &H55, &H3C, &H57, &H81 )
mac = split( SysInfo( 1 ), "-" ) ' X1-X2-X3-X4-X5-X6
lic = ""
For n = 0 To 5
lic = lic + Hex( Val( "&H" & mac( n ) ) Xor key( n ) )
Next
'Debug.print "LIC = " & lic & ", MAC = " & SysInfo( 1 )
If lic = S0 Then
IsLocked = False
Else
IsLocked = True
End If
End Function
#pragma encrypt(off)
ID : 5189