Страница 107 из 250

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

СообщениеДобавлено: 18 апр 2018, 18:23
VanMo
Например.
Нижний предел и ПЛК низ = 0;
Верхний предел = 1000, ПЛК выс.=100.
Там есть кнопка "Тест", можно проверить.

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

СообщениеДобавлено: 18 апр 2018, 18:29
zed1000
Спасибо. Получилось

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

СообщениеДобавлено: 19 апр 2018, 12:57
Number17
Возможно ли написать свой функциональный блок таким образом, что бы вычисленное в блоке значение помещалось в параметр, а не в возвращаемое значение.
то есть примерно так:
sub ADD(int a, int b, int result)

result = a + b

end sub


В языке С, например всё просто было бы - нужно в качестве параметра просто передать указатель на параметр result.

Вышеприведённый пример компилируется, но при вызове блока из библиотеки всегда нули (((.

macro_command main()

int a = 10
int b =20
int result

ADD (a, b, result )

TRACE("%X", result)

end macro_command


result будет равен "0", хотя если мониторить значение в самом ФБ значение будет = 30.

Что не так? Во встроенной же библиотеке существуют функции, например SWAPB(source, result), где вычисленное значение присваивается параметру...

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

СообщениеДобавлено: 20 апр 2018, 05:18
Владимир_Я
Number17 писал(а):Возможно ли написать свой функциональный блок таким образом, что бы вычисленное в блоке значение помещалось в параметр, а не в возвращаемое значение.
то есть примерно так:


Только так :

sub int Add(int x, int y)
int result
result = x +y
return result
end sub

macro_command main()
int a = 10, b = 20, sum
sum = Add(a, b)
end macro_command

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

СообщениеДобавлено: 28 апр 2018, 12:05
Number17
А возможно ли как то определить константу которая будет видна во всех макросах? Допустим имеются адреса регистров устройства подключенного к HMI Weintek. Адреса регистров используются в различных макросах. Постоянно вспоминать приходится какой адрес регистра и что в нём :x .
В "С" всё просто - пишем файл определений с дефайнами и используем где хотим только подключая файл, например:
#define REG_PID_P 0x26
#define REG_PID_I 0x27
#define REG_PID_D 0x28

Далее при написании софта используем только имена не заморачиваясь на значениях адресов где и что лежит.

Сейчас делаю так: ячейкам памяти присваиваю user tag'и - REG_PID_P, REG_PID_I и т.д., при запуске панели инициализирую ячейки памяти необходимыми значениями адресов.
Далее, при использовании требуемых адресов "выдираю" их в макросах из ячеек памяти с использованием user tag'ов.
Как то не очень с моей точки зрения...
Замечу что устройство подключенное к HMI использует не MODBUS протокол.

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

СообщениеДобавлено: 14 май 2018, 02:23
Dmit
Господа здравствуйте.
Помогите советом, кто уже решил такую задачу: нужно выводить сообщения в event display содержащее следующую информацию - начало процесса, время конца процесса и результат %(WATCH1)f.2. Причем результат именно на конец процесса. Проблема в том, что как я понял функция %(WATCH1)f. берет значение по фронту (фактически получается значение на момент возникновения события) , а я хочу чтобы в одной строке событий была информация по времени начала, времени окончания и собственно результат. Есть решение как обойти эти условия?



Заранее благодарен

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

СообщениеДобавлено: 14 май 2018, 11:51
VanMo
Number17 писал(а):А возможно ли как то определить константу которая будет видна во всех макросах? Допустим имеются адреса регистров устройства подключенного к HMI Weintek. Адреса регистров используются в различных макросах. Постоянно вспоминать приходится какой адрес регистра и что в нём :x .
В "С" всё просто - пишем файл определений с дефайнами и используем где хотим только подключая файл, например:
#define REG_PID_P 0x26
#define REG_PID_I 0x27
#define REG_PID_D 0x28

Далее при написании софта используем только имена не заморачиваясь на значениях адресов где и что лежит.

Сейчас делаю так: ячейкам памяти присваиваю user tag'и - REG_PID_P, REG_PID_I и т.д., при запуске панели инициализирую ячейки памяти необходимыми значениями адресов.
Далее, при использовании требуемых адресов "выдираю" их в макросах из ячеек памяти с использованием user tag'ов.
Как то не очень с моей точки зрения...
Замечу что устройство подключенное к HMI использует не MODBUS протокол.

Все правильно, проще не сделать.

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

СообщениеДобавлено: 14 май 2018, 12:04
VanMo
Dmit писал(а):Господа здравствуйте.
Помогите советом, кто уже решил такую задачу: нужно выводить сообщения в event display содержащее следующую информацию - начало процесса, время конца процесса и результат %(WATCH1)f.2. Причем результат именно на конец процесса. Проблема в том, что как я понял функция %(WATCH1)f. берет значение по фронту (фактически получается значение на момент возникновения события) , а я хочу чтобы в одной строке событий была информация по времени начала, времени окончания и собственно результат. Есть решение как обойти эти условия?



Заранее благодарен

Добрый день.
Формируйте строку когда все параметры уже известны. Если запись попадает в журнал, ее уже не изменить.

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

СообщениеДобавлено: 14 май 2018, 17:33
Number17
Как воспроизвести звук на панели? В описании на EBP нашёл функции BEEP и BUZZER. Но это всё пищалки и свистелки. Как воспроизвести звуковой файл? Вижу что имеется Saund Library. Но каким образом воспроизвести звук из этой библиотеки?

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

СообщениеДобавлено: 14 май 2018, 18:29
VanMo
Number17 писал(а):Как воспроизвести звук на панели? В описании на EBP нашёл функции BEEP и BUZZER. Но это всё пищалки и свистелки. Как воспроизвести звуковой файл? Вижу что имеется Saund Library. Но каким образом воспроизвести звук из этой библиотеки?

Через пищалку никак. Библиотека звуков только для панелей с аудиовыходом.