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

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

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

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

Сообщение smile-dimon » 18 мар 2021, 14:31

8bit писал(а):
smile-dimon писал(а):но попала в руки китайская релюха на 4 канала с 485 интерфейсом и у нее формат команд другой:
(Включите реле CH_1 (нормальный режим):
Отправка: FF 05 00 00 FF 00 99 E4),
и я так понял что только на запись,как с панели ей управлять?


http://rapidscada.net/modbus/ModbusParser.aspx
RTU_pase.png


отсюда и плясать ....


Благодарю за ответ,но мне не понятно как это прописать в панели,как её заставить отправлять эту и еще скажем 8 команд...?именно в таком формате,или же есть возможность их отправлять в десятичном виде?Не пойму как это можно реализовать....
smile-dimon
 
Сообщения: 14
Зарегистрирован: 01 окт 2020, 20:15

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

Сообщение 8bit » 18 мар 2021, 16:59

smile-dimon писал(а):
8bit писал(а):
smile-dimon писал(а):но попала в руки китайская релюха на 4 канала с 485 интерфейсом и у нее формат команд другой:
(Включите реле CH_1 (нормальный режим):
Отправка: FF 05 00 00 FF 00 99 E4),
и я так понял что только на запись,как с панели ей управлять?


http://rapidscada.net/modbus/ModbusParser.aspx
RTU_pase.png


отсюда и плясать ....


Благодарю за ответ,но мне не понятно как это прописать в панели,как её заставить отправлять эту и еще скажем 8 команд...?именно в таком формате,или же есть возможность их отправлять в десятичном виде?Не пойму как это можно реализовать....


в общих чертах про modbus

вот видео по подключению ПЛК к панелиWeintek, видеоурок создание проекта в EasyBuilder Pro для MT8071iE
вот еще видео Установка соединения с ПЛК - Weintek EBpro EasyBuilder Pro на русском языке - видео 3
и еще одно Подключение Weintek панелей и Segnetics контроллера в общую сеть RS-485

к каждому драйверу есть описание в pdf файле https://www.rusavtomatika.com/weintek_drivers/#modbus
вам надо Modbus RTU
для привязки регистра к объекту используйте тип адреса 0х (смотрите help в EasyBuilder Pro Reference Information - Modbus Address Types - 0x, а для записи одного бита функцией 05H )
0x - Coils, a read and write device type. When reading a bit with this device type, the function code is 01H. When writing a bit, the function code is 05H. When writing multiple bits, the function code is 0fH.


адрес станции укажите 255 (странно, обычно адреса с 1 по 247, с 248 по 255 зарезервированы)

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

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

Сообщение smile-dimon » 19 мар 2021, 10:33

Хорошо,попробую разобраться.Мне программирование трудно дается,понимание этих битов,слов,бай - дебри...Припаять,развести,собрать схему - да....но вот от этого голова пухнет
smile-dimon
 
Сообщения: 14
Зарегистрирован: 01 окт 2020, 20:15

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

Сообщение adamst » 20 мар 2021, 10:49

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

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

Работа ведется по modbus rtu ethernet т.е. по сети соединен контролер и панель.
панель MT8102ie контрллер на базе codesys 2.3 fastwel 713
adamst
 
Сообщения: 6
Зарегистрирован: 19 июн 2015, 09:51

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

Сообщение 8bit » 23 мар 2021, 13:43

adamst писал(а):Есть примеры реализации уставок? как из панели передавать в контроллер уставки, т.е. контроллер передает в панель текущие значения уставок, а панель те что ввел пользователь т.е. он взял отредактировал и отправил обратно в контроллер. Я видел что в панели есть объект ввода и отображения текста где можно использовать разные регистры для записи и чтения, но как это применить не понимаю.

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

Работа ведется по modbus rtu ethernet т.е. по сети соединен контролер и панель.
панель MT8102ie контрллер на базе codesys 2.3 fastwel 713


1) макросом по кнопке
примерно так
Код: Выделить всё

PLC_tag_1 = HMI_tag_1
PLC_tag_2 = HMI_tag_2
PLC_tag_3 = HMI_tag_3
PLC_tag_4 = HMI_tag_4
......
PLC_tag_100500 = HMI_tag_100500



вот про макросы статья 1 и статья 2
Хороший вопрос содержит половину ответа - A good question contains half the answer
Аватара пользователя
8bit
 
Сообщения: 1108
Зарегистрирован: 20 апр 2020, 19:07

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

Сообщение smile-dimon » 25 мар 2021, 21:20

День добрый.
С реле разобрался,и по средствам кнопки нашел как отправлять комманды и по средствам макроса тоже. Возможно кому то пригодится: была команда для включения 1го реле выше описана,но что бы ее запустить с кнопки или макроса необходимо прописать след:
Код: Выделить всё
bool bf=false
SetData(bf, "RTU1", 0x, 0, 1)


, на откл соответствующее false.
Так же хотел поинтересоваться как уменьшить время обработки данных считанных с приборов учета панелью,поскольку если выводить данные на числовой индикатор считаный и обработанный панелью,то на это уходит много времени и данные становятся не актуальны,а если установить считывание данных с прибора напрямую числовым индикатором,то я не знаю как по достижению определенного значения установить условия выполнения других комманд.Или можно обратиться напрямую к "ND_1" и взять с него значения,без привязки к области памяти панели?
И так же нужна информация о статусах прибора которая закодирована в мл.и ст.байтах ответа:
Код: Выделить всё
GetDataEx(RTUF[0],     "RTU1", 4x, 1#1, 1)

LOBYTE(RTUF[n], SOST[n])                                 

HIBYTE(RTUF[n], GAZ)



GETBIT(Sost[n], bbb, 0)   // проверяем бит 0 состояний реле

SetDataEx(bbb, "Local HMI", RW_BIT, 1000+n,  1)   // засвечиваем авария


GETBIT(Sost[n], bbb, 1)   // проверяем бит 1 состояний реле

SetDataEx(bbb, "Local HMI", RW_bit, 1100+n,  1) // засвечиваем порог 1


GETBIT(Sost[n], bbb, 2)   // проверяем бит 2 состояний реле

SetDataEx(bbb, "Local HMI", RW_bit, 1200+n,  1)   //порог2


но обработка данных происходит долго и информация устаревает----->скажем если на панели создать два числовых индикатора "ND" и один из них завязать на панель,а второй берет значения с прибора,то первый индикатор может еще показывать 10%,а второй к тому времени уже покажет 70%.Так же по набору определенного значения выполняются условия:
Код: Выделить всё
por[n] = 0

if RTU[n] > Porog1P then   // Порог 1   
por[n] = por[n]+1
SetDataEx(bt, "Local HMI", RW_BIT, 1100+n, 1)
else
SetDataEx(bf, "Local HMI", RW_BIT, 1100+n, 1)
end if

if RTU[n] > Porog2P then   // Порог 2   
por[n] = por[n]+1
SetDataEx(bt, "Local HMI", RW_BIT, 1200+n, 1)   //SetDataEx(bt, "RTU1", 0x, 0, 1)
else
SetDataEx(bf, "Local HMI", RW_BIT, 1200+n, 1)
end if

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

--- используйте форматирование - позаботьтесь о читабельности ---
Модератор
smile-dimon
 
Сообщения: 14
Зарегистрирован: 01 окт 2020, 20:15

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

Сообщение 8bit » 26 мар 2021, 16:45

smile-dimon писал(а):Так же хотел поинтересоваться как уменьшить время обработки данных считанных с приборов учета панелью,

1) панель сама определяет скорость опроса (старается как можно быстрее)
2) для циклично выполняющегося макроса задается период исполнения

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

1) посмотрите объект "Связанные действия", глобальный триггер на изменение величины
2) к графическим объектам обраться (например, из макроса) по имени/индексу нет возможности

И так же нужна информация о статусах прибора которая закодирована в мл.и ст.байтах ответа:
...
но обработка данных происходит долго и информация устаревает

каков период выполнения макроса ?

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

1) если все таааак быстро - используйте ПЛК
2) панель - это средство взаимодействия опаератора с системой управления (посмотреть текущие значения технологических параметров, задать уставки, управлять в ручном режиме, регистрация тревог, ведение архивов значений технологических величин и представление их в виде графиков и т.д.), а управлением должны занимать предназначенные для этого устройства - ПЛК с соотвествующим быстродействием, жестким временем цикла, резервированием и т.д.
Хороший вопрос содержит половину ответа - A good question contains half the answer
Аватара пользователя
8bit
 
Сообщения: 1108
Зарегистрирован: 20 апр 2020, 19:07

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

Сообщение zinovev » 30 мар 2021, 07:51

Как средствами макроса Easy Buildera можно получить дробную, целую части float?
zinovev
 
Сообщения: 4
Зарегистрирован: 25 мар 2021, 09:59

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

Сообщение 8bit » 30 мар 2021, 15:47

zinovev писал(а):Как средствами макроса Easy Buildera можно получить дробную, целую части float?


Среди встроенных функций, указанных в главе 18. Macro Reference смотрите раздел 18.7.8. Mathematics .....

вам возможно пригодятся следующие функции:

CEIL (Get the smallest integral value that is not less than input - Получите наименьшее целое значение, которое не меньше входного)
Код: Выделить всё
macro_command main()

float x = 3.8
int result

result = CEIL(x)// result = 4

end macro_command


--------------------------------------------------------------------------------
FLOOR (Get the largest integral value that is not greater than input - Получите наибольшее целое значение, не превышающее ввод )
Код: Выделить всё
macro_command main()

float x = 3.8
int result

result = FLOOR(x) // result = 3

end macro_command

--------------------------------------------------------------------------------
ROUND (Get the integral value that is nearest the input - Получите ближайшее к входу целое значение)
Код: Выделить всё
macro_command main()

float x = 5.55
int result

result = ROUND(x)  // result = 6

end macro_command


демо-проект можно скачать по ссылке https://dl.weintek.com/public/MT8000/Project/Macro_Sample/Macro_Math.zip
Хороший вопрос содержит половину ответа - A good question contains half the answer
Аватара пользователя
8bit
 
Сообщения: 1108
Зарегистрирован: 20 апр 2020, 19:07

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

Сообщение zinovev » 02 апр 2021, 09:13

Спасибо, FLOOR подходит, но программа говорит, что эта функция ей неизвестна
zinovev
 
Сообщения: 4
Зарегистрирован: 25 мар 2021, 09:59

Пред.След.

Вернуться в Weintek

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

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