GXwork ラダープログラムに関する質問

このQ&Aのポイント
  • GXwork ラダープログラムに関する質問の内容を要約します。
  • 質問者は、写真を示しながらD11とD510に0~23の数字を入力した際に、設定したデータレジスタ(D2000~D2023)にK1が書き込まれるように設定していますが、D11とD510に再度数字を入力した際に、データレジスタの値が0に戻らずに困っています。
  • 質問者は、ZRSTで数字をリセットするコマンドを追加したが、数字が戻らない問題に対してどう対処すればよいかアドバイスを求めています。
回答を見る
  • ベストアンサー

GXwork ラダープログラムに関して

質問拝見していただき、ありがとうございます。 最初に下記の写真を拝見していただけますと助かります。 下記の写真の様にD11とD510に0~23の数字を入力した際に、対応したデータレジスタ(D2000~D2023)にK1を書き込むように設定しており、D510>D10となった際に、D11とD510の間で設定した数字の範囲内の対応したデータレジスタ(D2000~D2023)にK1を書き込むように設計をしているのですが、D11とD510に再度数字を入力した際に、データレジスタ(D2000~D2023)の値が0に戻らずに困っております。 ZRSTで数字をリセットするコマンドを追加してみたのですが、ONになっても数字が戻りません。 どうしたらよろしいのでしょうか? ご回答のほどよろしくお願い致します。

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

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

ただ単に条件OFFの時はD2000~2023をゼロにすれば良いなら 先頭行に↓を加える . SM400 ---||------------------------[ FMOV K0 D2000 K24]

関連するQ&A

  • ラダー設計について教えてください

    反応炉システムの設定値をLED表示灯に表示するという ラダーの設計の例題を解きたいのですが、初心者で 全く手が付けられません。参考になるものがあれば、 教えていただきたいのですが・・・ 問題の詳細は、出力レジスタに数値をセットすると その値が表示されるというものです。 設計条件:ネットワーク方式 Pt100Ωよりの信号はアナログモジュールへ入力され、アナログモジュール で0~200℃/0~4095に変換される(Pt:白金) 入力レジスタ:30001 LED表示灯用の出力レジスタは40001で10進3桁整数表示 (演算結果は小数点1桁目四捨五入) 途中経過の演算レジスタは40501,49502と49503を使用 一次関数演算回路 演算は乗算回路が先で除算回路と続き桁上げ回路が最後 上記の内容ですが、さっぱり分かりません。 こんな質問で申し訳ないですが、何方かアドバイスを いただければと思います。

  • ラダー回路 データレジスタの指定領域の参照

    データレジスタに格納されたアスキーデータに対して、1桁目のみを照合させるにはどうすればよいでしょうか? 例えば、デバイスD1に"01"というデータが格納されていたとして、その1桁目のみ(この場合"1"の部分)に対して比較演算を行わせるにはどうすればよいでしょうか? 設計ツール:GX Works2

  • ラダー回路で質問です。

    URLにありますラダー回路で質問です。 データレジスタを使用して入力し、Y006で出力します。 入力は2回目でオン、3回目でオフ、4回目でオン、5回目でオフの 設定の予定ですが、2回目の入力で出力が反応せず、4回目の入力では 出力が反応します。何が原因かわかりますでしょうか? http://fast-uploader.com/file/7026712716001/

  • 線形探索法のプログラムについて

    配列Aに格納されている数字を検索するプログラムより、 Aのプログラムでは配列Aに格納されている数字を検索(scanf("%d" , j)で入力)した にもかかわらず、「該当するデータがありませんでした」と表示されてしまいます。 Bのプログラムでは、配列Bに格納されている数字を検索(scanf("%d" , j)で入力)すると 「該当するデータがありました」と表示されます。 Aのプログラムで、------でかこってある部分に問題があると思われ、 いろいろと試してみましたが、未だにその理由をつかむことができません。 その理由を知りたく、書き込みを致しました。 ご教授の程宜しくお願い致します。 A. main(){ int i , j; int k = 0; int A[5] = {4 , 1 , 3 , 4 , 5}; printf("検索する数値を入力してください > "); scanf("%d" , j); --------------------------------------------------------------- for(i=0 ; i<5 ; i++){ if(A[i] == j){ printf("該当するデータはあります"); k++; } } --------------------------------------------------------------- if(k <= 0){ printf("該当するデータがありませんでした\n"); } return; } B #include<stdio.h> main(){ int i , j , k; int A[5] = {4 , 1 , 3 , 4 , 5}; printf("検索する数値を入力してください > "); scanf("%d" , j); for(i=0 ; i<5 ; i++){ if(A[i] == j){ k++; } } if(k>0){ printf("該当するデータはありました"); }else{ printf("該当するデータはありませんでした"); } return; }

  • PIC16F88で500という数字を8ビット+2ビットのレジスタに設定

    PIC16F88で500という数字を8ビット+2ビットのレジスタに設定する方法を教えていただきたいです。 変数D1,D2,D3にそれぞれ、0,0,5 という500を意味する各桁の数字が入っているのですが、 これをPWMのDutyのレジスタに8ビット+2ビットで設定したいのですが、 どんな手順をとったら10ビットの2進数に変換できるでしょうか?

  • バイナリ指定で複数レジスタを順次リセットするラダ…

    バイナリ指定で複数レジスタを順次リセットするラダーシーケンス ラダー(シーケンス)回路の組み方を教えてください。 入力が1点:リセットPB 出力が4点:リセット入力 :レジスタ#1 :レジスタ#2 :レジスタ#3 出力先(相手機器)は7ヶのレジスタを持っており レジスタ#1~レジスタ#3の 3ビットでレジスタを指定し同時に リセット入力 をonすることによって所定のレジスタがリセットされます。 1回 リセットPB を押すだけで複数のレジスタをリセットする回路を作らなければいけません。話しを簡単にするために7ヶすべてのレジスタを1プッシュでリセットする回路と考えてけっこうです。 順次指定を変えてリセットを繰り返す方法がわかりません。 失礼しました。入力がもう1点 リセット確認:RSTACKがありました, レジスタは1ビットと考えてください。 入力: XO:PB押しボタン X1:RSTACK 出力: Y0:RST Y1:#1(2-0) Y2:#2(2-1) Y3:#3(2-2) 途中まで考えてみましたが M2~M7 をたてる方法がわかりません。 RSTACKは1個のレジスタをリセットするごとに1パルス同一信号が返ってきます。 X0 --||----------[PLS M0] X1 --|/|---------(M99) | M0 M99 --||--+--|/|---(M1) M1 | --||--+ M1 --||-----------(Y0) M2 | --||--+ M3 | --||--+ M4 | --||--+ Mn | --||--+ ** M5~M7 すべてパラ M1 --||--+--------(Y1) M3 | --||--+ M5 | --||--+ M7 | --||--+ M2 --||--+--------(Y2) M3 | --||--+ M5 | --||--+ M7 | --||--+ M4 --||--+--------(Y3) M5 | --||--+ M7 | --||--+ レジスタとの表現が誤解を招きました。外部機器(カウンタ)です。 カウンタを255ヶ持っており。そのカウントのリセットのための入力が,リセット信号:1ビット,カウンタ指定信号:8ビットです。リセット完了応答が"RSTACK"1ビットです。 PLC側はmov命令他たいていのコマンドは使えます。ラダー表記の他にニモニックでもプログラムできますがラダーの方が解釈しやすいです。 タイミングパルスとカウンタを使う等して順次作動する回路は作れそうな気がしますがいかにも複雑です。もっと単純スマートな方法がありそうな気がします。 "PB"入力を保持して, ラダー図上段から1かたまり(1段)ずつ作動し(2回以上作動しない), 最下段が作動完了で保持を解除でよいと思うのですが。 応答が"RSTACK"1本なので・・?。 1段目は"RSTACK"でリセットするとして, 2段目は PB(M0)and"RSTACK(a)" でonしてよいか,保持offを"RSTACK(b)"でよいか(a),(b)が同ブロックに存在? 最終段リセット完了(M99)はどうやって作るか?

  • C言語の入力方法について

    C言語で以下のようなプログラムをつくるとします。 ・5個の数字を入力し、合計を求める。 その際、コマンドプロンプト上に実行結果が下記のようにでるとします。 例: 1個めの数字を入力してください→ ここで1を入力すると 例: 1個めの数字を入力してください→1 2個めの数字を入力してください→ このようになったときに「やっぱり1個めの数字を変更したい」 となったときに変更する手段はあるのでしょうか?

  • ラダー回路におけるCSVファイル操作

    ラダー回路上で、SP.FWRITEとSP.FREAD命令を使ってCSVファイルへの書込・読出などの操作をさせようとしているのですが、うまくいきません。 具体的には、ファイルレジスタに格納された値(GOTからの入力値)をCSVに保存する際、「ダブりを防ぐために一度CSV内のデータを探索し、同じデータがなければそのままデバイス値を保存する」といった処理をさせたいのですが方法が思いつかず困っています。 CSV内のデータを参照・操作する方法について、ぜひ教えていただきたいです。 - シミュレーション環境 - PLC(CPU):MELSEC Qシリーズ プログラミングソフト:GX Works2

  • VLOOKUPにて数字を打てばデータ(別ワークシート)が反映させる表を

    VLOOKUPにて数字を打てばデータ(別ワークシート)が反映させる表を作成 しております。 現在C9に数字を入力すればD9にデータを表示されるように しているのですがC9に数字を入力しなくてもD9に直接数字を入力すれば D9にデータが反映されるようにしたいのですが設定方法はありますでしょうか。 以下が現在D9の中の式となります。 =IFERROR(VLOOKUP(C9,テーブル1[#すべて],2,FALSE),"")

  • 制限の仕方について

    電卓みたいなつくりで、コマンドボタン(数字の0~9と'-’や小数点など、よってコマンドボタンの数は12個ぐらいです。コマンドボタンを一つ一つの数字に対応させている。)を押したらラベルやテキストに数字を表示するもの作っています。わかりやすく言うと(?)、電卓の計算機能を取り除いたやつです。そこで、数字入力の際にラベルやテキストに-100~100までしか表示できないようにするには、どのように記述すればいいのですか?教えてください。