OpBCD

2桁の10進数を2進化10進数 (BCD)に変換し、指定のバイトポートに出力します。

書式
OpBCD ポート番号, 出力データ [, Forced]

パラメーター

ポート番号
I/Oの出力バイトを指定します。指定数値は、それぞれ下記のように出力ビットに対応します。

ポート番号 出力ビット
0 0-7
1 8-15
2 16-23
3 24-31
... ...
出力データ
ポート番号で指定した出力グループの出力パターンを、0から99の整数値で指定します。2番目の桁 (1の位)は、選択されたグループのうち下位4出力ビットを、1番目の桁 (10の位)は、上位4出力ビットを表わします。
Forced
省略可能です。通常は省略します。

解説
OpBCDは、8個の出力ビットをBCDで同時に設定します。標準および拡張出力ビットは、8個ずつ1組にグループ化されています。OpBCD命令のポート番号パラメーターで、どのグループ (どの8個の出力ビット)を使うか指定します。例えば、ポート番号 = 0 のとき出力ビット0から7、ポート番号 = 1のとき 出力ビット8から15を指定します。

ポート番号 (8個の出力ビット)を選択したのち、出力データパラメーターで特定の出力パターンを定義します。出力データパラメーターは、1または2桁の値で、有効範囲は0から99です。1番目の桁 (10の位)は、ポート番号で選択した8出力ビットのうち出力の上位4ビットを、2番目の桁 (1の位)は、ポート番で選択した8出力ビットのうち出力の下位4ビットを表わします。

BCDでは各桁の有効数値が0から9までなので、すべてのI/Oの組み合わせを満たすことができません。下記表は、ポート番号=0のときのI/Oの組み合わせ例と、それに対応する出力番号値を示します。

出力設定 (出力番号)

出力番号 7 6 5 4 3 2 1 0
01 Off Off Off Off Off Off Off On
02 Off Off Off Off Off Off On Off
03 Off Off Off Off Off Off On On
08 Off Off Off Off On Off Off Off
09 Off Off Off Off On Off Off On
10 Off Off Off On Off Off Off Off
11 Off Off Off On Off Off Off On
99 On Off Off On On Off Off On

BCDでは、10進数値でしか指定することができません。そのため、BCDを用いるOpBCD命令ではすべての出力ビットをオンすることはできないことになります。出力番号値の最大値は、各桁ともに"9"なので、OpBCDで使える最大の値は、"99"になります。上記の表を見ると、"99"ではすべての出力をオンすることができないことがわかります。出力番号値が"99"のときの出力状態は、0, 3, 4, 7がオンで、他はすべてオフになっています。

注意


OpBCD とOutの違い

SPEL+のOutとOpBCDは、下記の点で大きく異なります。

  • OpBCD命令は、2桁のBCDフォーマットを用いて、指定された8ビットポートの上位4ビット、下位4ビットそれぞれの出力ビットをオン、またはオフで設定します。よって、4ビットの状態が9 (&B1001) を超える &B1010~&B1111 は設定できません。

  • Out命令は、出力データの値をそのまま8ビットポートに出力します。
    例: Out 8, &hFF 'ポート番号8(64~71)のビットを全てOnにします。

  • リモートに設定された出力ビット

    リモートに設定されている出力ビットに対し、OpBCDがオンするよう指定するとエラーになります。リモートの出力ビットは、システムの状態に応じて自動的にオン、またはオフしています。リモートについての詳細は、以下のマニュアルを参照してください。
    "Epson RC+ ユーザーズガイド"

    [セットアップ]メニューから[システム設定]-[コントローラー]-[リモート]パネルからリモートコネクターの個々のビットの設定(リモートまたはI/Oに設定するなど)を行うことができます。

  • 非常停止時の出力

    ロボットコントローラーには、非常停止時にはすべての出力がオフする機能があります。この機能を有効、あるいはオフするには、[セットアップ]メニューから[システム設定]-[コントローラー]-[環境設定]パネルの、[非常停止で出力ポートをOFF]チェックボックスの設定を行います。

  • Forcedフラグ

    NoPauseタスク, NoEmgAbortタスク (Xqt時に、NoPauseやNoEmgAbortを指定して開始された特別なタスク)、およびバックグラウンドタスクから、非常停止中や安全扉開時にI/O出力のオンを行う場合にこのフラグを指定します。

    非常停止中や安全扉開時にI/O出力が変化するのでシステム設計上の注意が必要です。


参照
In関数, InBCD関数, MemOff, MemOn, MemSw関数, Off, On, Oport関数, Out, Sw関数, Wait

OpBCD使用例
下記は、メインタスクが"iotask"という名前のタスクを起動するプログラムです。"iotask"は、出力ビット1 と 2をオンしてから出力ビット0 と 3をオンする簡単なタスクです。出力ビット1と2がオンすると、出力ビット0 と 3がオフし、また前者がオフすると後者はオンします。

Function main
    Xqt 2, iotask
    Go P1
    .
    .
    .
Fend

Function iotask
    Do
        OpBCD 0, 6
        OpBCD 0, 9
        Wait 10
    Loop
Fend

下記はコマンドウィンドウからの簡単な操作例です。

> OpBCD 1,6    '出力1と2をオン
> OpBCD 2,1    '出力8をオン
> OpBCD 3, 91  '出力24, 28, 31をオン