• ベストアンサー

三菱PLCの命令語、ワードデバイスの操作について

D100:00003131 D1000:30300000 D0:30303131 D100の下位8ビットと、D1000の上位8ビットを、上記のようにD0へ格納したいのですが。 考えられる方法、ズバリの命令語があれば教えて下さい。 k1、k2、k3、k4を使用して出来ると思いましたが、ワードデバイス同士では出来ませんでした。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • lumiheart
  • ベストアンサー率48% (1102/2295)
回答No.1

-----[DOR D100 D1000 D0] 又は -----[D+ D100 D1000 D0] これはシリアル通信とかの通信電文作成/抽出処理ですかね? QCPUなら上記以外にも 文字列処理命令 RIGHT LEFT STRINS 等 分離・結合命令 WTOB、BTOW 等 便利なのは有ります ただし、それらは上記とは処理手順が違いますのでそのままでは使えません でも、それらの命令を有効に使えば簡潔で見やすいプログラムを書くのに役立ちます

linkdueop
質問者

お礼

ありがとうございます。 他の盤とデータのやり取りを行います。 渡すデータがデバイスをまたいでいるので、渡す前にデータの整理が必要で、質問をさせて頂きました。 DOR、使ってみます。

関連するQ&A

  • 三菱 PLC Aシリーズ 命令語

    三菱 初心者のものです。 [D* D150 K100 D24] という命令語があります。 D*ってなんですか?

  • PLC 命令について

    PLCでの制御技術者の皆様へ 現在、PLCの技術者として走り出しましたが、命令用語がどうしても 判りません。マニュアルを見ても判らない。。。 申し訳ありませんが、以下の命令用語の意味を教えていただけませんでしょうか。宜しくお願いいたしします。 [WAND W219B HOF D500] [FLT D130 D141] [E* D141 E1.4 D145] [INT D145 D140] [E/ E23 E8.36 D125] [BIN K3X448 D502] [BCD D316 D332 ] [DIS D332 D330 K2 ] [PLS M868] [FMOV K0 K4F0 K100] [CJ P0] [DMOV K0 K4L2217] [DMOVP D344 D346] [DSFR R304 K2] [< K0 K2X804] [* R900 K9466 D902] [TO H18 H1E4 H102 K1] [FROM H18 H2E4 D122 K1] [BMOV SW80 D2000 K4] [K0 K1F721] [FIFR D184 R350] [FIFW D184 R340] [BCD D150 K2Y580] [FINSP D260 R320 D210] [FDELP D270 R300 D200] [D> K7M1420 K0] [D/ R16 D912 D920] [ENCO M1320 D250 K7] [SUM K3M2351 R350] [DECO R1 M250 K3]

  • 三菱電機 Q02H SORT命令

    教えて下さい。三菱電機PLC(Q02H)を使い回路を作っているのですが、今回、SORT命令を使うことになりました。非常に便利なのですがイマイチ上手くいきません。シュミレータにてプログラミングマニュアルに書いてあるプログラム例を実行すると、格納されている数を上手く並べ替えてくれるのですが、現在、使用しているPLC(Q02H)を使う為、プログラム例にあるデバイスは使用できません。空きデバイスを確認し使用していないデバイスで試すのですがダメです。状態としては回路にてSM703をONしたのち、SORT回路を実行すると格納されている数を値の大きい順に並べ替えてデバイスの一番上まで送ってくれるのですが、SM703をOFFした状態でSORT回路を実行すると値が小さい順に並べ替えてくれるのですが、一番上まで値を移動してくれず、一番小さい値の格納デバイスからスタートしてしまいます。どこがいけないのでしょうか。 プログラミングマニュアルに書いてあるプログラム例 0  LD X0 1  OUT SM703 2  LD x10 3  SORT D0 K4 K1 M0 D10 4  END 私が実行したプログラム 0  LD X0 1  OUT SM703 2  LD X10 3  SORT D151 K11 K1 M1010 D430 4  END

  • 三菱製PLC:ファイルレジスタ(R)の使い方

    現在他人が作ったシーケンサを読んでいます。 その中でファイルレジスタ(R)というものを使用しているのですが それが、どういうものかというのは「QnUCPUユーザーズマニュアル(機能解説・プログラム基礎編)」 をよんでなんとなく分かりましたが、基本的な使い方がよく分かりません。 たとえば、Rの値を読み出す命令はあるのですが   例) [* K6000 R480 D560]      6000とR480の中身を乗算してD560へ格納 プログラムの何処を見渡してもRの値を出力、または値を定義している命令がみあたりません。 実態は何処にあるのでしょうか? もしくは自動で振り当てられるのでしょうか? **装置の構成としては** 三菱のQシリーズのCPUユニット(Q03UDECPU)を使用し その他インテリジェント機能ユニットなども多数使用しています。 ちなみに「QnUCPUユーザーズマニュアル(機能解説・プログラム基礎編)」 を読んでも分かりませんでした。。。 初心者で申し訳ありませんがどなたかご教授をお願い致します。

  • PLCで数値表示1ワードとは

    このカテゴリでよろしいのでしょうか(プログラミングでしょうか)。 初めてPLCを学習します。 タッチパネルに数値を表示する際に、1ワードor2ワード使っている任意のワードデバイスがあります(例えば、W10という1つのデバイスとW50~51という2ワード使うデバイス)。 1ワード=2^16(=65536)ビットと書いてありました。これは1ワードで、0~65536までの数値 もしくは -32768~32768 までの数値を表示できるという意味なのでしょうか? 例えば10万という数値を表示する場合は、2^16で足りないため、2ワード使用するという解釈になるのでしょうか? ご教示お願いできますでしょうか(参考URLの添付でも構いません)。

  • アドレス指定方式での、命令語が参照する番地

    16進数で”C13B0206”という32ビットの命令語があります。 <命令語の仕様> 0~7ビット:命令指示部 8~10ビット:レジスタ 11~15ビット:アドレス修飾部 16~31ビット:番地 <アドレス修飾と参照番地の関係> 00 0固定 直接アドレス (11,12の値が00、13~15の値が0固定のとき、直接アドレス。) 01 0固定 間接アドレス 10 インデックスレジスタ インデックスレジスタ+番地の値 11 インデックスレジスタ インデックスレジスタ+番地が示す内容の値 <主記憶、レジスタの状態> ●主記憶に格納されている値(16進数) 番地(16進数)が  202,203,204,205,206,208,209,20A...の順に、それぞれの格納値は、 203,204,205,206,208,209,20A,20B...。 ●インデックスレジスタに格納されている値(16進数) インデックスレジスタ番号(16進数)が1,2,3,4,5… の順に、それぞれの格納値は、 0,1,2,3,4…。 (1) アドレス修飾部のインデックスレジスタ番号。 命令語の”C13B0206”で、アドレス修飾部にあたるのが”3B”。00111011(2進数)。8~10ビットの001がレジスタになるから、3。 (2)命令の番地部の番地の値(16進数) 命令の番地部の番地の値。命令部では、”0206”。ちょうど16進数なので、206。 (3) 命令が最終的に参照する番地。 上の、<主記憶、レジスタの状態>より、11~15ビットが”1011”。 インデックス番号が11(2進数)なので、3(16進数)。インデックスレジスタ番号が3のとき、格納されているのは2。番地の値である206と3を合わせ、209。 最終的に参照される番地は209。 (1)(2)(3)、自分の解き方が正しいのかどうか自信がありません。どなたか補足、訂正などありましたら、よろしくお願いいたします。

  • 基本情報のCASLIIの平成18年春の問13

    基本情報のCASLIIの平成18年春の問13の問題です。 32ビットの2進数(被乗数)と15ビットの符号なし二進数(乗数)の乗算を行うプログラムなのですが、解説を読んでもわからない点があったので質問させていただきます。 32ビットの被乗数の方は上位16ビットと下位16ビットにそれぞれGR1,GR0に分けて格納しています。 ここで、GR1,GR0をGR3ビットだけ論理左シフトします。そうすると、上位16ビットの左端からGR3ビットはみ出します。解説のここまでは理解できたのですが、次からの文章が理解できませんでした。 「シフト前の下位(16-GR3)ビットがシフト後の上位(16-GR3)ビットとして残る。したがって下位語の上位GR3ビットを(16-GR3)ビット,つまりGR4ビット論理右シフトして,上位語の下位GR3ビットに転送する必要がある。」 というものです。 シフト前の下位(16-GR3)ビットというのはどこのことを指しているのか不明ですし、シフト後の上位(16-GR3)ビットも同様です。 また、なぜGR4ビット論理右シフトするとなぜ上位語に反映されるのかもわかりません。右シフトすれば上位語も右シフトされて反映下位から上位へビットが転送されないと思うからです。 ちなみに、GR3+GR4=16という関係を持っています。 それと、解説の画像は添付しておきます。

  • PICの「SWAPF」の意味について

    PICを学びはじめたばかりの初学者です。混乱してしまい、バイト命令「SWAPF」の意味がわかりません。 質問1: 「SWAPF」という命令は「ファイルレジスタfの上位4ビットと下位4ビットを入替えた結果を(d)に入れる」と出ています。 http://homepage3.nifty.com/mitt/pic/pic42_1.html この「上位4ビットと下位4ビットを入替え」というのは例えば次のようにすることを言うのですか? ----------- (SWAPF前) 上位4ビット 下位4ビット △△△△   □□□□ (SWAPF後) 上位4ビット 下位4ビット □□□□   △△△△ ----------- 質問2: 質問1が正しいとしたら、次の記述の訳はどのようなことなのですか? こちらのページを拝見しますと、下記引用のようになっています。 http://www.picfun.com/arch09.html ----ここから引用-------------------- 【スワップ命令の使い方】 SWAP命令を有効に使う例は、下記のような場合です。 例1 割り込み時のレジスタの待避、復帰     SWAP命令がSTATUSに影響しないことを利用しています。 PUSH  MOVWF  W_TEMP    ;Wレジスタ待避     SWAPF  STATUS,W  ;STATUS取り出し     MOVWF  ST_TEMP   ;STATUS待避 ----ここまで引用-------------------- ↑この中の「;STATUS取り出し」のところですが、「SWAPF」を使って「上位4ビットと下位4ビットを入替え」てからでないとSTATUSのHとLを取り出すことが出来ないのでしょうか? 質問3: もし、 「SWAPF」を使って「上位4ビットと下位4ビットを入替え」てからでないとSTATUSのHとLを取り出すことが出来ない、 のだとしたら、それはPICの仕組み上のことなのでしょうか? 初学者の質問で馬鹿らしいかもしれません。ご解答が面倒で無い方がいらしたら、どうぞご教示よろしくお願いいたします。

  • アセンブラのCAP-X COMP-X

    アセンブラのCAP-X COMP-X  いつも回答いただきありがとうございます。 アセンブラのCAP-X COMP-Xと言っても、知っている人は、少ないのでは無いでしょうか?  アセンブラのプログラムを組む機会自体が、減少していると思えるのです。  私が、最初に情報処理試験で触れたのは、このアセンブラと仮想のコンピュータでした。いつか、征服したいテーマでした。  でも、今でも、アセンブラと仮想機械では、もっとも、シンプルで、アセンブラの言語と原理を知るには、もっともふさわしいのでは、無いかと考えているのです。  その後も、アセンブラと仮想の機械は、進展しましたが、知らない者には、いよいよ理解しがたく、近づくことが、できないので、この CAP-X COMP-Xを  まず、理解したいと考えているのです。、  アセンブラを理解できる人には、なじみの無いアセンブラと仮想機械と思いますが、現在知っているアセンブラから、類推して回答していただけるとありがたいです。  今は、Windowsの時代になってCAP-X COMP-Xをシュミレーションできるソフトも無くなりました。頭の中で仮想するばかりです。  一語16ビットの計算機であって、0を含めて256の整数倍の番地から始まる連続した256語を1記録ブロックとして、最少1記憶ブロックから最大256記憶ブロックを実装することができる。N個の記憶ブロックを使用するとき、アクセスできるアドレスは、 0番地から(256*N-1)番地までである。  Nが、256の時、 256*256-1=65536 となって65Kのアドレス空間を持つことになる。 ●Q01. このメモリーの中で、コードとテータの両者を使っていると解釈してもよいのだろうか? ●Q02. もし、メモリーのアドレス空間をコードとデータの両者を混合して使用していると誤ってプログラムしてしまうとコードをデータとして読み込んだり、コードのアドレスに誤って、データを書いてしまい、これが、原因で、コンピューターが、暴走したりする危険性は、あるのでしょうか? ●Q03. この仮想の機械には、OSのような領域は、存在しないのでしょうか? ●Q04. 必要ないのでしょうか?  OSが、必要であるのなら、65Kの全ての領域は、使用できなくなると考えることができるのでしょうか? ●Q05. アセンブラの記号を作って、実行するようにしています。しかし、アセンブラを機械語にアセンブルして、メモリーにロードする必要があるように感じますが、この機械では、 アセンブラを機械語に翻訳するソフトは、どのようにして利用されるのでしょうか? ●Q06. 最初にアセンブラ言語を機械語に変換するアセンブリ言語をメモリーにロードしてから、アセンブラを機械語に変換して、メモリーにロードして、アセンブリ言語をクリアして使用するということになるのでしょうか? ●Q07. これなら、機械語とデータ領域の合計として65Kを使えるということになるのでしょうか?  16ビットの命令語のうちアドレスを指定できるのは、 ADフィールドの アドレスの下位8ビットを指定することになります。  これでは、256通りしか表現できません。  上位8ビットは、 BR(基底レジスターbase register)で定められる。  つまり、BRを変更しないと256通りのアドレスを超えてのアドレスを指定できなくなる。  このBRを変更するのに、 JSR命令(jump to subroutine)が使用される。subroutineに飛ぶのと、記憶ブロックを超えるのとどうして、同じ命令で行われるのか分かりません。 ●Q08. どうしてでしょうか?  昔、ユニバック、マシーンというのがありました。  36ビット、1ワードの機械でした。36ビットの中に命令部分とアドレス部分16ビットの両方を納めなければならないので、アドレス空間には、限度がありました。  16ビットだと限度のアドレス空間は、65Kワードということになります。  これ以上に大きな空間は、アクセスできない。  バイトマシーンのように最初の命令語によって、何バイトでも、アキュームレーターに収納できて大きなアドレス空間にアクセスできるようになっていなかったのです。  大きな容量のプログラムを作るとき、65Kワードでは、収納できない。それで、使用したのは、オーバーレイという手法でした。  プログラムをセグメントに切って、必要に応じて順にプログラムをメモリーに載せ替えるという方法です。しかし、セグメントが大きくなるとこれでは、収まることができないので限度がありました。 ●Q09. オーバレイのやり方は、記憶ブロックのやり方と同様と考えて良いのでしょうか?  初期的な質問で申訳ありません。  また、質問が続くようなことがありましてもよろしく教授方お願いします。 ーーーーーーーーーー CAP-X Computer Application X https://ja.wikipedia.org/wiki/CAP-X CAP-X とは、かつて情報処理技術者試験でのプログラミング能力試験のために使用されていたアセンブリ言語である。後継のCASLに置き換えられ、現在はCASL IIが使われている。 COMP-X の仕様[編集] COMP-X はデータワード長が16ビット、メモリアドレス長も16ビットのコンピュータである。アドレスはバイト単位ではなくワード単位に付与される。ワード中のビットの番号付けは、最上位ビットを 0 番、最下位ビットを 15 番とする。バイト単位の処理という概念がないため、エンディアンも規定されていない。また、COMP-X には入出力の概念が規定されておらず、何らかの手段でメモリ上にプログラムとデータを格納し、実行し、その結果はメモリを読み取ることでわかるようになっている。従って、入出力命令は存在しない。扱う数は整数のみで、2の補数表現を採用している。 レジスタは次の通り。 ーーーーーーーー COMP-X Compuer X https://ja.wikipedia.org/wiki/CAP-X CAP-X とは、かつて情報処理技術者試験でのプログラミング能力試験のために使用されていたアセンブリ言語である。後継のCASLに置き換えられ、現在はCASL IIが使われている。 命令語は全て 1 ワードであり、先頭から順に OP フィールド(4ビット)、GR フィールド(2ビット)、XR フィールド(2ビット)、AD フィールド(8ビット)で構成される。OP フィールドは命令の種類を表すコード(オペコード)であり、COMP-X には 12 種類の命令しかない。GR フィールドでは演算で使用する GR の番号が指定される。また、JC命令では分岐条件の指定に使われる。XR フィールドではアドレス修飾を行う GR の番号が指定され、内容が 0 の場合は GR0 を意味するのではなく、GR によるアドレス修飾をしない。AD フィールドはアドレスの下位8ビットを指定する。 実効アドレスとは命令で使用するメモリアドレスであり、上位8ビットは BR で、下位8ビットは AD フィールドで指定される。XR フィールドが 0 以外の場合、指定された GR の下位8ビットと AD フィールドの値を加算し、結果の下位8ビットを実効アドレスの下位8ビットとする。

  • PDP-11のアセンブラ課題

    学校の課題で出されたものです。 まだ勉強をはじめたばかりでどこから手をつけていいのかわかりません>< ○PDP-11のアセンブラは、MOV#1,R2を次のような2語の機械語に翻訳する。PDP-11は、これをど  のように解釈し、どのように実行するのか説明せよ 0001010111000010 0000000000000001 ○PDP-11のMOV命令を使用し、以下の命令のアセンブリ言語表現、機械語表現を示せ。 ・R5が示すアドレスにジャンプする命令 ・サブルーチンから戻る命令 ・R0をスタック上にプッシュする命令 ○次のプログラムをPDP-11のアセンブリ言語で作成せよ。 ・R0が示す番号以降のR2が示すバイト数をR1が示す番号以降に転送 ・R1(上位16ビット)R0(下位16ビット)が示す符号付32ビット値を符号反転 宜しくお願い致します。