Guten Tag
Ich arbeite momentan an einer ModBus-RTU (RS-232) zu ModBus TCP Bridge.
Als OS verwende ich FreeRTOS, für die TCP Implementierung den LWIP-Stack
und für ModBus den Stack von Embeddeed Solutions.
Als Hardware dient der STM32f107 in Verbindung mit dem PHY DP83848C.
Die Implementierung der Stacks ist bereits erfolgt und diese
funktionieren auch wunschgemäss. Verwende ich jedoch ModBus Master
(RS232) zusammen mit ModBus Slave (TCP) hängt sich das System nach
kurzer Zeit auf.
ModBus Slave alleine läuft ohne Probleme. Das selbe gilt auch für Modbus
Master alleine.
Ich bin mir ziemlich sicher das ich etwas mit den Interrupts falsch
mache!
Stehe aber momentan ziemlich auf dem Schlauch und wäre froh wenn mir
jemand von euch helfen könnte.
Vielen Dank
Gruss Mathias
1 | void
|
2 | vApp1Task( void *pvParameters )
|
3 | {
|
4 | xMBSHandle xMBSHdl = NULL;
|
5 |
|
6 | LwIP_Init( );
|
7 |
|
8 | for( ;; )
|
9 | {
|
10 | if( NULL == xMBSHdl )
|
11 | {
|
12 | eMBSTCPInit( &xMBSHdl, MBS_LISTEN_ADDRESS, MBS_LISTEN_PORT );
|
13 | eMBSRegisterDiscreteCB( xMBSHdl, eMyDiscreteInputCB );
|
14 | }
|
15 | else
|
16 | {
|
17 | //Wird diese Zeile auskommentiert so funktioniert ModBus Master
|
18 | eMBSPoll( xMBSHdl );
|
19 | }
|
20 | vTaskDelay( 1 );
|
21 | }
|
22 | }
|
23 |
|
24 | void
|
25 | vApp2Task( void *pvParameters )
|
26 | {
|
27 | ModBusMaster_init();
|
28 |
|
29 | for(;;)
|
30 | {
|
31 | //Wird diese Zeile auskommentiert so funktioniert ModBus Slave
|
32 | eMBMReadCoils( xMBMMaster, 10, COIL_SYSTEMDATAADR_R, COIL_SYSTEMDATACNT_R, RegCoilSystemR );
|
33 | vTaskDelay( 1000 );
|
34 | }
|
35 | }
|