«前の日(10-30) 最新 次の日(11-01)» 追記

一往確認日記


2016年10月31日

_ Escalatorのプログラムデータを手で入力してましたが、自動で転送できる様になりました。

Escalatorというのは、各種PLCがメーカーや機種毎にプロジェクトデータが異なるため互換性がなく、移植するのが大変なのを解決しようとするものです。

ここのescalatorのカテゴリーを見てもらえると今までの経緯を見てもらうことができます。

完全に置き換えることを考えてるわけではなくて、根幹となる処理の流れ(シーケンス)を簡単に記述できるところを目指してます。 今は、ニーモニックレベルですが、例えば次の様にやることを順番に記述するとEscalatorがニーモニックを作ってくれてPLCに流してくれるということを考えてます。

  • パレット到着確認
  • 位置決めシリンダー動作
  • ワーク取り付け
  • 位置決めシリンダー戻す
  • ストッパーを下げる(次の工程に流す)

例えばサイクルタイムを稼ぐために、先にストッパを下げておく場合は下の様に行を入れ替えるだけで良くなります。

  • パレット到着確認
  • 位置決めシリンダー動作
  • ワーク取り付け
  • ストッパーを下げる
  • 位置決めシリンダー戻す

やったことがある方はお分かりと思いますが、これをラダーで行う場合は結構面倒です。 ここでは1箇所だけですが、開発案件ではこの様な順番の入れ替えや間にやることが増えたり、逆に減ったりということが良くあります。 しかも何回も何回も行うことがあります。 最初は綺麗にデバイスが順番に並んでいたのが、いつの間にかバラバラの番号になってしまい把握しづらくなってしまうことが良くあります。

Escalatorは行を入れ替えるだけでよくなります。(まだまだ構想段階ですが)

今まではEscalatorのプログラムデータをPLCに転送するのに手入力で行っていたので、あまり公開できるレベルではありませんでしたが、ようやくEscalatorで転送できる様になり、皆さんに試してもらえるレベルになりました。

EscalatorはRuby環境を準備する必要がありますが、それさえ準備できれば試せます。 こちらにRuby環境準備後の導入手順を記述してますので、興味のある方は試してみてください。 MacでもWindowsでも動作します。試してませんがLinuxでも動作すると思います。 文字が見にくいのですが、頑張って動画もつくりましたので雰囲気だけでも感じでもらえれは嬉しいです。

Escalator概要から導入手順

Escalatorに共感してくれる方はほとんどいないと思いつつやっていますが、Rubygemsでダウンロード数を確認すると、昨日1日ですでに100回程のダウンロードがあります。 動画作りで20回位は自分で稼いでますが、それを差し引いても80回ダウンロードされていて、いったいどんな方がダウンロードしてるのでしょうか?

フィードバックをもらえると嬉しいです。

本日のツッコミ(全2件) [ツッコミを入れる]

_ oresummer [とても興味深いです。また来ます]

_ かつよし [ありがとうございます。なかなか進みませんがまた来てください。]


2020年10月31日

_ ENVELOPE - その1

前回のBBC MicroのENVELOPEコマンドについてです。

ENVELOPEはシンセサイザーでは音の振幅のコントロール(ADSR)によく使われています。
BBC MicroのENVELOPEは振幅に加えて音程(ピッチ)もコントロールで、シンセサイザーでいうLFOによる変調の機能も持っている様で、この点に驚いたのでした。

ADSR - Wikipedia

LFO (電子楽器) - Wikipedia

おさらいです。
BBC Micro emulatorで下のコマンドを入力します。

ENVELOPE 2,1,2,-2,2,10,20,10,1,0,0,-1,100,100
SOUND 1,2,100,100

これはBBC Microの説明にあるものなのですが、a wailing police siren(パトカーのサイレン)とありますが、パックマンの音にしか聞こえません。

ENVELOPEには14個の数値を指定していて、ぱっと見では何をしているかわかりませんのでドキュメントをみてみます。

ドキュメント

前半の8個が音程に関するパラメータです。
後半6個が振幅に関するパラメータです。

ENVELOPE パラメータ名 範囲 機能
2 N 1〜4 登録番号
1 T 0〜127 : 0-6bit 1ステップの長さ。(Tx1/100秒)
T 0 or 128 : 7bit 0:単発 128:連続
2 PI1 -128〜127 1ステップ毎のピッチ変化量1(PI1x半音)
-2 PI2 -128〜127 1ステップ毎のピッチ変化量2(PI2x半音)
2 PI3 -128〜127 1ステップ毎のピッチ変化量3(PI3x半音)
10 PN1 0〜255 PI1のステップ数
20 PN2 0〜255 PI2のステップ数
10 PN3 0〜255 PI3のステップ数
1 AA -127〜127 1ステップ毎の振幅変化(立ち上り)
0 AD -127〜127 1ステップ毎の振幅変化(減衰)
0 AS -127〜0 1ステップ毎の振幅変化(保持)
-1 AR -127〜0 1ステップ毎の振幅変化(余韻)
100 ALA 0〜126 AAの到達レベル
100 ALD 0〜126 ADの到達レベル