Перейти к содержанию
    

LeLLIuj

Новичок
  • Постов

    3
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о LeLLIuj

  • День рождения 01.05.1990

Информация

  • Город
    Array
  1. FreeModbus

    обнаружил, что структура pxQueue не подгружалась при работе с модбасом у меня еще не пришло полное понимание & и *, поэтому решил поиграться с ними в порте freemodbus (portevent.c) sys_mbox_post( xMailBox, &eMailBoxEvent ); заменил на sys_mbox_post( &xMailBox, &eMailBoxEvent ); структура подгрузилась и функция xQueueSendToBack перестала выдавать ошибку errQUEUE_FULL, но что-то я сильно сомневаюсь, что в порте была ошибка Больше не сомневаюсь, это реально ошибка в порте, изменил на &xMailBox во всех функциях portevent.c и freemodbus заработал. Большое спасибо разработчикам freemodbus, так и без работы можно оставить, яж на испытательном сроке еще:) но все равно им спасибо за труд:)
  2. FreeModbus

    в sys_mbox_post() убрал цикл, заменил portMAX_DELAY на 1000(т.е. на 1 секунду). Ethernet перестал отваливаться, обнаружил, что функция xQueueSendToBack возвращает ошибку errQUEUE_FULL.
  3. FreeModbus

    Доброго дня всем. Пытаюсь поднять FreeRTOS(7.2)+lwip(1.4)+FreeModbus(1.5)(TCP), FreeRTOS+lwip на LM3S9B95(board EVB-9B95) худо-бедно справился, пинги идут, httpserver_raw запустился, пробную страничку получил. А вот с modbus справится не могу. Для теста взял qModMaster, т.к. работать легко с ней(основные шаги connect->read data->disconnect я выполняю по кнопками, что упрощает тест), и параллельно для надежности нечто более сложное NI OPC Server. Connect, Disconnect работают отлично, вызываются prvxMBTCPPortAccept() и prvxMBTCPPortReceive()(здесь он уходит в prvvMBPortReleaseClient и закрывает соединение). А вот с чтением данных у меня возникли проблемы, при чтении попадаю я в prvxMBTCPPortReceive(), далее по функции доходит до (void)xMBPortEventPost(EV_FRAME_RECEIVED); и из нее не возвращается, ползу по ней дебагером //portevent.c BOOL xMBPortEventPost( eMBEventType eEvent ) { eMailBoxEvent = eEvent; sys_mbox_post( xMailBox, &eMailBoxEvent ); return TRUE; } он уходит в sys_mbox_post(); //sys_arch.c void sys_mbox_post( sys_mbox_t *pxMailBox, void *pxMessageToPost ) { while( xQueueSendToBack( *pxMailBox, &pxMessageToPost, portMAX_DELAY ) != pdTRUE ); } и на сколько я понимаю крутится внутри xQueueGenericSend(). После чего отваливается ethernet, т.е. пинги не проходят вообще, да и походу роутер не видит плату, FreeRTOS в это время работает Task'и переключает исправно. Я уже даже не знаю в какую сторону копать. Порт modbus взят из демки MCF5235TCP, а LWIP где-то на просторах интернета
×
×
  • Создать...