目標値一致OFF (パルス出力)
経過値がパルス出力の目標値と一致したとき、指定した出力が直ちにFALSEになります。
入力
パルス出力チャンネル: 0~3
次の範囲で、32ビットデータの目標値を指定してください: -2147483467~+2147483648
出力
経過値が目標値と一致したとき、出力がFALSEになります。 Y0~Y1F
パルス出力図
目標値: -200
パルス出力の経過値
実行条件
"パルス出力制御中" フラグ
PLC 出力
経過値が目標値と一致したとき、PLCの出力がFALSEになります。同時に、"パルス出力制御中"フラグがFALSEになり、命令の実行が終了します。実際に出力として使用されていないデバイスは、アドレスWYのメモリ上でのみセット、リセットします。
割り込み動作
経過値が目標値に一致したとき、割り込みプログラムが実行されます。タスクリストの"Interrupt"に登録されると自動的に許可された状態になります。割り込みプログラム番号は、それぞれのチャンネルに割り付けられます。
割り込み8 |
チャンネル0 |
割り込み9 |
チャンネル1 |
割り込み10 |
チャンネル2 |
割り込み11 |
チャンネル3 |
使用するチャンネルに対応するシステムレジスタには "パルス出力" を指定してください。
この命令が実行されると、対応するチャンネルの"パルス出力制御中フラグ" (例: sys_bIsPulseChannel0ControlActive)がTRUEになります。このフラグがTRUEの間は、同じチャンネルに対して他のF166_PulseOutput_Set、F167_PulseOutput_Reset命令を実行することはできません。
この命令は、F173_PulseOutput_PWMを除くすべてのパルス出力命令に対して有効で、各パルス出力命令の実行後、実行前のいずれでも実行することができます。
他の命令(OUT、SET、RST、KEEP、その他のF命令など)との出力の重複使用は、FPWIN Proでは検出することはできません。
パルス出力命令の実行をキャンセルするには、パルス出力制御コード(sys_wHscOrPulseControlCode)を格納しているデータレジスタのビット2をTRUEにセットします。その後、パルス出力制御フラグがFALSEになります。命令の実行を再び有効にするには、ビット2をFALSEに戻します。
通常プログラムと割り込みプログラムの両方に、同じチャンネルについて記述する場合、同時に実行されないようにしてください。
位置決めプログラムの作成にあたっては、強制停止ができるようにプログラミングすることをおすすめします。
高速カウンタ制御フラグとパルス出力制御フラグのステータスは、スキャンが実行されている間に変化します。例えば、受信バイト数が2回以上読み出された場合、1スキャン内で異なる状態が存在することがあります。
グローバル変数リストでは、プロジェクト内のすべてのPOUからアクセスできる変数を宣言します。
POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。 POUヘッダは全プログラム言語で使用できます。
VAR_EXTERNAL
out_0: BOOL:=FALSE;
(*output Y0 of PLC*)
END_VAR
VAR
start: BOOL:=FALSE;
(*start condition*)
@'': @'';
END_VAR
変数startがON (TRUE)のとき、このファンクションが実行されます。
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_F,F167_PulseOutput_Reset!,Instance,12,0,26,5,,?DEN?Hn_diPulseOutputChannel?Ds_diTargetValue?AENO?Cd_Y);
B(B_VARIN,,0,10,2,12,4,);
B(B_VARIN,,-200,10,3,12,5,);
B(B_VAROUT,,out_0,26,2,28,4,);
B(B_CONTACT,,start,5,1,7,3,R);
L(1,2,5,2);
L(7,2,12,2);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF DF(start) then
F167_PulseOutput_Reset(n_diPulseOutputChannel := 0,
s_diTargetValue := -200,
d_Y => out_0);
END_IF;