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

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

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

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

Сообщение den_po » 04 фев 2013, 12:33

Можно выполнить преобразование в два этапа: сначала поменять порядок слов и сохранить временное значение как int, а затем выполнить необходимые вычисления с float и сохранить результат.
Код: Выделить всё
macro_command main()

int a
int b
GetDataEx(a, "PLC", "Tag_0", 1)
SWAPW(a, b)
SetDataEx(b, "Local HMI", LW, 222, 1)

float c
GetDataEx(c, "Local HMI", LW, 222, 1)
c=c*1000
SetDataEx(c, "Local HMI", LW, 2, 1)

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

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

Сообщение Dizel » 18 фев 2013, 12:54

Добрый день! Помогите, пожалуйста!

Нужно при нажатии на кнопку в проекте, что бы менялось окно1 на коно2 и уходил сигнал на контроллер--это сделал при помощи элемента (функциональная кнопка). Но нужно еще сделать так, чтобы при приходе сигнала с контроллера окно2 закрывалось, а окно1 открывалось.
Как это сделать?

Спасибо!
Dizel
 
Сообщения: 9
Зарегистрирован: 18 фев 2013, 12:39

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

Сообщение VanMo » 20 фев 2013, 13:00

Dizel писал(а):Добрый день! Помогите, пожалуйста!

Нужно при нажатии на кнопку в проекте, что бы менялось окно1 на коно2 и уходил сигнал на контроллер--это сделал при помощи элемента (функциональная кнопка). Но нужно еще сделать так, чтобы при приходе сигнала с контроллера окно2 закрывалось, а окно1 открывалось.
Как это сделать?

Спасибо!

Лучше всего сделать открытие окна панели по изменению регистра контроллера. Делается это с помощью ПЛК-триггера. Тогда контроллер будет определять какое окно открывать.
При этом он может узнавать какая кнопка нажата на панели, если привязать эту кнопку к регистру контроллера.
VanMo
 
Сообщения: 377
Зарегистрирован: 16 авг 2011, 09:31

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

Сообщение Александр » 07 мар 2013, 17:02

Добрый день! В текстовом дисплее при выводе русского текста в формате Unicode не могу вывести знак пробела (Space),

char cMsg[32]

cMsg[0]=0x20
cMsg[1]=0x4
cMsg[2]=0x43
cMsg[3]=0x4
cMsg[4]=0x41
cMsg[5]=0x4
cMsg[6]=0x41
cMsg[7]=0x4
cMsg[8]=0x3A
cMsg[9]=0x4
cMsg[10]=0x38
cMsg[11]=0x4
cMsg[12]=0x39
cMsg[13]=0x4

cMsg[14]=0x20
cMsg[15]=0x0

cMsg[16]=0x42
cMsg[17]=0x0
cMsg[18]=0x35
cMsg[19]=0x0
cMsg[20]=0x3A
cMsg[21]=0x0
cMsg[22]=0x41
cMsg[23]=0x0
cMsg[24]=0x42
cMsg[25]=0x0

StringSet(cMsg[0], "Local HMI", LW, 10, 26)

Выводится только первое слово и пробел, а слово после пробела не выводится.
Как вывести текст с пробелами? Помогите пожалуйста
Александр
 
Сообщения: 1
Зарегистрирован: 06 мар 2013, 17:56

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

Сообщение VanMo » 11 мар 2013, 10:00

Александр писал(а):Добрый день! В текстовом дисплее при выводе русского текста в формате Unicode не могу вывести знак пробела (Space),

StringSet(cMsg[0], "Local HMI", LW, 10, 26)

Выводится только первое слово и пробел, а слово после пробела не выводится.
Как вывести текст с пробелами? Помогите пожалуйста

Здравствуйте.
Используйте SetData вместо StringSet:
Код: Выделить всё
SetData (cMsg[0], "Local HMI", LW, 10, 26)

StringSet работает с однобайтными символами и, встречая 0x0 , прерывается.
VanMo
 
Сообщения: 377
Зарегистрирован: 16 авг 2011, 09:31

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

Сообщение Dizel » 19 мар 2013, 14:03

VanMo писал(а):
Dizel писал(а):Добрый день! Помогите, пожалуйста!

Нужно при нажатии на кнопку в проекте, что бы менялось окно1 на коно2 и уходил сигнал на контроллер--это сделал при помощи элемента (функциональная кнопка). Но нужно еще сделать так, чтобы при приходе сигнала с контроллера окно2 закрывалось, а окно1 открывалось.
Как это сделать?

Спасибо!

Лучше всего сделать открытие окна панели по изменению регистра контроллера. Делается это с помощью ПЛК-триггера. Тогда контроллер будет определять какое окно открывать.
При этом он может узнавать какая кнопка нажата на панели, если привязать эту кнопку к регистру контроллера.

Спасибо!
Dizel
 
Сообщения: 9
Зарегистрирован: 18 фев 2013, 12:39

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

Сообщение PHoeNiX26 » 22 мар 2013, 11:22

Добрый день!
Возможно ли создать триггер, который срабатывал бы по таймеру, например каждые 10 секунд? и чтобы этот таймер работал по системному времени панели, а не включал задержку по изменению состояния какой либо ячейки памяти
PHoeNiX26
 
Сообщения: 8
Зарегистрирован: 14 мар 2013, 10:38
Откуда: Белгород

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

Сообщение den_po » 25 мар 2013, 15:30

PHoeNiX26 писал(а):Добрый день!
Возможно ли создать триггер, который срабатывал бы по таймеру, например каждые 10 секунд? и чтобы этот таймер работал по системному времени панели, а не включал задержку по изменению состояния какой либо ячейки памяти

Вариант:

создаётся адресный ярлык:
tm10 - Local HMI / Bit / LB-{адрес ячейки}

вспомогательный макрос:
имя макроса: "tick"
Код: Выделить всё
macro_command main()
short data[1]
GetData(data[0], "Local HMI", LW, 9010, 1)
BCD2BIN(data[0], data[0])
data[0]= (data[0]/5) & 1
SetData(data[0], "Local HMI", "tm10", 1)
end macro_command

вспомогательный триггер:
тип: "выполнить макрос"
имя макроса: "tick"
адрес триггера: Local HMI, LW_Bit, 0901000
режим триггера: on->off

основной триггер:
адрес триггера: Local HMI, (метка пользователя) tm10
режим триггера: on->off
den_po
 
Сообщения: 436
Зарегистрирован: 04 фев 2013, 12:25

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

Сообщение PHoeNiX26 » 27 мар 2013, 12:23

den_po писал(а):Вариант:


Спасибо. А как такая комбинация повлияет на процессор панели? Не возникнет ли проблем из-за постоянного цикличного выполнения с нехваткой процессорного времени для других макросов и для обмена данными по Modbus?
PHoeNiX26
 
Сообщения: 8
Зарегистрирован: 14 мар 2013, 10:38
Откуда: Белгород

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

Сообщение den_po » 28 мар 2013, 09:19

PHoeNiX26 писал(а):Спасибо. А как такая комбинация повлияет на процессор панели? Не возникнет ли проблем из-за постоянного цикличного выполнения с нехваткой процессорного времени для других макросов и для обмена данными по Modbus?

Вспомогательный триггер сам по себе будет отъедать не больше других триггеров. А макрос без того очень простой, да ещё и вызывается лишь раз в две секунды. Это капля в море, тем более, что обмен по последовательному порту по меркам процессора - процедура длительная.
den_po
 
Сообщения: 436
Зарегистрирован: 04 фев 2013, 12:25

Пред.След.

Вернуться в Weintek

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

cron