Автор |
Сообщение |
Сообщение создано: 09. 01. 2014 [12:09]
|
monia
Олег Намятов
Создатель темы
Зарегистрирован(а) с: 21.05.2012
Сообщения: 173
|
вот код
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
Сообщения: 3750
|
"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
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
Сообщения: 3750
|
"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
Сообщения: 3750
|
"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
Сообщения: 3750
|
"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.
|