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

[BugWrong] странности с modbus при разрыве/восстановлении связи


Author Message
Written on: 04. 02. 2012 [14:46]
kirill256
Кирилл Андрезен
Topic creator
registered since: 05.05.2011
Posts: 30
Доброго времени суток!
читаю я по modbus-tcp регистры int16
(которые разбираются потом по битам для формирования сообщений)
при обрыве связи например выдергиванием из сетевухи,
во всех этих регистрах перед тем как они станут eval
значение становятся равными единице,
(и соответственно проходит ложное сообщение по биту 0,
а активные сообщения в других битах сбрасываются)



[This article was edited 1 times, at last 04.02.2012 at 15:04.]
Written on: 04. 02. 2012 [16:27]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"kirill256" wrote:

читаю я по modbus-tcp регистры int16
(которые разбираются потом по битам для формирования сообщений)

Где это потом они разбиваются?

P.S. Конфигурацию атрибутов ModBus приведите!

Learn, learn and learn better than work, work and work.
Written on: 05. 02. 2012 [01:03]
kirill256
Кирилл Андрезен
Topic creator
registered since: 05.05.2011
Posts: 30
есть виджет EAlarm где ставится атрибут alarm и есть текст и лампочка состояния,
они накиданы на виджет где разбираются биты в нем скрипт

var vErr = 0!=vErrCode;
//===============
EAlarm000_vErr = vErr;
if(!FL00.isEval()){EAlarm000_vState = 0!=(FL00 & 0x0001);};
EAlarm001_vErr = vErr;
if(!FL00.isEval()){EAlarm001_vState = 0!=(FL00 & 0x0002);};
....... и так ещё 128 раз
FL00..FL07 связаны с prm:/ModBus/smh2gi/Msg/FL00 итд
vErrCode с prm:/ModBus/smh2gi/Msg/err

и шаблон для записи в архив в котором они тоже разбираются
из шаблона торчат msg000...127 и FL00..FL07, FL.. в шаблоне как Целый|Вход|Только чтение|Связь

if(!FL00.isEval() && (0 != (FL00 & 0x0001)) != msg000){
msg000 = !msg000;
if(msg000){ messPut("msg000-Ot-TprBQ",4,"датчик температуры прямой отопления:Неисправен");};
};
if(!FL00.isEval() && (0 != (FL00 & 0x0002)) != msg001){
msg001 = !msg001;
if(msg001){ messPut("msg001-Ot-TprAHH",2,"датчик температуры прямой отопления:Верхний порог 2");};
};

а FL00..FL07 в конфигурации шаблона как RI:0xa033:r.....RI:0xa03a:r

[This article was edited 1 times, at last 05.02.2012 at 09:33.]
Written on: 05. 02. 2012 [09:55]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"kirill256" wrote:

есть виджет EAlarm где ставится атрибут alarm и есть текст и лампочка состояния,
они накиданы на виджет где разбираются биты в нем скрипт

....

а FL00..FL07 в конфигурации шаблона как RI:0xa033:r.....RI:0xa03a:r

У меня нет таких проблем. Включил регистр в архивирование и вижу смену значения сразу на EVAL и обратно:

Sun Feb 5 09:52:22 2012 0 1000
Sun Feb 5 09:52:23 2012 0 <EVAL>
...
Sun Feb 5 09:55:22 2012 0 <EVAL>
Sun Feb 5 09:55:23 2012 0 1000


Разбирайтесь в обработке скрипта!

Learn, learn and learn better than work, work and work.
Written on: 05. 02. 2012 [11:46]
kirill256
Кирилл Андрезен
Topic creator
registered since: 05.05.2011
Posts: 30
Так, у меня косяк был вместо isEVal было isEval,
а компиляция скрипта не ругалась, или и не должна была ???,
поменял заработало.
Written on: 05. 02. 2012 [14:16]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"kirill256" wrote:

Так, у меня косяк был вместо isEVal было isEval,
а компиляция скрипта не ругалась, или и не должна была ???,

Не должна.

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



12195