(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024079388
(43)【公開日】2024-06-11
(54)【発明の名称】サポート装置およびサポート方法
(51)【国際特許分類】
G05B 19/05 20060101AFI20240604BHJP
【FI】
G05B19/05 B
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022192305
(22)【出願日】2022-11-30
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】100155712
【弁理士】
【氏名又は名称】村上 尚
(72)【発明者】
【氏名】香川 徹雄
【テーマコード(参考)】
5H220
【Fターム(参考)】
5H220DD04
5H220JJ06
5H220JJ14
5H220JJ24
5H220JJ32
5H220JJ41
(57)【要約】
【課題】プログラムのパターンコピーにおいて、効率的に変数名を適切に変更する。
【解決手段】PLC(210)の制御プログラム(121)の開発を支援するサポート装置(100)は、制御プログラムの中から対象プログラム(122)の選択を受け付け、対象プログラムから文字列を抽出し、文字列を表示し、表示された文字列において複数の位置にある数字列の中からいずれか1つの数字列を選択し、対象プログラムをコピーして、選択部において選択された数字列をインクリメントした数字列を含む文字列を適用する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
制御対象を制御する制御装置において実行される制御プログラムの開発を支援するサポート装置であって、
前記制御プログラムの中からコピー対象となる対象プログラムの選択を受け付ける対象受付部と、
前記対象プログラムから変数、定数またはインスタンスを示す文字列を抽出する抽出部と、
前記文字列を表示する表示制御部と、
表示された前記文字列において複数の位置にある数字列の中からいずれか1つの数字列を選択する数字列選択入力を受け付ける選択部と、
前記対象プログラムをコピーすることにより得られるコピープログラムを前記制御プログラム内に設定するコピー処理部と、
前記選択部において選択された数字列をインクリメントし、前記コピープログラムにおける該数字列を含む文字列とするインクリメント部と、を備えるサポート装置。
【請求項2】
前記表示制御部は、前記選択部において選択された前記数字列を強調表示する、請求項1に記載のサポート装置。
【請求項3】
前記抽出部によって抽出された複数の前記文字列のリストを生成する生成部、をさらに備え、
前記表示制御部は、前記リストを表示する、請求項1に記載のサポート装置。
【請求項4】
前記選択部は、前記リストに含まれる複数の前記文字列の中から複数の文字列を選択する文字列選択入力を受け付けるとともに、前記数字列選択入力に応じて、前記文字列選択入力によって選択された複数の前記文字列においてそれぞれ同様の位置にある前記数字列をまとめて選択する、請求項3に記載のサポート装置。
【請求項5】
前記選択部は、方向を示す前記指示入力を受け付け、該方向に応じて、前記文字列内での位置を変更することにより、前記数字列を選択する、請求項1に記載のサポート装置。
【請求項6】
前記インクリメント部は、前記選択部において選択された数字列をインクリメントする量の入力を受け付ける、請求項1に記載のサポート装置。
【請求項7】
制御対象を制御する制御装置において実行される制御プログラムの中からコピー対象となる対象プログラムの選択を受け付ける対象受付ステップと、
前記対象プログラムから変数、定数またはインスタンスを示す文字列を抽出する抽出ステップと、
前記文字列を表示する表示制御ステップと、
表示された前記文字列において複数の位置にある数字列の中からいずれか1つの数字列を選択する数字列選択入力を受け付ける選択ステップと、
前記対象プログラムをコピーすることにより得られるコピープログラムを前記制御プログラム内に設定するコピー処理ステップと、
前記選択ステップにおいて選択された数字をインクリメントし、前記コピープログラムにおける該数字列を含む文字列とするインクリメントステップと、を含むサポート方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はサポート装置に関する。
【背景技術】
【0002】
工場などで用いられる装置では、PLC(Programmable Logic Controller)が制御装置として用いられる。装置では、同じ機能を有するモジュールを複数備えることがあり、そのためにPLCのプログラムでは、それらを制御するために同様のプログラムパターンが繰り返されることがある。
【0003】
プログラムパターンを繰り返し記述する手間を削減するために、PLCのIDE(Integrated Development Environment:統合開発環境)にはプログラムのパターンコピー機能が備わっている。特許文献1に示すように、パターンコピー機能では、各パターンの変数名の一覧を別ファイルに出力して、別途指定する必要がある。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上述のような従来技術は、変数名を変更するために当該別ファイルを開き編集する必要があり、IDEのみで開発が完結しない。そのため、IDEにおける開発の効率を低下させる一因となっている。
【0006】
本発明の一態様は、IDEにおけるプログラムのパターンコピーにおいて、効率的に変数名を適切に変更することを実現する。
【課題を解決するための手段】
【0007】
上記の課題を解決するために、本発明の一態様に係るサポート装置は、制御対象を制御する制御装置において実行される制御プログラムの開発を支援するサポート装置であって、前記制御プログラムの中からコピー対象となる対象プログラムの選択を受け付ける対象受付部と、前記対象プログラムから変数、定数またはインスタンスを示す文字列を抽出する抽出部と、前記文字列を表示する表示制御部と、表示された前記文字列において複数の位置にある数字列の中からいずれか1つの数字列を選択する数字列選択入力を受け付ける選択部と、前記対象プログラムをコピーすることにより得られるコピープログラムを前記制御プログラム内に設定するコピー処理部と、前記選択部において選択された数字列をインクリメントし、前記コピープログラムにおける該数字列を含む文字列とするインクリメント部と、を備える。
【0008】
上記の課題を解決するために、本発明の別の態様に係るサポート方法は、制御対象を制御する制御装置において実行される制御プログラムの中からコピー対象となる対象プログラムの選択を受け付ける対象受付ステップと、前記対象プログラムから変数、定数またはインスタンスを示す文字列を抽出する抽出ステップと、前記文字列を表示する表示制御ステップと、表示された前記文字列において複数の位置にある数字列の中からいずれか1つの数字列を選択する数字列選択入力を受け付ける選択ステップと、前記対象プログラムをコピーすることにより得られるコピープログラムを前記制御プログラム内に設定するコピー処理ステップと、前記選択ステップにおいて選択された数字をインクリメントし、前記コピープログラムにおける該数字列を含む文字列とするインクリメントステップと、を含む。
【0009】
上記の構成によれば、対象プログラムをコピーしたコピープログラムにおいて、変数、定数、またはインスタンスである文字列に含まれる数字列を適宜変更することができる。そのため、同様のプログラムが繰り返される場合に、プログラミングに掛かる作業を省力化することができる。また、ユーザは、表示された文字列の中から、該文字列に含まれる数字列を確認しながらインクリメント対象を選択することができるので、選択間違いが生じにくい、優れたユーザインタフェースを提供することができる。また、変数名を変更するために別ファイルを開き編集するというような煩雑な作業を不要とすることができるので、プログラム編集作業の効率化を実現できる。
【0010】
前記表示制御部は、前記選択部において選択された前記数字列を強調表示してもよい。
【0011】
上記の構成によれば、ユーザは、選択部によって選択されている数字列を画面表示を見ることで一見してわかるために、作業の効率化を図るとともに、インクリメント対象の数字列の選択間違いを防ぐことができる。
【0012】
前記抽出部によって抽出された複数の前記文字列のリストを生成する生成部、をさらに備え、前記表示制御部は、前記リストを表示してもよい。
【0013】
上記の構成によれば、文字列のリストを画面表示にて一覧で確認することができるために、すべての文字列を確認しながらインクリメント対象の数字列を選択することができる。よって、ユーザは、インクリメント対象の数字列の選択をより適切に行うことが可能となる。
【0014】
前記選択部は、前記リストに含まれる複数の前記文字列の中から複数の文字列を選択する文字列選択入力を受け付けるとともに、前記数字列選択入力に応じて、前記文字列選択入力によって選択された複数の前記文字列においてそれぞれ同様の位置にある前記数字列をまとめて選択してもよい。
【0015】
上記の構成によれば、複数の文字列に対して、数字列の選択をまとめて行うことができるため、作業量を低減することができる。
【0016】
前記選択部は、方向を示す前記指示入力を受け付け、該方向に応じて、前記文字列内での位置を変更することにより、前記数字列を選択してもよい。
【0017】
上記の構成によれば、特定の文字列において、方向を指定することで、数字列の選択を変更することができる。そのため、視覚的に分かり易く数字列を選択することができ、作業性の効率化を実現することができる。
【0018】
前記インクリメント部は、前記選択部において選択された数字列をインクリメントする量の入力を受け付けてもよい。
【0019】
上記の構成によれば、コピープログラムにおける数字列の増分を任意に設定することができる。そのため、所望の文字列を容易に生成することができる。
【0020】
本発明の各態様に係るサポート装置は、コンピュータによって実現してもよく、この場合には、コンピュータを前記サポート装置が備える各部(ソフトウェア要素)として動作させることにより前記サポート装置をコンピュータにて実現させるサポート装置の制御プログラム、およびそれを記録したコンピュータ読み取り可能な記録媒体も、本発明の範疇に入る。
【発明の効果】
【0021】
本発明の一態様によれば、IDEにおけるプログラムのパターンコピーにおいて、効率的に文字列を変更することができる。
【図面の簡単な説明】
【0022】
【
図1】プログラムのパターンコピーを行うサポート装置の要部の構成を示すブロック図である。
【
図2】プログラムのパターンコピーを行う動作例を示すフローチャートである。
【
図4】表示制御部によって表示される画面の一例である。
【
図11】対象プログラムのインラインST言語の例である。
【発明を実施するための形態】
【0023】
〔実施形態1〕
以下、本発明の一側面に係る実施の形態(以下、「本実施形態」とも表記する)を、図面に基づいて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
【0024】
§1 適用例
制御装置で実行される制御プログラムにおいては、変数名のみが異なった同様の回路からなるプログラムが用いられることがある。そのため、IDEでは、プログラムのパターンコピーをする機能が備わっている。プログラムのパターンコピーを行うためには、プログラムのパターン内における変数名の一覧に対し、コピーしたパターンにおけるそれぞれの変数名を適宜設定する必要がある。
【0025】
コピーしたパターンで用いられる変数名は、コピー元の変数名に対し、一部の数字を変更(増加または減少)したものを用いることが多い。例えば、コピー元の変数名が「Value1」であり、コピー先の変数名が「Value2」などである。しかしながら、「Block1Value1」などのように、変数名に複数の数字がある場合、どの数字をどれだけ増加させればよいのかを設定する必要がある。
【0026】
プログラムのパターンコピーでは、パターンコピーを行うプログラムを選択し、当該プログラムにおける変数名を抽出したうえで、変数名に数字が含まれるものに関しては、数字の一か所を強調表示し、当該一か所の数字の増分を設定する。なお、数字の一か所に関しては、他の数字に変更するための左右方向の方向入力を受け付けて、左右の数字に変更する。
【0027】
数字の一か所に関しては、変数名のみに制限されず、任意の文字列であってもよい。文字列が配列変数の場合は、当該数字が配列のインデックスでもよく、文字列が構造体の場合は、当該数字が構造体のメンバの一部であってもよい。さらに、文字列はファンクションブロックのインスタンスまたは定数であってもよい。
【0028】
§2 構成例
図1は、プログラムのパターンコピーを行うサポート装置100の要部の構成を示すブロック図である。サポート装置100は、制御部110と、記憶部120と、入力部130と、表示制御部140と、転送処理部150と、を備える。
【0029】
制御部110はサポート装置100の各部を統括的に制御する。
【0030】
記憶部120は、ユーザによって作成または編集された制御プログラム121を記憶する。記憶部120は、典型的にはサポート装置100において実行される各種プログラムを格納するハードディスクドライブやSSD(Solid State Drive)などの不揮発性の記憶装置によって実現される機能である。
【0031】
制御プログラム121は、制御対象を制御するための制御装置で実行されるプログラムであり、例えばPLC210(制御装置)で実行されるプログラムである。制御プログラム121は、PLC210で実行されるシーケンス制御のためのシーケンスプログラムに限定されず、モーション制御のためのモーションプログラムであってもよい。また、これらのプログラムに限定されず、PLC210にインストール可能なプログラムであって、ユーザによって作成または編集されたプログラムであればよい。
【0032】
入力部130は、サポート装置100に対し、キーボード201およびマウス202などによって、ユーザからの入力を受け付ける。表示制御部140は、ディスプレイ203によってユーザに情報を表示する。つまり、サポート装置100は表示制御部140によって、制御プログラム121を表示し、ユーザは適宜制御プログラム121を編集するために入力部130に入力を与える。
【0033】
転送処理部150は、PLC210に制御プログラム121を転送する。転送処理部150によって制御プログラム121が転送される制御装置としては、PLCに限定されず、任意の制御プログラムに基づき制御対象を制御する制御装置であればよい。転送処理部150とPLC210とは、USB(Universal Serial Bus)ケーブルまたはLAN(Local Area Network)ケーブルで接続し、通信してもよい。また、転送処理部150は、クラウドサーバに制御プログラム121をアップロードして、PLC210は、クラウドサーバから制御プログラム121をダウンロードしてもよい。また、制御プログラム121がサポート装置100に接続されたUSBメモリなどの記憶媒体に記録され、該記憶媒体を介してPLC210に制御プログラム121が転送されてもよい。
【0034】
(制御部110の構成)
制御部110は、対象受付部111と、抽出部112と、生成部113と、選択部114と、コピー処理部115と、インクリメント部116と、を備える。
【0035】
対象受付部111は、入力部130によって、ディスプレイ203に表示された制御プログラム121の中から、パターンコピーを行う対象プログラム122を受け付ける。対象プログラム122は、制御プログラム121の少なくとも一部分が範囲選択されてもよいし、制御プログラム121の特定の行が選択されてもよい。制御プログラム121がラダープログラムである場合は、対象プログラム122は母線間のブロック単位の指定で選択されてもよい。対象受付部111は、受け付けた対象プログラム122を抽出部112およびコピー処理部115に出力する。
【0036】
抽出部112は、対象受付部111で受け付けた対象プログラム122の中における変数、定数、またはインスタンスを示す文字列を抽出する。変数としては、配列変数および構造体であってもよい。定数は数値だけではなく、カウンタまたはタイマの設定値であってもよい。インスタンスはファンクションブロックのインスタンスである。抽出部112は、抽出した文字列を生成部113に出力する。
【0037】
生成部113は、文字列のリストを出力する。また、生成部113は、各文字列における、複数の位置にある数字列の位置を特定する。生成部113は、文字列のリストおよびそれらにおける数字列の位置を選択部114に出力する。
【0038】
選択部114は、各抽出した文字列ごとに当該文字列における数字列を1つ選択し、表示制御部140にて強調表示する。なお、選択される1つの数字列は、入力部130の入力によってユーザが操作することができる。選択部114は、選択した数字列をインクリメント部116に出力する。
【0039】
コピー処理部115は、受け付けたプログラムを指定回数分だけコピーを行い、コピープログラム123を生成する。コピー処理部115はコピープログラム123をインクリメント部116に出力する。
【0040】
インクリメント部116は、選択部114から入力した数字列に関して、所定の数だけ増加させた文字列を生成し、コピー処理部115から入力したコピープログラム123に適用する。
【0041】
§3 動作例
図2は、プログラムのパターンコピーを行う動作例を示すフローチャートである。
【0042】
(文字列のリストの生成)
対象受付部111は、制御プログラム121の中から、入力部130を介したユーザ入力でもって、対象プログラム122を受け付ける(S11)。
【0043】
図3は、対象プログラム122の一例である。
図3のように対象プログラム122は、ラダープログラムの場合では、母線間のブロック単位とし、少なくとも1ブロックである。
【0044】
ここで
図3の対象プログラムに関して説明する。対象プログラム122は、A接点301、およびA接点303がOR回路で接続され、その結果でもってファンクションInc305の実行可否が決定されている。
【0045】
A接点301は、「Global_MyStruct1.mBOOL0」という変数302aに対応している。つまり、A接点301は、「Global_MyStruct1」という構造体変数の「mBOOL0」というメンバ変数でもってオンオフする。
【0046】
A接点303は、「Global_MyStruct1.mBOOLARRAY0[0]」という変数304aに対応している。つまり、A接点303は、「Global_MyStruct1」という構造体変数の「mBOOLARRAY0」というメンバの配列変数のインデックス「0」の変数でもってオンオフする。
【0047】
ファンクションInc305には、「Global_MyStruct3.mMyStruct4.mINTARRAY0[0]」という変数306aを入力とし、「Global_MyStruct3.mMyStruct4.mINTARRAY0[0]」という変数307aを出力とする。変数306aと変数307aは共通しており、「Global_MyStruct3」という構造体変数のメンバ変数である「mMyStruct4」という構造体変数のメンバである配列変数「mINTARRAY0」のインデックス「0」の変数を、ファンクションInc305の入出力とする。
【0048】
抽出部112は、対象プログラム内の文字列を抽出する(S12)。抽出部112が抽出する文字列としては、変数、定数、またはインスタンスが対象となる。つまり、ファンクションInc305などの、PLC210で予め予約されている予約語および命令語は、抽出部112での抽出する対象の文字列ではない。しかしながら、変数の変数名、ファンクションに用いる定数の値、またはファンクションブロックのインスタンスなどは、ユーザが任意に制御プログラム121に記述できるものであるため、抽出対象である。
【0049】
生成部113は、抽出部112で抽出された文字列の中から、数字列を特定し、文字列のリストを生成する(S13)。数字列は、0以上の整数である。そのため、数字列には、配列変数のインデックスも含まれる。リストには、数字列の情報も含まれる。つまり、リストは、複数の文字列における、各文字列と該文字列内の数字列とを格納した2次元配列の情報である。
【0050】
選択部114は、生成部113によって生成されたリストを取得し、リストの先頭の数字列を選択する(S14)。なお、数字列が存在しない文字列に関しては選択しない。ここでは、先頭の数字列を選択するとしたが、先頭に限定されず、数字列のうち1つを選択すればよい。
【0051】
(画面400の構成)
表示制御部140は、選択部114によって選択された数字列を強調表示した状態で、リストをディスプレイ203に表示する(S15)。
【0052】
図4は、表示制御部140によって表示される画面400の一例である。
図4に示すように、画面400は、コピー回数を指定するテキストボックス411と、変数名の生成ルールを指定するラジオボタン412および413と、リスト420と、ボタン431と、ボタン432と、を備える。
【0053】
テキストボックス411には、対象プログラム122をパターンコピーする回数を指定する。ラジオボタン412を選択した場合は、本実施形態における処理を行う。
【0054】
ラジオボタン413を選択した場合は、任意の文字列を個別に指定してパターンコピーする処理を行う。ボタン413aを押すことによって文字列を指定するテンプレートファイルを、テキストボックス413bのパスにファイルで出力する。ユーザは別途エディタなどによって該ファイルを編集して任意の文字列を指定する。編集後に後述するボタン431がユーザによって押されることによって、該ファイルで指定した文字列が適用された状態で対象プログラム122がパターンコピーされる。
【0055】
リスト420は、生成部113で生成されたリストを表示するリストである。リスト420は、大きく分けて5個の列421~425に分かれている。列421は、チェックボックスが割り当てられており、チェックボックスがチェックされている行の文字列に関しては、パターンコピー後に該文字列を入力された条件に従って数字列をインクリメントさせた文字列とする。つまり、パターンコピーに際し、インクリメント部116で行うインクリメント処理を行う行を選択している。
【0056】
列422は、対象プログラム122における文字列を表示している。また、列422の表示内容の詳細は後述する。列423は、列422で表示している文字列のデータ型を示す。文字列が変数ではなく、ファンクションブロックのインスタンスの場合はファンクションブロック名を表示する。列424は、列422で表示している文字列のコメントを示す。
【0057】
列425は、パターンコピーに際し、インクリメント部116で行うインクリメント処理での増分を指定する。列425には整数を指定する。
【0058】
ボタン431が押されることで、インクリメント処理が実行される。ボタン432が押されることでインクリメント処理がキャンセルされる。
【0059】
(ユーザ入力)
入力部130は、選択部114に対するユーザ入力を受け付け、数字列を選択する(S16)。列422には、右端に左矢印422aと右矢印422bとが設けられている。左矢印422aが選択されることで、選択部114は文字列内における選択する数字列を、選択している数字列に対して、一つ左に位置する数字列に変更する。右矢印422bが選択されることで、選択部114は文字列内における選択する数字列を、選択している数字列に対して、一つ右に位置する数字列に変更する。つまり、選択部114は、左矢印422aおよび右矢印422bによって、方向を示す指示入力を受け付ける。
【0060】
選択部114は、ユーザ入力として、表示されている数字列そのものに対するポインティング操作が行われることによって数字列を選択してもよい。また、選択部114は、ユーザ入力として、特定の文字列が選択された状態でキーボード201の左右キーが入力されることによって、方向を示す指示入力を受け付けてもよい。
【0061】
なお、選択している数字列が文字列における先頭の数字列である場合は、左矢印422aを選択できなくする。選択している数字列が文字列における末尾の数字列である場合は、右矢印422bを選択できなくする。
【0062】
入力部130は、インクリメント部116に対するユーザ入力を受け付け、数字列の数字に対する増分を指定する(S17)。増分としては整数が指定されるが、負数が指定されてもよい。
【0063】
(パターンコピー)
コピー処理部115は、対象プログラム122をテキストボックス411で指定された回数コピーし、コピープログラム123とする(S18)。この際、文字列のリストも合わせてコピーする。
【0064】
インクリメント部116は、コピープログラム123の文字列に対し、文字列中の数字列の数字を、列425で指定された数字分だけ増加させた数字列とした文字列に変更する(S19)。なお、列421にチェックが入っていない行の文字列に関しては、インクリメントせず、コピーしたままとする。
【0065】
インクリメント部116における数字列の変更は、次の計算式に従って処理を行う。対象プログラム122における数字列がNで、コピー回数を指定するテキストボックス411の範囲内のコピー回数がkで、増分がVの場合、コピープログラム123における数字列N’は、N’=N+kVとする。すなわち、対象プログラム122およびコピープログラム123ごとの間で、数字列の数値は、増分の間隔があけられるようにコピーされる。
【0066】
図5は、
図4の条件で
図3をパターンコピーしたものである。
図5は、以下の点で
図3と異なっている。すなわち、A接点301は、「Global_MyStruct2.mBOOL0」という変数302cに対応するように変更され、A接点303は、「Global_MyStruct1.mBOOLARRAY1[0]」という変数304cに対応するように変更され、ファンクションInc305には、「Global_MyStruct3.mMyStruct4.mINTARRAY0[1]」という変数306cを入力とし、「Global_MyStruct3.mMyStruct4.mINTARRAY0[1]」という変数307cを出力とするように変更された。
【0067】
図6は、
図4のリスト420の一部を拡大したものである。変数302bは、「Global_MyStruct『1』(符号302d).mBOOL『0』(符号302e)」であり、『』で囲った2つの数字列を含んでいる。
図5のコピープログラム123をパターンコピーするに際し、変数302bに対しては、先頭の数字列(符号302d)をインクリメント対象としている。そのため、先頭の数字列(符号302d)は表示制御部140によって強調表示されている。変数304bは、「Global_MyStruct『1』(符号304d).mBOOLARRAY『1』(符号304e)[『0(符号304f)』]」であり、『』で囲った3つの数字列を含んでいる。
図5のコピープログラム123をパターンコピーするに際し、変数304bに対しては、左から2番目に位置する数字列(符号304e)をインクリメント対象としている。そのため、左から2番目に位置する数字列(符号304e)は表示制御部140によって強調表示されている。強調表示されていない数字列に関してはパターンコピーを行っても変化しない。
【0068】
表示制御部140における強調表示は、様々な形態で文字列における選択している数字列のみの表示形式を変更すればよい。例えば、強調表示としては、文字の大きさを大きくする、文字色を変更するなどである。また、下線を付す、文字の線幅を太くする、背景色を変更するなど、他の方法で強調表示しても構わない。
【0069】
(対応する文字列の種類)
上述した変数302a、変数304a、変数306aおよび変数307aは、構造体におけるメンバの変数、構造体におけるメンバの配列変数、または構造体におけるメンバの配列変数のインデックスに数字列が含まれている事例であった。数字列を含んでよい文字列はこれらに限定されない。
【0070】
図7は、対象プログラム122の別の例である。
図7は、「MAPPING_DATA_3D[0,0,0]」という変数511aまたは「MAPPING_DATA_2D[0,0]」という変数512aの何れかがオンの場合に実行される、ファンクション<>があり、当該ファンクション<>に「index」という変数513aと「UINT#0」という定数514aとが入力されており、当該ファンクション<>の出力がオンの際に、「ErrorString[index]」という変数515aを入力、「ErrorString[index]」という変数516aを出力とする、ファンクションClearStringを実行するプログラムである。
【0071】
図8は、
図7に対応したリスト420aを示す図である。
図8から次のことがいえる。
【0072】
変数511aに対応する「MAPPING_DATA_3D[0,0,0]」という文字列511bは、「MAPPING_DATA_3D」という3次元配列の配列変数であり、その1番目のインデックスの値をインクリメントするように設定している。
【0073】
変数512aに対応する「MAPPING_DATA_2D[0,0]」という文字列512bは、「MAPPING_DATA_2D」という2次元配列の配列変数であり、その2番目のインデックスの値をインクリメントするように設定している。
【0074】
変数513aに対応する「index」という文字列513bには、数字列が含まれない。そのため、インクリメントする対象を設定するチェックボックス513cは選択できないようになっている。また、増分を設定するテキストボックス513dも記入できなくなっている。
【0075】
定数514aに対応する「UINT#0」という文字列514bは、「UINT」型の数値であり、その値が「0」である。この値が数字列であり、インクリメントするように設定している。
【0076】
変数515aおよび変数516aに対応する「ErrorString[index]」という文字列515bには数字列が含まれない。そのため、インクリメントする対象を設定するチェックボックス515cは選択できないようになっている。また、増分を設定するテキストボックス515dも記入できなくなっている。
【0077】
図8に示すように、文字列としては変数、構造体、または1次元配列変数に限定されず、2次元配列変数、3次元配列変数、定数を含んでもよい。また、数字列を含まない文字列に関しては、本実施形態に関わる処理が発生しない。
【0078】
図9は、対象プログラム122のさらに別の例である。
図9は、「Global_BOOL0」という変数521aがオンの場合に、「UINT#2000」という定数522aを入力、「InitData」という変数を出力とするファンクションMOVEと、「T#500ms」という定数524aを入力としたファンクションブロックTONのインスタンスであるTON_Instance001(523a)の結果を受けてCountUpするプログラムである。
【0079】
図10は、
図9に対応したリスト420bを示す図である。
図10から次のことがいえる。
【0080】
変数521aに対応する「Global_BOOL0」という文字列521bは、変数であり、唯一の数字列『0』をインクリメントしないように、チェックボックス521cのチェックが外れている。すなわち、コピープログラムでも文字列521bは変化しない。
【0081】
定数522aに対応する「UINT#2000」という文字列522bは、定数であり、唯一の数字列『2000』をインクリメントするように設定している。また、その増分は1000である。
【0082】
インスタンス523aに対応する「TON_Instance001」という文字列523bは、ファンクションブロックのインスタンスであり、唯一の数字列『001』をインクリメントするように設定している。また、その増分は1である。
【0083】
ここで、インクリメントすると、『2』ではなく『002』となるように、元のフォーマットと同じ形でゼロ詰めされた数字列が形成されるように命名規則が設けられる。そのため、検索する際に、意図しない数字列の文字列を検索でヒットさせなくすることができる利点がある。また、検索でヒットした数字列は、意図しない数字列であっても、意図した数字列を含めたその近傍がヒットすることになり容易に目的とした数字列を探索することができるようになる。
【0084】
定数524aに対応する「T#500ms」という文字列524bは、定数であり、唯一の数字列『500』をインクリメントするように設定している。また、その増分は500である。
【0085】
また、上述した例と同様に「InitData」という変数および「CountUp」という変数は、ともに数字列を含まないため、コピープログラム123に変化せずに用いられる。
【0086】
図10に示すように、文字列としてはファンクションブロックのインスタンスを含んでもよい。なお、コピープログラムにおいてファンクションブロックのインスタンスがある場合、自動的にインスタンスが生成される。
【0087】
図11は、対象プログラム122のインラインST(Structured Text)言語の例である。
図11は、「Init」という変数がオンの場合に、インラインST言語530を実行する。インラインST言語530は1行目から順番に実行されていき、「InitialValue[0]」という変数532aが「Count[0]」という変数531aに代入され、「’Sequence001’」という文字列533aが「CommandParam」という変数に代入される。
【0088】
【0089】
変数531aに対応する「InitialValue[0]」という文字列531bは、唯一の数字列『0』を備え、増分1でインクリメントする。
【0090】
変数532aに対応する「Count[0]」という文字列532bは、唯一の数字列『0』を備え、増分1でインクリメントする。
【0091】
文字列533aに対応する「’Sequence001’」という文字列533bは、唯一の数字列『001』を備え、増分1でインクリメントする。したがって、コピープログラムの一つ目では、「’Sequence002’」とフォーマットされた文字列となる。
【0092】
図12に示すように、本実施形態の対象とするプログラムはラダー言語に限定されず、国際規格IEC61131-3に従ったプログラミング言語であればよい。
【0093】
§4 作用・効果
コピープログラム123において、変数、定数、またはインスタンスである文字列を適宜変更することができる。そのため、同様のプログラムが繰り返される場合にプログラミングに掛かる作業を省力化することができる。その際に、画面表示を見ながらインクリメントする文字列中における数字列を選択するため、間違いを防止することができる。
【0094】
またその際に、方向を指定することで、数字列の選択を変更することができる。そのため、視覚的に分かり易く数字列を選択することができ、間違いを防止することができる。
【0095】
〔変形例〕
(複数処理)
図13は、変形例に係るリスト420dを示す図である。変形例では、複数の文字列における数字列の位置の選択をまとめて行う。
【0096】
列421の最上段には、選択できる各行のチェックボックスをまとめて選択するチェックボックス551がある。また、選択されている状態でチェックボックス551を選択すると、まとめて各行のチェックボックスのチェックを外す処理を行う。
【0097】
列422の最上段には、矢印541~544が備わっている。矢印542は左矢印であり、チェックボックスが選択されている行の文字列に関する数字列の選択をまとめて一つ左に変更する。対して、矢印543は右矢印であり、チェックボックスが選択されている行の文字列に関する数字列の選択をまとめて一つ右に変更する。矢印542および543の処理において、先頭または末尾の数字列を選択しているために変更できない場合は、当該文字列に対しては処理を行わない。
【0098】
矢印541は、二重左矢印であり、チェックボックスが選択されている行の文字列に関する数字列の選択をまとめて先頭に変更する。矢印544は、二重右矢印であり、チェックボックスが選択されている行の文字列に関する数字列の選択をまとめて末尾に変更する。
【0099】
したがって、各文字列に数字列の選択の入力を行わないで良いために、ユーザの入力作業を簡素化することができる。
【0100】
(コメントの同時設定)
ラダープログラムでは、各変数にコメントを設定することが推奨されている。そのため、変数の文字列を設定するのに際し、合わせてコメントの文字列を設定できてもよい。文字列に対して行った設定項目をコメントに対して行えてもよい。すなわち、対象プログラムにおけるコメントでの数字列を特定し、対象とすべき数字列の位置とその増分を入力指示し、コピープログラムにおけるコメントを生成してもよい。
【0101】
(コピープログラムにおける文字列とコメントの表示)
コピープログラム123の最初の1つ目の文字列およびコメントをリスト420に合わせて表示できてもよい。この場合、数字列の選択および増分の指定に際して、対応するコピープログラム123での文字列およびコメントを確認できるため、パターンコピーの設定ミスを未然に防ぐことができる。
【0102】
〔ソフトウェアによる実現例〕
サポート装置100(以下、「装置」と呼ぶ)の機能は、当該装置としてコンピュータを機能させるためのプログラムであって、当該装置の各制御ブロック(特に制御部110に含まれる各部)としてコンピュータを機能させるためのプログラムにより実現することができる。
【0103】
この場合、上記装置は、上記プログラムを実行するためのハードウェアとして、少なくとも1つの制御装置(例えばプロセッサ)と少なくとも1つの記憶装置(例えばメモリ)を有するコンピュータを備えている。この制御装置と記憶装置により上記プログラムを実行することにより、上記各実施形態で説明した各機能が実現される。
【0104】
上記プログラムは、一時的ではなく、コンピュータ読み取り可能な、1または複数の記録媒体に記録されていてもよい。この記録媒体は、上記装置が備えていてもよいし、備えていなくてもよい。後者の場合、上記プログラムは、有線または無線の任意の伝送媒体を介して上記装置に供給されてもよい。
【0105】
また、上記各制御ブロックの機能の一部または全部は、論理回路により実現することも可能である。例えば、上記各制御ブロックとして機能する論理回路が形成された集積回路も本発明の範疇に含まれる。この他にも、例えば量子コンピュータにより上記各制御ブロックの機能を実現することも可能である。
【0106】
また、上記各実施形態で説明した各処理は、AI(Artificial Intelligence:人工知能)に実行させてもよい。この場合、AIは上記制御装置で動作するものであってもよいし、他の装置(例えばエッジコンピュータまたはクラウドサーバ等)で動作するものであってもよい。
【0107】
〔付記事項〕
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【0108】
100 サポート装置
110 制御部
111 対象受付部
112 抽出部
113 生成部
114 選択部
115 コピー処理部
116 インクリメント部
120 記憶部
121 制御プログラム
122 対象プログラム
123 コピープログラム
130 入力部
140 表示制御部
150 転送処理部
210 PLC(制御装置)