Цитата:
Сообщение от zem21
В своем проекте использую массивы Array для хранения сообщений журнала событий (1 сообщение журнала занимает 2 long'а, соответственно использую 2 макроса Array(long)).
Требуется передавать содержимое журнала (то есть массивов) на компьютер по Modbus.
В данный момент размер каждого массива = 20 значений (для тестирования). Проблема в том, что не получается уменьшить общее время передачи этих данных менее 8 сек.
А заказчик желает журнал на всю свободную память контроллера...
Цикл работы контроллера 100 мс, скорость передачи 115 200.
Похоже основное время жрет переключение адреса в макросе.
Что можно придумать для ускорения?
|
Странно, в наших программах передаётся 6 int'ов из памяти + контрольная сумма, и точно также переключается адрес на входе. Время передачи одной строки при чистом канале (когда работает только передача журнала) занимает максимум полсекунды.
Цитата:
Сообщение от zem21
Как вариант - спец макрос ARRAY_Modbus например, в котором есть дополнительный вход для задания базового адреса массива в памяти контроллера, таким образом можно будет в проекте использовать несколько макросов для обращения к одним и тем же данным и соответственно можно будет сделать блочную передачу данных. то есть несколько переменных (десяток) за одно изменение адреса.
|
Хотелось бы увидеть ваше решение, тогда можно будет поговорить об ускорении предметно.
Возможности прямого чтения eeprom из сети прорабатываются, но это дело не скорого времени.