作成した返信
-
著者投稿
-
伊予研究会一般参加者
ありがとうございました。
総計時間の求め方が分かり、解決しました。
取り急ぎ、お礼まで。伊予研究会一般参加者時間計測(カレンダー)でも、測定開始後「測定終了」ボタンと「確定」ボタンを交互に押すと、測定開始からの時間が表示されているようです。
伊予研究会一般参加者ありがとうございました。
したいことは機器の稼働率を求めることだったので、このボタンとセンサからの信号を組み合わせて使うことを想定しています。センサからの信号はボタンとセンサの信号が連続して停止コマンドを実行しないために、ボタンが押せるか否かの判断を入れておきます。
もう一点お尋ねしたいことは、稼働率を求めたいのでタイマーが動いている状況で、getTotalTimeコマンドから分子となる総計測時間を求めたいことです。現状ではタイマーを止めないと戻り値では戻ってこないようです。
A130の時間計測(トグルボタン)、時間計測(カレンダー)を参照しましたが、求めたいことと違うようでよく分かりません。よろしくお願いいたします。
伊予研究会一般参加者添付ファイルありがとうございました。
要求通りの出力が得られました。ご指摘の通り、戻り値は関数などの定義で型を決めているのが一般的で、統一していないのは不適切でした。
Null判定があるのは知っていましたが、等価演算で判定できるのであれば使う必要がないと思っておりましたので、今回のような使用方法があることで理解できました。伊予研究会一般参加者等価演算子の処理について、ご教示ください。
一連のイベントの途中に等価演算子(ID4)があり、条件によって実行したいメソッド(ID4のコメント「引数0番目」)とそれを実行しない方法が分かりません。ID4ではメソッド処理結果が取得できないため、ID4の「受信データOK」に配置できません。
したいことは、エラーがあった場合はfalseを返し、正常な場合は実数4配列を返すスクリプトで、falseなら「引数0番目」以下の処理を飛ばしたいことです。ファイルを添付しますので、よろしくお願いいたします。
添付ファイル:
伊予研究会一般参加者サンプルファイル、ありがとうございました。
Wifiで4つのFloat配列の戻り値をMzに取り込むことができ、配列操作の使い方も理解できました。また、質問1につきましても、Javaでコンパイルしてできているのに、JavaScriptでできない理由が分かりませんでしたので、助かりました。伊予研究会一般参加者JavaScriptでfloatにしてからMzに取り込むのは、前回ご教示いただいた方法で解決できています。問題を簡素化するため、byte配列をMzに取り込む方法を質問させていただきました。
したいことは、JavaScriptで受信したbyte配列
’A'(char), 温度1(float), 温度2(float), 温度2(float), 温度2(float), ‘@'(char)
の18byte(= 1 + 4 * 4 + 1)を、Mzに4つのfloatとして取り込みたいことです。
理解できていない問題点をテストしながら開発していますが、何分不明な点が多く一度に質問するのも丸投げのようになり、断片的にさせていただいておりました。前記解決策として、Script内でfloat * 4の配列データに変換してをMzに読み込むか、18byteそのままMzに読み込んだ後、4つのfloatに変換するかという問題の過程で、Mzのバイト変数の配列はどのように取り扱うのかと言う疑問がありました。
【以下話は長くなりますが、ご容赦ください】
製紙会社からの相談に、抄紙機のベアリングが故障すると交換に何日も機械を止めなくてはならないため、定期点検に合わせて交換しています。まだ、使える状態であっても交換しており、これをできる限り減らしたいという要望がありました。
現状は主軸近辺の温度が上昇していないか毎時検査し、また熟練工が聴診器を当てて回転軸の振動検査も1日に1~2回しています。回転軸の振動検査は個人差があるため、センサーなどを使って測定できないかということです。また、ベアリングの診断システムは1台800万円と高いため抄紙機に対し1カ所しか測定できず、安価なセンサーで抄紙機1台に対し100~200個取り付けたいということです。
そこでArduinoを使って振動センサとサーミスタ(4本)を繋いで測定し(1台1万円強)、そのプログラムをMzで開発しています。
振動センサ(ADXL345)はX, Y, Z軸のそれぞれから整数(int)がバイトデータとして、温度(サーミスタ103ATから)は実数(float)がバイトデータとして出力されており、USB接続によるMzへの取り込みはこれまでの質疑で解決し完成しました。
ところで、別の製紙会社では工場内にWi-Fi設備を既に備えていることから、XBee Wi-Fi(S6B)モジュールで送受信する方法に改造しているところです。【ここから本題です】
Wi-Fi から受信するデータ配列は振動センサからのバイト配列と、温度センサ4本からのバイト配列になります。手始めに温度センサに絞ってMzに取り込もうとしています。
取り込むデータは、
’A'(char), 温度1(float), 温度2(float), 温度2(float), 温度2(float), ‘@'(char)
の18byte(= 1 + 4 * 4 + 1)。
1つのfloatだけをJavaScript内で変換し、Mzに取り込むサンプルはできました(wifi_FloatRead.mzax)。しかし、複数のfloatを配列としてMzに取り込む方法が分かりません。JavaScriptからの戻り値が配列であれば同じと思いbyte配列を例としてMzで受け取る方法の過程で、質問させていただいております(厚かましいお願いですが、この方法も合わせてご教示いただけると助かります)。ByteArray.mzaxに問題のプログラムを添付しておきます。
1.byte[] bytes = new byte[4];
と初期化した後、byte[0] = 1; でエラーが出る点。MzのJavaScriptは初期化の後変数を代入できないのでしょうか。
2.return bytes; で戻り値は、Mzでは[B@6b92a7eeになっています。return bytes[0];では正常に表示します。バイト配列としては正常な戻り値かも知れませんが、Mzへの取り込み方法が分からないためテキストでの表示しか確認できません。これをMzのバイト配列に入れるにはどのようにすればよろしいでしょうか。以上、よろしくお願いします。
添付ファイル:
伊予研究会一般参加者(報告2)
今度はOS:Win10 32bit、ODBC32bit環境のパソコン2台があり、Mzは32bit版をインストールしています。同じ症状ですが、前回の対処方法では起動できませんでした。ウイルスバスターを終了した状態では起動できました。
インストールしているウイルスバスターはそれぞれV15とV16ですが、どうも12月22日に自動アップデートしてから、Mz32bit版は調子が悪いようです。伊予研究会一般参加者(報告)
再度ビルダーが起動できない症状が出たので、その対処方法も含め報告いたします。問題のあったパソコンはODBC32bitを使っているため、3.6と3.6_64の2本のMzをインストールしています。3.6_64は正常に立ち上がるのですが、突然3.6(32bit)が起動しない状況になりました。原因はウイルスバスター16.0だったため、これを終了させることで3.6を立ち上げることができました。
しかし、ウイルスバスターを起動した後、Mzを終了して再度起動はできませんでした(ログの記録もありません)。
ウイルスバスター終了 → Mz3.6起動 → サンプルファイル読込 → ウイルスバスター起動 → サンプルファイル上書き → Mz終了
とすれば、次からはウイルスバスターが起動した状態でも正常に起動するようになりました。
再現性がないので、何が原因かは分かりませんでしたが、とりあえずご報告いたします。伊予研究会一般参加者実数データをデバッグモードで取り込もうとしたところ、途中でハングアップします。実行モードでは問題なく動くのですが、対処方法がございましたら、ご教示ください。
添付ファイルのsample1にMzを、その下にArduino UNOのプログラムを入れています。ハングアップする場所は、サブルーチンID-8のブレークポイントのところです。
ちなみに、同じプログラムを整数でしたところ、問題なくデバッグモードで処理できています。参考のためこちらはsample2に入れています。
よろしくお願いいたします。添付ファイル:
-
著者投稿