EasyBuilder - Скорая помощь новичкам

Работа с панелями оператора Weintek - подключение, программирование, совмещение с ПЛК

Модераторы: kiv, 8bit, VanMo

Re: EasyBuilder - Скорая помощь новичкам

Сообщение askaev » 02 фев 2014, 03:38

VanMo писал(а):Справка по макросам есть в самом EasyBuilder, в окне с макросами нужно нажать "Помощь".


Нажал я помощь. Получил книгу справки MacroHelp. В ней лишь список встроенных функций (Build-In Function Block). А где список операторов типа If, FOR, WHILE и т.д.? Где список типов переменных (bool, char, ...)?
askaev
 
Сообщения: 27
Зарегистрирован: 09 янв 2014, 17:05

Re: EasyBuilder - Скорая помощь новичкам

Сообщение askaev » 02 фев 2014, 06:05

В принципе, можно взять переменную LW-9030 и вычислять из неё секунды, минуты, часы, дни и т.д. Но как -- опять же не соображу.
askaev
 
Сообщения: 27
Зарегистрирован: 09 янв 2014, 17:05

Re: EasyBuilder - Скорая помощь новичкам

Сообщение askaev » 03 фев 2014, 09:06

askaev писал(а):В принципе, можно взять переменную LW-9030 и вычислять из неё секунды, минуты, часы, дни и т.д. Но как -- опять же не соображу.


Сообразил:

Код: Выделить всё
macro_command main()

int time1
int time
int seconds
int minutes
int hours
char days
char months
char years

// Преобразование времени работы панели
GetDataEx(time1, "Local HMI", LW, 9030, 1)
time = time1/10
days    = time/86400
hours   = (time-86400*days)/3600
minutes = (time-86400*days-3600*hours)/60
seconds = time-86400*days-3600*hours-60*minutes
SetDataEx(days, "Local HMI", LW, 204, 1)
SetDataEx(hours, "Local HMI", LW, 206, 1)
SetDataEx(minutes, "Local HMI", LW, 208, 1)
SetDataEx(seconds, "Local HMI", LW, 210, 1)

end macro_command


Работает.

Ещё вопрос. Я в проекте сделал окно с настройками. Как сделать доступ к нему по паролю?
Последний раз редактировалось askaev 04 фев 2014, 11:19, всего редактировалось 1 раз.
askaev
 
Сообщения: 27
Зарегистрирован: 09 янв 2014, 17:05

Re: EasyBuilder - Скорая помощь новичкам

Сообщение VanMo » 04 фев 2014, 09:38

askaev писал(а):
VanMo писал(а):Справка по макросам есть в самом EasyBuilder, в окне с макросами нужно нажать "Помощь".


Нажал я помощь. Получил книгу справки MacroHelp. В ней лишь список встроенных функций (Build-In Function Block). А где список операторов типа If, FOR, WHILE и т.д.? Где список типов переменных (bool, char, ...)?


В руководстве, глава 18.
Есть еще отдельный документ с 18-й главой.
VanMo
 
Сообщения: 377
Зарегистрирован: 16 авг 2011, 09:31

Re: EasyBuilder - Скорая помощь новичкам

Сообщение VanMo » 04 фев 2014, 09:50

askaev писал(а):
Ещё вопрос. Я в проекте сделал окно с настройками. Как сделать доступ к нему по паролю?


В EasyBuilder есть встроенная система защиты. С ее помощью можно защитить функциональную кнопку, которая открывает окно.
Можно посмотреть пример в демо-проекте, окно Security Features. Подробно в главе 10 в руководстве.
VanMo
 
Сообщения: 377
Зарегистрирован: 16 авг 2011, 09:31

Re: EasyBuilder - Скорая помощь новичкам

Сообщение flizer » 06 фев 2014, 16:37

Добрый день.

1. Можно сихронизировать время через интернет с стандартным сервером времени?
flizer
 
Сообщения: 2
Зарегистрирован: 06 фев 2014, 14:25
Откуда: Riga

Re: EasyBuilder - Скорая помощь новичкам

Сообщение den_po » 07 фев 2014, 16:20

flizer писал(а):Добрый день.

1. Можно сихронизировать время через интернет с стандартным сервером времени?

Готовых средств нет. Можно вручную реализовать протокол синхронизации с помощью free protocol.
Самое простое - использовать Time Protocol. Для этого нужно отправить udp пакет на порт 37 одного из серверов времени и принять ответ - 4 байта с числом секунд от начала 1900 года.

Пример макроса для этого
Код: Выделить всё
macro_command main()

unsigned char tmp[4]

OUTPORT(tmp[0], "Free Protocol", 1)

short receive_len
short wait_time=100

INPORT2(tmp[0], "Free Protocol", receive_len, wait_time)

unsigned int tt//время в секундах с 1900 года
tt = (0x1000000*tmp[0]) | (0x10000*tmp[1]) | (0x100*tmp[2]) | tmp[3]


unsigned int y
y = 1900 + tt/31557600 //(365.25*24*60*60)
tt = tt % 31557600

unsigned int daytotal //номер дня в году (не путать с днём месяца)
daytotal = tt /(24*60*60)
tt = tt % (24*60*60)

//тут посчитать месяц/день и время

SetData(y, "Local HMI", LW, 0, 1)
SetData(daytotal, "Local HMI", LW, 1, 1)

end macro_command
den_po
 
Сообщения: 436
Зарегистрирован: 04 фев 2013, 12:25

Re: EasyBuilder - Скорая помощь новичкам

Сообщение VanMo » 07 фев 2014, 16:34

flizer писал(а):Добрый день.

1. Можно сихронизировать время через интернет с стандартным сервером времени?

Добрый день.
Прикладываю пример проекта чтения времени из интернета. Версия EasyBuilder - 4.65.09.
Вложения
datetime.mtp
(77.43 КБ) Скачиваний: 1239
VanMo
 
Сообщения: 377
Зарегистрирован: 16 авг 2011, 09:31

Re: EasyBuilder - Скорая помощь новичкам

Сообщение flizer » 08 фев 2014, 21:00

Спасибо за помощь.
Что значит строка tt = (0x1000000*tmp[0]) | (0x10000*tmp[1]) | (0x100*tmp[2]) | tmp[3] ?

P.S Переход на летнее время есть? Или надо самому делать?
flizer
 
Сообщения: 2
Зарегистрирован: 06 фев 2014, 14:25
Откуда: Riga

Re: EasyBuilder - Скорая помощь новичкам

Сообщение den_po » 10 фев 2014, 09:31

flizer писал(а):Спасибо за помощь.
Что значит строка tt = (0x1000000*tmp[0]) | (0x10000*tmp[1]) | (0x100*tmp[2]) | tmp[3] ?

Время передаётся как 32-битное число в сетевом порядке байтов (старший по значению байт идёт первым). Данное выражение восстанавливает исходное значение из массива и помещает результат в переменную типа unsigned int.

flizer писал(а):P.S Переход на летнее время есть? Или надо самому делать?

Самому.
den_po
 
Сообщения: 436
Зарегистрирован: 04 фев 2013, 12:25

Пред.След.

Вернуться в Weintek

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 4