Страница 22 из 87

HMI_панель на Андроиде

Добавлено: 25.05.2016{, 22:02}
support
Извините, я ни коим образом не хотел Вас обидеть. Знание модбаса никоим образом не относится к "программистским штучкам". Программисты как раз ничего о нём не знают (и это плохо - найти нормальную библиотеку для модбаса очень сложно, да и просто эмулятор слейва или мастера для ПК нормальный то же не очень просто - есть куча но все работают через одно место ). Протокол модбас  - это чисто АСУ-шная заморочка. Ему обучают на курсах асушников. Вы как я понял - инженер разработчик АСУ (по крайней мере мне показалось что в ОЛ вы очень хорошо разбираетесь). Но Вы работаете только с Овеном. И поэтому задания своим программистам даёте в разрезе Овена. Мне по специфике своей работы (кроме основной работы я ещё и фрилансем занимаюсь разработкой систем асу и сотрудничаю с нескольким фирмами) пришлось работать с оборудованием практически  всех известных производителей. И наших и отечественных. И я просто хотел Вам дать совет как сделать Вашу программу максимально универсальной. В этом у меня то же есть свой интерес. Я с удовольствием использовал бы её в своих проектах. Очень интересная связка получается при использовании Сокет-3М и Каскада. Пока к сожалению это проблемма. У меня заказчики предпочитают либо Зелио, либо S7-1200. У Зелио при запросе InputRegistrs вывалится ошибка. С S7-1200 немного другая ситуация - там профинет, но можно подцепить модуль модбаса. Я с ним пока не работал (пока профинета хватает), но с появлением каскады появились идеи.

Если вы смените функцию с 4 на 3 для ПР ничего не изменится (области то объедены, да и сейчас и работает только благодаря этому),  но при этом каскада начнёт работать и с устройствами с раздразнёнными областями, но только с областью HoldingRegisters.

Конечно в идеале я могу посоветовать такую реализацию задания выбора адреса для каскады:

1.Элементы только с чтением бита (индкатора с битовым управлением, тексты...) выбор областей:
1.1 Coil - задаётся непосредственно адрес номера флага. Чтение производится функцией 1
1.2 DiscreteInput - задаётся непосредственно адрес номера флага. Чтение производится функцией 2
1.3 HoldingRegistr - задаётся адрес регистра и номер бита (как сейчас). Чтение производится функцией 3
1.4 InputRegistr - задаётся адрес регистра и номер бита. Чтение производится функцией 4.
По умолчанию устанавливается HoldingRegistr (что бы текущим пользователям было привычнее). Для устройств с объединёнными областями (и для ПР) изменение выбора не будет иметь значения, за исключением расчёта адреса. Например при запросе  Coil или  DiscreteInput с адресом 17 будет  читаться 2 бит из ячейки память с адресом 1. То же что и задать HoldingRegistr  или InputRegistr  адресом 1 и номером бита 2. Но появится возможность читать необходимые данные из устройств с разделёнными областями. Это относится и к следующим типам элементов.

2. Элементы с заданием бита (кнопки, переключатели ...) выбор областей:
2.1. Coil - задаётся непосредственно адрес номера флага. Запись производится  функцией 5, чтение производится функцией 1.
2.2 HoldingRegistr - задаётся адрес регистра и номер бита (как сейчас). Запись производится  функцией 6, чтение производится функцией 3

3. Элементы только с чтением цифровых значений (Шкала, график ....) выбор областей:
3.1. HoldingRegistr - задаётся адрес регистра (как сейчас). Чтение производится функцией 3
3.2. InputRegistr - задаётся адрес регистра . Чтение производится функцией 4.

4.Элементы с записью цифрового значения (задатчик) Только одна область  - HoldingRegistr - задаётся адрес регистра  (как сейчас). Запись производится  функцией 6, чтение производится функцией 3

Если удастся сделать такую реализацию, то каскада станет действительно универсальной, подходящий для ЛЮБЫХ устройств имеющих модбас. При этом для ПР ничего не изменится. Передайте пожалуйста эти выкладки своему программисту, пускай посмотрит.

P.S. И ещё раз меня извините, если я Вас обидел. Я просто хотел помочь.

HMI_панель на Андроиде

Добавлено: 25.05.2016{, 22:06}
Rovki
Спасибо,Сергей за предложения ,я их передам и все что нужно сделаем ...Потому как заинтересован . :D
Для меня все кто пишет код -программисты и не важно системный или прикладной
https://ru.wikipedia.org/wiki....1%D1%82

HMI_панель на Андроиде

Добавлено: 25.05.2016{, 22:32}
KaScada
support писал(а):Передайте пожалуйста эти выкладки своему программисту, пускай посмотрит.
я внимательно слежу.
3ю функцию уже сделал, потестирую еще завтра с остальным оборудованием ОВЕН и ПЧВ innovert, но и так уверен на 99% что должно работать.

По сути я думаю всем тем компонентам, которые читают надо дать выбор функции и всё, только разделить на битовые и регистры.
Для всех кто читает БИТЫ даём выбор 1 или 2.
Для всех кто читает РЕГИСТРЫ даём выбор 4 или 3.
Запись выбирать нет смысла.
Таким образом мы покроем всё разнообразие ведь так?

HMI_панель на Андроиде

Добавлено: 25.05.2016{, 22:41}
support
Rovki писал(а):Для меня все кто пишет код -программисты и не важно системный или прикладной
Тут не совсем код..... Не знаю, входит ли в Ваши обязанности настройка ОПС серверов, но по моему входит. Возмём такой пример. Надо настроить ОПС для системы. Пока у вас в системе только ПР, всё хорошо, для всех тэгов в ОПС выбираем HoldingRegisters и всё. Но вот в системе появился измерительный преобразователь (живой пример, недавно систему делал - это преобразователь, со входов читает напряжение, ток,  и ещё внутри кучу расчётов делает и отдаёт всё по модбасу, кстати Российского производства). И что делать. Значения входных данных у него находятся в InputRegisters адресам 0 - 6 (три напряжения и три тока), ну а в HolldingRegistrs по адресам 0 - по моему 20 (точно не помню) находятся расчётные значения (активная мощность, реактивная мощность, cos f, частота и т.д). Обратите внимание на адреса. И как настраивать ОПС без знания разделения областей памяти? А теперь представьте что поставлена задача подключить этот преобразователь к ПР который является мастером и с помощью него прочитать например напряжение и использовать его в логике. Что Вы будете делать. Звать программиста? Он про ОЛ скорее всего ничего не знает. А Вы не знаете про области памяти. Тупик?

Так что как я и говорил - это не программистские заморочки а что ни на есть самые наши - АСУ-шные

HMI_панель на Андроиде

Добавлено: 25.05.2016{, 22:56}
Rovki
support писал(а):самые наши - АСУ-шные
Программист АСУ ТП , прикладной программист итд итп :D
Я сам себе ставлю задачу ,поэтому ни кому не обязан ,уже давно ...кроме семьи .

Добавлено (25.05.2016, 22:56)
---------------------------------------------
KaScada писал(а):По сути я думаю всем тем компонентам, которые читают надо дать выбор функции и всё, только разделить на битовые и регистры.Для всех кто читает БИТЫ даём выбор 1 или 2.
Для всех кто читаетРЕГИСТРЫ даём выбор 4 или 3.
И получим HMI MODBUS .Пользователь Каскада не должен ни о чем таком догадываться ,о  функциях и прочих модбасов .Его задача пальчиком поставить компонент, назначить адреса которые в проекте (ПР,ПЛК ,Ардуино) и работать ... B)Вам программистам только дай волю ,завтра все кукарекать будут

HMI_панель на Андроиде

Добавлено: 25.05.2016{, 23:13}
support
KaScada писал(а):Для всех кто читает БИТЫ даём выбор 1 или 2.Для всех кто читает РЕГИСТРЫ даём выбор 4 или 3.
Прежде всего не надо делать выбор функции (1, 2, 3....) - отпугнёт. Это как раз "программистские" заморочки. Асушники ничего не знают о них. Они знают области -"Входы" цифровые или аналоговые (DiscreteInput или InputRegisters), "Выходы" (Coil) и регисторы хранения (HoldingRegistrs). А на уровне драйвера уже работа программиста выбрать нужную функцию.
Насчет чтения и записи битов из HoldingRegistrs - я бы такую возможность оставил. Дело вот в чём. На примере контроллера Зелио (и не только него а ещё и по моему у Mitsubisi такая система) записать какое то полученное в работе контроллера битовое значение (например наличие какой ни будь аварии) можно только в бит HoldingRegistrs. Так же отправить один бит (например команду на пуск) можно то же только через бит HoldingRegistrs. А этих регистров у Зелио всего два . В область DiscreteInput  у этих контроллеров заведены значение считываемые с железных входов, а железные выходы (и только они) управляются областью Coil. Так что возможность записи битов (например кнопка квитирования аварии запомненной в контроллере) в область HoldingRegistrs мне кажется необходима, как и чтение бита из этой области.

Ну а чтением и записью регистров я согласен. Только не выбор функции а выбор области. Ну и естественно для задатчиков если пишем в область HoldingRegistrs (функцией 6) то и для контроля читаем функцией 3. Если пишем в Coil (функцией 5) то и для контроля читаем функцией 1

HMI_панель на Андроиде

Добавлено: 26.05.2016{, 11:40}
OlegAn1962
Поясните плиз настройки компонента архивации, как привязаться к каналам, какой указывать начальный регистр, почему в адресе надо указывать бит регистра? Можно пример архивации 100 случайных целых чисел с записью времени появления каждого числа?

HMI_панель на Андроиде

Добавлено: 26.05.2016{, 12:30}
KaScada
OlegAn1962 писал(а):Поясните плиз настройки компонента архивации, как привязаться к каналам, какой указывать начальный регистр, почему в адресе надо указывать бит регистра? Можно пример архивации 100 случайных целых чисел с записью времени появления каждого числа?
Пример к сожалению пока не смогу сделать, hc05 мой занят пока.
Тип данных - думаю понятно, единственное поясню, FLOAT требует 2 регистра (4 байта), int - беззнаковый, один регистр.
Кол-во - сколько необходимо записывать значений, они должны располагаться в ардуино последовательно.
Начальный регистр - с какого регистра писать.

Пример.
В ардуино есть 4 int с адресами модбас 1,2,3 и 4.
Вы хотите все 4 писать, значит кол-во ставите равное 4, тип INT, начальный ставите равный 1, тоесть с первого четыре штуки.
Запись произойдет по переднему фронту от указанного бита в адресе, тоесть вы записью можете управлять как вам удобно, случилась аварийная ситация, установили в ардуино этот бит, архив записал 1 раз указанные значения.
Если хотите непрерывно писать, то организуйте блинкер (генератор или мультивибратор) в ардуино и дёргайте бит, но тут каскада должна успевать опрашивать этот бит, а это зависит напрямую от сложности проекта и количества опрашиваемых регистров в целом на этом сетевом устройстве.

HMI_панель на Андроиде

Добавлено: 26.05.2016{, 21:47}
Rovki
OlegAn1962 писал(а):почему в адресе надо указывать бит регистра?
Это управляющий бит регистра -внешнее событие для Архива ,по которому происходит запись переменных в архив .

Добавлено (26.05.2016, 21:47)
---------------------------------------------
Скоро обновится Каскада до версии 3.1.5 -доработан модбас .

HMI_панель на Андроиде

Добавлено: 27.05.2016{, 09:42}
OlegAn1962
Спасибо за пояснения, с Integer получилось, а с Float ничего в архив не записывает, или не отсылает.

HMI_панель на Андроиде

Добавлено: 27.05.2016{, 16:02}
Rovki
а какие адреса у ваших флоат переменных ?

HMI_панель на Андроиде

Добавлено: 27.05.2016{, 17:09}
OlegAn1962
2 и 3
$IMAGE1$

HMI_панель на Андроиде

Добавлено: 27.05.2016{, 17:11}
OlegAn1962

HMI_панель на Андроиде

Добавлено: 27.05.2016{, 17:19}
Rovki
А вы можете задать флоат константу и отправить на каскаду в архив ?для проверки ...,например 5,1

Добавлено (27.05.2016, 17:19)
---------------------------------------------
И где и как в проекте вы задаете бит управления архива ,без него записи в архив не будет

HMI_панель на Андроиде

Добавлено: 27.05.2016{, 17:55}
OlegAn1962
Этот блок каждую секунду отправляет байт 00000001 на модбас

Адрес у переменной led 1, соответственно для архива в каскаде задаю сигнал для записи 1.1

HMI_панель на Андроиде

Добавлено: 27.05.2016{, 18:07}
Rovki
В архив можно писать только одного типа данные по 4 каналам или целочисленные или вещественные ,разные нельзя ...

HMI_панель на Андроиде

Добавлено: 27.05.2016{, 18:16}
OlegAn1962
А, ясно, наверное из-за этого и не получилось, проверю позже, сейчас ардуины нет под рукой.

HMI_панель на Андроиде

Добавлено: 28.05.2016{, 12:16}
Rovki


Идет процесс отладки приема СМС новым компонентом

Добавлено (27.05.2016, 23:40)
---------------------------------------------
первое видео про управление по СМС

[video][/video]

Добавлено (28.05.2016, 09:27)
---------------------------------------------
В HMI KaScada pro(версия с активацией)  реализовано управление по СМС - как прием СМС (битовых команд и значений регистров) ,так и отправка
СМС (ранее реализован обмен по вайфай модбас ТСР). С целью повышения
надежности управления разработан макрос SMS который обеспечивает
формирование ответного СМС на принятую команду по СМС ,что очень
актуально при удаленном управлении .Предполагаемый срок публикации 1.06.2016 .

Добавлено (28.05.2016, 12:16)
---------------------------------------------
Натурные испытания :D
https://youtu.be/spCYXaV6mWM

[video][/video]

HMI_панель на Андроиде

Добавлено: 28.05.2016{, 13:08}
vlad
только начал изучать каскаду. в версии флпрог 1,11,1 подружил без проблем а вот как это сделать в 1,11,2 не получается. непонятки с областями памяти. что это и с чем едят?
вопрос к каскаде,  в индикаторах у вас есть настройка макс значения индикатора и также возможно указать значение регистра, почему бы не добавить еще настройку кол-ва разрядов и положение десят точки. может конечно этого и не нужно, я просто проводил эксперименты с темп датчиком и выводил его показания и получилось что в цифровом виде нужно одно а если на индикацию визуальную  другое и в графиках тоже самое

HMI_панель на Андроиде

Добавлено: 28.05.2016{, 13:54}
Rovki
vlad писал(а):только начал изучать каскаду
Про флпрог не подскажу .
Есть два индикатора
один для количественной оценки(цифровой индикатор) ,второй для качественной(индикатор с аналоговой шкалой)
Для первого можно устанавливать кол.разрядов ,положение дес.точки ,во втором нет .
Можно сделать комбинированный индикатор -в аналоговом отключаете вывод значений ,а вместо их ставите цифровой индикатор ,с тем же адресом ,в нужное место (вверху ,внизу,,,).
Потребностей очень много ,поэтому все для всех не сделаешь .Поэтому наша концепция -дать базовый набор компонентов с помощью которого можно создать свой компонент визуализации .