今回の記事では、【DASC】10進数アスキーコード変換命令について紹介します。
【DASC】とは10進数をアスキーコードに変換してくれる命令です。例えばSDカードに保存するための、検査結果取得時の日付やファイルの日付または、品種番号などを数値をアスキーコード(文字列)に変換するのに便利な命令です。
過去いくつか文字列に関係する命令について紹介しています。
DASC
- 毎スキャン型 : DASC
- 1スキャン型 : @DASC
- 【S】に10進数を直接代入する、または、10進数が格納されているアドレスを代入
- 【D】には変換したデータの保存先を指定する
【S】に”123″や”30″などを代入して変換すると、”00123″、”00030″となります。先頭にある”0″を消す場合には、ゼロサプレス(CR2814)をONさせる必要があります。
今回は常時ON(CR2002)を使用しました。
ラダー
では、簡単なラダーを作成していきます。内容は下記の通りとしました。
- 対象は、PLC内部の日付や時間
- “00123”とならないように、ゼロサプレスを使用する
今回使用しているPLC内部の日付などは、【コントロールメモリ】の【CM700~CM702】を使用しております。また、今回のラダー図の動作トリガについては常時ONとしております。
ゼロサプレス設定がOFFの場合
まずは、【ゼロサプレス設定がOFF】の場合でアスキーコードに変換してみました。下図を見てわかるように、文字列の先頭に”000″と表示されております。
ゼロサプレス設定がONの場合
次に、【ゼロサプレス設定がON】の場合でアスキーコードに変換してみました。先程のOFFの場合とは異なり、文字列先頭の”000″が省略されていることがわかります。
今回のDASCの例題については上図のようにゼロサプレス設定をONにすることにより、不要な数値を省略することができました。
変換した値を結合してみた
ゼロサプレス設定をONの場合、OFFの場合でそれぞれの変換結果を結合してみました。
まずは、【ゼロサプレス設定がONの場合】
結合した値をDM7012に格納しています。格納されている値が”22/5/29″となっています。
継は、【ゼロサプレス設定がOFFの場合】
結合した値をDM7012に格納しています。“00022/00005/00029”と格納されています。
過去に【SADD】(文字列結合命令)について紹介しています。
さいごに
- DASCで日付を変換する場合は、【ゼロサプレス設定をON】
- 【S】には文字列または、文字列が格納されているアドレスを指定
- 【D】変換された値を格納したいアドレスを指定