TIME型からSTRING型への変換
TIME_TO_STRING命令は、TIME型の値をSTRING[20]型の値に変換します。変換結果の文字列は、IEC-61131に従い、アンダーラインを含まない、短いプレフィックス付きの時間長リテラルで表示されます。変換結果の文字列の値は、"T#000d00h00m00s000ms"から"T#248d13h13m56s470ms"の範囲になります。
入力
出力
FP-e、FP0のような小型PLCでSTRING型データを使用するとき、演算結果の文字列長が入力の文字列長以上の長さになるようにしてください。
POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。 POUヘッダは全プログラム言語で使用できます。
VAR
input_value: TIME:=T#0s;
result_string: STRING;
TIME型の入力変数input_valueは、値T#1h30m45sで初期化されます。出力変数result_stringはSTRING[20]型で、最大20文字を格納することができます。変数input_valueの代わりに、ファンクションの入力ピンに定数を直接記述することもできます。
TIME型のinput_valueは、STRING[20]に変換されます。変換結果はresult_stringに書き込まれます。変数 input_valueが"T#1h30m45s"のとき、result_stringは"T#000d01h30m45s000ms"になります。
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,TIME_TO_STRING!,Instance,10,1,19,3,,?D?C);
B(B_VARIN,,input_value,8,1,10,3,);
B(B_VAROUT,,result_string,19,1,21,3,);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
result_string:=TIME_TO_STRING(input_value);
この例は、TIME型の入力値から、"xx h xx m xx s"形式(時、分、秒のみ出力)の文字列STRING[9]型データに変換する方法を示しています。POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。POUヘッダは全プログラム言語で使用できます。
VAR
input_value: TIME:=T#1h30m45s;
(*example value*)
result_string: STRING[9]:='';
(*result: here '01h30m45s'*)
END_VAR
この例では、TIME型の入力変数input_valueとSTRING[9]型の出力変数result_stringの両方が宣言されています。
この例では、標準ファンクションのMID命令をTIME_TO_STRING命令に続けて実行します。MID命令は、Pの位置(INT値)から長さL (INT値)の中央部分の文字列を生成します。
この例では、MID命令の入力Lには、文字列長としてINT定数"9"を指定します。入力Pには、抽出する文字列の先頭位置として、INT定数"7"を指定します。変数input_valueが"T#1h30m45s"の場合、データ型変換の結果、文字列"T#000d01h30m45s000ms"が生成されます。MID命令は、その文字列の7番目の位置から切り出し、result_string "01h30m45s"を生成します。
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_F,TIME_TO_STRING!,Instance,7,2,16,4,,?D?C);
B(B_VARIN,,input_value,5,2,7,4,);
B(B_VAROUT,,result_string,24,2,26,4,);
B(B_F,MID!,Instance,19,1,24,6,,?DIN?DL?DP?C);
B(B_VARIN,,9,17,3,19,5,);
B(B_VARIN,,7,17,4,19,6,);
L(1,0,1,6);
L(16,3,19,3);
END_NETWORK_BODY
END_NET_WORK
END_BODY