用語集
ラベル
モーションコントローラのシステムデバイスを、ラベル機能を使って入力する時に使用する、サンプルプロジェクトです。
ご注意
ここでご紹介するラベルプロジェクトデータは、あくまでサンプルです。 これを使用した場合のいかなる不具合も筆者及び(有)モーションクリエイトは保障致しません。 各人で独自に検証のうえ、自己責任でご使用ください。
もし不具合に遭遇したらご報告いただきますようお願いします。 要望なども歓迎します。
ラベルサンプル
内容
MT Developer2 の1ファイル形式プロジェクトで保存されたデータです。
ラベル機能を使う場合は、MT Developer2が必須ですので、最新版にアップデートした上でプロジェクトを開いてください。(1ファイル形式プロジェクトは、ver1.34L以降でないと読み込めません。)
- Q173D.mtw
- Q173DS_AdSync.mtw
- Q173DS(アドバンスト同期制御モード)プロジェクトです。
- Q172DS で使う場合は、ラベルの不要な定義部分をカットして使えば、ファイルサイズを小さくしたり変換時間を短くしたりできます。
- MTD2の仕様により、Q173DS(仮想モード)との相互変換はできません。
- アドバンスト同期制御はかなり多くのシステムデバイスが予め割り当てられており、10000番代でなおかつ先頭番号の10番代が途中から始まるため、ほとんど覚えられない、間違いを起こしやすい状態です。 ラベル機能を使うことで、間違いをかなり減らせる可能性があります。
使い方
- 以下のように構造体を定義しています。
- (n)は実際には軸番号になります。1軸目の指令信号なら、Ax1Cmd、32軸目はAx32Cmd になります。
- 各構造体名リンクからメンバ変数リストページを参照できます。
- システム共通用
- SysCmd / SysCmdAlt --> システム共通指令信号
- SysSt --> システム共通ステータスフラグ
- SysW --> システム共通指令データ
- 各軸用
- Ax(n)Cmd --> 各軸指令信号
- Ax(n)St --> 各軸ステータスフラグ
- Ax(n)R --> 各軸モニタデータ
- Ax(n)W --> 各軸指令データ
- 仮想モード用
- V(n)Cmd --> 仮想軸指令信号
- V(n)St --> 仮想軸ステータスフラグ
- V(n)R --> 仮想軸モニタデータ
- アドバンスト同期制御用
- Sn(n)Cmd --> アドバンスト同期軸指令信号
- Sn(n)St --> アドバンスト同期軸ステータスフラグ
- Sn(n)R --> アドバンスト同期軸モニタデータ
- Sn(n)W --> アドバンスト同期軸指令データ
- システム共通用
- モーションSFC内で、
- 例えば「a」とタイプすると、「A」から始まる構造体候補がヒントに出てきます。
- そこで「↓」キーを押すと、リスト内に入るので目的の軸番号の構造体を選択状態にして、
- 「ENTER」を押すと、SFC内に文字列が入ります。
- 「.」(ドット) を入力すると、その構造体メンバ一覧がヒントに出てきます。
- 同様に、「↓」キーで選択し「ENTER」すると、メンバ変数がSFC内に入ります。
- 各構造体メンバ変数のうち、ワードデータの場合、末尾に「L」があるものはダブルワードのデータ変数です。 SFC内の計算や結果の代入などの際のバカヨケとして活用してください。
変換検証用サンプルプロジェクト
- Q173D(S)_Device4Check.zip
この中には、Q173D用(仮想モード)と、Q173DS用(アドバンスト同期制御)の、 SFCがデバイス番号で書かれたプロジェクトが入っています。
あくまでサンプルなので、これを元にRUNしても、何も動いたりしませんので悪しからず。
ラベル→デバイスに戻すには
一度ラベルに置換されたデバイスを元に戻すことは、Q17xD(S)の仮想モードプロジェクトでは可能ですが、アドバンスト同期制御では現時点では戻せないのでご注意を。
- Q17xD(S)の仮想モードプロジェクトで、デバイスに戻す方法
- まずはプロジェクトのバックアップを取っておく。
- プロジェクトを、「MTDeveloper形式プロジェクトの保存」で、MTDeveloper形式にエクスポートする。
- ラベルと構造体を削除する。
- 他形式プロジェクトの流用 で、必要なデータをインポートする。
- アドバンスト同期制御では、Q17xD(S)の仮想モードプロジェクトへの変換もできないし、MTDeveloper形式プロジェクトの保存もできないので、今のところ戻す手立てがありません。
その他 三菱への要望事項
(MT Developer2 -Ver1.56J に基づく内容です。)
上記の「ラベル→デバイスに戻す」機能の実装はもちろんですが、その他にも改善してほしいことがいくつかありますので、この場に書きとめておきます。
検索に関して
- 「デバイス検索」機能ではデバイスしか検索できず、ラベル検索は「クロスリファレンス」の使用に限られるのだが、簡便に「デバイス検索」機能でも検索したい。
- 「クロスリファレンス」の入力欄には、SFCの編集時に使えるようなツールヒントが使えない。 (Ax1 と入力すると、候補が表示されるもの) また、「Ax1」で検索すると「Ax1St」「Ax1Rq」などが検索されるような前方一致検索が使えない。 これらは操作性を低下させているので、改善を望む。
→ 前方一致の件は、ワイルドカードが使えるようです。Ax1* と入力すると、Ax1St, Ax1Cmd, など引っ掛かってきます。 - 構造体を使ったラベルの検索で、例えば「Ax1St」で検索すると構造体のメンバ変数が列挙されますが、検索結果にある一つのメンバ変数をダブルクリックしても、その変数が検索入力欄に入ってこない。 長い名称のメンバ変数まで手入力しないといけないのは、検索という急ぎの操作においては現実的でないので、改善を望む。
CPUからSFCを読み出した時の挙動
MTW2の「ヘルプ」で表示される文面には、以下のような記述がありますが、実際にはこうならず、ラベルのまま読み出されてしまって、一括変換エラーで変換できません。(Q172DSCPUで確認)
モーションSFCプログラム/メカ機構プログラム読み出し/流用時の注意事項 ・CPU側にラベル設定データが書き込まれておらず,かつ,現在開いているプロジェクトにラベル設定データがない状態で,CPU読み出しにてモーションSFCプログラム/メカ機構プログラムを読み出した場合は,ラベル変換(復元)されません。 モーションSFCプログラム/メカ機構プログラムは,デバイスでの表示となります。
以上、基本機能は良いと思うので、実用のために素早い改善を望みたいところです。
実体ページ:公開Data集/Hint集/ツール/ラベル
コメント一覧
投稿ツリー
-
Re: ラベル
(なーお, 2013/4/5 15:19)
-
Re: Re: ラベル
(なーお, 2013/6/4 10:50)
ラベルファイルがあると、SFCプログラムのオンライン時の指定ステップモニタが劇遅になることが判明。
1つのF箱に多い場合だと200~300行書いてあるのだけど、 ラベルを使わない時は、指定ステップモニタが一覧表示完了するのに5秒程度。
それが、ラベル定義すると、20秒程度に伸びてしまう。
デバイス記法で10秒かかる箱では、ラベル記法で60秒かかりました。表示するまでの間はマウスが砂時計となり、他の操作は全く受け付けません。
デバグ時は瞬時に表示してほしいくらいなのに、これじゃあ使えないじゃないか。ひどいものだ。
ちなみに、パソコンは、WindowsXP-sp2.
モーションのラベル機能、 Q17xDSCPUのアドバンスト同期制御でデバイスに戻せないとか、色々な問題があるので、当分使うのは見送ろうと思う。
Q17xDSCPUだと、一旦書いたラベルをデバイスに戻せない件。
これができないと、ちょっとした不便な点が、より困ったことになるという例を示しておきます。
- ラベル構造を変えたい時
ラベルの置き換え機能が実装されていないので、ラベル構造を変えた時には、プロジェクト内のSFCの記述を、一つ一つ、手打ちで新ラベル構造に合わせて修正するしかありません。
ラベル→デバイスに戻す機能があれば、一旦デバイスに戻して、変更後のラベル構造に差し替えて、 デバイス→ラベル一括変換で完了です。 できたらこんなに楽なのに、なんでできないのかな。。 - ラベル構造体配列が現時点で使えない
現時点でラベルの構造体に配列を使えないので、本サンプルは構造体から各軸展開をラベル構造のインスタンスで一つずつ定義しています。
将来的に機能アップして構造体配列が使えるようになった時に、既に出来上がったプロジェクト内の記述を簡単に置き換える手段がないとすると、手修正か・・ そう思うだけで使う気が失せてしまいますね。