キーエンスKVシリーズにおける「右文字列切り出し」命令とは、指定した文字列分、文字列の右端(終端)から切り出すラダープログラム命令です。
右文字列切り出し命令を用いることにより「表示器や外部機器から入力された文字列」や「ラダープログラム内で格納した文字列」の文字列を右側(終端)から切り出す回路を作ることができます。
この記事では、キーエンスKVシリーズにおける右文字列切り出し命令の指令方法とラダープログラム例について解説します。
キーエンスKVシリーズには、指定した文字列を左端(先頭)から切り出す左文字列切り出し命令があります。左文字列切り出し(SLEFT)命令については以下のページで解説しております。
![【キーエンスKV】左文字列切り出し(SLEFT)命令の指令方法とラダープログラム例 - ショートカット](https://denkisekkeijin.com/wp-content/uploads/2024/07/00_【キーエンスKV】左文字列切り出しSLEFT命令の指令方法とラダープログラム例-ショートカット-160x160.png)
目次
1. 右文字列切り出し命令の指令方法
右文字列切り出し命令には2種類の命令方法があります。
SRGHT | :毎スキャン実行型 |
@SRGHT | :微分実行型(パルス実行型) |
SRGHT:毎スキャン実行型の右文字列切り出し命令
毎スキャン実行型の右文字列切り出し命令は”SRGHT”と指令します。
↓が毎スキャン実行型の右文字列切り出し(SRGHT)命令です。
![10_SRGHT命令](https://denkisekkeijin.com/wp-content/uploads/2024/07/10_SRGHT命令-1024x166.png)
↓命令部分を拡大
![10_命令拡大](https://denkisekkeijin.com/wp-content/uploads/2024/07/10_命令拡大-3.png)
このラダープログラムでは、実行条件である入力リレーR000がONしている間、データメモリDM0に文字列”ABCDEFG”の右端(終端)から3文字を切り出した”EFG”を格納します。
![10_命令イメージ](https://denkisekkeijin.com/wp-content/uploads/2024/07/10_命令イメージ-2.png)
定数で文字列が指定された場合、半角文字はASCIIコード(1バイト)、全角文字は「プロジェクト言語設定」で指定した言語またはシフトJISコード(2バイト)になります。
ASCII(American Standard Code for Information Interchange)コードとは、数値・アルファベット・記号などを7ビットで表現した文字コードの一つです。7ビットは「10進数では0~127」「16進数では0x00~0x7F」の128ヶで表されます。ASCIIコード一覧表は以下のページで解説しております。
![【情報基礎】アスキーコード一覧表](https://denkisekkeijin.com/wp-content/uploads/2021/05/33956_【情報基礎】アスキーコード一覧表-160x160.png)
@SRGHT:微分実行型(パルス実行型)の右文字列切り出し命令
命令の頭文字に@を付けることで、実行条件がOFF→ONになったときの1スキャンしか実行されない微分実行型(パルス実行型)となります。
↓が微分実行型(パルス実行型)の右文字列切り出し(@SRGHT)命令です。
![11_@SRGHT命令](https://denkisekkeijin.com/wp-content/uploads/2024/07/11_@SRGHT命令-1024x165.png)
↓命令部分を拡大
![11_命令拡大](https://denkisekkeijin.com/wp-content/uploads/2024/07/11_命令拡大-3.png)
微分実行型(パルス実行型)の場合、命令文の左側に上向きの矢印が表示されます。
このラダープログラムは、実行条件である入力リレーR000がOFF→ONになった瞬間に、データメモリDM0に文字列”ABCDEFG”の右端(終端)から3文字を切り出した”EFG”を格納します。
このように、微分実行型(パルス実行型)の場合は実行条件がOFF→ONになった瞬間の1スキャンしか命令が実行されません。
KV STUDIOにおける命令挿入の方法
右文字列切り出し命令をKV STUDIOの回路上に挿入するには「命令文 切り出す元の文字列 切り出した文字列 切り出す文字数(バイト数)」と回路上で入力します。
例) 先ほどの毎スキャン実行型の右文字列切り出し(SRGHT)命令を挿入する場合、KV STUDIOの回路上でSRGHT “ABCDEFG” DM0 #3と入力してEnterキーを押します。
![20_命令挿入](https://denkisekkeijin.com/wp-content/uploads/2024/07/20_命令挿入-3.gif)
2.【例題①】定数の文字列を右から切り出し
下記仕様のラダープログラムを右文字列切り出し命令を用いて解説します。
スイッチ(R001)を押すと、文字列1234567の右端(終端)から3文字を切り出しデータメモリDM0~に格納する。
スイッチ(R002)を押すと、データメモリDM0~DM19(20点)に定数”0”を格納する。(クリアする)
「スイッチ(R000)、スイッチ(R001)を押したときの右文字列切り出し」は右文字列切り出し命令を使用します。
「スイッチ(R002)を押したときのDM0~DM19に定数”0”を転送」は一括転送命令を使用します。一括転送(FMOV)命令については以下のページで解説しております。
![00_【キーエンスKV】一括転送(FMOV)命令の指令方法とラダープログラム例](https://denkisekkeijin.com/wp-content/uploads/2020/10/00_【キーエンスKV】一括転送FMOV命令の指令方法とラダープログラム例-1-160x160.png)
タッチパネルの動作イメージ
タッチパネルの動作イメージは以下のようになります。
![例題①_タッチパネル](https://denkisekkeijin.com/wp-content/uploads/2024/07/例題①_タッチパネル-2.gif)
スイッチ(R000)を押すと、文字列ABCDEFGの右端(終端)から3文字を切り出しデータメモリDM0~に格納します。
スイッチ(R001)を押すと、文字列1234567の右端(終端)から3文字を切り出しデータメモリDM0~に格納します。
スイッチ(R002)を押すと、データメモリDM0~DM19(20点)に定数”0”を格納します。
ラダープログラム
ラダープログラムは以下のようになります。
![例題①_ラダープログラム](https://denkisekkeijin.com/wp-content/uploads/2024/07/例題①_ラダープログラム-4-1024x466.png)
スイッチ(R000)を押すと、右文字列切り出し(SRGHT)命令によりデータメモリDM0~に文字列”ABCDEFG”の右端(終端)から3文字を切り出した文字列”EFG”が格納されます。
スイッチ(R001)を押すと、右文字列切り出し(SRGHT)命令によりデータメモリDM0~に文字列”1234567”の右端(終端)から3文字を切り出した文字列”567”が格納されます。
スイッチ(R002)を押すと、一括転送(FMOV)命令によりデータメモリDM0~DM19(20点)に定数”0”を一括で転送します。
3.【例題②】DMに格納された文字列を右から切り出し
下記仕様のラダープログラムを右文字列切り出し命令を用いて解説します。
スイッチ(R001)を押すと、データメモリDM0~に文字列XYZを格納する。
スイッチ(R002)を押すと、データメモリDM0~の文字列の右端(終端)から1文字を切り出しデータメモリDM20~に格納する。
スイッチ(R003)を押すと、データメモリDM0~DM19(20点)に定数”0”を格納する。(クリアする)
「スイッチ(R000)、スイッチ(R001)を押したときの文字列の格納」は文字列転送命令を使用します。文字列転送(SMOV)命令については以下のページで解説しております。
![【キーエンスKV】文字列転送SMOV命令の指令方法とラダープログラム例](https://denkisekkeijin.com/wp-content/uploads/2024/07/00_【キーエンスKV】文字列転送SMOV命令の指令方法とラダープログラム例-160x160.png)
「スイッチ(R002)を押したときの右文字列切り出し」は右文字列切り出し命令を使用します。
「スイッチ(R003)を押したときのDM0~DM19に定数”0”を転送」は一括転送命令を使用します。
タッチパネルの動作イメージ
タッチパネルの動作イメージは以下のようになります。
![例題②_タッチパネル](https://denkisekkeijin.com/wp-content/uploads/2024/07/例題②_タッチパネル-3.gif)
スイッチ(R000)を押すと、データメモリDM0~に文字列ABCを格納します。スイッチ(R001)を押すと、データメモリDM0~に文字列XYZを格納します。
スイッチ(R002)を押すと、データメモリDM0~の文字列の右端(終端)から1文字を切り出しデータメモリDM20~に格納します。
スイッチ(R003)を押すと、データメモリDM0~DM19(20点)に定数”0”を格納します。
ラダープログラム
ラダープログラムは以下のようになります。
![例題②_ラダープログラム](https://denkisekkeijin.com/wp-content/uploads/2024/07/例題②_ラダープログラム-2-1024x613.png)
スイッチ(R000)を押すと、文字列転送(SMOV)命令によりデータメモリDM0を先頭に文字列”ABC”を格納します。スイッチ(R001)を押すと、同様にデータメモリDM0を先頭に文字列”XYZ”を格納します。
スイッチ(R002)を押すと、右文字列切り出し(SRGHT)命令によりデータメモリDM20~にDM0~の文字列の右端(終端)から1文字を切り出した文字列が格納されます。
スイッチ(R003)を押すと、一括転送(FMOV)命令によりデータメモリDM0~DM19(20点)に定数”0”を一括で転送します。
4. おわりに
キーエンスKVシリーズにおける右文字列切り出し(SRGHT)命令について解説しました。
以下の参考書はラダープログラムの色々な「定石」が記載されており、実務で使用できるノウハウが多く解説されています。私がラダープログラムの参考書として自信をもってオススメできるものです。
ただし、ラダープログラムやPLCといった電気・制御設計は参考書やWebサイトのみでの学習には必ずどこかで限界が来ます。
各メーカが販売しているPLCやプログラム作成のアプリケーションを揃えるには安くても十万円以上の大きな費用が掛かり、独学は現実的ではありません。
ラダープログラムの一番現実的な学習方法は「実務で経験を積む」ことです。電気・制御設計者はこれから更に必要な人材になり続けますので、思い切って転職する選択肢もあります。
『doda』といった大手求人(転職)サイトには電気・制御設計の求人が数多く紹介されています。※登録は無料です。
「スキルこそ今後のキャリアを安定させる最も大切な材料」と考える私にとって電気・制御設計はとても良い職業だと思います。キャリアの参考になれば幸いです。