- 締切済み
プロトコルの決め方(RS232C)
VB6.0を使用して、画像処理プログラムの開発を行っているのですが、処理結果を別機器(PLC)へ送信しなければならなくなりました。漠然とRS232Cでデータ通信を行おうと考えてたのですが、上司から「まずプロトコルを決めないと、232Cもクソもないやろ」と怒鳴られました。232Cの使用を前提として、プロトコルを決めたいと思うのですが、上司に説明する文書としてどのような書式を用いればよいのか見当がつきません。(トホホ明日中に説明しろと言われております) VBと別機器の動作としては、別機器からスタート信号をもらい、PCで画像撮像・処理を行い、処理データ(小数点以下3位程度×2個)を別機器へ送信するといったものです。 上記動作そのものが「プロトコルを決める」ということではありませんよね?スタート信号や処理完了信号の文字を決定するところまでを含めて「プロトコルを決める」ということなのでしょうか? アプリケーションとしては複雑なものではないのですが、いかんせん基本が分かっていないので、私の説明も理解していただき難いものがあるかと思います。上記動作のアプリケーションに似たプロトコルのサンプル文書があれば非常に助かるのですが。。。 よろしくお願い致します。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- Pesuko
- ベストアンサー率30% (2017/6702)
サードメーカーの出しているOCX系は遅いので うちのSEは自作してます。 PLC側の指定したアドレスのデバイスDとかWに データーを書き込む・または読み込むハンドラーのような物です。 三菱側の設定もモード1・2・3・4とあったはずで うちの会社はモード4を使用してます。 通信電文のヘッダーに%Wとかコマンドを乗せて+アドレス+データ+BCC 見たいな感じ。 そうするとPLCから書き込み完了の電文が帰ってくる。 三菱の通信ユニットはRS-422が基本なのでPC側の直近に 422-232のコンバーターを入れる。 http://japan.moxa.com/product/TCC-100.htm フェニックスコンタクトの↓なんかは、DINレール取り付けで 制御盤に取り付けやすい http://eshop.phoenixcontact.com/phoenix/treeViewClick.do;jsessionid=FhmFnL0Gy0FLG13vBFtd260zVJqTvm9LLmJsp2MpQWspCL4h2H9r!-43163078!NONE?UID=236784&parentUID=236783&reloadFrame=true
- kiki_s
- ベストアンサー率59% (147/248)
三菱製PLCが基本って盤屋さん?多いですね。 うちはオムロンが基本です(^^;; メーカの対応がいいから気に入っています。 >ところで「OCXなど」って何でしょうか? OLEコントロールの一種です。 OLE 2.0に準拠したソフトウェア部品で、呼び出して利用する外部コマンドと同じ様なものです。 正しくは「OLEコントロール」といいますが、 拡張子がOCXになっていのるで、こう呼ばれるようになっただけです 正確には、「Object Linking and Embedding」といいますが、 今はOLEコントロールもActiveXコントロールと呼ばれています。 必要な情報を渡してやると、通信の部分は意識しなくても、 読み書きが可能になりますが、 直接データメモリなどに書き込みますので、 注意しないと駄目な場合もあります。 OLEコントロール(ActiveXコントロール)は、 フリーソフトにもあるみたいです。
- kiki_s
- ベストアンサー率59% (147/248)
横レス申し訳ありません。 プロトコルには、ハードとソフトがあると思ってもらえばよろしいかと。 Ethernetを使うかRS232Cを使うか、それともUSBを使うかなど、 どの様なインターフェースにするかがハードのプロトコルで、 例えばRS232Cを使う事にした時、 通信情報の内容をどの様にするかを決めるのがソフトのプロトコルです。 三菱製PLCとの事ですが、情報量にもよりますが、 コマンドから通信させるのは力業の部分も多々あります。 内容によっては、OCXなどを利用する方が、 簡単に済む事が多いですね。 三菱は最近触らなくなったので、 覚えていませんが、OCXがあったと思います。 確か、何かのソフトにバンドルされていて、 価格が結構高価だったような・・・ サードメーカなら MELSEC OPCサーバ http://www.faweb.net/opc/opcserver_melsec.html なんてものもあります。 オムロン製であれば、CompoletとFinsGatewayで簡単にPLCへ読み書きが出来ます。
お礼
ご回答ありがとうございます。やたらと「プロトコル」にこだわってしまってすみません。 オムロンがよさげとのことですが、客先からの指定がない限り、うちでは三菱が基本みたいなんです。。。 ところで「OCXなど」って何でしょうか?
- PED02744
- ベストアンサー率40% (157/390)
http://www.fukufukudenshi.com/LineMonitor/RS-232C.html とりあえず、これを読んでみてください。 上司の方もあなたも「プロトコル」を勘違いしています。 RS-232Cを使うと決めたのであれば、ハードウェアよりのレイヤ(1と2かな?)の「プロトコル」を決めたことになります。 あとは、ソフトウェアよりのレイヤの「プロトコル」を決めればよいのです。 上のURLを参照していただければわかりますが、パソコンのCOMポートは同期通信をサポートしていませんので、ASYNC(非同期通信)しかありえません。 ので、スタートビット・ストップビット・パリティビット等を決めれば環境が整います。 非同期通信ですから、勝手にデータが流れます。 さて、ここで問題があります。 非同期通信しかサポートしていませんから、どうにかして「ハンドシェイク」しなくてはいけません。 ここで上司の期待している「プロトコル」の出番です。 「データ送信開始」コマンドはどうする? 「データ送信終了」コマンドはどうする? 「相手機器と【ちゃんと受け取れた】かの確認」はどのようにする? などなど、山盛りあります。通信相手の仕様に依存するので、 サンプル文書はないと思います。しいていうなら、相手機器の通信機能マニュアルになるとおもいます。
お礼
ご回答ありがとうございます。 やはり私は「プロトコル」という言葉の意味から正しく学ばなければならないようです。ご紹介いただいたURLも昨年末に一度、目を通しているのですが・・・。ただ、PC・マイコン・PLCのプログラミングや基板設計まで簡単にやってのける上司には何も勘違いはないと思います。(私が「簡単に」なんて言うこと自体、ウソ臭いですかね) プロトコルとは、ご回答いただいた<<「データ送信開始」コマンドはどうする?・・・>>を定めたものそのものを指すのでしょうか?例えば、レベルは断然違うのですが、IPやTCP、HTTPと呼ばれるプロトコルはこれと同義で、EthernetがRS232Cに対応していると考えております。 また、プロトコルはハードよりとソフトよりのものがあるとおっしゃっています。まずRS232Cを選択したということが、「プロトコルを決める」ということの一部として理解してよろしいでしょうか? もう少し詳しいことを申しますと、実はPLC側のハード設計が今日から始まっており、それに対してこちらから通信仕様をまとめ、一度打ち合わせを行いたいのです。そういった意味も含め、資料としての「サンプル文書」をいただければなぁと思う次第なのであります。
- fortranxp
- ベストアンサー率26% (181/684)
PLCって何のPLCですか。 プログラマブルコントローラならば その仕様書にRS232C送受信の手順すなわち プロトコルの仕様も載ってるのでは?
お礼
ご回答ありがとうございます。 Pesukoさんへのお礼でもその他詳細を追記させていただいております。
- Pesuko
- ベストアンサー率30% (2017/6702)
>と怒鳴られました 何で怒るのか良く解らないけど・・・ 相手のPLCは決まってますか? 三菱かな? 三菱ならRS422になると思うけど、メディアコンバーター通しますか? 232CならFXに直接ですか? 三菱のプロトコルは理解してます? DとかWに画像処理PCから指定アドレスに書き込みに行く事になると思うけど。 >上記動作そのものが「プロトコルを決める」ということではありませんよね これらを私たちは動作フローと呼んでいます。 回答にならないけど、決まっていない事が多いように感じます (ここに書いてないだけ?)
お礼
早速のご回答ありがとうございます。 三菱Qシリーズで、PLC側は別担当者です。シリアルコミュニケーションユニットを取り付けるようです。 メディアコンバータ・・・PCとシリアルミュニケーション直接のつもりでした。 三菱のプロトコルっ???という感じです。 CC-LINKで直接アドレスへ書き込みの経験があるのですが、今回はPCにCC-LINKボードを取り付けず、PCのCOMポートで対応したいと考えています。 引き続きご指導よろしくお願い致します。
お礼
ご回答ありがとうございます。 盤屋ではなく自動機・検査機のメーカです。要求仕様・スピードによってマイコンやPC、PLCを使い分けたりあるいは併用したりしています。 ActiveXコントロールですか。。。最近、PC&USBカメラからの画像取込でDirectX(DirectShow?)を使ったりしたんですが、双方ともにさっぱり分かりませんです。お互い関係あるのかな?やっぱ勉強必要です。 また機会があれば色々と教えてください。