Отговори на тема  [ 70 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5  Следваща
пик микро сериен порт RS233 дайте формула за протокола 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 11:02 am
Мнения: 8891
Местоположение: Разград
Мнение Re: пик микро сериен порт RS233 дайте формула за протокола
1 на милиони. Твърде малък шанс за да се притесняваш чак толкова много. Ако протокола имаше проблем, нямаше да е стандарт просъществувал десетилетия. А и дори е пренесен в същия вид на TCP. Без crc-то само. Там долните слоеве така или иначе я вършат тая работа.


Съб Авг 15, 2020 2:26 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 07, 2012 10:22 pm
Мнения: 3074
Мнение Re: пик микро сериен порт RS233 дайте формула за протокола
не е 1 на милиони..


Съб Авг 15, 2020 2:54 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 27996
Местоположение: София
Мнение Re: пик микро сериен порт RS233 дайте формула за протокола
изобщо не е 1 на милион, зависи както от дължината на пакета така и от броя грешки, в зашумена среда и по-калпав хардуерен слой може ида не е достатъчно и за сравнително къси пакети : http://users.ece.cmu.edu/~koopman/roses ... bedded.pdf


Съб Авг 15, 2020 4:01 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: пик микро сериен порт RS233 дайте формула за протокола
Защо да се мъчи човек с модбъс, след като има CAN? Там имаш наготово 15-битово CRC от хардуера...
Относно чексумата - никога не е достатъчно силна... Т.е. правенето на safety не се ограничава до това да има надеждна чексума. Там е до вероятност за отказ - става сейфти когат минеш под определено число тая вероятност. В конкретния случай, дори да имаш SHA512, трябва да отчетеш фактори като:
- софтуера е калпав и в определена ситуация, примерно след като е вървял 33 дена без рестарт, не реагира правилно и въпреки че чексумата на излиза, оня вика всичко е ок - т.е. бъг който чупи защитата
- ако си изчистил софтуера, остава да предвидиш шанса точно когато има шум да дойде енергия свише (нЕкоя бърза частица) и твоя процесор да обърка сметката и да си помисли че е вярна
- и евентуално, че тоя процесор си бие отбой, щото някой забравил да сложи чексума на флаша и он сменим инструкциите и сложил един NOP точно дето трябвало да скочи към рекацията за грешка...
Та като цяло трябва да имаш идея какво гониш, какъв бюджет имаш, т.е. доколко има пазар, и т.н. Разбира се, добрите инженерни практики изискват да мислиш по тия теми дори когато правиш лампички за елха, колкото и да не е критично да мигнат грешно веднъж в годината.
Към темата има отношение и бит еррор рейта на физиката отдолу - ако е много зле работата и трябва да компенсираш с големи CRC-та, че и да възстановяваш данни с разните ECC-та, значи по-добре да не ползваш тая физика - поне когато имаш избор, т.е. по-добре смени физиката, която явно е неподходяща за даденото приложение/обкръжениет - щото ти хубаво ще детектнеш грешката, ще поискаш повторение, а твоето искане наобратно може пак да се счупи, и после пак грешка ама в друг бит, и после пак повторение - и какво стана с машината - ще работи ли или ще си оправя грешките? Особено ако се гони някакъв real time и има времеви ограничения, хич не е добре. Затова разните индустриални бъсове имат механизми за подобни ситуации - примерно затварят си очите за единична грешка, ако на следващия цикъл дойда верни данни. В CAN има броячи за тия неща на хардуерно ниво дори и те пазят от такива грешки, по-точно те информират че нещата не са каквито трябва да бъдат.
Ако се вълнуваш от тази тематика, най-добре стъпи на раменете на някого, т.е. базирай се на одобрен (сертифициран) сейфти стандарт и ако си наистина амбициозен може да си помислиш да направиш някакъв продукт. Имам предвид че инвестицията в разработването на "концепцията", т.е. стандарта, е сума за която дори хидроинжЕнера ще излезе от сараите...


Съб Авг 15, 2020 9:32 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Сеп 28, 2011 9:04 am
Мнения: 38
Мнение Re: пик микро сериен порт RS233 дайте формула за протокола
Благодаря на gicho за хубавият пост. Съгласен съм на 100% с него.
Ако наистина средата е много зашумена и modbus или друг протокол генерира доста на често грешни . Явно изборът на комуникация не е правелен.
Това обаче е доста рядък случай. За CRC-16 не съм много съгласен , че може да се излъже толкова лесно. Не е невъзможно , но на практика е много трудно.
Все как трябва да съвпаднат няколко критерия за да се валидира пакета правилно (данни , позиция и стойността от предходното изчисление )
Код:
auto CModbus::XCRC::calc(const uint8_t * msg_ptr, size_t msg_len) noexcept->uint16_t
{
    static const uint16_t crc_table[256]=
    {
        0x0000,0xC0C1,0xC181,0x0140,0xC301,0x03C0,0x0280,0xC241,0xC601,0x06C0,0x0780,0xC741,0x0500,0xC5C1,0xC481,0x0440,
        0xCC01,0x0CC0,0x0D80,0xCD41,0x0F00,0xCFC1,0xCE81,0x0E40,0x0A00,0xCAC1,0xCB81,0x0B40,0xC901,0x09C0,0x0880,0xC841,
        0xD801,0x18C0,0x1980,0xD941,0x1B00,0xDBC1,0xDA81,0x1A40,0x1E00,0xDEC1,0xDF81,0x1F40,0xDD01,0x1DC0,0x1C80,0xDC41,
        0x1400,0xD4C1,0xD581,0x1540,0xD701,0x17C0,0x1680,0xD641,0xD201,0x12C0,0x1380,0xD341,0x1100,0xD1C1,0xD081,0x1040,
        0xF001,0x30C0,0x3180,0xF141,0x3300,0xF3C1,0xF281,0x3240,0x3600,0xF6C1,0xF781,0x3740,0xF501,0x35C0,0x3480,0xF441,
        0x3C00,0xFCC1,0xFD81,0x3D40,0xFF01,0x3FC0,0x3E80,0xFE41,0xFA01,0x3AC0,0x3B80,0xFB41,0x3900,0xF9C1,0xF881,0x3840,
        0x2800,0xE8C1,0xE981,0x2940,0xEB01,0x2BC0,0x2A80,0xEA41,0xEE01,0x2EC0,0x2F80,0xEF41,0x2D00,0xEDC1,0xEC81,0x2C40,
        0xE401,0x24C0,0x2580,0xE541,0x2700,0xE7C1,0xE681,0x2640,0x2200,0xE2C1,0xE381,0x2340,0xE101,0x21C0,0x2080,0xE041,
        0xA001,0x60C0,0x6180,0xA141,0x6300,0xA3C1,0xA281,0x6240,0x6600,0xA6C1,0xA781,0x6740,0xA501,0x65C0,0x6480,0xA441,
        0x6C00,0xACC1,0xAD81,0x6D40,0xAF01,0x6FC0,0x6E80,0xAE41,0xAA01,0x6AC0,0x6B80,0xAB41,0x6900,0xA9C1,0xA881,0x6840,
        0x7800,0xB8C1,0xB981,0x7940,0xBB01,0x7BC0,0x7A80,0xBA41,0xBE01,0x7EC0,0x7F80,0xBF41,0x7D00,0xBDC1,0xBC81,0x7C40,
        0xB401,0x74C0,0x7580,0xB541,0x7700,0xB7C1,0xB681,0x7640,0x7200,0xB2C1,0xB381,0x7340,0xB101,0x71C0,0x7080,0xB041,
        0x5000,0x90C1,0x9181,0x5140,0x9301,0x53C0,0x5280,0x9241,0x9601,0x56C0,0x5780,0x9741,0x5500,0x95C1,0x9481,0x5440,
        0x9C01,0x5CC0,0x5D80,0x9D41,0x5F00,0x9FC1,0x9E81,0x5E40,0x5A00,0x9AC1,0x9B81,0x5B40,0x9901,0x59C0,0x5880,0x9841,
        0x8801,0x48C0,0x4980,0x8941,0x4B00,0x8BC1,0x8A81,0x4A40,0x4E00,0x8EC1,0x8F81,0x4F40,0x8D01,0x4DC0,0x4C80,0x8C41,
        0x4400,0x84C1,0x8581,0x4540,0x8701,0x47C0,0x4680,0x8641,0x8201,0x42C0,0x4380,0x8341,0x4100,0x81C1,0x8081,0x4040
    };

    assert (msg_ptr and msg_len);
    uint16_t crc = 0xffff;
    while (msg_len--)
    {
        uint8_t i = *(msg_ptr++) ^ crc;
        crc = (crc>>8)^crc_table[i];
    }
    return crc;
}

Ползвам подобно валидиране от много години , но с друг полином и на практика не съм изпадал в ситуация на невалидни данни с валидна чексума

_________________
Оставете човек в самолет и той ще летне за един ден.
Хвърлете човек от самолета и той лети до края на живота си.


Нед Авг 16, 2020 4:11 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 07, 2012 10:22 pm
Мнения: 3074
Мнение Re: пик микро сериен порт RS233 дайте формула за протокола
Добър пост , Гичо.
Зададох въпроса, защото мой приятел заподозря -че му се е слуъчило такова нещо на реален обект.
Не е Модбус, но ползва същия полином. Стана ми интересно , та затова...
На Модбус има няколко реквизита - адрес,адрес на регистъра, брой байтове (в командите за трансфер на няколко регистътъра), които допълнително пазят от грешно поведение. Но четворна грешка в данните - примерно мощен шум по средата на байта ,между валиден старт и стоп битове- може би не се "хваща". Не знам как е в единичните команди , които са много къси.
На Модбус работят датчиците, с които отчитат акцизните стоки(масла,бои) - системи ИКУНК (ако не бъркам съкращението) . Преди десетина години , когато митниците дефинираха изискванията - така беше записано. Концентраторът си говори с митницата през интернет, но с датчиците - през Модбус.
В някои случаи може да има доста дълги пакети, и какви мерки са взети срещу шум - си е избор на разработчиците. Хубавото е, че става въпрос само за пари, не за промишлени опасности.


Нед Авг 16, 2020 7:18 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 10:31 pm
Мнения: 9645
Мнение Re: пик микро сериен порт RS233 дайте формула за протокола
теорията на вероятностите е хубаво нещо, понякога е забавна, но трябва да се помни, че си е 'само теория'.
примерно - вероятността да срещнеш динозавър на улицата е точно 50% - може да го срещнеш, може и да не го срещнеш.
практически, дори очевидни неща като ези-тура, рядко са точно 50% - по-скоро се получава нещо като 49:51, зависи от броя хвърляния.


Нед Авг 16, 2020 7:45 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 27996
Местоположение: София
Мнение Re: пик микро сериен порт RS233 дайте формула за протокола
Ееее ти тука подвежда, ези-тура физически няма как да е 50:50... и въпреки че шанса да спукаш гума пред гумаджийница и на 200 км от най-близката такава да е еднакъв, и макар че много по често минаваш покрай гумаджийница гарантирано ще спукаш гума точно някъде в полето и естествено няма да имаш резервна. Да не забравяме, че освен теория на вероятностите има и теория за всемирната гадост....


Нед Авг 16, 2020 7:50 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 03, 2005 1:21 am
Мнения: 10611
Местоположение: София
Мнение Re: пик микро сериен порт RS233 дайте формула за протокола
А параграф 22 гласи, че ще спукаш гума пред гумарницата когато тя не работи... :D


Нед Авг 16, 2020 7:55 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Сеп 28, 2011 9:04 am
Мнения: 38
Мнение Re: пик микро сериен порт RS233 дайте формула за протокола
stefan63 написа:
Добър пост , Гичо.
Зададох въпроса, защото мой приятел заподозря -че му се е слуъчило такова нещо на реален обект.
Не е Модбус, но ползва същия полином. Стана ми интересно , та затова...
На Модбус има няколко реквизита - адрес,адрес на регистъра, брой байтове (в командите за трансфер на няколко регистътъра), които допълнително пазят от грешно поведение. Но четворна грешка в данните - примерно мощен шум по средата на байта ,между валиден старт и стоп битове- може би не се "хваща". Не знам как е в единичните команди , които са много къси.
На Модбус работят датчиците, с които отчитат акцизните стоки(масла,бои) - системи ИКУНК (ако не бъркам съкращението) . Преди десетина години , когато митниците дефинираха изискванията - така беше записано. Концентраторът си говори с митницата през интернет, но с датчиците - през Модбус.
В някои случаи може да има доста дълги пакети, и какви мерки са взети срещу шум - си е избор на разработчиците. Хубавото е, че става въпрос само за пари, не за промишлени опасности.

Извинявай, изказвам само мнение :
Горните грешки ще ги хване още HAL-а на UART-a те нямат никаква "връзка" със слоя на Modbus RTU
Представи си следното. Приет байт по UART с валидно parity, валиден брой стоп битови и тнт който обаче е с грешни данни, приет някой следващ(и) байт(ове) с валино parity и грешни данни, и данните са се "нагодили" така, че да отговарят на чексумата на modbus телеграмата, а всички останяли байтове са с валидно parity и формат. Теоретично вероятноста това да се случи е нищожна. А ако това нещо се повтаря - грешката със сигурност е в логиката на програмата. Другото е , че в modbus няма дълги пакети , мисля че максимално е 16 байта при RTU / при ASCII е малко повече.

_________________
Оставете човек в самолет и той ще летне за един ден.
Хвърлете човек от самолета и той лети до края на живота си.


Нед Авг 16, 2020 8:30 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 11:02 am
Мнения: 8891
Местоположение: Разград
Мнение Re: пик микро сериен порт RS233 дайте формула за протокола
Към 240 байта е максимума. Май 256 байта за целия пакет. Данни плюс контролните байтове. Ограничава те само това че имаш 1 байт за дължина на пакета.


Нед Авг 16, 2020 9:31 am
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Сеп 28, 2011 9:04 am
Мнения: 38
Мнение Re: пик микро сериен порт RS233 дайте формула за протокола
Cekins написа:
Към 240 байта е максимума. Май 256 байта за целия пакет. Данни плюс контролните байтове. Ограничава те само това че имаш 1 байт за дължина на пакета.

Да наистина е така !!! Гледам какъв буфер съм заделил но явно на мен ми е трябвал толкова навремето . Аз бях master, а ми трябваше RAM

_________________
Оставете човек в самолет и той ще летне за един ден.
Хвърлете човек от самолета и той лети до края на живота си.


Последна промяна panchev68 на Нед Авг 16, 2020 9:48 am, променена общо 3 пъти



Нед Авг 16, 2020 9:35 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 11:02 am
Мнения: 8891
Местоположение: Разград
Мнение Re: пик микро сериен порт RS233 дайте формула за протокола
Е все пак протокола не е мислен да преточва HD видео ;) буфера се и добре да е 256 байта. Все пак мастера може да говори и с други устройства. А колко регистъра ще имаш физически реализирани е друг въпрос.


Нед Авг 16, 2020 9:42 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 27996
Местоположение: София
Мнение Re: пик микро сериен порт RS233 дайте формула за протокола
Panchev, и е така и не е така, на партито на серийния порт няма много смисъл да разчиташ, а дали може да се счупят данни така че crc16 да излезе и това може, колкото не ти се вярва има и друг вариант да се счупят данните и Crc-то и то пак да отговаря на данните. Ако ще се точат много данни не знам дали модбъс е начина.


Нед Авг 16, 2020 11:13 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Сеп 28, 2011 9:04 am
Мнения: 38
Мнение Re: пик микро сериен порт RS233 дайте формула за протокола
Toni - Сигурно е така. Все пак и този протокол ми е почти набор. 10-ина години не съм пипвал сериина комуникация по RS-xxx, но ако ми се наложи бих направил това дето съм описал в началото на темата. Ползам CAN за по-прости неща като отгоре е пак някакво бутиково изпълнение на протокол. Все пак е безмислено използването на някой от стандартите за да си говорят 5-6 нода . Имам в предвид : Fieldbus , Profibus , ... . Имплементиране на подобен протокол е безмислено, ако не ти се налага връзка с външният свят. За по сериозни неща има EtherCAT на Beckoff който е real-time (1us) и за който има всякви устройства, а и създването на slave не е кой знае какво (LAN9252 на uChip), но темата отдавна отиде в съсвсем друга посока.

_________________
Оставете човек в самолет и той ще летне за един ден.
Хвърлете човек от самолета и той лети до края на живота си.


Нед Авг 16, 2020 2:36 pm
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 70 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни