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

[BugFixed] Ошибка отображения количества записанных регистров в транспортном протоколе ModBus


Автор Повідомлення
Повідомлення створено: 30. 09. 2014 [10:43]
fido_max
Maxim Kochetkov
Contributor
Автор теми
Зареєстрован(а) с: 28.10.2010
Повідомлення: 129
Некорректно формируется строка статуса. Вместо количества записынных регистров подставляется количество прочитанных регистров:


string Node::getStatus( )
{
string rez = _("Disabled. ");
if(enableStat()) {
rez = _("Enabled. ");
switch(mode())
{
case MD_DATA:
rez += TSYS::strMess(_("Spent time: %s. Requests %.4g. Read registers %.4g, coils %.4g, register inputs %.4g, coil inputs %.4g.\n"
"Writed registers %.4g, coils %.4g."),
tm2s(tmProc).c_str(), cntReq, data->rReg, data->rCoil, data->rRegI, data->rCoilI, data->rRegI, data->wReg, data->wCoil);
break;
case MD_GT_ND: case MD_GT_NET:
rez += TSYS::strMess(_("Requests %.4g."), cntReq);
break;
}
}

return rez;
}

Должно быть:

tm2s(tmProc).c_str(), cntReq, data->rReg, data->rCoil, data->rRegI, data->rCoilI, data->wReg, data->wCoil);
Повідомлення створено: 30. 09. 2014 [11:01]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"fido_max" wrote:

Некорректно формируется строка статуса. Вместо количества записынных регистров подставляется количество прочитанных регистров:

Должно быть:
tm2s(tmProc).c_str(), cntReq, data->rReg, data->rCoil, data->rRegI, data->rCoilI, data->wReg, data->wCoil);

Да, лишнее, исправил.

Learn, learn and learn better than work, work and work.
Повідомлення створено: 09. 11. 2014 [19:22]
tka4ev_s
Сергей Ткачев
Зареєстрован(а) с: 19.10.2014
Повідомлення: 30
if(SYS.time() > tm_to)
{
tm_to = SYS.time()+10; //Установка порога ожидания на 10 секунд более
текущего времени
//Выполнение других действий с периодичностью 10 секунд
}
использую данный код для задержки но он не работает
попробовал вывести на экран значение tm_to поспоянно бежит секундомер
как я понимаю такого быть не должно tm_to должно обновляться одн раз в 10 секунд
а так получается что условие if(SYS.time() > tm_to) не выполняется
Повідомлення створено: 09. 11. 2014 [20:23]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"tka4ev_s" wrote:

а так получается что условие if(SYS.time() > tm_to) не выполняется

Какое отношение этот вопрос имеет к теме форума?
И потом, у меня всё выполняется.

Learn, learn and learn better than work, work and work.
Повідомлення створено: 09. 11. 2014 [20:48]
tka4ev_s
Сергей Ткачев
Зареєстрован(а) с: 19.10.2014
Повідомлення: 30
"roman" wrote:

"tka4ev_s" wrote:

а так получается что условие if(SYS.time() > tm_to) не выполняется

Какое отношение этот вопрос имеет к теме форума?
И потом, у меня всё выполняется.

извиняюсь буду создовать следующий раз новую тему
но всеже может подскажете где копать
вот код программы
var tm1_to;
Text1_text=SYS.time();
if(SYS.time() > tm1_to)
{
tm1_to = SYS.time()+10;
}
Text2_text=tm1_to;
почему в двух text секунды бегут одинаково с разницой в 10
Вкладений файл

Снимок экрана от 2014-11-09 21:35:08.jpg (Тип файлу: image/jpeg, Розмір: 22.18 кілобайтів) — 1661 завантажень
Повідомлення створено: 09. 11. 2014 [21:06]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"tka4ev_s" wrote:

но всеже может подскажете где копать
вот код программы
var tm1_to;
Text1_text=SYS.time();
if(SYS.time() > tm1_to)
{
tm1_to = SYS.time()+10;
}
Text2_text=tm1_to;
почему в двух text секунды бегут одинаково с разницой в 10

tm1_to нужно инициировать нормально иначе там не понятно что, как минимум.
Хотя скорее всего период выполнения скрипта страницы 10 секунд.
Разбирайтесь, там нет ошибок!

Learn, learn and learn better than work, work and work.
Повідомлення створено: 09. 11. 2014 [21:17]
tka4ev_s
Сергей Ткачев
Зареєстрован(а) с: 19.10.2014
Повідомлення: 30
tm1_to нужно инициировать нормально иначе там не понятно что, как минимум.
Хотя скорее всего период выполнения скрипта страницы 10 секунд.
Разбирайтесь, там нет ошибок!

Огромное спасибо!!!
объявил переменную через "добавить атрибут" все заработало
а можно ли здесь обявлять переменную через var если можно то как?
Повідомлення створено: 09. 11. 2014 [21:24]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"tka4ev_s" wrote:

а можно ли здесь обявлять переменную через var если можно то как?

if(f_start) tm1_to = 0;

Learn, learn and learn better than work, work and work.
Повідомлення створено: 09. 11. 2014 [21:42]
tka4ev_s
Сергей Ткачев
Зареєстрован(а) с: 19.10.2014
Повідомлення: 30
if(f_start) tm1_to = 0;
Text1_text=SYS.time();
if(SYS.time() > tm1_to)
{
tm1_to = SYS.time()+10;
}
Text2_text=tm1_to;
работает только если добавить атрибут tm1_to
как я понял все переменные моно объявить только через "добавить атрибут"
Повідомлення створено: 09. 11. 2014 [21:58]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"tka4ev_s" wrote:

работает только если добавить атрибут tm1_to

У меня всегда работает!
Хотя если речь о LTS то наверно.

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



1421