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

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

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

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

Сообщение 8bit » 07 апр 2022, 12:32

masfun писал(а):то пишем адрес 10#500, то читаем регистр 500 устройства с адресом 10

в GetDataEx() точно такой же способ адресации, как и в графических объектах
Хороший вопрос содержит половину ответа - A good question contains half the answer
Аватара пользователя
8bit
 
Сообщения: 1108
Зарегистрирован: 20 апр 2020, 19:07

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

Сообщение 132435 » 07 апр 2022, 19:28

dimensy писал(а):Попробуйте так

Код: Выделить всё
macro_command main()
unsigned short Mask[8]={0x3,0xc,0x30,0xc0,0x300,0xc00,0x3000,0xc000}
short Shl[8]={0,2,4,6,8,10,12,14}
short stButN, I
short stBut[8]

GetData(stButN, "Siemens S7-300 MPI", MW, 126, 1)
for I=0 to 7т!
   stBut[I] = (stButN & Mask[I]) >> Shl[I]
next
SetData(stBut[0], "Local HMI", LW, 50, 8)

end macro_command




Dimensy, спасибо за помощь. Ваш код работает! Можете подсказать еще... Как теперь состояние, которое мы имеем по адресах LW50 - LW58, перевести в одно слово, в котором каждый бит это уже и будет светодиод с тремя состояниями (on, off, blink).
Для мигания я использую вот такой код с период.выполнением макроса 500мс. Проверял - 100% работает, но только с одним светодиодом. Как правильно "интегрировать" этот кусок кода на все восемь светодиодов?
Блинк:
Код: Выделить всё
GetData(Bit0, "Local HMI", LB, 20, 1)
GetData(Bit1, "Local HMI", LB, 21, 1)

if Bit1 then
if Led1 then
   Led1 =false
else
   Led1 =true
end if
end if

if Bit0 then
  Led1 =true
  else
  if not Bit1 then
   Led1 =false
  end if
end if

SetData(Led1, "Local HMI", LB, 10, 1)
end macro_command


Вот пытаюсь как-то так сделать, но с моим опытом это займет неделю наверное:
Код: Выделить всё
macro_command main()
unsigned short Mask[8]={0x3,0xc,0x30,0xc0,0x300,0xc00,0x3000,0xc000}
short Shl[8]={0,2,4,6,8,10,12,14}
short stButN, I
short stBut[8],stBut2[8],stBut3[8],stLed[8]
bool Bit0[8], Bit1[8]
GetData(stButN, "Local HMI", LW, 20, 1)
for I=0 to 7
   stBut[I] = (stButN & Mask[I]) >> Shl[I]
next
SetData(stBut[0], "Local HMI", LW, 50, 8)
//************************************************************
for I=0 to 7            
stBut [I]               //ВОТ СЮДА ДУМАЮ,  НАДО ЧТО-ТО НАПИСАТЬ
stLed [I]               // КАК ПРАВИЛЬНО - НЕ ЗНАЮ
GETBIT(stBut[0],Bit0[0],0)   
GETBIT(stBut[0],Bit1[0],1)   
next
//**************************************************************
if Bit1[0] then
if stLed[0] then
   stLed[0] =false
else
   stLed[0] =true
end if
end if

if Bit0[0] then
  stLed[0] =true
  else
  if not Bit1[1] then
   stLed[0] =false
  end if
end if

SetData(stLed[0], "Local HMI", LW_Bit, 1600, 8)//ПРАВИЛЬНОСТЬ НАПИСАНИЯ ПОД ВОПРОСОМ ТОЖЕ


end macro_command

Буду благодарен за любую помощь.
132435
 
Сообщения: 20
Зарегистрирован: 01 апр 2021, 17:09

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

Сообщение dimensy » 07 апр 2022, 20:36

132435 писал(а):Dimensy, спасибо за помощь. Ваш код работает! Можете подсказать еще... Как теперь состояние, которое мы имеем по адресах LW50 - LW58, перевести в одно слово, в котором каждый бит это уже и будет светодиод с тремя состояниями (on, off, blink).

Я тут вижу два варианта:
1. Самому сделать gif-анимированную мигающую лампу и вставить ее в состояния 1 и 2, соответственно, в состояние 0 - вставить потушенную лампу и в состояние 3 - включенную. Для отображения использовать чистовой индикатор
2. Воспользоваться свойством битового индикатора "изменение изображения на состоянии 0" или "изменение изображения на состоянии 1". Сделать две лампы, одна под другой и в зависимости от состояния делать видимой ту или другую через вкладку безопасность.

Вот пример https://disk.yandex.ru/d/Wal-3A2YrPDPQA (гифка правда похабно получилась)

И, да, код который я привел, можно сделать проще, воспользовавшись вашим алгоритмом:
Код: Выделить всё
for I=0 to 7
   stBut[I] = (stButN >> K) & 3
   K = K + 2
next
dimensy
 
Сообщения: 143
Зарегистрирован: 14 мар 2018, 17:54

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

Сообщение 132435 » 07 апр 2022, 23:21

Dimensy, спасибо за то, что откликнулись. По поводу "гифок", не будут ли они хаотично мигать, ведь светодиодов будет 18шт. Дело в том, что в ОП Сиеменс мигание происходит синхронно. Попытаюсь еще что-то соорудить с помощью макроса, может возможно как-то применить индексирование для светодиодов (правда не делала так еще). Вообщем буду пробовать экспериментировать дальше. Спасибо еще раз за помощь.
132435
 
Сообщения: 20
Зарегистрирован: 01 апр 2021, 17:09

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

Сообщение dimensy » 08 апр 2022, 07:12

132435 писал(а):Dimensy, спасибо за то, что откликнулись. По поводу "гифок", не будут ли они хаотично мигать, ведь светодиодов будет 18шт. Дело в том, что в ОП Сиеменс мигание происходит синхронно. Попытаюсь еще что-то соорудить с помощью макроса, может возможно как-то применить индексирование для светодиодов (правда не делала так еще). Вообщем буду пробовать экспериментировать дальше. Спасибо еще раз за помощь.

Про синхронность я не подумал. Тогда во втором варианте лампе надо будет поставить свойство "Изменение изображения на состоянии 0", привязать ее к пустому регистру и менять только видимость.
Есть еще третий вариант:
сделать отдельно макрос с периодом выполнения 500 мс
Код: Выделить всё
macro_command main()
bool K

GetData(K, "Local HMI", LB, 100, 1)
K = not K
SetData(K, "Local HMI", LB, 100, 1)

end macro_command


а кнопкам с состоянием 2 или 3 присваивать бит которым этот макрос управляет
dimensy
 
Сообщения: 143
Зарегистрирован: 14 мар 2018, 17:54

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

Сообщение dimensy » 08 апр 2022, 08:48

132435 писал(а):Dimensy, спасибо за то, что откликнулись. По поводу "гифок", не будут ли они хаотично мигать, ведь светодиодов будет 18шт. Дело в том, что в ОП Сиеменс мигание происходит синхронно. Попытаюсь еще что-то соорудить с помощью макроса, может возможно как-то применить индексирование для светодиодов (правда не делала так еще). Вообщем буду пробовать экспериментировать дальше. Спасибо еще раз за помощь.

Пока ехал на работу придумал еще один вариант, по-моему - это самый идеальный.
Для лампы используем числовой индикатор, но состояния 1 и 2 делаем пустыми (в библиотеке это можно сделать). Под лампу подкладываем мигающую лампу (мигание организовываем либо через свойство "изменение изображения на состоянии 0", либо через макрос). И все, никаких дополнительных обрабатывающих состояние макросов не надо
dimensy
 
Сообщения: 143
Зарегистрирован: 14 мар 2018, 17:54

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

Сообщение w1nn1ep00h » 11 апр 2022, 12:57

Добрый день. Столкнулся с задачей, чтобы поднять ModBus RTU Server на панели по COM-порту. Как настраивать нашел у вас. Один вопрос в режиме эмуляции можно ли проверить работу данного сервера с помощью сканера COM-порта, если в панели указать номер COM-порта, который на тестируемом компьютере является виртуальным? Или только на реальной панели можно это проверить?
w1nn1ep00h
 
Сообщения: 40
Зарегистрирован: 25 авг 2021, 01:14

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

Сообщение VanMo » 11 апр 2022, 13:02

w1nn1ep00h писал(а):Добрый день. Столкнулся с задачей, чтобы поднять ModBus RTU Server на панели по COM-порту. Как настраивать нашел у вас. Один вопрос в режиме эмуляции можно ли проверить работу данного сервера с помощью сканера COM-порта, если в панели указать номер COM-порта, который на тестируемом компьютере является виртуальным? Или только на реальной панели можно это проверить?

Добрый день. Да, все правильно, можно протестировать в режиме симуляции, симулятор будет пытаться открыть порт, который указан в настройках проекта на ПК.
VanMo
 
Сообщения: 376
Зарегистрирован: 16 авг 2011, 09:31

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

Сообщение masfun » 12 апр 2022, 11:02

Здравствуйте! Подскажите, пожалуйста, у меня cmT 3072XH, к ней по RS-485 подключено 4 ПР102 (ОВЕН).
Панель будет подключена в сеть предприятия через Ethernet, необходимо считывать данные с панели по регистрам, дальше уже программка будет заводить данные в таблицу.
Есть ли возможность так сделать?
masfun
 
Сообщения: 5
Зарегистрирован: 10 фев 2022, 12:45

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

Сообщение 8bit » 12 апр 2022, 16:28

masfun писал(а):Здравствуйте! Подскажите, пожалуйста, у меня cmT 3072XH, к ней по RS-485 подключено 4 ПР102 (ОВЕН).
Панель будет подключена в сеть предприятия через Ethernet, необходимо считывать данные с панели по регистрам, дальше уже программка будет заводить данные в таблицу.
Есть ли возможность так сделать?


Добавьте в проект панели устройство Modbus server и настройте там шлюз
Хороший вопрос содержит половину ответа - A good question contains half the answer
Аватара пользователя
8bit
 
Сообщения: 1108
Зарегистрирован: 20 апр 2020, 19:07

Пред.След.

Вернуться в Weintek

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

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