2022年1月26日水曜日

[CCLink] 通信対応完了

こんにちは、針山散策を今日もほのぼのと行います。


やっとCC-Link通信が動作するようになりました。

対応していて、

見落としやすかったのは以下のものです。

1.デフォルトノードアドレス 
2.CCLINKボーレートの設定
3.CCLINKバージョン
4.占有局の数
5.リモートデバイス局かどうかの種別
6.拡張サイクリックの数

このうち、"2"~"6"の設定はそれぞれのオブジェクトが持っているインスタンス
に対してパラメータに相当するAttribute番号に
設定してあげることで行います。

通信はSPI通信です。

ちなみに、相手側の設定と合っていないと、プロセスデータ送受信できません。

かなりハマりました。

[在宅] 在宅始まります

こんにちは


さて、明日から一ヶ月間在宅ワーク始まります。


リモートなので、ネットワーク環境が必須なのですが


Windowsのアップグレードにおいて


VPNの不具合が一時的に出ていましたね。


最新のものなら解決しているみたいなので、


パソコン送る前にアップデートをかけておいた方がよいですね。



それにしても、Microsoft不具合少ないし


相当検査してますね。


アジュールやら、人工知能の開発をしつつ自社で


適用させていくから、衰退は当分無いと思います。


ロボット用のパッケージソフトとか出ているのかしら


私は、Linuxアプリ開発で


不具合を抑えるのに必死です。


2022年1月22日土曜日

[組み込みLinux] SPI通信における送受信

こんにちは、針山散策を今日もほのぼのと行います。


現在、組み込みLinux上にCCLinkボードと

通信するアプリを実装しています。

SPI通信を使用しているのですが、

SCKの立ち上がりで送信、立下りで受信

のような仕様だったのでどうすれば

設定出来るのか調べてみました。


カーネルのデバイスツリーで設定を

変えればよいのか?

と思いましたが、デバイスツリーでは

SPIの配線の定義なので違うようです。

など、色々調べてみたところ、

上位アプリ側をいじればSPI動作モード

を変更出来る事が分かりました。

以下のリンク先が参考になりました。

https://manual.atmark-techno.com/armadillo-guide-std/armadillo-guide-std-hardware-expansion_ja-1.0.0/ch06.html

私の書いたソースとしては、

    unsigned char mode= 0;

    rtc = ioctl(Serial_Port_Fd, SPI_IOC_RD_MODE, &mode);

    if (rtc == -1) {

        return rtc;

    }

   

    mode&= ~(SPI_CPOL | SPI_CPHA);

   

    rtc = ioctl(Serial_Port_Fd, SPI_IOC_WR_MODE, &mode);

    if (rtc == -1) {

        return rtc;

    }

私の場合、こちらの処理で対応できました。


CPOLとCPHAの組み合わせにて対応が出来るということで

理解しました。



2022年1月14日金曜日

[組み込みlinux] printfデバッグ

こんにちは、針山散策を今日もほのぼのと行います。


現在、組み込みLinux上にアプリを実装してターゲットボードを制御しているところなのですが、


厄介なことに、


i.mx8mplusのデバッガが無いときています。


GDBもはいってないし、現在デバッガ無しでの開発をしています。


ということで、printfデバッグしか使えない時以下を行うようにすると良さそうなのでメモします。


1. ファイル名、行番号を出力する

printf("file name: %s, line: %d \n", __FILE__, __LINE__);

こうすることで通ったところが分かるようになります。


2. ステータスをprintf出力する

これはステータスが変化した時だけ出力するようにします。

そうしないと、大量のメッセージで埋まってしまいます。


3. 通信データをprintf出力する

#ifdefでスイッチを設けて必要な時に送信、受信の

データを出力するようにしておきます。


4. 何度も通るとprintf文が止まらないので、

カウンタを設けて、if(count==0){printf("メッセージ");count++;}

とすると大量メッセージにしないですむ。


デバッガのありがたさが痛感しています。


2022年1月7日金曜日

[ドキュメント]コピーペーストをしましょう

明けましておめでとうございます。

今年は昨年よりも更新率を上げていきたいと思います。

宜しくお願いします。


実装ガイドの資料を見ながらCC-Linkの処理を実装していますが、

途中、memcopy()と記載された箇所がありました。

ソースをみてもmemcopyと書いてある箇所は1つだけしかありませんでした。


もしかしたらと思い、memcpyで検索したところ、複数個所ヒットしました。


ドキュメントを書く際、同じ単語はコピーペーストを行うようにしないと


読む側としては、この記載は故意か、過失かの判断になり、


余計な時間を使ってしまいますので、

コピーペーストは大事ですね。


私も注意しよう