Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

Закрытая тема
Опции темы
Непрочитано 18.10.2008, 07:53   #21
gora888
Частый гость
 
Регистрация: 22.03.2007
Сообщений: 21
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
gora888 на пути к лучшему
По умолчанию

Большое спасибо. Я прежде чем заниматься этой проблемой понаходил много материала в сети. Но в любом случае спасибо.
Реклама:
gora888 вне форума  
Непрочитано 18.10.2008, 07:57   #22
gora888
Частый гость
 
Регистрация: 22.03.2007
Сообщений: 21
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
gora888 на пути к лучшему
По умолчанию

Посмотрел. Это перый материал, что я нашел. Там криво написана подпрограмма подсчета CRC16, но подробно описан алгоритм. Еще раз спасибо!
gora888 вне форума  
Непрочитано 18.10.2008, 10:07   #23
baiderin
Почётный гражданин KAZUS.RU
 
Аватар для baiderin
 
Регистрация: 10.12.2007
Адрес: Екатеринбург
Сообщений: 2,725
Сказал спасибо: 2,424
Сказали Спасибо 893 раз(а) в 580 сообщении(ях)
baiderin на пути к лучшему
По умолчанию Протокол modbus. Вопросы по интерфейсу

Не попадалась не криво написанная программа расчета CRC16?
baiderin вне форума  
Непрочитано 18.10.2008, 10:30   #24
gora888
Частый гость
 
Регистрация: 22.03.2007
Сообщений: 21
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
gora888 на пути к лучшему
По умолчанию

Попадалась, я ее сам написал.
Формат кадра следующий:
p[0] - номер вызываемого контроллера
p[1] - функция
p[2] - количество байт информации
p[n] - блок информации (если его нет, то p[2]=0)
p[n-1] - ст.байт CRC
p[n] - мл.байт CRC


//вычисление CRC WinAVR (ATMega
int calc_crc16 (unsigned char *p)
{
int crc16 = 0xffff;
uint8_t c,i; //счетчики циклов
for(c=0; c‹(p[2]+3) ;c++)
{
crc16 ^=p[c]; //eor байта из буфера с crc
for(i=0; i‹8; i++)
{
crc16 = (crc16››1);//сдвиг вправо
if (crc16&0x0001)
crc16 ^= 0xa001;
}
}
return crc16;
}
gora888 вне форума  
Непрочитано 18.10.2008, 12:25   #25
kgsh82
Прохожий
 
Регистрация: 03.02.2007
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
kgsh82 на пути к лучшему
По умолчанию

Сообщение от gora888
Попадалась, я ее сам написал.
Формат кадра следующий:
p[0] - номер вызываемого контроллера
p[1] - функция
p[2] - количество байт информации
p[n] - блок информации (если его нет, то p[2]=0)
p[n-1] - ст.байт CRC
p[n] - мл.байт CRC


//вычисление CRC WinAVR (ATMega
int calc_crc16 (unsigned char *p)
{
int crc16 = 0xffff;
uint8_t c,i; //счетчики циклов
for(c=0; c‹(p[2]+3) ;c++)
{
crc16 ^=p[c]; //eor байта из буфера с crc
for(i=0; i‹8; i++)
{
crc16 = (crc16››1);//сдвиг вправо
if (crc16&0x0001)
crc16 ^= 0xa001;
}
}
return crc16;
}
Зачем изобретать колесо??? В WinAVR есть библиотечная функция расчета контрольной суммы, считает правильно. Header - crc16.h Там несколько вариантов, в зависимости от полинома и начального значения
kgsh82 вне форума  
Непрочитано 18.10.2008, 13:12   #26
gora888
Частый гость
 
Регистрация: 22.03.2007
Сообщений: 21
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
gora888 на пути к лучшему
По умолчанию

Это в версии 2007 года такая функция есть, а в 2006-го не было. Да, собственно дело не в этом. Надо было написать такую же функцию для компа, а в Делфи такой функции нет, а может и есть, но я как новоначальный в программировании персоналок ее бы искал до второго пришществия. Надо было сделать подсчет CRC и в контроллере и в персоналке, что бы считалось одинаково. Поэтому и была написана такая подпрограмма, что бы ее повтроить на персоналке. Причем на С++ она считалась правильно, а в Делфи криво. Пока не разобрался с типом переменной. Си позволяет некоторые вольности типа int crc16=0xffff, а Делфи матерится, т.к. старший бит знаковый. Ну, тем не менее все работает больше года. Передача кадра из PC в контроллер и подтверждение с контрольными суммами, все как у профессионалов
gora888 вне форума  
Непрочитано 18.10.2008, 17:10   #27
baiderin
Почётный гражданин KAZUS.RU
 
Аватар для baiderin
 
Регистрация: 10.12.2007
Адрес: Екатеринбург
Сообщений: 2,725
Сказал спасибо: 2,424
Сказали Спасибо 893 раз(а) в 580 сообщении(ях)
baiderin на пути к лучшему
По умолчанию Протокол modbus. Вопросы по интерфейсу

В своем вопросе пропустил слово.Интересует программа расчета CRC16 по таблице (для микропроцессора).Прямой расчет занимает много времени.
baiderin вне форума  
Непрочитано 19.10.2008, 06:30   #28
kgsh82
Прохожий
 
Регистрация: 03.02.2007
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
kgsh82 на пути к лучшему
По умолчанию Re: Протокол modbus. Вопросы по интерфейсу

Сообщение от baiderin
В своем вопросе пропустил слово.Интересует программа расчета CRC16 по таблице (для микропроцессора).Прямой расчет занимает много времени.
А табличный много памяти Я уже ссылку чуть выше давал, но повторюсь http://freemodbus.berlios.de/ Вот там есть табличный расчет
kgsh82 вне форума  
Непрочитано 19.10.2008, 07:58   #29
baiderin
Почётный гражданин KAZUS.RU
 
Аватар для baiderin
 
Регистрация: 10.12.2007
Адрес: Екатеринбург
Сообщений: 2,725
Сказал спасибо: 2,424
Сказали Спасибо 893 раз(а) в 580 сообщении(ях)
baiderin на пути к лучшему
По умолчанию Протокол modbus. Вопросы по интерфейсу

Спасибо kgsh82 .
Просто свободной памяти много,а со свободным временем хуже.
baiderin вне форума  
Непрочитано 15.12.2008, 22:25   #30
RADIO_FANAT
Частый гость
 
Регистрация: 12.12.2008
Сообщений: 20
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
RADIO_FANAT на пути к лучшему
По умолчанию

Здравствуйте, товарищи трудящиеся. Пожалуйста, если у кого имеется, дайте русскоязычное описание Modbus. Кому надо, могу дать английское.
__________________
Одни люди, пытаются понять то, во что они верят, а другие поверить в то, что понимают....
RADIO_FANAT вне форума  
Закрытая тема

Закладки


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача данных на монитор по интерфейсу VGA tumanovalex Видеотехника 15 23.08.2009 00:52
OPC Server MODBUS vilich Автоматика и аппаратура связи 1 13.10.2008 10:03
MODBUS для AVR-ов nerozero Микроконтроллеры, АЦП, память и т.д 2 13.01.2008 12:42
Нужна информация по интерфейсу велотренажера buremot Информация по радиокомпонентам 2 14.04.2007 22:19
Помогите найти инфу по интерфейсу IDE gust Информация по радиокомпонентам 1 02.12.2005 21:11


Часовой пояс GMT +4, время: 22:27.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot