2011|08|
2013|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|05|06|07|08|09|10|11|12|
2016|01|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|

2017-04-03 SOME 1.3.1 の Linuxバージョンのsimple_test.cが上手く動いてくれない件 [長年日記]

======= 
1. 背景
======= 
 
(1)SOEM 1.3.0の Windowsバージョン simple_test.cは、とりあえず
  デジタルIOスレーブでLEDがピカピカが光ってキレイでした。
 
(2)ところが、Linuxバージョンのsimple_test.cでは、この
   「キレイ」が発生しません。
 
========
2. 対応
========
  2つのsimple_test.cを比較したら、"IOmap[0]++" が見あたらな
  かった。
  また Linuxの方は、コールバック関数は使っていない(様子)
 
========
3. 改良
========
  
(1) 改良後
 
void ecatcheck( void *ptr )
{
  int slave;
 
  while(1)
    {
      IOmap[0]++; // ← この1行を加えるだけ
 
      if( inOP && ((wkc < expectedWKC) || ec_group[currentgroup].docheckstate))
  
=============
4. コンパイル
=============
 
>cd SOEM-1.3.1
 
>source ./setup.sh linux
 
>make all
 
(詳しいことは、SOEM-1.3.1\READMEに記載がある)
=============
5. 結果
=============
 
>cd SOEM-1.3.1/test/linux/simple_test
 
>sudo ./simple_test enx001d73e6ec5e(これはslaveinfoから取ってくるNICの情報)
 
  デジタルIOスレーブでLEDがピカピカが光ってキレイになりました。