Українська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
Сообщения: 3747
"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
Сообщения: 3747
"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 килобайт) — 1617 загрузок
Сообщение создано: 09. 11. 2014 [21:06]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3747
"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
Сообщения: 3747
"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
Сообщения: 3747
"tka4ev_s" wrote:

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

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

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



16920