モジュールの割り込み用ピンをArduinoの外部割込み(ハードウェア割り込み)に割り当てて、 何を指定しなければいけないかはサンプルプログラムとヘッダを見て判断した。 Copyright © Nikkei Business Publications, Inc. All Rights Reserved. �q���"-s���Z�Ẇ�tK�͵o�RJ3�b���|�����B�Ĉ����n8�5r����w!M���]M���L5�'��`��u��i����� ���j�1�����Y��ד�gld3��X��v�^'B��CM�Q+�hޑ�}�囱�T��� ��X�n�h{�ZL�A�d8kze� �5��|�DŜJ�iDΏ�?���>��m� ��,P#5�„˰��!َyqԫ�!�`8`"3���a7ĉ1�jS��5X��y�s��:O8=���(�X#��bc�c %PDF-1.6 %���� この記事では,TOPPERS/R2CAによるCAN通信の方法について説明します. TOPPERS/R2CAの説明とサンプルの動作方法は次の記事を見て下さい. 1. ���2�x���k����Z;4�M34R޼���~�F�?c/`�����V�Q � �f�w�ذ8N!v��iբd�m��&C���tT�ć��8ͮ���gE�����uYeF=ƽT������� 割り込み処理したほうが効率がいいと思う。, shibafu3さんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか?, Powered by Hatena Blog これまでの連載では,主な車内LANの方式として「LIN」,「CAN」,「FlexRay」を取り上げ,それぞれの技術のポイントを解説しました。いずれも実際の車に採用されている方式です。これらの方式を含めて,車内LAN全般の解説は「第1回 車内LANって何だろう」にまとめました。, 今回から,車内LANの代表的な方式による通信のやりとりを見ていく「実践編」がスタートします。この実践編では,通信プロトコルの処理のみではなく,通信データの内容を基にモータの回転数を変化させたり,LEDランプを点滅させたりして,実際に見て実感できるものを動かします。さらに、そのときの通信データの信号波形を見ることで,実際の通信の流れを直感的に理解してもらいたいと思います。, 車内LANの専門書は、既にいくつかありますが,そうした専門書のみでは通信の中でのやりとりが確認しにくいと思います。今回からの実践編を読んでもらうことで,車内LANの通信方式に関する理解をより深めてもらいたいと考えています。また,今回からの実践編では,車内LANの通信プロトコルを実行可能なマイコン学習ボードを用います。これを利用して動かしてみることで,車内LAN習得への足掛かりとしていただきたいと思います。, 実践編の最初となる今回は「CAN(controller area network)」を取り上げます。CANは、既に幅広く世界中で使用されている車内LANの一つであり,エンジンやブレーキなどのパワー・トレイン系,ステアリングやサスペンションなどのシャーシ系,ドアやミラーなどのボディ系で広く用いられています。今回はこのCAN通信を使って実際にモータを回してみましょう。, CAN通信を実現するために,2枚の通信用ボードをCANバスでつないだ通信システムを用意します。通信用ボードを構成する主な部品には,CANの通信コントローラを内蔵したMCU(micro controller unit,以下CANマイコン)やトランシーバICなどがあります(図1)。CANマイコンは,CAN通信プロトコルに従って,CPUで処理された情報の送受信を行います。, トランシーバICは,通信コントローラの入出力信号レベルとバス規格の信号レベルを相互に変換します。トランシーバIC とCANマイコンは,送信用(TX)と受信用(RX)の2本の信号線で接続されています。トランシーバICでは,CAN-H,CAN-Lの差動信号に変換してバス上にデータを流します。なお,CANバスの差動信号については,連載第3回の「標準型のCANって何だろう ポイント3:差動伝送方式を用いる」を参照してください。, ここではその通信用ボードとして,都築電産が発売しているマイコン学習ボード「bits pot red(以下,redボード)」と「bits pot white(以下,whiteボード)」を用いることにします。それぞれCANマイコンとトランシーバICを搭載しておりますので,そのままボードを接続することで通信環境が構築できます。, redボードを例に,CANマイコンとトランシーバIC,CANバスの回路を見てみましょう(図2)。CANマイコン(MB91F267N)とトランシーバICが,送信用(TX)と受信用(RX)の2本の信号線で接続されていることがわかります。右側のコネクタでCANバスとつながり,通信相手のボードとCAN通信でデータの送受信を行います。, redボードとwhiteボードはいずれも,付属のサンプルプログラムを用いることで手軽にCAN通信の制御ができます。またredボードには,DCブラシレスモータを動作させる回路も搭載しています。同じくサンプルプログラムを用いることで簡単にモータを動作させることができます。, 今回のシステムでは,サンプルプログラムを実行して,CAN通信の制御を行い,redボードに接続したモータをwhiteボードから動かしたり止めたりします。具体的にはwhiteボードよりモータ動作命令をCAN通信でredボードに送信します。その命令を受信したredボードはモータ操作を実行します。また,redボードはモータ回転情報をCAN通信でwhiteボードに送信します。その情報を受け取ったwhiteボードは,モータがきちんと回転していることを示すLEDランプを点灯させます。, 今回はこの一連の流れを,CAN通信による実際の動作の様子と,そのときの信号波形の写真を使って説明していきます。, この記事は会員登録で続きをご覧いただけます。次ページでログインまたはお申し込みください。, 2020年11月24日(火) 14:00~17:25 2020年11月25日(水)14:00-17:25, 2020年10月1日に起こったシステム障害と、過去の東証関連記事をまとめました。最新情報を随時追加します。. CAN通信プログラムのサンプルとしてcan-utilsを使用します。 can-utilsには、一つのメッセージを送信する cansend、複数のメッセージを連続して送信する cangen、受信したメッセージを表示する candumpがあります。 can-utilsをインストールします。 ��^}y9N�:������u+Ru�w%^�RpNn4�u�+Mn�ui��_YH�V ���J��2�z ���Ϭ"F=%�;17Z ��\��i�����m)�W&ȟ��f��X�T����'�\�Z�>^�����4+�d�q(FE����� � ��!�5s�p�j.&����B?A������T�ö�u�۫O�6�w7���g����:|��=�F�'���q0�=�ܾA4��$��X^�l�s���8�r�dS���'e@�%A�$��z����=jN�������w��"��G�ByGNfH �Z� ブログを報告する, /*********************************************************************************************************, *********************************************************************************************************/, 【RaspberryPi】 RaspberryPiとArduinoをCAN通信させた - Yoshichiの日記, 【RaspberryPi】 RaspberryPiとArduinoをCAN通信させた 2回目 - Yoshichiの日記, GitHub - coryjfowler/MCP_CAN_lib: MCP_CAN Library, No matching function for call to "MCP_CAN::Begin(int), まっさらな状態からUbuntu14.04LTSでChainerのFaster-RCNNを使って物体検…. MCP2515のモジュールを使ってArduinoでCAN通信をさせる。 ライブラリはMPC_CAN_libを使う。 スケッチの書き方は、MPC_CANのgithubのサンプルプログラムとヘッダを見るとわかりやすい。 【RaspberryPi】 RaspberryPiとArduinoをCAN通信させた - Yoshich… Arduino M0 Pro でマルチタスクプログラミング : マルチタスク 第1引数:IDの種類 プログラムパッケージ: 更新内容: 2012/12/22: MySerial_20121222.zip: array^型での入出力に対応させました。 これでバイナリ通信が可能になっています。 2012/7/23: MySerial_20120723.zip: コンストラクタで、内部変数のbuffを""で初期化するように改めました。 6381 0 obj <>stream MCP_CAN::begin() が変更されてて、引数にいろいろ指定しなければいけなくなっていた。 スケッチの書き方は、MPC_CANのgithubのサンプルプログラムとヘッダを見るとわかりやすい。, ・ハマったところ1 簡単なArduinoスケッチ MCP_CAN::setMode() が抜けてた 本書は、「can スタータキットrxv2」「can スタータキットsmartrx」付属cd に含まれる、サンプルプログラムの 解説を行う資料となります。 本書で説明するサンプルプログラムは、can の通信を行うプログラムで以下の内容となっています。 ・sample1 /�G��ض&5*�T� �tqқF��iچFSeWu���� i��o�� �/���MDۘ��,�~����MC/+w���:@�1�k�3H���[:m�mWQd�{�&����$i�����4\_:�#�#���!H�Â\!�[��P�"��-��v����w��L_'�2��@g��b��ߗ����3A�:��A��%��4;�Yz��Fd6��� ��!y��V��emB�A���\����(~w 同じくサンプルプログラムを用いることで簡単にモータを動作させることができます。 今回のシステムでは,サンプルプログラムを実行して,CAN通信の制御を行い,redボードに接続したモータをwhiteボードから動かしたり止めたりします。 I�A� �QH�ܸd蕍u�S]�@����F0�\�) ��T}�wa��tięZ�!�2��AMa��Bo�"B���8�_��� w/�[/o�-�z� �P��u�jq����l���_��E��b�S���;�h�. 以前のソフテックだより第131号『can通信モジュール紹介』で、弊社で開発を行いましたcan通信モジュール(sz20)についてご紹介しました。 今回はその続編として、実際にplc (※1) でcan通信モジュールを使用してどのようにラダープログラムを実装するのか? をご紹介したいと思います。 MCP2515のモジュールを使ってArduinoでCAN通信をさせる。 v�pFRlG3ޱ|7�P���=5`� ����-F�zo�TEw(ɩ�S&L��p�B'����]\ؚН��s�k�0�E�N�b����N�.�.+�}�H^��,L���W\ �ڜ'� H��-�X�z�y���3F���hH����+�rgǘo�2YV����n�3����s���d�3�[]2LV;��\5ƕ� �� |��!������E��;�;����i�M���c��/ݒk�EpU�ӊ�k����Uґ�*m �U� �į��=����wa˦k��u/����#����KU�B��5�Z*����!���v�D�$@Q�N���N �I�Tv[A���,�#�����!�"j��z�%Q�A�,�f���WA���3*��@R���,��!t8j�U �|��z�������Z&��k���TOO��^?�TH��[�?�r֞�R�Ƌ��o@�3����B�k��V�$��I�;l4�'��a�"���#�{M�#d$A�W����6*�T8 以下のソースではif(!digitalRead(INT_PIN))の部分でモジュールからの割り込みをポーリングしているが、 Arduino M0 Pro でマルチタスクプログラミング : インストールとサンプルの実行 2. ライブラリはMPC_CAN_libを使う。 第3引数:モジュールとの通信レート(今回の場合はモジュールの水晶発振子の周波数), ・ハマったところ2 第2引数:canの通信速度 u��Fg{q�ǐh�}`�P(|���:+��WV��}j�A�UA/t�Ԟ�C�"-E |