HI Cleas
I.m trying some mod-bus communication between a solar system and a rpi (proview).
This system delivers Ii values and $values.
The Ii reading works.
But with the String values it is difficult.
The 2 messages have a fix configuration. I have made 2 card-Classes and 2-base classes
and 2 Super-classes
Mb_Solar_Card_C with super-class Mb_Solar_Card
Mb_Solar_Card_I with super-class Mb_Solar_Card
Mb_Solar_Base_C with super-class Mb_Solar_Base
Mb_Solar_Base_I with super-class Mb_Solar_Base
I have also make Mb_Solar_Agent and Mb_Solar_Rack with the necessary c-code.
Fist I used chanBi with BiString80 but when i connect the card values with the base values
the system d't not start.
without the string connection the system works.
to look for a working situation i choose to use,
chanBiBlob and Sv (i made some Sv classes with shorter strings Sv16....)
System runs but NO values in the Mb_Solar_Base_C class.
Only One Bad value in the last item: C_SunSpec_Length .
I also make some print during the startup
cp->ChanListSize = 11 count channels is OK
0 pwr_cClass_ChanBiBlob first detected class is OK
pwr_eType_???????
0 pwr_cClass_ChanIi 2E detected class is OK
pwr_eType_UInt16 ---pwr_eType_???????
0 pwr_cClass_ChanIi 3E detected class is OK
pwr_eType_UInt16 ---pwr_eType_???????
chanp->ChanClass = 0 4E detected class is Can't Find The ChanBiBlob Class
chanp->ChanClass = 0 5E detected class is Can't Find The ChanBiBlob Class
chanp->ChanClass = 0 6E detected class is Can't Find The ChanBiBlob Class
chanp->ChanClass = 0 7E detected class is Can't Find The ChanBiBlob Class
chanp->ChanClass = 0 8E detected class is Can't Find The ChanBiBlob Class
0 pwr_cClass_ChanIi 9E detected class is OK
pwr_eType_UInt16 ---pwr_eType_???????
0 pwr_cClass_ChanIi 10E detected class is OK
pwr_eType_UInt16 ---pwr_eType_???????
0 pwr_cClass_ChanIi 11E detected class is OK
pwr_eType_UInt16 ---pwr_eType_???????
It looks like the only the first class ChanBiBlob is registered and the other 4 not.
If i make separate communication with only strings i get something to work, but this is not what i want.
I also look in the source code and found some strange thinks:
rt_io_base.c
case pwr_cClass_ChanBo:
sigchancon = ((pwr_sClass_ChanBo *) chan_op)->SigChanCon;
number = *chan_cnt;
break;
case pwr_cClass_ChanBiBlob:
sigchancon = ((pwr_sClass_ChanBiBlob *) chan_op)->AttributeChanCon;
number = 0;
break;
case pwr_cClass_ChanBoBlob:
sigchancon = ((pwr_sClass_ChanBoBlob *) chan_op)->AttributeChanCon;
number = 0;
break;
case pwr_cClass_ChanCo:
sigchancon = ((pwr_sClass_ChanCo *) chan_op)->SigChanCon;
number = *chan_cnt;
break;
default:
maybe has to do with this code....
cees