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

Вопрос по tmFStr


Автор Сообщение
Сообщение создано: 09. 01. 2014 [12:09]
monia
Олег Намятов
Создатель темы
Зарегистрирован(а) с: 21.05.2012
Сообщения: 173
вот код
JAVASCRIPT
SysTime = tmTime();    //получаем время в секундах (без учета часового пояса)
sSysTime = tmFStr(SysTime,"%Y-%m-%d %H:%M:%S") // преобразуем в нормальный вид


tmFStr(SysTime,"%Y-%m-%d %H:%M:%S") по идее должен выдать время без учета часового пояса, но по чему то выдает с учетом?

Данная функция учитывает локальный часовой пояс?
Как мне получить врем без учета локального часового пояса?
Сообщение создано: 09. 01. 2014 [13:02]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3747
"monia" wrote:

tmFStr(SysTime,"%Y-%m-%d %H:%M:%S") по идее должен выдать время без учета часового пояса, но по чему то выдает с учетом?

По какой идее должен?
Все функции в POSIX, а это именно их форвардинг, работают с элементами времени согласно выбранной зоны машины, кроме time() которая возвращает: абсолютное время (UTC) в секундах от эпохи 1.1.1970 и микросекундах.

"monia" wrote:

Как мне получить врем без учета локального часового пояса?

Никак, с вопросами к POSIX, предварительно осмыслив зачем оно Вам надо!
http://www.cplusplus.com/reference/ctime/time
http://www.cplusplus.com/reference/ctime/strftime


Learn, learn and learn better than work, work and work.
Сообщение создано: 09. 01. 2014 [14:29]
monia
Олег Намятов
Создатель темы
Зарегистрирован(а) с: 21.05.2012
Сообщения: 173
все переосмыслил и разобрался с tmFStr

есть еще один вопрос
при запуске OpenSCADA выдает

1|/ | Запуск!
1|/sub_Transport/ | Пуск подсистемы.
4|/sub_Protocol/mod_ModBus/n_r01k031_Tcp/ | Ошибка компиляции функции для языка 'JavaLikeCalc.JavaScript': Ошибка компиляции: Ошибка символа, syntax error, unexpected ERR, позиция: (1,1)-(1,42).
4|/sub_DAQ/mod_JavaLikeCalc/ | Ошибка компиляции: Ошибка символа, syntax error, unexpected ERR, позиция: (1,1)-(1,42).
4|/sub_Protocol/ | Ошибка запуска модуля 'ModBus'.

1|/sub_DAQ/ | Пуск подсистемы.
1|/sub_DAQ/mod_LogicLev/cntr_r01k031_LL/ | Включение контроллера!
1|/sub_DAQ/mod_LogicLev/cntr_r01k056_LL/ | Включение контроллера!
1|/sub_DAQ/mod_LogicLev/cntr_r01k090_LL/ | Включение контроллера!
1|/sub_Archive/ | Пуск/обновление подсистемы.
3|/ | Нет доступа для создания политики реального времени для 'sub_Archive.vals'. Создан поток по умолчанию!
3|/ | Нет доступа для создания политики реального времени для 'sub_DAQ.redundant'. Создан поток по умолчанию!
1|/sub_DAQ/mod_LogicLev/cntr_r01k031_LL/ | Запуск контроллера!
1|/sub_DAQ/mod_LogicLev/cntr_r01k056_LL/ | Запуск контроллера!
1|/sub_DAQ/mod_LogicLev/cntr_r01k090_LL/ | Запуск контроллера!
1|/sub_Archive/ | Пуск/обновление подсистемы.
1|/sub_UI/ | Пуск подсистемы.
1|/sub_UI/mod_VCAEngine/ | Старт модуля.
1|/ | Запуск завершён!

Вот код /sub_Protocol/mod_ModBus/n_r01k031_Tcp
JAVASCRIPT
LogicLev.r01k031_LL.r01k031_Lcp.TimeAlarm = (R2w<<16)|R1w;
LogicLev.r01k031_LL.r01k031_Lcp.aV1fA = R3w&(1);
LogicLev.r01k031_LL.r01k031_Lcp.aV1fB = R3w&(2);
LogicLev.r01k031_LL.r01k031_Lcp.aV1fC = R3w&(4);
LogicLev.r01k031_LL.r01k031_Lcp.aV1 = R3w&(8);
LogicLev.r01k031_LL.r01k031_Lcp.aV2fA = R3w&(16);
LogicLev.r01k031_LL.r01k031_Lcp.aV2fB = R3w&(32);
LogicLev.r01k031_LL.r01k031_Lcp.aV2fC = R3w&(64);
LogicLev.r01k031_LL.r01k031_Lcp.aV2 = R3w&(128);
LogicLev.r01k031_LL.r01k031_Lcp.aCH1 = R3w&(256);
LogicLev.r01k031_LL.r01k031_Lcp.aCH2 = R3w&(512);
LogicLev.r01k031_LL.r01k031_Lcp.aCO1 = R3w&(1024);
LogicLev.r01k031_LL.r01k031_Lcp.aCO2 = R3w&(2048);
LogicLev.r01k031_LL.r01k031_Lcp.aEssa = R3w&(4096);
LogicLev.r01k031_LL.r01k031_Lcp.aFire = R3w&(8192);
LogicLev.r01k031_LL.r01k031_Lcp.aSecurity = R3w&(16384);
LogicLev.r01k031_LL.r01k031_Lcp.aSGV = R3w&(32768);


В принципе тут ошибок нет, по скольку запуск в ручную не выдает ошибок (выставляю галку на "Включен" данного узла) и все пашет как нужно
проверил пути к переменной (LogicLev.r01k031_LL.r01k031_Lcp.TimeAlarm), все совпадает.

почему выдается ошибка? (Ошибка компиляции функции для языка 'JavaLikeCalc.JavaScript': Ошибка компиляции: Ошибка символа, syntax error, unexpected ERR, позиция: (1,1)-(1,42))
Сообщение создано: 09. 01. 2014 [14:38]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3747
"monia" wrote:

все переосмыслил и разобрался с tmFStr

Вообще, для получения строки времени UTC в POSIX есть функции gmtime() и timegm(), но я их в OpenSCADA не тянул.

"monia" wrote:

есть еще один вопрос
при запуске OpenSCADA выдает
...
почему выдается ошибка? (Ошибка компиляции функции для языка 'JavaLikeCalc.JavaScript': Ошибка компиляции: Ошибка символа, syntax error, unexpected ERR, позиция: (1,1)-(1,42))

Потому-что на момент запуска объекта протокола указанных атрибутов ещё нет.
И вообще зачем спрашивается такое делать если ссылки для этого предназначены? Они устанавливаются после появления атрибутов!

Learn, learn and learn better than work, work and work.
Сообщение создано: 09. 01. 2014 [14:45]
monia
Олег Намятов
Создатель темы
Зарегистрирован(а) с: 21.05.2012
Сообщения: 173
подскажи
как можно передать параметры с /sub_Protocol/mod_ModBus/n_r01k031_Tcp/ в /LogicLev/r01k031_LL/r01k031_Lcp/

пни на нужную страницу или так на словах скажи
заранее спасибо
Сообщение создано: 09. 01. 2014 [15:25]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3747
"monia" wrote:

как можно передать параметры с /sub_Protocol/mod_ModBus/n_r01k031_Tcp/ в /LogicLev/r01k031_LL/r01k031_Lcp/

http://wiki.oscada.org/Doc/ModBus/files?get=modbus_prt_node_lnk.png

Learn, learn and learn better than work, work and work.
Сообщение создано: 10. 01. 2014 [10:11]
monia
Олег Намятов
Создатель темы
Зарегистрирован(а) с: 21.05.2012
Сообщения: 173

http://wiki.oscada.org/Doc/ModBus/files?get=modbus_prt_node_lnk.png


Идею понял, реализовал у себя, все работает как надо :)
Спасибо
Сообщение создано: 10. 01. 2014 [20:28]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3747
"roman" wrote:

Вообще, для получения строки времени UTC в POSIX есть функции gmtime() и timegm(), но я их в OpenSCADA не тянул.

Добавил функции: SYS.gmtime(), SYS.timegm(), SYS.strftimegm(), SYS.strptimegm().

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



16632