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

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

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

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

Сообщение askaev » 24 янв 2014, 12:24

Кстати, у приведенного мною выше макроса есть особенность работы: если макросу не удалось при опросе параметра получить его значение, то опрос следующий параметров прекращается. После чего макрос запускается заново и основа опрашивает параметры до первого неответившего. На экране панели параметры, которые макрос не опросил будут отображаться как "0".

Отсюда у меня вопрос: как этого (прекращение работы макроса) избежать? Как пропускать такие параметры и всё таки отображать следующие?
И еще: где можно ознакомиться с командами и структурой языка макросов панели?
askaev
 
Сообщения: 27
Зарегистрирован: 09 янв 2014, 17:05

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

Сообщение VanMo » 24 янв 2014, 15:29

askaev писал(а):А пока еще такой вопрос: из переменных типа "локальный месяц" и т.п. я на экране отображаю текущее время и дату. При этом день недели и месяц у меня отображаются по-английски (т.е, к примеру как FRIDAY и January). Как бы их отображать по-русски? Какие способы есть?
ЗЫ: Месяц желательно при этом еще и в падеже выводить, чтоб отображалось не "19 Январь 2014", а "19 января 2014".

Можно создать Байтовый индикатор на 12 состояний, привязать его к регистру месяца LW-9021, и для каждого состояния назначить свою метку.
VanMo
 
Сообщения: 377
Зарегистрирован: 16 авг 2011, 09:31

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

Сообщение VanMo » 24 янв 2014, 15:37

askaev писал(а):Кстати, у приведенного мною выше макроса есть особенность работы: если макросу не удалось при опросе параметра получить его значение, то опрос следующий параметров прекращается. После чего макрос запускается заново и основа опрашивает параметры до первого неответившего. На экране панели параметры, которые макрос не опросил будут отображаться как "0".

Отсюда у меня вопрос: как этого (прекращение работы макроса) избежать? Как пропускать такие параметры и всё таки отображать следующие?
И еще: где можно ознакомиться с командами и структурой языка макросов панели?

Чтобы макрос не прерывался командами GetData и SetData, которые завершаются с ошибкой, нужно использовать команды GetDataEx и SetDataEx.
Справка по макросам есть в самом EasyBuilder, в окне с макросами нужно нажать "Помощь".
VanMo
 
Сообщения: 377
Зарегистрирован: 16 авг 2011, 09:31

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

Сообщение askaev » 26 янв 2014, 07:40

VanMo писал(а):Чтобы макрос не прерывался командами GetData и SetData, которые завершаются с ошибкой, нужно использовать команды GetDataEx и SetDataEx.
Справка по макросам есть в самом EasyBuilder, в окне с макросами нужно нажать "Помощь".

Спасибо,поправил у себя.Работает.

Еще такая проблема: Решил вывести имя проекта из переменной LB-9100. Но вместо кириллического названия отображается абра-кадабра. Если ставлю [v] Uni-code, то вместо абракадабры отображаются квадратики. Т.е не работает ни так, ни этак.
askaev
 
Сообщения: 27
Зарегистрирован: 09 янв 2014, 17:05

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

Сообщение den_po » 27 янв 2014, 09:53

В этом случае с кириллицей не получится
den_po
 
Сообщения: 436
Зарегистрирован: 04 фев 2013, 12:25

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

Сообщение askaev » 30 янв 2014, 09:47

den_po писал(а):В этом случае с кириллицей не получится

Жаль.

Еще такой вопрос: каким образом можно выяснить: подключено ли к сети rs-485 устройство с заданным сетевым адресом или нет? (Хотелось бы видеть обрывы по сети)
askaev
 
Сообщения: 27
Зарегистрирован: 09 янв 2014, 17:05

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

Сообщение den_po » 30 янв 2014, 11:31

Если достаточно проверять по одному устройству на порт, можно проверять значения системных битов (главы 22.16 описания и далее). Если недостаточно, то можно читать значения регистров устройств макросом и менять состояние по результатам чтения.
den_po
 
Сообщения: 436
Зарегистрирован: 04 фев 2013, 12:25

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

Сообщение askaev » 30 янв 2014, 20:27

den_po писал(а):Если достаточно проверять по одному устройству на порт, можно проверять значения системных битов (главы 22.16 описания и далее). Если недостаточно, то можно читать значения регистров устройств макросом и менять состояние по результатам чтения.


Ну, к примеру у меня 3 устройства. Макросом можно читать любой регистр, к примеру, тот же "измеренное значение"? Ну, и если устройство не в сети, то что должно быть?
askaev
 
Сообщения: 27
Зарегистрирован: 09 янв 2014, 17:05

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

Сообщение den_po » 31 янв 2014, 11:31

askaev писал(а):
den_po писал(а):Если достаточно проверять по одному устройству на порт, можно проверять значения системных битов (главы 22.16 описания и далее). Если недостаточно, то можно читать значения регистров устройств макросом и менять состояние по результатам чтения.


Ну, к примеру у меня 3 устройства. Макросом можно читать любой регистр, к примеру, тот же "измеренное значение"? Ну, и если устройство не в сети, то что должно быть?

Можно увеличивать счётчик ошибок, вызывать макрос GetData, после которого счётчик сбрасывать. Если GetData завершается с ошибкой, до сброса счётчика не дойдёт управление. Такое решение "в лоб" не очень хорошо для последовательного опроса нескольких контроллеров, но можно в начале макроса переключать адрес опрашиваемого устройства, тогда при каждом новом запуске макроса будет опрашиваться очередное устройство.

Можно настроить передачу данных с устройств в память панели. Макрос будет проверять биты регистров, которые теоретически не могут быть установлены, а перед завершением устанавливать их. Если данные копируются успешно, биты будут сбрасываться.

А ещё нужно не забывать о системном сообщении об ошибке, которое наверняка будет мешать в таких условиях. Его можно запретить (глаа 22.26 описания)
den_po
 
Сообщения: 436
Зарегистрирован: 04 фев 2013, 12:25

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

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

я решил сделать так: пытась получить от устройства (зная его адрес заранее) параметр "адрес устройства в сети". Если полученное значение больше 0, то возле наименования устройства вывожу зелёным текстом сообщение "В СЕТИ" или "НА СВЯЗИ", иначе вывожу красным цветом сообщение "НЕТ СВЯЗИ". Проверил - работает.

Еще такой вопрос: как вычислить разность дат? К примеру я хочу видеть сколько времени проработала панель с момента включения питания. Отображать нужно в формате: Панель работает уже ГГГГ лет ММ месяцев ДД дней ЧЧ часов и мм минут.
При старте панели, думаю, можно в разные ячейки записать текущие значения переменных LW-9019 (ЧЧ), LW-9018 (мм), LW-9020 (ДД), LW-9021 (ММ), LW-9022 (ГГГГ). Затем , к примеру, 1 раз в минуту брать текущие значения из системных переменных и вычитать из них соответ. данные из ячеек памяти. Полученный результат выводить. Но тут надо ж учесть, что у одних месяцев 30 дней, у других 31, а у февраля 28 или 29 в зависимости от года; также надо учесть переход месяца и года на следующий, если к примеру в ячейке записан месяц 2 (февраль), а сейчас 1 (январь) (т.е по логике прошло 11 месяцев с момента старта). Иначе 1-2=-1, а не правильные "11".
askaev
 
Сообщения: 27
Зарегистрирован: 09 янв 2014, 17:05

Пред.След.

Вернуться в Weintek

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

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