УкраїнськаEnglishmRussian
Вход/Новый
В теме нет новых постов

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


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



[Сообщение редактировалось 1 раз(а), в последний раз 04.02.2012 в 15:04.]
Сообщение создано: 04. 02. 2012 [16:27]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3747
"kirill256" wrote:

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

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

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

Learn, learn and learn better than work, work and work.
Сообщение создано: 05. 02. 2012 [01:03]
kirill256
Кирилл Андрезен
Создатель темы
Зарегистрирован(а) с: 05.05.2011
Сообщения: 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

[Сообщение редактировалось 1 раз(а), в последний раз 05.02.2012 в 09:33.]
Сообщение создано: 05. 02. 2012 [09:55]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3747
"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.
Сообщение создано: 05. 02. 2012 [11:46]
kirill256
Кирилл Андрезен
Создатель темы
Зарегистрирован(а) с: 05.05.2011
Сообщения: 30
Так, у меня косяк был вместо isEVal было isEval,
а компиляция скрипта не ругалась, или и не должна была ???,
поменял заработало.
Сообщение создано: 05. 02. 2012 [14:16]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3747
"kirill256" wrote:

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

Не должна.

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



21656