EnglishУкраїнськаmRussian
Login/New
Topic with many replies

Реализация протокола DCON модулей ввода-вывода I-7000 ICP DAS


Author Message
Written on: 16. 03. 2011 [09:58]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"almaz" wrote:

Думаете есть смысл проверять контрольную сумму при неверной длине пакета? Ошибка длины пакета приоритетнее ошибки CRC.

Уверен. Критерием завершённости пакета является '\r' и он проверяется в первую очередь. Критерием целостности является CRC, и он следующий. А размер это ожидаемая длина пакета при корректном результате. При результате с признаком ошибки этот размер иной, но это ни разу не ошибка доставки пакета! А значит CRC должен быть перед ним.

Learn, learn and learn better than work, work and work.
Written on: 16. 03. 2011 [10:07]
almaz
Almaz Karimov
Contributor
Topic creator
registered since: 25.09.2008
Posts: 516
Длина пакета более приоритетный критерий целостности этого пакета.
При неверной длине ответа проверка CRC заведомо даст ошибку, поэтому проверка CRC до проверки длины не имеет смысла.

[This article was edited 2 times, at last 16.03.2011 at 10:10.]

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Written on: 16. 03. 2011 [10:20]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"almaz" wrote:

При неверной длине ответа проверка CRC заведомо даст ошибку, поэтому проверка CRC до проверки длины не имеет смысла.

С чего вдруг? Если это ответ '!' у него нет CRC?

Learn, learn and learn better than work, work and work.
Written on: 16. 03. 2011 [10:28]
almaz
Almaz Karimov
Contributor
Topic creator
registered since: 25.09.2008
Posts: 516
CRC есть (случай без CRC не рассматриваем). И длина ответа должна составлять 3 байта. При верной длине имеет смысл последующая проверка CRC, при неверной - нет (ни до, ни после).

[This article was edited 1 times, at last 16.03.2011 at 10:31.]

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Written on: 16. 03. 2011 [10:53]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"almaz" wrote:

И длина ответа должна составлять 3 байта.

Какого ответа? Корректного ответа с данными будет 10, а с признаком ошибки 3. Что Вы в таком случае сравните? И получите ошибку размера, хотя для признака ошибки это иное.
Кроме того, проблем с проверкой CRC для двух последних символов ни в одном из случаев не будет.


Learn, learn and learn better than work, work and work.
Written on: 16. 03. 2011 [12:25]
almaz
Almaz Karimov
Contributor
Topic creator
registered since: 25.09.2008
Posts: 516
Для некоторых ответов (c 2 возможными длинами) выполнял проверку на две верные длины. Передача acq_len в DCONReq получается была не нужна. В DCONReq достаточно проверить чтобы длина была не менее 2 и последний символ \r.

В текущем коде маловероятно появление ошибки длины пакета, так как вместо этой ошибки всегда будет выходить ошибка CRC. Раз настаиваете - менять не буду. Просто надо будет знать, что при помехах в сети выдаваемая ошибка CRC может означать и ошибку длины.

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Written on: 16. 03. 2011 [12:29]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"almaz" wrote:

В текущем коде маловероятно появление ошибки длины пакета, так как вместо этой ошибки всегда будет выходить ошибка CRC. Раз настаиваете - менять не буду. Просто надо будет знать, что при помехах в сети выдаваемая ошибка CRC может означать и ошибку длины.

Не будет. Предлагаю оставить решение этого спора временем. :)

Learn, learn and learn better than work, work and work.
Written on: 16. 03. 2011 [12:53]
almaz
Almaz Karimov
Contributor
Topic creator
registered since: 25.09.2008
Posts: 516
Ну да. Важно же, чтобы данные шли в дальнейшую обработку и важен сам факт наличия ошибки. Лишь бы птинцы средьмаша не просекли. :D

[This article was edited 1 times, at last 16.03.2011 at 12:59.]

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Written on: 16. 03. 2011 [17:01]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"almaz" wrote:

Ну да. Важно же, чтобы данные шли в дальнейшую обработку и важен сам факт наличия ошибки. Лишь бы птинцы средьмаша не просекли. :D

Собственно написал в Protocol.SelfUser код эмуляции модуля 8AI и проверил работоспособность основных алгоритмов. Некоторые вещи поправил. Все ошибки корректно обрабатываются и это уже проверено. Позже, по мере нахождения информации по запросам различных модулей проверю остальное.

Код 8AI в Protocol.SelfUser такой:
JAVASCRIPT
SYS.messDebug("TEST REQ: ",request);
answer = ">+05.123+04.153+07.234-02.356+10.000-05.133+02.345+08.234";
//answer = ">+04.153+07.234-02.356+10.000-05.133+02.345+08.234";
//answer = "?";
CRC = 0;
for(i=0;i<answer.length;i++) CRC += answer.charCodeAt(i);
answer += (CRC&0xFF).toString(16)+"\r";
SYS.messDebug("TEST ANSV: "+answer.charCodeAt(0),answer);
return 0;


Learn, learn and learn better than work, work and work.
Written on: 16. 03. 2011 [17:15]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
Кстати, я тут подумал, что имело-бы смысл для модулей на DCON, которые есть в наличии, писать шаблоны с реализацией расширенной поддержки, включая всякие калибровки, установки сторожевых таймеров, установки безопасных значений, установки регламентных границ и т.д. А затем помещать их в библиотеку шаблонов, тем самым формируя её.

Чем удобно, что элементы можно в любой момент дополнить и на основе их создавать новые прямо в JavaLikeCalc.

Learn, learn and learn better than work, work and work.



17837