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

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

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

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

Сообщение Number17 » 15 фев 2019, 13:50

Попробовал установить быстрое отображение - не помогло. Задержка в отображении при включении панели для всех объектов, в том числе данные которых содержатся в панели.
Number17
 
Сообщения: 152
Зарегистрирован: 06 мар 2018, 12:08

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

Сообщение Number17 » 15 фев 2019, 14:03

Ещё дурацкий вопрос... На данный момент панель общается с устройством посредством Free Protocol. Здесь мне всё понятно: с помощью своих ФБ и макросов формирую пакет, выдаю его в линию с помощью ФБ OUTPORT, принимаю через INPORT, анализирую данные, распихиваю их по ячейкам памяти. Планирую сейчас подключить к панели модуль ввода данных со стандартным ModbusRTU. В настройках выбрал данный протокол, а что дальше? Как с этим работать? Самому формировать пакет и приняв ответ его анализировать? Должно же быть как то проще.
P.S. Кажется сообразил... через GetData, SetData работать надо. Панель будет сама формировать пакет исходя из выбранного протокола.
Number17
 
Сообщения: 152
Зарегистрирован: 06 мар 2018, 12:08

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

Сообщение АЛМ » 15 фев 2019, 18:06

Лучше использовать GetDataEx, SetDataEx. Тогда при отсутствии связи макрос не будет прерываться. И еще в макросе используйте проверку на ошибку получения или передачи.
АЛМ
 
Сообщения: 36
Зарегистрирован: 14 фев 2014, 23:27

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

Сообщение Number17 » 18 фев 2019, 11:26

АЛМ писал(а): И еще в макросе используйте проверку на ошибку получения или передачи.

Это обязательно.
Number17
 
Сообщения: 152
Зарегистрирован: 06 мар 2018, 12:08

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

Сообщение Number17 » 18 фев 2019, 14:06

Поясните про типы адресов, рассматриваем протокол ModbusRTU:
3x
3x_MAX1W
3x_MAX2W
3x_Double
4x
4x_MAX1W
4x_MAX2W
4x_Double
4x_32Bit
5x
6x
0x_single_coil
В документации не нашёл никакого описания. То что 3x, 4x, 5x, 6x - эти обозначения как то соответствуют функциям Modbus (0х03, 0х04 и т.д)?
Или это что то иное? Где почитать про это всё?

Второй вопрос: Имеем ФБ GetErr(), получает код ошибки, а где описано соответствие кодов ошибкам?
Number17
 
Сообщения: 152
Зарегистрирован: 06 мар 2018, 12:08

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

Сообщение VanMo » 18 фев 2019, 17:06

Описание регистров есть в описании на драйвер: http://www.rusavtomatika.com/upload_files/drivers/MODBUS_RTU.pdf
Названия регистров к функциям не имеют отношения.
Про коды ошибок можно почитать в мануале в главе 22.3.21. Communication Error Codes.
VanMo
 
Сообщения: 375
Зарегистрирован: 16 авг 2011, 09:31

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

Сообщение Val » 22 фев 2019, 13:15

Здравствуйте, у меня проблема, есть сигнальная панель с надписью и заполненный журнал сигналов/событий
нужно сделать чтобы от битов (М0, М1, М2....) это название менялось.
Получилось сделать: надпись меняется но с бегущей строкой.
Можно ли как то остановить эту строку?
Или как это сделать?
Val
 
Сообщения: 6
Зарегистрирован: 20 фев 2019, 09:41

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

Сообщение NadinKa » 22 мар 2019, 12:47

Здравствуйте!
Подскажите пути реализации чтения из файла и записи в файл с последующей его передачей на другой источник.
Предполагается посыл запросов на ПЛК по ModBus, взятых из файла, и получение ответов от ПЛК с записью в файл.
Какими средствами это можно реализовать?
Допустим, что чтение из файла можно опустить путем занесения содержимого файла в список или базу рецептов, но ответы нужно куда-то и как-то записывать.
Быть может что-то не так думаю, с EasyBuilder работаю впервые, много непонятных моментов есть.
NadinKa
 
Сообщения: 20
Зарегистрирован: 21 мар 2019, 10:02

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

Сообщение mcleon » 25 мар 2019, 07:08

Пытаюсь реализовать подсчет моточасов.
Для хранения часов использую RW.
Запись каждый час (не очень точно, но установку если и будут обесточивать, то не чаще раза в смену).
Считаю макросом секунды.
Код: Выделить всё
sub unsigned short count_seconds (unsigned short cntr_sec, unsigned int in_addr)
unsigned short cntr_seconds
unsigned int address, ledad
bool in_state = false

cntr_seconds = cntr_sec
address = in_addr
GetData(in_state, "MODBUS TCP/IP (Zero-based Addressing)", 6x_Bit, address, 1)
if in_state == true then
   cntr_seconds = cntr_seconds + 1
   
end if
return cntr_seconds
end sub

Потом часы
Код: Выделить всё
sub unsigned short count_hours(unsigned short cnt_seconds, unsigned short cntr_hours)
unsigned short motohours
   if cnt_seconds >= 3600 then
//   if cnt_seconds >= 10 then//3600 then
      motohours = cntr_hours + 1
   end if
return motohours
end sub


Потом для каждого аппарата (вакуумные насосы) считаю, сравниваю, выставляю аларм
Код: Выделить всё
GetData(read_seconds, "Local HMI", "DP1_seconds", 1)
GetData(read_hours, "Local HMI", "DP1_hours", 1)
addr = 200005
cntr_seconds = count_seconds(read_seconds, addr)
cntr_hours = count_hours(cntr_seconds, read_hours)
if cntr_hours > read_hours then
   SetData(cntr_hours, "Local HMI", "DP1_hours", 1)
   cntr_seconds = 0
end if
SetData(cntr_seconds, "Local HMI", "DP1_seconds", 1)

GetData(read_seconds, "Local HMI", "DP2_seconds", 1)
GetData(read_hours, "Local HMI", "DP2_hours", 1)
addr = 200006
cntr_seconds = count_seconds(read_seconds, addr)
cntr_hours = count_hours(cntr_seconds, read_hours)
if cntr_hours > read_hours then
   SetData(cntr_hours, "Local HMI", "DP2_hours", 1)
   cntr_seconds = 0
end if
SetData(cntr_seconds, "Local HMI", "DP2_seconds", 1)

SetData(cntr_hour - это сохранение в память RW
Собственно, проблема - секунды считаются раздельно, для каждого аппарата свои, это проверил выставлением флажков и индикацией секунд для всех аппаратов.
Если включен один насос, у него наработан очередной час, пишем в его РВ, но обновляются регистры всех аппаратов (пишется та же цифра, то есть наработка у всех одинаковая).
Тэги на регистры введены, как раз, чтобы не было путаницы. И регистры больше нигде не пользую.
Очевидно, неправильно пишу в энергонезависимую память. Но что я делаю не так?
mcleon
 
Сообщения: 4
Зарегистрирован: 03 авг 2018, 04:36

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

Сообщение mcleon » 25 мар 2019, 15:55

mcleon писал(а):Пытаюсь реализовать подсчет моточасов.
Для хранения часов использую RW.
DEL

Решено.
Убрал все действия с подпрограммами, просто прямо скопировал одинаковый код из подпрограмм для каждого аппарата, и всё стало работать как задумано.
Почему - не знаю. Может что-то с переменными-параметрами, передаваемыми в подпрограмму, неправильно делал.
mcleon
 
Сообщения: 4
Зарегистрирован: 03 авг 2018, 04:36

Пред.След.

Вернуться в Weintek

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

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

cron