• 締切済み

シーケンサープログラム

ビットデバイスM0~M100があって、隣り合うMのデバイスが同時にONした時間をタイマー等でカウントし、一定時間以上その状態が続くと警報出力したいです。 力づくでプログラムの作成はできると思うのですが、何か短いプログラムで記述する方法はないでしょうか?

みんなの回答

  • ninoue
  • ベストアンサー率52% (1288/2437)
回答No.3

隣り合うビット同士が両方とも1の場合には...  if ((a & (a>>>1))!=0) ...     integerとしての演算に許されているビット数-1 だけ同時にチェック可能です。 さらに多くのビットがある場合、シフトのためにチェック出来なかったビット分をオーバーラップさせながらチェックしていきます。 以上を基本にループさせる等の他ないと思います。 上記シフトには logical shift を仮定しています。 arithmetic shiftしかない場合 MSBはsign extendされるので注意   if ((a & (a>>1)&0x7fff)!=0) do ... 等とする。 (left shiftの方が使いやすいかもしれない) 連続する3bit checkの場合は次のようになる。  if ((a & (a>>>1) & (a>>>2)) != 0) do ...

mm02847
質問者

お礼

ありがとうございます。 参考になりました。これを元にトライしうまくいきました。

全文を見る
すると、全ての回答が全文表示されます。
  • ur2c
  • ベストアンサー率63% (264/416)
回答No.2

それならソフトウェア開発手法、特に言語をうまく選ぶくらいだと思います。良く聞くのは functional programming を使うと楽だ、という話です。たとえば ATM ならこんな報告 http://www.erlang.se/publications/Ulf_Wiger.pdf とか。

全文を見る
すると、全ての回答が全文表示されます。
  • ur2c
  • ベストアンサー率63% (264/416)
回答No.1

何のために「短いプログラム」にしたいのでしょう? 書くのがめんどうなので libray call 一発で済ませたいのですか? つまり source code が短ければ良いのでしょうか? それとも、非力な石を使うので object code を小さくしたいのでしょうか?

mm02847
質問者

補足

システムが膨大でデバイスの割付もいっぱいいっぱいであるためです。実際にはM500~M1000なんですが、質問では便宜的にM0~100としました

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 三菱シーケンサーのプログラムについて教えてく…

    三菱シーケンサーのプログラムについて教えてください 三菱シーケンサーFX1Nシリーズでラダー図を作成しました。 このシーケンサーにデータアクセスユニットFX-10DUを接続し、 タイマーとカウンターの数値を10DUを使って変更できるようにしたいのですが、 電源を切ると10DUに入力したデータが消えてしまいます。 この場合、ラダーの中に何か回路が必要なのでしょうか? ちなみに、10DUにタイマー数値を入力すると設定どおりに動くので、 デバイスの転送は出来ていると思います。

  • PLCのタイマーがらみのプログラムを教えて下さい。

    初歩的な質問で情けないですが、プッシュボタン(入力1回路)を押すと同時に出力ポート1回路に出力し(モーメンタリー)、PLCで設定した時間経過後、同じ出力ポートに約0.5秒信号を出力するプログラムを教えて下さい。PLCは今は製造終了になっている泉電気のMICRO1です。初心者ですので表現等適切でないかと思いますが、よろしくお願い致します。 稚拙な説明で解り辛くて申し訳ございません。 下記タイムチャートの動作です。 入力1  _■___________ タイマ  _■■■■■■■■■■__ 出力1  _■_________■_  タイマーの部分は連続を表しています。 PLCはオンディレイしかないとの事なのでこんな図式はおかしいかもしれませんが設定時間経過後に一定時間出力を出したいです。 トリガー信号で機械をON、OFFさせます。

  • シーケンサの回路。

    あるビットが立っている間、出力3点を一定時間(1sec程度)毎に切替える回路を組みたいのです。 出力3点を"1","2","3"としたとき、 1→2→3→2→1→2→3→2・・・のような動きにさせたいです。 このデバイスを利用すると具合が良いとか教えていただけると助かります。(メーカー不問)

  • シーケンスのラダーについて

    三菱のPLC FX-1Nを使用しています。 下記の動作をさせるのに、どのようなラダーにすればよいでしょうか? ○設備立上げ後、一定時間(1.5時間程度,任意設定)IN信号が入力されなかったら、OUT信号を出力する。 内部タイマーを使用すると、3276秒までしかカウントできず。 タイマーとカウンタ両方使ったりするんでしょうか? 100秒経過したら、カウント 1 UP とか。 以上、よろしくお願いいたします。

  • 三菱シーケンサ デバイステストについて

    デバイステストで入力信号接点(X)を強制ONさせたとき、 強制リセットをかける以外に、何かの出力(M等)でリセットをかける方法はありませんか?

  • 三菱製シーケンサの時計データ帯域比較で質問です。

    三菱製シーケンサの時計データ帯域比較で質問です。 まず、TRDで時刻を取得し、TZCPの入力まで終えました。 そのあとの記述が分かりません。 朝7時30分から9時30分と、朝14時30分から15時30分の間だけ、 Y0接点がONするようにプログラムを作成したいのですが、 記述を教えてください。 時間帯が2つあるので補助リレーで帯域2つをそれぞれ出力し、 最後にまとめてY0で出力すればいいのでしょうか? ↓この画像が大きくて見やすいです。確認お願いします。 http://fast-uploader.com/file/7094330554188/

  • PICプログラムについて

    こんにちは 早速ですが質問です。 PIC16A84を使用しています。発振は4Mhzを使用しようと考えています。 入力Aの信号ONで出力Aの信号を(通常ON)をを25mSec間OFFし次にONを25mSecと入力Aの信号がONの間繰り返すのですが、この他に、入力Bと出力Bがあり、入力A、出力Aと同じ動きをするのですが、入力AとBが同時にONしたときのプログラム方法がわかりません。(プログラムの同時進行の場合のプログラミング方法) わかりずらいですがよろしくお願い致します。

  • EXCEL VBA 自動でプログラムの実行できますか

    EXCELのVBAでタイマー等を使用して一定の時間がきたら プログラムを実行させたいのですが、教えて下さい。 宜しくお願いします。

  • プログラムについて

    次の問題が自分はどうしても分からないので、みなさんの力をお借りしたいのです。 問題は:   N以下の素数を求めるプログラムと   試験の得点(0以上100以下の整数)を入力し,得点データの分布を10点刻    みのヒストグラムの形式で出力するプログラムの作成が分かりませんので、   何とかよろしくお願いします!

  • タイマー制御にシーケンサは必須?

    シーケンス制御された脱水機を使用しており、タイマー制御の バイブレーターを設置して脱水効率を上げたいと思っています。 1:脱水機モーターに接続されているマグネットスイッチ(M1) の補助端子から、マグネットがONになっていることを検出 2:タイマー1(T1)で設定した時間、バイブレーターの作動を待たせる 3:タイマー2(T2)で設定した時間、バイブレーターを作動させる 4:M1がONになっている間、2と3を繰り返す ※バイブレーターはエアー駆動で、T2からの出力で ソレノイドバルブを開閉させる。 上記条件で盤屋さんに見積を依頼したところ、「シーケンサーが 必要です」と言われました。 「あったほうが絶対楽」という話ならわかるのですが、 本当に「無ければ制御できない」の?と疑問に思っています。 私が触ったことのあるタイマーは富士電機のMS4SMという タイマーなのですが、これには限時接点とリセット接点が内蔵 されているため、 1:M1の補助接点短絡→T1の入力接点に入力 ・・・T1によるONディレー・・・ 2:T1の限時接点短絡→T2の入力接点に入力 3:T2の限時接点短絡→ソレノイドに入力&T1のリセット接点に入力 ・・・T2で設定した、短絡保持時間経過・・・ 4:T2の限時接点開放→T1によるONディレー再開 ・・・2~4の繰り返し・・・ 5:M1の補助接点開放→T1停止→T2停止 (最後の1回だけ余分にソレノイドが作動してしまうか?) というような流れで制御できないものなのかなぁ、と考えているの ですが、何か見落としている点があるのでしょうか? 盤屋さんに根掘り葉掘り「本当に必要なの?」と聞くのも、 「素人が知ったような事言うなら、手前ぇでやりやがれ!」 と気分を害されそうで、深く聞けません。 どなたかお知恵をお貸し下さい。