プロパティ名 | 意味 | 設定値 | 説明 |
---|---|---|---|
Password (PARAMで表記する場合は、"ライセンスキー") |
ライセンスキー | ライセンスキー | ベクターにて、送金すると、ライセンスキーが得られます。 このプロパティに、そのライセンスキーを設定すると、制限が解除されます。 |
Port | シリアルポートの番号 | 1,2 | その他、Windowsで対応するポートを設定できます。 |
Bps | ボーレート | 1200,2400,4800,9600,19200, 38400,57600,115200 |
シリアルポートのボーレートを設定します。 |
Bit | ビット | 7,8 | シリアルポートのビットを設定します。 |
Parity | パリティ | 0(ノンパリティ) 1(奇数パリティ) 2(偶数パリティ) |
シリアルポートのパリティを設定します。 |
StopBit | ストップビット | 1(1ビット) 2(2ビット) |
シリアルポートのストップビットを設定します。 Ver 1とは、設定値が異なりますので、ご注意ください。 |
MachineNo | 号機No | 0〜99 | 号機Noを設定します。 RR、RDなどのメソッドを使って値を設定したり、取得する場合に、号機Noを指定できます。 |
Ver | バージョン | - | コントロールのバージョンを取得します。 |
Ver 2 新プロパティ | 主に、FINSコマンド用のプロパティ | ||
Ready | 送信可能 | 設定不可。読取専用。 | 通信コマンド(Send、Read、Writeなど)を実行できる場合、TRUEを返します。 これは、直前の通信処理が終わっているかを調べるためにも利用できます。 |
RsWait | ウェイト時間 | 0〜15 | FINSのウェイト時間を設定します。 |
ICF | ネットワーク中継 | 0:直接 1:ネットワーク(非推奨) |
FINSのICFを設定します。 ネットワークの設定は、サポート対象外 |
DNA | 相手先ネットワークアドレス | 0〜127 | FINSのDNSを設定します。 |
DA1 | 相手先ノードアドレス | 0〜254 | FINSのDA1を設定します。 |
DA2 | 相手先号機アドレス | 0〜255 | FINSのDA2を設定します。 |
TimeOut | タイムアウト時間(ミリ秒) | コマンドの返信を待つ時間を指定します。この時間を経ても返信が無い場合、エラーになります。 |
メソッド名 | 意味 | 引数値 | 戻り値 | 説明 |
---|---|---|---|---|
Open() as Boolean OpenS() as Boolean |
ポートを開く | - | 正常: True エラー: False |
ポートを開き、通信を開始します。 ポートを開けない場合、falseを返します。 OpenSは、Openの特別なものです。 ライセンスキー(Password)が設定されていない場合、 Openを実行すると、シェアウェアの確認ダイアログが 表示されますが、OpenSでは、この表示はありません。 しかし、ライセンスキーが設定されていない場合、 使用期限が過ぎると使用できなくなるのは共通です。 OpenSは、試用期間中に、ダイアログ表示を行いたくない場合や、ASPでの利用の場合に、使います。 |
Close | ポートを閉じます | - | - | ポートを閉じます |
FINSコマンド | 主に、FINSコマンドの送信関係 | |||
ReadCH( area as String, ch as Long, num as Long) as Long |
チャネルデータ取得 (非同期) |
area:エリア種別 ch:アドレス num:データ数 |
正常:0 エラー:詳細 |
メモリエリアの情報を取得する。 例1 データメモリの0チャネルから、2チャネル分を取得する ReadCH("DM", 0, 2); |
ReadCHs( area as String, ch as Long, num as Long) as Variant |
チャネルデータ取得 (同期) |
area:エリア種別 ch:アドレス num:データ数 |
正常: データ配列 エラー: 文字列配列 ret(0):"Error" ret(1):"エラー番号" |
メモリエリアの情報を取得する。 例1 データメモリの0チャネルから、2チャネル分を取得する Dim ret ret = ReadCHs("DM", 0, 2); 正常であれば、ret(0),ret(1),ret(2)に、データが入っています。 エラーの場合は、ret(0)には、"Error",ret(1)には、エラー番号が文字列として入っています。 |
ReadIO( area as String, dataType as String, ch as Long, bit as Long, num as Long) as Long |
データ取得 (非同期) |
area:エリア種別 dataType:データの種類 ch:アドレス bit:ビット num:データ数 |
正常:0 エラー:詳細 |
メモリエリアの情報を取得する。 例1 データメモリの0チャネルから、2チャネル分を取得する ReadIO("DM","C", 0, 0, 2); 例2 リレーの2チャネルの1ビットから、3ビット分を取得する ReadIO("CIO","B", 2, 1, 3); |
ReadIOs( area as String, dataType as String, ch as Long, bit as Long, num as Long) as Variant |
データ取得 (同期) |
area:エリア種別 dataType:データの種類 ch:アドレス bit:ビット num:データ数 |
正常: データ配列 エラー: 文字列配列 ret(0):"Error" ret(1):"エラー番号" |
メモリエリアの情報を取得する。 例1 データメモリの0チャネルから、3チャネル分を取得する Dim ret ret = ReadIOs("DM","C", 0, 0, 2) 正常であれば、ret(0),ret(1),ret(2)に、データが入っています。 エラーの場合は、ret(0)には、"Error",ret(1)には、エラー番号が文字列として入っています。 |
WriteCH( area as String, ch as Long, data as Variant, num as Long) as Long |
チャネルデータ書込 (非同期) |
area:エリア種別 ch:アドレス data:データ (値、または、配列) num:データ数 |
正常:0 エラー:詳細 |
メモリエリアにチャネルデータを書き込む。 チャネルデータが1つの場合は、そのまま、複数の場合は、配列で指定します。 例1 データメモリの0チャネルにデータ(4)を書き込む。 WriteCH("DM", 0, 4, 2); 例2 データメモリの0チャネルから、2チャネル分を書き込む。 d[0] = 1; d[1] = 3; WriteCH("DM", 0, d, 2); |
WriteCHs( area as String, ch as Long, data as Variant, num as Long) as Long |
チャネルデータ書込 (同期) |
area:エリア種別 ch:アドレス data:データ (値、または、配列) num:データ数 |
正常:0 エラー:詳細 |
メモリエリアにチャネルデータを書き込む。 チャネルデータが1つの場合は、そのまま、複数の場合は、配列で指定します。 例1 データメモリの0チャネルにデータ(4)を書き込む。 WriteCHs("DM", 0, 4, 2); 例2 データメモリの0チャネルから、2チャネル分を書き込む。 d[0] = 1; d[1] = 3; WriteCHs("DM", 0, d, 2); |
WriteIO( area as String, dataType as String, ch as Long, bit as Long, data as Variant, num as Long) as Long |
データ書込 (非同期) |
area:エリア種別 dataType:データの種類 ch:アドレス bit:ビット data:データ (値、または、配列) num:データ数 |
正常:0 エラー:詳細 |
メモリエリアに、チャネルやビットデータを書き込む。 チャネルデータが1つの場合は、そのまま、複数の場合は、配列で指定します。 例1 データメモリの0チャネルにデータ(4)を書き込む。 WriteIO("DM", "C", 0, 0, 4, 2); 例2 データメモリの0チャネルから、2チャネル分を書き込む。 d[0] = 1; d[1] = 3; WriteIO("DM", "C", 0, 0, d, 2); |
WriteIOs( area as String, dataType as String, ch as Long, bit as Long, data as Variant, num as Long) as Long |
データ書込 (非同期) |
area:エリア種別 dataType:データの種類 ch:アドレス bit:ビット data:データ (値、または、配列) num:データ数 |
正常:0 エラー:詳細 |
メモリエリアに、チャネルやビットデータを書き込む。 チャネルデータが1つの場合は、そのまま、複数の場合は、配列で指定します。 例1 データメモリの0チャネルにデータ(4)を書き込む。 WriteIOs("DM", "C", 0, 0, 4, 2); 例2 データメモリの0チャネルから、2チャネル分を書き込む。 d[0] = 1; d[1] = 3; WriteIOs("DM", "C", 0, 0, d, 2); |
SendFINS( command as String, data as String) as Long |
FINSコマンドの送信 (非同期) |
command:コマンド data:任意の文字列 |
正常:0 エラー:詳細 |
任意のデータを送信します。 このメソッドにより、全てのFINSコマンドを利用することができます。 例1 リレーの0チャネルから、2チャネル分を取得する SendFINS("0101", "B00000000002"); |
SendFINSs( command as String, data as String) as String |
FINSコマンドの送信 (同期) |
command:コマンド data:任意の文字列 |
正常: 値 エラー: 空文字列 |
任意のデータを送信します。 このメソッドにより、全てのFINSコマンドを利用することができます。 例1 データメモリの1チャネルから、2チャネル分を取得する String ret = SendFINSsyn("0101", "820001000002"); |
GetRun() as Long | シーケンサの動作を取得します | - |
-1:エラー 0:プログラム 1:モニタ 2:運転 |
シーケンサの動作状況を取得 |
SetRun( mode as Short) as Long |
シーケンサの動作を設定 | mode: 0:プログラム 1:モニタ 2:運転 |
正常:0 エラー:詳細 |
シーケンサの動作を設定します |
SendEx( val as String, Type as Long) as Boolean |
任意のデータの送信 (非同期) |
val: 送信データ Type: 送信のタイプ (0:通常 1:デリミタ 2:なし) |
正常:True エラー: False |
シーケンサに任意のコマンドを送信することができます。 コントロールは、FCSとターミネータを自動的に付けて送信しますので、FCS以降の文字列をメソッドに与える必要はありません。 シーケンサのデータは、OnComExイベントを使って受け取ります。 例: SendEx("@00TSE",0) この例を実行すると、OnComExイベントが発生し、@00TSE02*を得ることができます。 Typeについて 0が指定されると、与えられた文字列に、FCSとターミネータを自動的に付けて送信します。 1が指定されると、与えられた文字列に、FCSとデリミタを自動的に付けて送信します。 2が指定されると、与えられた文字列のみを送信します。 通常は、0を指定します。 132文字以上のコマンドを送信する場合、一度に送信することができませんので、分割して、送信することになります。 この場合、最後の文字列と、途中の文字列を区別するために途中の文字列は、デリミタを付加した文字列となります。 例えば、300文字を送信する場合、3分割して、送信しますが、1、2番目の分については、デリミタを、最後の分についてターミネータを付加する必要があります。 |
SendExsyn( val as String, Type as Long) as String |
任意のデータの送信 (同期) |
val: 送信データ Type: 送信のタイプ (0:通常 1:デリミタ 2:なし) |
正常: 値 エラー: 空文字列 |
シーケンサに任意のコマンドを送信し、返信を受け取ります。 SendExが送信後、すぐに制御を返すのに対して、この関数は、シーケンサからの返信を待って、制御を返します。 エラーが発生した場合、空文字列を返します。 正常に終了した場合、シーケンサからのレスポンスデータが返ります。 ただし、シーケンサからレスポンスデータのうち、デリミタ(CR)は、含まれません。 コマンドの送信に関しては、SendExと同等です。 |
Cコマンド | Cコマンドの送信関係 | |||
RR( ch as Long) as Boolean |
リレー読込 (非同期) |
アドレス | 正常: True エラー: False |
アドレス(ch)のリレー(内部リレー)の値を 読み出すコマンドを送信します。 シーケンサのデータは、OnComイベントを 使って受け取ります。 |
RRsyn( ch as Long) as Long |
リレー読込 (同期) |
アドレス | 正常: 値 エラー: -1 |
アドレス(ch)のリレー(内部リレー)の値を 読み出します。 |
WR( ch as Long, val as Long) as Boolean |
リレー書込 (非同期) |
ch: アドレス val: 書き込む値 |
正常: True エラー: False |
アドレス(ch)のリレー(内部リレー)に 値(val)を書き込むコマンドを送信します。 シーケンサのデータは、OnComイベントを 使って受け取ります。 |
WRsyn( ch as Long, val as Long) as Long |
リレー書込 (同期) |
ch: アドレス val: 書き込む値 |
正常: 0 エラー: -1 |
アドレス(ch)のリレー(内部リレー)に 値(val)を書き込みます。 |
RD( ch as Long) as Boolean |
データメモリ読込 (非同期) |
アドレス | 正常: True エラー: False |
アドレス(ch)のデータメモリの値を 読み出すコマンドを送信します。 シーケンサのデータは、OnComイベントを 使って受け取ります。 |
RDsyn( ch as Long) as Long |
データメモリ読込 (同期) |
アドレス | 正常: 値 エラー: -1 |
アドレス(ch)のデータメモリの値を 読み出します。 |
WD( ch as Long, val as Long) as Boolean |
データメモリ書込 (非同期) |
ch: アドレス val: 書き込む値 |
正常: True エラー: False |
アドレス(ch)のデータメモリに値(val)を 書き込むコマンドを送信します。 シーケンサのデータは、OnComイベントを 使って受け取ります。 |
WDsyn( ch as Long, val as Long) as Long |
データメモリ書込 (同期) |
ch: アドレス val: 書き込む値 |
正常: 0 エラー: -1 |
アドレス(ch)のデータメモリに 値(val)を書き込みます。 |
コマンド | 名称 | 機能 |
---|---|---|
0101 | I/O メモリエリアの読出 | 連続したI/O メモリエリアの内容の読み出し |
0102 | I/O メモリエリアの書込 | 連続したI/O メモリエリアの内容の書き込み |
文字列 | 意味 |
---|---|
CIO | チャネル I/O |
WR | 内部補助リレー |
HR | 保持リレー |
AR | 特殊補助リレー |
TIM | タイマ |
CNT | カウンタ |
DM | データメモリ |
TK | タスクフラグ |
IR | インデックスレジスタ |
DR | データレジスタ |
CP | クロックパルス |
CF | コンディションフラグ |
EMCB | カレントの拡張データメモリ |
EMCN | カレントの拡張データメモリの番号 |
EM00 〜 EM0F EM10 〜 EM18 | 拡張データメモリ |
文字列 | データの意味 |
---|---|
B | ビット |
BF | 強制 ON/OFF付 ビット |
C | チャネル(ワード) |
CF | 強制 ON/OFF付 チャネル(ワード) |
U | アップフラグ |
UF | 強制 ON/OFF付 アップフラグ |
NOW | 現在値 |
S | ステータス |
B | BF | C | CF | U | UF | NOW | S | |
---|---|---|---|---|---|---|---|---|
CIO | 30 | 70 | B0 | F0 | ||||
WR | 31 | 71 | B1 | F1 | ||||
HR | 32 | 72 | B2 | F2 | ||||
AR | 33 | B3 | ||||||
TIM | 09 | 49 | 89 | |||||
CNT | 09 | 49 | 89 | |||||
DM | 02 | 82 | ||||||
TK | 06 | 46 | ||||||
IR | DC | |||||||
DR | BC | |||||||
CP | 07 | |||||||
CF | 07 | |||||||
EMCB | 0A | 98 | ||||||
EMCN | BC | |||||||
EM00 - EM0F EM10 - EM18 |
xx | xx |
値 | 意味 |
---|---|
-1 | シーケンサからのコマンドを受けました。 通常、パソコンからのコマンドに対して、シーケンサが値を返しますが、このエラーは、シーケンサのSEND命令によるデータを受けた場合に発生します。 |
-11 | チャネル(ワード)の指定範囲を超えました。 |
-12 | ビットの指定範囲を超えました。 |
-13 | 取得するデータ数が範囲を超えました。 |
-21 | エリア種別の設定が不正です。「CIO」、「WR」などの設定を見直してください。 |
-22 | データの種類の設定が不正です。「B」「C」などの設定を見直してください。 |
-23 | I/Oメモリ種別を特定できません。エリア種別と、データの種類の指定を見直してください。 |
-24 | FINSコマンドが不正です。 |
-30 | 書き込みデータに不正な値が含まれています。 |
-101 | 送信に失敗しました。ポートが開かれていないか、コマンド送信中のため、送信できない状態です。 |
-102 | タイムアウトしました |
-201 | 実装していないFINSコマンドです |
-202 | データの長さが一致しません |
-203 | 送信コマンドと受信コマンドが一致しません |
-205 | 受信データに異常がありました。 |
正の値 | FINSコマンドの異常を知らせるレスポンスコードが、そのまま、返ります。 |
0 | (参考)正常です。 |
イベント
イベントは、非同期のメソッドを実行した場合にのみ発生します。
イベント名 | 意味 | 引数値 | 説明 |
---|---|---|---|
OnComFINS( command as Variant val as Variant) |
FINSデータ受信 | command: 受信テキストを分割した配列 val: 読み出しデータの配列、または、メッセージの配列 |
シーケンサに非同期のFINSコマンドメソッドを使用して、コマンドを送信し、シーケンサより正常に応答が返ってきた時、イベントが発生します。 command: command(0) コマンド前までのデータ ICF、DA2などが含まれます。 command(1) コマンドコード。 “0101”、”0102”など、4文字のコマンドコード command(2) 終了コード “0000”、”0101”など、4文字のレスポンスコード command(3) 終了コードに続くデータ データの読み出し系のコマンドの場合、読み出されたデータ command(4) FCS val: データ読み出し系のコマンド(ReadCH,、ReadIO)を送信した場合、チャネルやビットデータが配列として渡されます。 データ書き込み系のコマンド(WriteCH、WriteIO)を送信した場合、val(0)に文字列の”Ok”が渡されます。 エラーが発生した場合、val(0)に文字列の”Error”が渡されます。 このイベント内で、ReadIO、WriteIOなどのコマンドを実行できますが、その場合は、すぐに、この関数を抜けるようにしてください。長い処理を行うと、この関数を実行中に、再びイベントが発生し、動作が不安定になります。 |
OnCom(Res as Long) | データ受信 | 値 | シーケンサに非同期のメソッドを使用して、コマンドを送信し、シーケンサより正常に応答が返ってきた時、イベントが発生します。 RR、RDコマンドを送信した場合は、Resに値が入ります。 このイベント内で、RR、RDなどのコマンドを実行できますが、その場合は、すぐに、この関数を抜けるようにしてください。長い処理を行うと、この関数を実行中に、再びイベントが発生し、動作が不安定になります。 例:危険な記述 Private Sub Rs1.OnCom(Byval Res as Long) Rs1.RR 0 for i = 0 to 1000000 ・・・この関数を実行中に、次のイベントが発生し2重に実行されてしまいます。 next End Sub また、コマンド送信後の構文にブレークポイントを設定し停止させると、再開してもイベントが発生しません。 上記の例では、For文にブレークポイントを設定すると、シーケンサからデータが返ってきても、次のイベントが発生しません。 |
OnComEx(Res as String) | データ受信 (SendEx専用) |
値 | シーケンサにSendEx関数を使ってデータを送信し、シーケンサより正常に応答が返ってきた時、イベントが発生します。 Resは、シーケンサからのレスポンスデータです。 シーケンサからレスポンスデータのうち、デリミタ(CR)は、Resに含まれません。 例えば、 SendEx("@00TSE",0) を実行した場合、「@00TSE02*」がResに入り、シーケンサからのデータに含まれる(CR)は除かれます。 |
OnError(lErr) | エラー発生 | エラー番号 | シーケンサにコマンドを送信し、シーケンサより応答が返ってこない場合、イベントが発生します。 現在、コマンド送信後、3秒経っても返信が無い場合、エラーとします。 |