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

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

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

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

Сообщение crazyigels » 26 окт 2021, 13:50

Доброго дня.

Вопрос.

Есть переменная, тип integer, хранится в памяти контроллера и доступна по модбус. Данная переменная может принимать любое отличное от нуля значение в случайный момент времени, изменяясь достаточно редко - единицы минут.
То есть, допустим в начальный момент времени переменная равна 10, через двадцать минут поменялась на 5, потом через семь минут поменялась на 3 и так далее.

Как настроить фиксацию изменения переменной в журнале событий? Т.е. нужно записать новое значение переменной после того как она изменится.
crazyigels
 
Сообщения: 11
Зарегистрирован: 05 сен 2021, 17:17

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

Сообщение Number17 » 26 окт 2021, 14:52

crazyigels писал(а):Доброго дня.

Вопрос.

Есть переменная, тип integer, хранится в памяти контроллера и доступна по модбус. Данная переменная может принимать любое отличное от нуля значение в случайный момент времени, изменяясь достаточно редко - единицы минут.
То есть, допустим в начальный момент времени переменная равна 10, через двадцать минут поменялась на 5, потом через семь минут поменялась на 3 и так далее.

Как настроить фиксацию изменения переменной в журнале событий? Т.е. нужно записать новое значение переменной после того как она изменится.


1 вариант: настроить в Event Log событие по условию неравенства текущего значения переменной Read и переменной Condition Value, значение которой содержится в определённой ячейке памяти. Получается что в ячейке Read текущее значение переменной, а в ячейке Condition Value последнее "неизменное" значение. Как только Read меняет своё значение, генерируется событие Read <> Condition Value . После события обновляем значение в ячейке Condition Value. Как то так...

2. Вариант: Создать макрос, который периодически будет мониторить значение переменной на предмет изменения значения этой переменной. Как только значение переменной изменилось, то устанавливаем (сбрасываем) какой то бит, на который уже и реагирует событие в Event Log.
Number17
 
Сообщения: 154
Зарегистрирован: 06 мар 2018, 12:08

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

Сообщение w1nn1ep00h » 26 окт 2021, 15:02

ArtemPM писал(а):На самом деле нет ни каких проблем, чтобы читать DWORD с помощью функции 4х. Пользуюсь ей во всех проектах.

Конечно сможете. Да нужно использовать адреса 45 и 46, но нет необходимости сначала использовать 4х, а потом 4х_bit, используйте сразу 4x_bit 45dd и 4x_bit 46dd.
Вообще стоит понимать, что для Modbus все эти адреса условность. Если у вас есть в памяти контроллера 100 слов, то к ним можно обращаться произвольно, как хотите в интервале их адресов. Причина соблюдения адресов и размерностей лишь в том, что необходимо получать корректные данные, а не что попало.


4x же берет только 1 слово же или я что-то не правильно понял?Или вы берете 2 раза по 1 слову, а потом их склеиваете со смещением в макросе?
Или берете запрос, через 4x_double(2 слова берет)?
w1nn1ep00h
 
Сообщения: 40
Зарегистрирован: 25 авг 2021, 01:14

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

Сообщение 8bit » 26 окт 2021, 15:21

w1nn1ep00h писал(а):
ArtemPM писал(а):На самом деле нет ни каких проблем, чтобы читать DWORD с помощью функции 4х. Пользуюсь ей во всех проектах.

Конечно сможете. Да нужно использовать адреса 45 и 46, но нет необходимости сначала использовать 4х, а потом 4х_bit, используйте сразу 4x_bit 45dd и 4x_bit 46dd.
Вообще стоит понимать, что для Modbus все эти адреса условность. Если у вас есть в памяти контроллера 100 слов, то к ним можно обращаться произвольно, как хотите в интервале их адресов. Причина соблюдения адресов и размерностей лишь в том, что необходимо получать корректные данные, а не что попало.


4x же берет только 1 слово же или я что-то не правильно понял?Или вы берете 2 раза по 1 слову, а потом их склеиваете со смещением в макросе?
Или берете запрос, через 4x_double(2 слова берет)?


1) в Modbus единица адресации - регистр (16 бит), а DWORD - это два таких регистра подряд, 45 и 46 соотвественно
2) у вас 58*32 булевых значений (алармов) - вам все равно в каком порядке эти биты из регистров выдергивать
3) вам следует использовать 4x_Bit
Хороший вопрос содержит половину ответа - A good question contains half the answer
Аватара пользователя
8bit
 
Сообщения: 1110
Зарегистрирован: 20 апр 2020, 19:07

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

Сообщение ArtemPM » 26 окт 2021, 16:14

w1nn1ep00h писал(а):
ArtemPM писал(а):4x же берет только 1 слово же или я что-то не правильно понял?

Модбасу всё равно сколько слов брать. Если я правильно помню формат, то предел для модбаса - 120 слов одним запросом.
Если вы указываете 32-х битный тип переменной, то драйвер просто запросит два слова и склеит их в одну переменную.
И 4х и 5х и 4х_bit использует для запроса одну и ту же функцию - 03, всё остальное делает драйвер перед тем как вернуть вам результат.
ArtemPM
 
Сообщения: 197
Зарегистрирован: 14 апр 2021, 05:16

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

Сообщение 8bit » 26 окт 2021, 16:51

ArtemPM писал(а):Если я правильно помню формат, то предел для модбаса - 120 слов одним запросом.

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

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

Сообщение InterestedStudent » 27 окт 2021, 11:47

День добрый.
Подскажите, пожалуйста, как решается следующая задача:
Мне необходимо хранить настройки станка (константы, которые не меняются в процессе работы) в панели Weintek MT8071iE.
Эти данные заполняются лишь один раз и больше не меняются. Они будут использоваться лишь для ограничения ввода данных в самой панели, на ПЛК они не будут отправляться.

Есть рецепты, но их планирую использовать для загрузки различных настроек станка и сохранении на диск, их может быть более 100-ни.
Есть макросы, по идее, можно писать макрос для каждого параметра, чтобы он возвращал необходимое значении, но это не удобно, так как таких настроек около сотни.

Что используется для таких задач?
InterestedStudent
 
Сообщения: 13
Зарегистрирован: 27 окт 2021, 11:37

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

Сообщение Number17 » 27 окт 2021, 12:31

InterestedStudent писал(а):День добрый.
Подскажите, пожалуйста, как решается следующая задача:
Мне необходимо хранить настройки станка (константы, которые не меняются в процессе работы) в панели Weintek MT8071iE.
Эти данные заполняются лишь один раз и больше не меняются. Они будут использоваться лишь для ограничения ввода данных в самой панели, на ПЛК они не будут отправляться.

Есть рецепты, но их планирую использовать для загрузки различных настроек станка и сохранении на диск, их может быть более 100-ни.
Есть макросы, по идее, можно писать макрос для каждого параметра, чтобы он возвращал необходимое значении, но это не удобно, так как таких настроек около сотни.

Что используется для таких задач?


Если константы используются для ограничения ввода данных и не изменяются по ходу выполнения кода, то эти пределы прописываются в атрибутах Numeric Object на вкладке Format и не определяются как то отдельно.
Number17
 
Сообщения: 154
Зарегистрирован: 06 мар 2018, 12:08

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

Сообщение InterestedStudent » 27 окт 2021, 12:57

Number17 писал(а):Если константы используются для ограничения ввода данных и не изменяются по ходу выполнения кода, то эти пределы прописываются в атрибутах Numeric Object на вкладке Format и не определяются как то отдельно.

Спасибо.

Не очень удобно в моем случае, много окон, где используются эти ограничения.
InterestedStudent
 
Сообщения: 13
Зарегистрирован: 27 окт 2021, 11:37

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

Сообщение Number17 » 27 окт 2021, 13:08

InterestedStudent писал(а):
Number17 писал(а):Если константы используются для ограничения ввода данных и не изменяются по ходу выполнения кода, то эти пределы прописываются в атрибутах Numeric Object на вкладке Format и не определяются как то отдельно.

Спасибо.

Не очень удобно в моем случае, много окон, где используются эти ограничения.


Так в любом же случае, размещая объект приходится его настраивать, сопоставлять ему определённую ячейку памяти. Если в разных окнах используется один и тот же параметр, так настройте одно поле ввода, а далее копируйте его в нужные окна где этот параметр используется.
Как вариант использовать динамические лимиты, а ячейки памяти этих лимитов инициализировать в макросе, который выполняется один раз при запуске панели. Но этот путь не легче прямого задания лимитов. Так же придётся каждое поле настривать.
У меня в настоящем проекте 3 вида тех. процесса, число параметров для каждого от 88 до 178. Никаких проблем не испытывал при определении лимитов для этих параметров.
Number17
 
Сообщения: 154
Зарегистрирован: 06 мар 2018, 12:08

Пред.След.

Вернуться в Weintek

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

Сейчас этот форум просматривают: pkl58 и гости: 6