命令語の要注意なポイントを記載します。
演算結果反転
INV
演算結果が反転する範囲は限定されることに注意しましょう
演算結果パルス化
MEP MEF
インデックス装飾したものやループ内で使用する場合はEGP EGFを使用しましょう
EGP EGFはエッジリレーと組み合わせて使用する
VOZ0の手前までの演算結果をエッジリレーは保持する
いわばパルスの記憶ができるリレー。
カウンタ
設定値が0の場合は1と同じ処理
PLS PLF
PLS命令実行後にCPUをRUN→STOP→RUNとしてもPLS命令は実行されない
FF ビットデバイス出力反転
ON OFFを切り替える場合に便利
ビットデバイスシフト
例えばM14と指定した場合はM13の値をM14にシフトしてきて、M13をOFFする動作となる
なのでビットシフトを行う場合は必ず大きな割付のビットから処理を行うこと
CMP ユニバーサルモデル Lのみ対応
大小比較をまとめて行うことができる
+ー
引数が2個と3個の違い
2個の場合だと毎スキャン実行されるとどんどん加算・減算されるが3個だと代入の形になり
毎スキャンでどんどん増えていくことがない
ダブルワードの加減乗除
加算 減算 2ワード+2ワード=2ワード
乗算 除算 2ワード+2ワード=4ワード
上下バイト交換
XCHはワード単位での交換だったが、SWAPは1ワード内の上位下位を交換する
MCプロトコルや上位リンクなど通信において上位下位の反転が必要な場合に便利
IOリフレッシュ
ダイレクト入出力でいいきがするが、どんなときに使うのだろう。。。
1相アップダウンカウンタ
第一引数にはXのみ指定可能
第一引数の指定デバイス+1のデバイスが
ON=アップカウント
OFF=ダウンカウント となる
カウントデバイスはリングデバイスとなっている
ティーチングタイマ
あるデバイスのONしている時間を計測するのに用いる
測定単位も指定可能
排他的論理和 XOR
比較対象でON OFFが異なっている箇所のビットがONする
否定排他的論理和 XNR
比較対象のON OFFが一致している箇所のビットがONする
一致さえしていればよく。OFF同士でもONする
右ローテーション
ROR RCR
キャリフラグをローテーション先に含めるか否かで分かれている
RORは含めない
ビットテスト TEST
ワードデバイスの特定のビットのON OFF状態を指定のビットに反映できる
ワードの接点指定と同じなので、あまり覚える必要はないのかもしれない
データサーチ SER
第一引数で指定された値をキーとして
第二引数からn点分のワードデータの中から検索します。
第三引数に最初に一致したデバイス番号の相対値(第二引数からの位置)
第三引数+1に一致した個数を格納する
ビットチェック SUM
指定したワード内でONしているビットの個数を数える
デコード DECO
バイナリ値→ビット位置ON
バイナリで6であれば、指定したワードの6ビット目をONする
第三引数のnは第一引数のバイナリ値の有効桁数を示す(3なら3ビットのバイナリ値 最大値7)
第三引数は0~8が指定できる
エンコード ENCO
ビット位置ON → バイナリ値
指定したワードに4ビット目がONしていれば、バイナリ値で4と出力する
第三引数は第一引数の有効ビット数を示す(3なら2^3=8ビットが対象となる)
第三引数は0~8が指定できる
16ビットの4ビットずつ分離させる命令
DIS
第三引数は0~4の範囲しか指定できない
n=1とした場合は、ワードの下位4ビットのみが取り出される
バイト単位の分離 結合
WTOB BTOW
通信の伝文組み立てに非常に便利
BTOWのとき上位バイトは無視されることに注意
最大値検索
MAX MIN
第一引数で指定されたデバイスから第三引数分最大値・最小値を検索して結果を第二引数に格納
並び替え
SORT
1スキャンでは完了しないことに注意
第一引数がソートする先頭デバイス
第二引数が先頭からデータの個数
第三引数が一度の実行で比較するデータ個数
実行完了までの回数は右の式で求まる 実行完了までの最大実行回数=(n)*(n-1)/2
例えばn=10ならば、45回かかる計算となる
そこで第三引数を2にすると45/2 = 22.5 → 23スキャンでよくなる
第四引数は並び替えが完了した時にONするビットである。
このビットは自動でOFFしないためユーザー側でOFFの面倒を見る必要がある
第五引数から2点分はシステムが占有する領域となる。使用していない領域を割り当てよう
ワードデータ合計値
WSUM
第一引数で指定したデバイスから第三引数分のデバイスの合計値を第二引数に格納します。
BREAK
第一引数にはくりかえり処理回数の残り数を格納する
ただしNEXTに到達して初めて回数が減るためBREAKしたときのループも残りとしてカウントされている
サブルーチンコール
CALL
ファンクションデバイスを用いることで引数や戻り値を受け取ることができる
その際にデバイスの占有範囲に注意が必要
ファンクションデバイスで予約されている領域をサブルーチン内で直で変更してしまうと
戻り値が反映されないため直で値の変更をおこなってはいけない