Показать сообщение отдельно
Старый 08.02.2007, 10:39   #38
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Копирование журнала по Modbus

Цитата:
Сообщение от zem21
В своем проекте использую массивы Array для хранения сообщений журнала событий (1 сообщение журнала занимает 2 long'а, соответственно использую 2 макроса Array(long)).
Требуется передавать содержимое журнала (то есть массивов) на компьютер по Modbus.
В данный момент размер каждого массива = 20 значений (для тестирования). Проблема в том, что не получается уменьшить общее время передачи этих данных менее 8 сек.
А заказчик желает журнал на всю свободную память контроллера...

Цикл работы контроллера 100 мс, скорость передачи 115 200.
Похоже основное время жрет переключение адреса в макросе.
Что можно придумать для ускорения?
Странно, в наших программах передаётся 6 int'ов из памяти + контрольная сумма, и точно также переключается адрес на входе. Время передачи одной строки при чистом канале (когда работает только передача журнала) занимает максимум полсекунды.

Цитата:
Сообщение от zem21
Как вариант - спец макрос ARRAY_Modbus например, в котором есть дополнительный вход для задания базового адреса массива в памяти контроллера, таким образом можно будет в проекте использовать несколько макросов для обращения к одним и тем же данным и соответственно можно будет сделать блочную передачу данных. то есть несколько переменных (десяток) за одно изменение адреса.
Хотелось бы увидеть ваше решение, тогда можно будет поговорить об ускорении предметно.

Возможности прямого чтения eeprom из сети прорабатываются, но это дело не скорого времени.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием