ID : 365
Set
機能
I/O型変数のBitをONにします
構文
Set I/O型変数名[, 出力時間[,Mode = 非同期モード]]
指定項目
- I/O型変数名
- I/O型変数名を指定します。
- 出力時間
- 出力(ON)する時間[ms]を整数型データで指定します。省略可能です。省略時はONしたI/OをOFFしません。
- 非同期モード
- モードを整数型データで指定します。Modeオプションを指定すると、システムがOFF出力処理をPACに代わって行います。この項目はVer.1.8.*から使用可能です。
非同期モードを指定する場合は、グローバル変数のI/O型変数を使用します。ローカル変数を使用すると文法エラーになります。
(例) -
Set IO[24], 100, Mode = 2 'IO型のグローバル変数であるため、Mode指定と一緒に使用可能
DefIO aaa = Bit, 24
Set aaa, 100, Mode = 2 'IO型のローカル変数であるため、Mode指定と一緒に使用不可(文法エラー)
解説
I/O型変数名で指定したI/O型変数の全てのBitをONにします。I/O型のローカル変数宣言(DefIO)時にマスクをしている場合はマスクされていないBitのみONします。
連続したIndex番号のI/Oは一度にONできます。
Set IO[128 To 160] 'I/Oポート128~160を全てON
DefIO aaa(3) = Byte, 128
Set aaa(0 To 3) 'I/O型ローカル変数aaaは全て255
出力時間の指定
出力時間を指定した場合は指定時間が経過した時点で指定したI/OをOFFします。
以下は同じ記述です。
Set IO[10], 1000
Set IO[10]
Delay 1000
Reset IO[10]
Modeオプション(Ver.1.8.*から有効)
Modeオプションを指定すると、PACはI/OをON後すぐに次ステップの実行に移行します。そして、PACとは非同期に、システムが経過時間を監視し、経過時間が出力時間に達するとI/OをOFFします。
Modeオプションを指定しない場合は、出力時間に達するまで、次ステップは実行されません。
一時停止時のOFF処理の違いにより、下記の2つのモードがあります。
値 | モード | 内容 |
---|---|---|
1 | 一時停止中はOFFしないモード | 一時停止中も経過時間はカウントアップされますが、一時停止中に出力時間に達してもOFFしません。再び、タスクを動作させた時にOFFします。
|
2 | 一時停止検出直後にOFFするモード | タスクが一時停止になった直後に、強制自動リセット(OFF)を行います。 防護停止時にタスクが一時停止になるのを受けて非同期I/Oをリセットさせたい場合は、このモードを指定します。
![]() |
- 出力時間が経過する前にタスクが停止した場合は、該当タスクでON出力中のI/Oを強制自動リセット(OFF)します。
- 強制自動リセットされたI/Oは、タスクが一時停止から再び実行に移ったとしても、自動的にONになることはありません。
- Modeオプション使用時に、出力時間に-1を設定すると、無限待ちになります。Mode=1と併用するとタスク停止時の自動リセットとして振る舞わせることができます。
- Modeオプションを伴う複数のSETコマンドで、同じI/Oを指定した場合は、後のコマンドでの設定が有効になります。
- 非同期処理中のI/Oに対して、ResetコマンドでOFFしたり、Modeオプションを伴わないSetコマンドでONすることができます。しかし、その間もシステムは経過時間のカウントアップを行い、経過時間が出力時間に達した時にOFFします。
関連項目
注意事項
- 出力時間の指定はタスクの負荷などにより誤差が生じることがあります。また、非常に短い時間の指定は誤差が生じます。
- 出力時間はタスクが一時停止中やステップ停止中でも時間経過します。
用例
'!TITLE "I/Oポートの切り替え"
' I/Oポート番号"240"がONの場合、I/Oポート番号"241"、"220"から"225"をOFFに設定
Sub Sample_Set
' I/Oポート番号"240"をONに設定
Set IO[240]
' I/Oポート番号"241"をONに設定
Set IO[241]
' I/Oポート番号"220"から"225"をONに設定
Set IO[220 To 225]
' I/Oポート番号"240"がONの場合
If IO[240] Then
' I/Oポート番号"241"をOFFに設定
Reset IO[241]
' I/Oポート番号"220"から"225"をOFFに設定
Reset IO[220 To 225]
End If
End Sub
ID : 365