シリアル通信の方法と命令について

このQ&Aのポイント
  • キーエンスのバーコードリーダーと三菱QシリーズのシリアルコミュニケーションカードをRS-232Cで接続する方法について説明します。
  • シリアル通信を行うためには、キーエンスのバーコードリーダーと三菱Qシリーズのシリアルコミュニケーションカードを正しくRS-232Cで接続する必要があります。
  • 具体的な命令や設定については、キーエンスと三菱のマニュアルを参照してください。
回答を見る
  • 締切済み

シリアル通信

キーエンスのバーコードリーダーと三菱QシリーズのシリアルコミュニケーションカードをRS-232Cで接続したいのですがどのような命令を書けばよいのでしょうか?

noname#230358
noname#230358

みんなの回答

noname#230359
noname#230359
回答No.1

以下のマニュアルをダウンロードして http://wwwf2.mitsubishielectric.co.jp/melfansweb/documentsearch/manualinfo.do?kisyu=/plcq Q対応シリアルコミュニケーションユニットユーザーズマニュアル(基本編) SH-080001 141/428ページ    第6章 無手順プロトコルによるデータ交信 この6章を100回くらい読み返して下さい その後、162ページのサンプルラダーを参考にすればそれなりに出来るハズ

関連するQ&A

  • シーケンサによる232C通信の方法

    三菱シーケンサ(A1S)にてバーコードリーダと232C通信をしたいのですがよく分かりません。計算機リンクを取り付け接続した後通信の設定を合わせました。バーコードで読み取ったデータはシーケンスのFROM命令で読むことができました。但しこれは手でバーコードリーダのスイッチを押した状態でです。この読み込み指令のトリガをシーケンス側から行いたいのですがよく分かりません。メーカーに聞いてもコマンドを送信するだけですと簡単に言うのですがコマンドの送信方法が分からないのです。単純にTO命令で書き込めばいいのでしょうか?書き込みフォームもよく分かりません。マニュアルをみたのですがパソコンと232C通信する方法ならかかれていました。TOで書き込む場合はASCII変換をするのでしょうか?それとももっと違う方法なのでしょうか?バーコードリーダはとりあえずキーエンスのSR-500シリーズです。通信は無手順でよいのでしょうか?232C通信は使ったことがないので詳しいかたいたら教えてください。よろしくお願いします。

  • C++でシリアル通信

    現在、私は「RFIDによる図書管理システム」という題材の下、卒業研究を行っています。 卒研室で購入したRFIDのリーダー/ライター(以下、リーダー)は、RS232C接続のものでした。USBタイプのものがあるのは、購入した後分かりました。 「RS232C接続のリーダーから、タグのデータを読み取り、それをブラウザに送信する」というアプリケーションをC++(MFC)で作成している途中です。さらに詳細を述べると、アプリケーションの「リード」ボタンをクリックすると、リーダーへリード命令(バイナリコード)を送信し、リーダーからのレスポンスをブラウザに送信するという処理を、一括して行う予定です。 何故、ブラウザに送信するかというと、例えば図書管理システムの「検索」メニューの処理の場合、「リーダから読み込んだデータをブラウザに送信し、あらかじめ作成しているデータベースと目的の書籍を照会し、書籍の詳細をブラウザに表示させる」という処理を実現させるためです。 いかんせん、MFC初心者なので、シリアル通信のことに関しての知識がほとんどありません。 Webで調べてみたのですが、力及ばず、RS232Cと通信ができる関数等が見つかりませんでした。 どなたか、アドバイス宜しく御願いします。 最後になりましたが、開発環境は WindowsXP、Visual C++ です。

  • タッチパネルの流用

    お世話になります。 今まで三菱のAシリーズのシーケンサにキーエンスのタッチパネルMT-250を計算機リンクユニットA1SJ71UC24-R2(RS-232C)経由でつないでいました。 シーケンサをQシリーズに置き換えた場合タッチパネルはQJ71C24N-R2(シリアルコミュニケーションユニット)経由でつなげられるのでしょうか? キーエンスに聞いたら「MT-250はAシリーズ専用品だからQシリーズには使えません」との回答が帰ってきました。逆に「VT3シリーズを買ってちょ」と言う始末。 QJのマニュアルを読んでプロトコルを設定すれば使えるんじゃないでしょうか。その辺りは詳しくないのでご意見をお聞かせ下さい。

  • 三菱Qシリーズとキーエンスのタッチパネルを通信状…

    三菱Qシリーズとキーエンスのタッチパネルを通信状態でのモニタ お世話になっております。 キーエンスのVT3タッチパネルと三菱のQシリーズシーケンサ を通信状態でGXdeveroperでモニタすることは可能でしょうか? 現在はRS232コネクタが1つしかないのでタッチパネルを外して プログラムを見るしかなく不便です。 よろしくお願いいたします。

  • 2005年のE-CON(IAI製品)シリアル通信

    IAIの製品で2005年製 E-CON コントローラーから 通信を行っていました。 当初は三菱電機 QJ71C24N-R2にRS232Cとして通信しておりました。 PLCが故障してしまい キーエンスのPLCへ置き換え 通信は KV-XL202にてRS232Cにてそのまま 接続 通信仕様は以前三菱で設定していた内容で設定をして キーエンス のソフトウエアより PROTOCOL STUDIOにてとりあえず 通信テストを試みたのですが 受信できず。 通信設定また配線が? RD/SD/SGへクロスにてつなげていますが、 仕様を変更したり 配線を入れ替えたり ループバックをしたりと 何パターンか実施しているが こちらから 通信要求をしているが返事が無い状態。 メーカー様には 配線または 通信設定がと回答頂いたが 通信仕様の変更6パターン+配線入れ替え6パターン 36パターンで実施したが 受信えられず。 E-CONの当時のシリアル通信に詳しい方いらっしゃいますでしょうか?

  • 無線式2次元バーコードリーダーについて

    いつもお世話になっております。 無線式の2次元バーコードリーダを探しています。 キーエンスのBT-Wシリーズがあったのですが...高価です。 OS搭載でなくても良いので、安価な無線式の2次元バーコードリーダを ご紹介下さい。 よろしくお願いいたします。

  • (VC++)シリアル通信について

    OS:Windows7 開発環境:VisualStudio2010 言語:C++ 機器:カードリーダ 接続:RS-232C VisualStudio2010にて、シリアル通信を行うプログラムを作成しています。 VisualStudioのヘルプや、いくつかのWebページを参考に、送信を行うところまではできています。 しかし、受信ができているのか、もしくは受信した内容が表示できていないのか分かりませんが、受信が確認できません。 送信はカードリーダが動くので分かりやすいのですが、受信は表示できないと確認できないためこのような状態です。 カードリーダの仕様は、あるASCIIコードを送るとカードが送られ、エラーステイタスコードが返ってきます。正常にカードが送られた場合は、またASCIIコードを送ると、読み取ったカードの情報がでてきます。(シリアル通信をテストするプログラムでは送信受信共に成功しています。) (送信)は、こちらが送ったもので、それ以外は受信した結果です。 ---------------以下その時の結果--------------- 3f 0d (送信) 30 10 45 30 31 32 30 30 38 0d (送信) 32 0d 33 59 0d 30 0d 31 59 0d 32 59 0d 33 0d 30 0d 31 0d ---------------------------------------------- C++のプログラムは以下の様になっています。 上記の結果でいうと、3f、0dを送り30を受け取るというところです。3f、0dでカードが送られ、30(正常終了)という結果を受け取ります。この結果をテキストボックスに表示したいと考えています。現在は、カードは送られるものの、30(もしくは他のエラーステイタスコード)という結果を表示することができません。 private: System::Void button_start_Click(System::Object^ sender, System::EventArgs^ e) {  serialPort1->Open();  serialPort1->Write(x3f); //defineにて定義(中身は?[0x3f])  serialPort1->Write(x0d); //defineにて定義(中身はCR[0x0d])  serialPort1->Close(); } delegate void SerialDataRecievedDelegate(String^ recvData); private: void SerialDataRecieved(String^ recvData) {  textBox1->Text = recvData; //確認するためにtextBox1に結果を表示 } private: System::Void serialPort1_DataReceived(System::Object^ sender, System::IO::Ports::SerialDataReceivedEventArgs^ e) {  SerialDataRecievedDelegate^ dlgte = gcnew SerialDataRecievedDelegate( this, &CardReader::Form1::SerialDataRecieved );  String^ RecievedData = serialPort1->ReadExisting();  //1バイトずつ受信  if(serialPort1->IsOpen == true) //シリアルポートが開いているか確認  {   COMRevieveBuffer = COMRevieveBuffer + RecievedData; //受信バッファに追加   if(RecievedData == "\r" ) //改行コード検出   {    RecievedData = RecievedData + "\n";    COMRevieveBuffer = COMRevieveBuffer + RecievedData;    //受信した一行をテキストボックスに転送    this->Invoke(dlgte, COMRevieveBuffer);    COMRevieveBuffer = "";   }   //エコーを返す   serialPort1->Write(RecievedData);  } } C言語でのプログラム作成はしていたのですが、VisualStudioやC++でのプログラム作成は初めてです。 ソースに変な点が多々あるとは思います。 ご教授お願いします。

  • C言語のシリアル通信について

    C++でプログラムを書き、シリアル通信(RS232C)を使ってデバイスを動かしたいと試みているのですがよくわからないのでアドバイスお願いします。(OSはlinux) デバイス特有の命令を送るところがよくわかりません。(命令はキャラクタではなくバイナリで送らなければなりません。) 命令はバイナリデータです。 例、 char i[]={255,20,0,10}; ↑このようなデータです。 このようなデータを送る際はfwrite関数を使うということは調べたのですがどのように表すかわからないので教えていただきたいです。 初めのシリアルポートを開く際に”wb”をつけないといけないみたいですがどのようにつければいいのでしょうか。 fd=open("/dev/ttyS0",O_RDWR|O_NOCTTY|O_NONBLOCK); if(fd<0) { printf("erroe\n"); exit(-1); } ↑自分が書いたポートを開く時のプログラムです。最初の行の最後に”wb"を付け足せば良いのですか。 上記の例のような命令を送るとすると fwrite(&i,sizeof(char),4,fd); return 0; で良いでしょうか。warningがでて動作しないのでアドバイスよろしくお願いします。 説明が下手で申し訳ありません。一番わからない点はシリアル通信で命令を送るときのポートオープンとfwriteを使った命令を送る形式です。どうぞよろしくお願いします。

  • PLCと測定器 RS-232C通信のラダー図に関…

    PLCと測定器 RS-232C通信のラダー図に関して とある測定器とPLC(三菱 FX3G-60M)をRS-232Cでシリアル通信をしたいです。 D-sub9P結線はしましたが、肝心の通信命令方法がよくわかりません。 やりたい通信としては 「X0入力時、PLCから測定器へASCIIコードで「P01」の3文字を送信したい」 だけなのですが、ラダー図の書き方がわかりません。 お手数ですがご教示お願いいたします。

  • RS485配線方法

    初めて投稿させていただきます。 現在、三菱電機製MELSECのシリアルコミュニケーションカードと日立製の指示調節計(ECU100M)をRS485接続しようとしています。 指示調節計の端子にはRx、Tx、COMの三つしかないのですが、シリアルカードのどの端子と接続すればよいのかわかりません。 御教示御願い致します。