一往確認日記 |
2016年04月01日 [長年日記]
_ ラダーの自動生成(2)
前回はRuby言語でラダーのニーモニックを生成することを書きました。
Rubyでという話をしても普段Rubyを使用していない方にとっては何のことかさっぱり分からない事ではなかったでしょうか?
という事で、実際に試せるように準備してみました。 昔やったFun Ladderよりはかなり劣りますが、だいたい同じ様な事をさせるので Fun Ladder 2 としました。
KV-5000用で、入力と出力が1:1で対応しているニーモニックを出力します。 MRデバイスで標準化して、Rの割り当てがどうなっても対応できる様な作り方をしている方には重宝すると思います。
前の記事にも書きましたが、もっと複雑な回路でも生成する事が可能です。 こんな事が出来ないかというのがありましたら一度ご相談ください。
2016年04月04日 [長年日記]
_ 審査が早くないですか?
先日 ioTouch2とirPanel の更新をしました。
iOSアプリを申請してから通常7日から10日くらいで審査が完了するのですが、この時は日曜日に申請して火曜日には審査が終了となんと2日程で完了してました。
実はioTouch2、ioTouch2 Lite、irPanel、irPanel Liteと4つのアプリを申請しなければならないのですが、アプリをアップロードしてからiTunes側でアプリを処理するため少し待たされます。 その時たまたま4つの内の1つのアプリの処理に時間がかかっていている様ですぐに申請できず、もう少し待って申請しようと思っていましたが、そのまま忘れてしまいました。
そうです、1つだけ申請を忘れてしまったのです。
しょうがないので、火曜日に申請してもう1週間かかるかと思っていたら、なんとなんと次の日に完了してました。
今回たまたまなのかもしれませんが、早いのは嬉しいです。
2016年04月05日 [長年日記]
_ ラダーのクロスプラットホーム化を考えてみる(5)
最初のアプローチは各社のPLC用にファイルを書き出すというものでした。 しかし、各社のファイル形式はブラックボックスなので大変で現実みがないということで、別の方法を考えます。
今度のアプローチは上図の様に抽象化されたデータをそのままPLCで扱う方法です。 これだけを見ても何のことやらと思うかもしれません。
抽象化されたラダーデータをデータメモリなどに置きます。 予め書き込むラダープログラムはそのデータを逐一呼び出して実行していくイメージです。インタプリターの部分です。
ちょうどパソコンがハードディスクからプログラムを読み込んで実行する様なイメージをしてもらうと分かりやすいのではないかと思います。
インタプリターとある部分を各PLC毎に準備します。 そうすれば形としてはクロスプラットフォームが実現できて、開発ツールも同一の物が利用できます。
貴重なメモリリソースをプログラムの置き場所として使ってしまうのでもったいないのと、大きなプログラムはおけないかもしれません。
速度も犠牲になりますし、IOの部分もPLC毎に違うのでマッピングする手段も必要になってきます。
ユニット内のデータやPLCから直接扱わないといけないデバイスについては従来のラダープログラムを併用することになります。
今の所どんな感じか試しに作る気はありますが、本格的にやる所までは考えてないです。
2016年04月06日 [長年日記]
_ ラダーのクロスプラットホーム化を考えてみる(6)
前回は抽象化したラダーデータをPLC内で解析して実行するという案を出しました。
抽象化されたラダーデーターという事で書きましたが、こういうのは名は体を表すというように名前が後々響いてくるんですよね。 大事な事ですが、とりあえずLadder(梯子)より早く進める(実行速度ではなく開発期間を早める)という意味でEscalator(エスカレーター)にしておきましょう。
今回はそのPLC内部を図式化してみます。
右側のデータエリア内の~~Elevator~~ Escalator Programが抽象化されたラダーデータを表します。 用語の統一というのは苦手なのですが、中間ラダーデータとでも呼びましょうか。
左側のプログラムエリア内の~~Elevator~~ Escalator Runtimeが、その中間ラダーを読み取って実行する部分です。 ~~Elevator~~ Escalator Work Dataはその処理で使うワークエリアや、ローカル割り当てのエリアとなります。
黄色の部分が今考えている~~Elevator~~ Escalatorの部分となります。
PLC Firm Wareが元々のPLCがラダープログラムを実行する部分ですが、その上に同じようなことをするプログラムを置くのですから、非効率ですね。 さらに、少ないメモリの中に中間ラダーデータを取るわけで、こんなのが本当にできるのか?という感じですね。
しかし、この様な課題は時間やお金で解決できる場合もありますので、遠い将来にはそういうリソースを持っている方が現れることを願いましょう。
元々のラダー*1を併用できますので、速度やクリティカルな部分はネイティブなラダーにお任せします。
*1 User Program、User Dataの部分
2016年04月08日 [長年日記]
_ Escalatorのニーモニックを検討(1) - シーケンス命令 - 接点
それではEscalatorのニーモニックを検討します。
抽象化は最初にしっかり考えないと後で辻褄が合わなくなったりするのであまり得意ではないんですよね。
たぶん三菱電機を基にすれば間違いはないかと思うので三菱電機のニーモニックを参考にします。
シーケンス命令
ベース | 反転 | パルス↑ | 反転パルス↑ | パルス↓ | 反転パルス↓ |
---|---|---|---|---|---|
NOP | INV | MEP | MEF | ||
LD | LDI | LDP | LDPI | LDF | LDFI |
AND | ANI | ANDP | ANPI | ANDF | ANFI |
OR | ORI | ORP | ORIP | ORF | ORIF |
2016年04月11日 [長年日記]
_ guiflowという画面遷移図を作れるツールがすごい
hirokidaichiさんがQiitaでもう保守されない画面遷移図は嫌なので、UI Flow図を簡単にマークダウンぽく書くエディタ作ったというのを書いていて、それが素晴らしいので紹介します。
私は全く知りませんでしたがUI Flowsというのがあるそうです。*1
そのUI FlowsをMarkdown風のテキストで書けるguiflowを作ったということです。 Macならguiflowはgithubからダウンロードするとアプリがその中に含まれてますのですぐに試せます。
https://github.com/hirokidaichi/guiflow
例えばこんなテキストが
[起動画面#]
タイトル
バージョン
---
==>メイン画面
[メイン画面#]
生産情報
---
手動ボタン
==>手動画面
---
={運転開始で}=>自動画面
[自動画面#]
運転状態表示
生産状況表示
---
={運転停止で}=>メイン画面
[手動画面]
---
シリンダーボタン
==>シリンダー操作画面
ロボットボタン
==>ロボット操作画面
[シリンダー操作画面]
---
ストッバー上昇ボタン
ストッバー下降ボタン
[ロボット操作画面]
現在座標表示
この様な図として出てきます。
すごくないですか。
タッチパネルの画面構成の検討にも使えると思います。 作成指示書としてもつかえそうですよね。
irBoardの画面構成を考えるのにもつかえますね。
*1 さすが Ruby On Rails の 37signals
2016年04月12日 [長年日記]
_ Escalatorのニーモニックを検討(2) - シーケンス命令 - 出力、接続
前回は接点でしたので、今回は出力と接続を考えてみます。
シーケンス命令 - 出力
ベース | 反転 | パルス↑ | 反転パルス↑ | パルス↓ | 反転パルス↓ |
---|---|---|---|---|---|
OUT | OUTI | ||||
SET | RST | PLS | PLF | ||
FF |
シーケンス命令 - 接続
| | | | |:-:|:-:|:-:|:-:|:-:|:-:| |ANB|ORB|| || | |MPS|MRD|MPP| || |
_ コード
出力は接点の下あたりに入れて、接続は空いている所に埋めていきます。
00 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | A0 | B0 | C0 | D0 | E0 | F0 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
00 | NOP | INV | MEP | ANB | MEF | ORB | ||||||||||
01 | LD | LDI | LDP | LDPI | LDF | LDFI | ||||||||||
02 | AND | ANI | ANDP | ANPI | ANDF | ANFI | ||||||||||
03 | OR | ORI | ORP | ORPI | ORF | ORFI | ||||||||||
04 | OUT | OUTI | MPS | MPD | MPP | |||||||||||
05 | SET | RST | PLS | PLF | ||||||||||||
06 | FF | |||||||||||||||
07 | ||||||||||||||||
08 | ||||||||||||||||
09 | ||||||||||||||||
0A | ||||||||||||||||
0B | ||||||||||||||||
0C | ||||||||||||||||
0D | ||||||||||||||||
0E | ||||||||||||||||
0F |
ここまでくればかなりの事ができそうですが、次回はもうちょっと加えてみたいと思います。
2016年04月13日 [長年日記]
_ Escalatorのニーモニックを検討(3) - シーケンス命令 - シフト、マスターコントロール、終了
前回に続きシフトを追加します。
シーケンス命令 - シフト
ベース | パルス↑ |
---|---|
SFT | SFTP |
SFR | SFRP |
SFL | SFLP |
BSFR | BSFRP |
BSFL | BSFLP |
DSFR | DSFRP |
DSFL | DSFLP |
SFTR | SFTRP |
SFTL | SFTLP |
WFSR | WSFRP |
WSFR | WSFLP |
こんなにいらない気もしますが、後で検討しましょう。
シーケンス命令 - マスターコントロール
MC | MCR |
シーケンス命令 - 終了
FEND | END |
_ コード
シフトはキリがいい08から埋めます。 マスターコントロール、終了は空いている所に埋めていきます。
00 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | A0 | B0 | C0 | D0 | E0 | F0 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
00 | NOP | INV | MEP | ANB | MEF | ORB | FEND | END | ||||||||
01 | LD | LDI | LDP | LDPI | LDF | LDFI | MC | MCR | ||||||||
02 | AND | ANI | ANDP | ANPI | ANDF | ANFI | ||||||||||
03 | OR | ORI | ORP | ORPI | ORF | ORFI | ||||||||||
04 | OUT | OUTI | MPS | MPD | MPP | |||||||||||
05 | SET | RST | PLS | PLF | ||||||||||||
06 | FF | |||||||||||||||
07 | ||||||||||||||||
08 | SFT | SFTP | SFL | SFLP | SFR | SFRP | ||||||||||
09 | BSFL | BSFLP | DSFL | DSFLP | BSFR | BSFRP | DSFR | DSFRP | ||||||||
0A | SFTL | SFTLP | WSFL | WSFLP | SFTR | SFTRP | WFSR | WSFRP | ||||||||
0B | ||||||||||||||||
0C | ||||||||||||||||
0D | ||||||||||||||||
0E | ||||||||||||||||
0F |
基本ニーモニックはこれでひと段落です。 比較や演算が入ってくるとコードは移動するかもしれません。 次回はデータ型を検討します。
2016年04月14日 [長年日記]
_ Escalatorのデータ型(1)
Escalatorで扱うデータを検討します。 下表にあるデバイスを基本とすれば大抵のことはできるのではないかと思います。
実入力 | 実出力 | 内部コイル | 内部レジスター | タイマー | カウンター | 特殊コイル | 特殊レジスター | |
---|---|---|---|---|---|---|---|---|
通常 | X | Y | M | D | T | C | SC | SD |
保持 | - | - | L | H | - | - |
実際にはリンクレジスターなどもあるので、マッピングで対応するように考えたいと思っています。 具体的なことは考えてませんが、下の様にマッピングでM8000以降はBに割り当てれる様なことができればと考えてます。
デバイス | 実デバイス |
---|---|
M0-M7999 | M0-M7999 |
M8000-M9999 | B0000-B07CF |
これをコードに落とす必要がありますが、次回にしましょう。
2016年04月15日 [長年日記]
_ う電卓がアップデートになりました。
今回は = を押した後に M+ M- が機能しない不具合を修正しました。
フィードバックとして連絡いただいたのですが、最初仕様上そうなっていると勘違いしてしまいましたが、単に不具合でした。orz
また、ACでメモリーをクリアーしない機能があればということでしたので設定でACを押してもメモリーをクリアーしない設定も追加になっています。
こちらが気付いていない不具合はフィードバックいただけると助かります。 また、レビューも励みになりますのでよろしくお願いします。
2016年04月18日 [長年日記]
_ 足型測定してもらいました
昨日は子どものスポーツ用品を購入するため買い物にでかけました。 靴のサイズをきちんと調べてもらおうと思い、足型測定を無料でしてくれるという事で、測ってもらいましたが、ついでなので自分のも測ってもらいました。
今使っているマラソンシューズの縫い目が小指の甲の関節に当たって痛くて走れないので、サイズが合っていないのではないかと思ったのですが、サイズとしては問題なさそうでしたが、若干大きめかワイドを選べは良い様でした。
いつもはワイドを買っていたのになんとなく普通にしてしまったのが仇となってしまいました。
重心がどこにあるかやバランス、圧力かかかっている箇所などが視覚化され適正範囲ということでほっとしました。 外反母趾になっているかどうかも分かるらしいです。
2016年04月19日 [長年日記]
_ guiflowがWindowsでも動作する様になった様です
先日紹介したguiflowがWindowsでも動作する様になったそうです。 早速試してWindows 10でも動作するのを確認しました。
暫定動作版ということですが、こちらからダウンロードできます。
MacやLinux版もあります。
JavaScriptで書かれている様です。
JavaScriptは得意ではないのですが、Escalatorのニーモニックからラダー図を書かせることもこれを参考にすればできたりしないかなと思いました。
2016年04月20日 [長年日記]
_ 8080マイコンが完売だそうです
前に中日電工さんの8080マイコン組立キットの事を書きましたが、もう販売になっていて2ロット目も完売になったそうです。
初回ロットの注文には間に合いませんでしたが、2ロット目には間に合いました。 届くのはゴールデンウィーク明け頃になる様です。
TK-80オリジナルと同じ構成部品のバージョンで入手できそうです。
今はRubyなどで簡単にプログラムを組んで行ける時代に、改めて8080のプログラムを書くか微妙なところですが、PLCで動かすつもりのEscalatorをこのボードでも動かしてみたら良いでしょうかね?
2016年04月21日 [長年日記]
_ Escalatorのデータ型(1)
Escalatorで扱うデータを検討します。 下表にあるデバイスを基本とすれば大抵のことはできるのではないかと思います。
実入力 | 実出力 | 内部コイル | 内部レジスター | タイマー | カウンター | 特殊コイル | 特殊レジスター | |
---|---|---|---|---|---|---|---|---|
通常 | X | Y | M | D | T | C | SC | SD |
保持 | - | - | L | H | - | - |
実際にはリンクレジスターなどもあるので、マッピングで対応するように考えたいと思っています。 具体的なことは考えてませんが、下の様にマッピングでM8000以降はWに割り当てれる様なことができればと考えてます。
デバイス | 実デバイス |
---|---|
M0-M7999 | M0-M7999 |
M8000-M9999 | B0000-B07CF |
これをコードに落とす必要がありますが、次回にしましょう。
2016年04月22日 [長年日記]
_ Escalatorのデータ型(2)
PLCのデータレジスタは16bitのWORD型が多いです。 ニーモニックは8bitで定義したので、残りの8bitでデータ型を表したいと思います。
上位3bit
|7|6|5| | |:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:--| |0|||直値。6-0bitの数値を直接扱う| |1|0|0|ビット扱い| |1|0|1|ワード扱い| |1|1|0|ダブルワード扱い| |1|1|1|バイト列扱い|
上位5bit
4-3bit\2-0bit | 111 | 110 | 101 | 100 | 011 | 010 | 001 | 000 |
---|---|---|---|---|---|---|---|---|
00 | M | Y | X | |||||
01 | SC | L | T | C | ||||
10 | D | TC | CC | |||||
11 | SD | H | TS | CS |
割り当てはすっきりしたかんじで、余裕もあるのでこれですすめます。
続く
2016年04月25日 [長年日記]
_ iPadの有線LAN接続で遂に電源供給(充電)も可能になりました。
以前の記事では
以前のブログでiPadの有線LAN接続について書きました。 他の記事はページビューが少ないのですが、この記事だけは飛び抜けてページビューがあり、関心の高さが伺われます。
要約すると B00I19FAAW と Apple USB Ethernet-アダプタ を組み合わせるとiPadで有線LAN接続できるという内容でした。(iPhoneでも同様です)
残念なことにこの状態ではiPadへの電源供給ができませんでした。電源供給できないことでバッテリー切れを起こしてしまいます。
iPadをFA装置の操作パネルとして利用出来るアプリ irBoard を出していて時折有線LAN接続についての問い合わせ*1がありますが、電源供給できないのは致命的でした。
Lightning - USB 3カメラアダプタに期待
しかし、iPad Proが発表された際に紹介されていた Lightning - USB 3カメラアダプタ に Lightningコネクターが挿さる口が付いているのが気になっていました。
そんなことはすっかり忘れていましたが、つい先日の問い合わせで有線LAN接続について聞かれ、改めて確認してみました。
ますば次の機器を準備し写真の様に接続します。ちなみにiPad miniで確認しました。
- Lightning - USB 3カメラアダプタ
- Apple USB Ethernet-アダプタ
- 現在はAppleでは取り扱っていない様です。
- USB 3.0 Gigabit対応のMoshi製の製品はありますのでこちらが代替品になる思いますが実際に確かめていないのでなんとも言えません。
- Amazonでも入手できますが、レビューを見ると偽物をつかまされるケースもある様で販売店を吟味する必要がありそうです。
iOS 9.1で接続した場合は以前同様Ethernet-アダプタが未サポートであると表示が出ました。以前と違ってこの状態では有線のEthernet接続はできませんでた。
そこでiOS 9.3にアップデートすると表示はでなくなりました。
そして肝心な有線接続ですが、接続できるはずと期待しつつ確認すると、ご覧の通り期待通りに接続できました。
下の様にWi-FiやBluetooth、Celler*2での接続はできない状態でも接続できてます。(つまり有線で接続している) 嬉しいことに有線接続の方がWi-Fiよりも優先される様です。
電源供給された状態で有線接続が可能
一番肝心な電源供給もご覧の通り供給された状態で有線によるネットワーク接続ができています。
更に以前はiPad miniを再起動しないと接続できる状態になりませんでしたが、USB 3カメラアダプタをiPad miniに接続するだけで接続できる様になっていました。
ネットワークの設定項目は見当たりませんでしたので、以前同様にDHCPによるIPの割り振りが前提となります。
有線接続が公式かどうか
この有線接続が公式的にどうかということですが、Lightning - USB 3カメラアダプタの解説にはEthernetアダプタと明記されていますので公式に認められた接続と考えて良いでしょう。
さらにUSB電源アダプタを使ってLightning - USB 3カメラアダプタを電源に接続すれば、ハブ、Ethernetアダプタ、オーディオ/MIDIインターフェイスや、コンパクトフラッシュ、SD、microSD用のカードリーダーといったUSB対応周辺機器をつなぐこともできるので、あなたのiPad Proの機能と能力が一段と広がります。
MIDIインターフェイスの記述もありますので、ライブ中にバッテリー切れなんてことになると大変ですから、多くの方が望んでいた機能でしょう。
その他
ちなみにiPhone用のACアダプターで電源供給すると消費電力が大きすぎますとでて接続できません。 iPad付属のACアダプターを使いましょう。
Amazon | Apple Lightning - USB 3カメラアダプタ | Apple(アップル) | USBアダプタ 通販
2016年04月26日 [長年日記]
_ Escalator のオペランドを検討(1)
ニーモニックとデータ型が決まったので、オペランドを考えてみます。 といっても、基本的なものしかないので2種類でいいはずです。
オペランドを取らないもの
NOP, INV, MEP, ANB, MEF, ORB, FEND, END, MC, MCR, MPS, MPD, MPP
記述
ニーモニック |
例) NOP
コード
8bit |
---|
ニーモニック |
例) 00H
オペランドを1つとるもの
LD, LDI, LDP, LDPI, LDF, LDFI, AND, ANI, ANDP, ANPI, ANDF, ANFI, OR, ORI, ORP, ORPI, ORF, ORFI, OUT, OUTI, SET, RST, PLS< PLF, FF
記述
ニーモニック | デバイス |
例) LD X0
コード
8bit | 8bit | 16bit |
---|---|---|
ニーモニック | データ型 | デバイス番号 |
例) 01H 81H 00H 00H
2種類でいいはずです。と思ったらシフトもあったので3種類でしたので次回に検討します。
2016年04月27日 [長年日記]
_ iQ WorksとiQ-Fシリーズのトライアルセットが届いているのだが…
iQ WorksとiQ-Fシリーズのトライアルセットの事を以前紹介しました。 私も入手し数週間前に届いていましたが、ようやく開封出来る時間ができて昨日試してみました。
が、USBポートはなくどうやって接続するの???と思いました。 FX5Uを手にするのは初めてです。 irBoardではFX5Uもサポートになっていますが、それはMX Component for iOSが対応しているということで、自分ではまだ試してはいなかったのです。
Ethernetが付いているからEthernet経由で繋げるんだよなと思いつつ設定されているIPは何?とか疑問に思い、DHCPなら自動で繋がるんではと淡い期待をしましたが、予想通り卵が先か鶏が先かの様な話になっています。
SDカードにプロジェクトを入れてしまえばSDカードからブート出来るのでは?とか色々ドキュメントを当たったりしましたが結局分からずじまいでした。 RS-232Cの拡張モジュールを購入すれば済むことでしょうが、もうちょっとあくせくしてみます。
2016年04月28日 [長年日記]
_ FX5Uとやっと接続できました
昨日はFX5Uと接続できないということで、結局いつもお世話になっている三菱電機の方に問い合わせしました。
FX5U側のIPアドレスは設定しなくても繋がるという回答をいただきました。昨日も散々試したんだよなと思いつつ、ネットワーク環境を変えて試しました。
GX Works3はMac上でParallelsのVirtual Machine上で動いているWindows 10内で動作しています。 切り分けができる様に、EthernetでFX5Uと1対1で接続する様にしIP設定しなくても繋がるということはやっぱりDHCPかなということでDHCP設定にするとビンゴ!MacからはプライベートIPで繋がっているのが確認できました。
$ ping 169.254.255.255
PING 169.254.255.255 (169.254.255.255): 56 data bytes
64 bytes from 169.254.227.26: icmp_seq=0 ttl=255 time=0.296 ms
64 bytes from 169.254.227.26: icmp_seq=1 ttl=255 time=0.243 ms
戻ってParallels上のWindows 10で確認するとセグメントが違っている。 という訳でParallelsのNewtworkの設定をブリッジネットワークに変更。 一度再起動しないと反映されませんでした。
これで確認するとセグメントが同じになっていてようやく接続できました。
ということでMac+Parallelsじゃなく素直にWindowsマシンであればすんなり繋がっていたのではないかというオチでした。
しかし、一度IPアドレスを設定した後はDHCP接続ではなくなると思うので、そのままIPアドレスを忘れてしまった場合はどうやって元に戻すのかという疑問は残ります。 プロジェクトファイルが残っていれば忘れても問題ないのですが…
2016年04月30日 [長年日記]
_ スター・ウォーズ/フォースの覚醒 が届きました
スター・ウォーズ/フォースの覚醒のムービーが昨日届きました。 スターウオーズファンとしては入手したい1枚です。 すぐ見たいのは山々でしたが、色々行事があり本日の視聴となりました。*1
B01DCXDZ8A
映画はデジタル配信もされていますが、ブルーレイやDVDの場合字幕版と吹き替え版が含まれてますが、デジタル配信ではどちらか一方しか選べないので、両方見たい場合は2重に支払うことになりデジタル配信での購入は避けてきました。
しかし、このMovieNEXではブルーレイやDVDに加えデジタルコピーも含まれてます。しかも字幕版と吹き替え版両方が見れます。 ブルーレイやDVDを購入したらデジタル配信も見れるというのは正しいあり方だなと思います。
デジタル配信を見るまではディズニーやbonoboなどのアカウントが必要で、その作成に時間が取られてしまいました。次の購入からはもっと素早くできる様になると思います。
*1 映画館でも見てます