Українська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.



20865