Найти в Дзене

Про IDE HawellHappy. Он же EKF (первое знакомство). Он же OptimusDrive.

Прилетела халтурка запрограммировать контроллер HiWELL. Для него есть своя среда программирования HIWELLHAPPY. Первые впечатления: совсем не HAPPY . Нет символьных имен для переменных, вместо них зарезервированные имена (к ним можно написать комментарии) Комментарии к переменным не выводятся на поле программы, и мышкой когда наводишь, не подсвечиваются (посмотреть можно открыв специальное окно). Нет возможности программировать в ST. Функциональные блоки создавать можно, но есть ограничения (8 входов, 3 выхода, если не путаю). Попробовал таймером воспользоваться внутри функционального блока, если один - работает нормально, если больше, то таймер работает не корректно (у каждого таймера свой номер, задается в свойствах, из-за этого и глюки, что функциональные блоки работают по факту с одним таймером, приходится выносить их в основное тело программы). Есть прикол с удалением вставкой входа для функционального блока. Создадим Саб программу coolprogram c двумя входами и одним выходом. В
Оглавление

Прилетела халтурка запрограммировать контроллер HiWELL.

Для него есть своя среда программирования HIWELLHAPPY.

Первые впечатления: совсем не HAPPY .

Нет символьных имен для переменных, вместо них зарезервированные имена (к ним можно написать комментарии)

Комментарии к переменным не выводятся на поле программы, и мышкой когда наводишь, не подсвечиваются (посмотреть можно открыв специальное окно).

-2
-3

Нет возможности программировать в ST.

Функциональные блоки создавать можно, но есть ограничения (8 входов, 3 выхода, если не путаю).

Попробовал таймером воспользоваться внутри функционального блока, если один - работает нормально,

если больше, то таймер работает не корректно (у каждого таймера свой номер, задается в свойствах, из-за этого и глюки,

что функциональные блоки работают по факту с одним таймером, приходится выносить их в основное тело программы).

-4

Есть прикол с удалением вставкой входа для функционального блока.

Создадим Саб программу coolprogram c двумя входами и одним выходом.

Внутрь для примера засунем всего один "OR".

-5

И вдруг мы решили добавить еще один вход.

-6

Ниже картинка уже с добавленным входом, она не отличается от того, что было до вставки.

-7

Вот такие первые впечатления, буду мучатся дальше.

Спустя несколько лет знакомство продолжилось. Только теперь EKF. Один в один. Нашему проектировщику нравится исполнение в железе (мне тоже).

Нужно сделать проектов много, и быстро. Ещё тачпанель ekf (среда программирования как у System-Electric, но проекты системэлектрик не хавает (и наоборот тоже) ). Есть одна хорошая фишка. Может запитаться от усб без 24 В.

-8

По мере работы буду стараться дополнять. Теперь продолжение в среде Prologic Master.

У EKF можно скачать пример программы, если зарегистрироваться. Ссылка.

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

Реализация триггера.

Завис на такой простой вещи :). Отвык.

-9

Синим подсвечено два блока. "SET" - установить, "RST" - сбросить. Тем кто программировал в smlogix и owenlogic тяжеловато для восприятия. Тут больше похоже на фбд в кодесисе или у сименса вроде так сделано.

Идея в следующем если на вход "SET.in" пришел "TRUE", то переменная "M2" устанавливается в "TRUE". Если со входа "SET.in" пропадет "TRUE", то M2 оставит свое состояние "TRUE". Блок "RST" наоборот при получении на свой "in" сбрасывает M2 в "FALSE". Не забывайте, изменить значение М2 можно в любом месте программы, не только блоками "SET" и "RST", поэтому надо очень внимательным быть.

М2 - по сути глобальная переменная для контроллера. То что я могу до нее добраться из подпрограммы для изменения - может быть источником проблем и опасностей. В owenlogic и smlogix такой возможности нет. В кодесисе из функционального блока можно прочитать почти все, на счет записи не буду врать.

Про нумерацию блоков в программе.

Блоки нумеруются по мере выставления их на поле. Вернемся к моему макросу.

-10

Обратим внимание на два блока: F6 - сумматор, и F12 - компаратор. В скобочках указаны индексы выполнения. Это подпрограмма. Когда она вызывается, все локальные переменные обнуляются. Компаратор должен выполнится после сумматора. У меня была ошибка - сумматор выполнялся после компаратора (индекс был выше, сейчас правильно).

Как работало неправильно. LV4 еще не посчиталось на F6, компаратор(F12) уже сравнил (LV4 при этом равно 0), а после уже происходило суммирование. При чем в симуляции это не видно, если только по шагам. Кстати LV4 - это локальная переменная, ее нет в списке входов/выходов.

Если на блоке кликнуть правой кнопкой мыши, то появится окно

Синим подсвечен пункт для смены индекса.

-11

Описание входов/выходов макроса.

Описание входов выходов.
Описание входов выходов.

Можно еще отметить, что у предлагаемых в среде ПИДов входы INT. В примере все значения температур INT умноженные на 10. В моем примере тоже. Аналоговые входы похоже тоже отдают значения в таком формате.

Я собираюсь сделать контроллер слэйвом. Мне понадобится эта табличка.

Карта модбас контроллера EKF
Карта модбас контроллера EKF

Как делать битовые маски.

Теперь передо мной встал вопрос, как биты записать в число. Моя любимая кнопка F1. Насколько я понял нужно использовать эту функцию:

-14

Я не очень силен в английском, но вроде то что нужно. Из описания выцепил еще кое-что

-15

Для этой функции нужно создать таблицу битов

-16

Жмем правой кнопкой мыши на "Discrete bit table", заполняем, коментарии можно заполнить сразу здесь.

-17
-18

Берет переменную V103 раскидывает ее биты по таблице.

В симуляторе глянем

-19

Число 5 раскидало по битам согласно таблице.

Про таймеры

Справка про таймер по F1 выдаст следующее:

-20

Ничего особенного :). Обычная задержка на включение.

Но за кадром останутся две особенности. Первая:

-21

Оказывается есть энергонезависимые таймеры. Есть и есть.

Вторая (уже поинтересней):

-22

Оказывается энергонезависимые таймеры сбрасывают свой счетчик по переключателю RUN/STOP. Плюс к этому, в зависимости от номера у некоторых таймеров может быть настройка масштаба времени.