Ну в принципе согласен. Самый рациональный прием уже, кажется, обрисовался - приходишь на форум, описываешь требования к проекту, Petera все делает. Рационально и экономично.Цитата:
начинать учиться надо сразу на рациональных приемах
Вид для печати
Ну в принципе согласен. Самый рациональный прием уже, кажется, обрисовался - приходишь на форум, описываешь требования к проекту, Petera все делает. Рационально и экономично.Цитата:
начинать учиться надо сразу на рациональных приемах
Нет, это не мой подход, все делать за других.
Просто вместо тог, чтобы разобраться с представлением в регистрах чисел с фиксированной точкой, человек начинает изобретать велосипед.
Вот, например, получает он из ТРМ значение давления воды (регистр 4х1) в формате ХХ.х
И хочет сделать тренд и иметь измерительный прибор.
Так вот, вместо того, чтобы просто правильно настроить шкалу измерительного прибора и использовать сразу регистр ТРМ 4х1
Вот так
Вложение 29340
Вложение 29339
Делает следующее лишние телодвижения
1. Делает ф. область
Вложение 29341
2. И привязывает измерительный прибор уже к регистру PSW267
Вложение 29342
Потому, что настройка шкалы прибора у него такая
Вложение 29343
Т.е. вместо тог, чтобы всего лишь поменять в шкале цифры 16 на 160, 13 на 130, 8 на 80 понадобилось использовать два промежуточных регистра PSW и мат.вычисления.
Мало тог, ведь у него уже есть значение 4х1 /10 !
В другой ф.области
Вложение 29345
которую он сделал для тренда.
Вложение 29346
Почему не использовал PSW259 и для измерительного прибора?
Для меня это загадка.
Так ведь самое смешное, что и эта ф. область не нужна.
Нужно было просто в тренде настроить формат шкалы и тоже сразу использовать регистр ТРМ 4х1
Вложение 29347
ИТОГО.
На три канала измерения
Шесть лишних ф.областей, двенадцать лишних регистров PSW, шесть лишних математических операций.
ЗЫ.
В итоге у человека готовый проект, который выполняет его задачу
А можно было выполнить эту задачу быстрее и проще.
Petra, вот моя последняя версия проекта. Готов к вашей критике. Да вы правы это мой первый проект. По этому столько вопросов и хотелось бы во всем разобраться по подробнее. С записью вроде бы понял. Читал ваш пост выше про переключение функции чтения записи "на лету". Лишние функциональные области убрал и отрегулировал шкалу по вашему примеру.
Вы не все лишние ф. области убрали
Вот смотрите, у Вас две ф.области
Вложение 29349 Вложение 29350
читают одни и те же регистры ТРМов, только в разные промежуточные PSW регистры
ЗАМЕЧАНИЕ.
У Вас в двух функциях используются одинаковые номера регистра 4х1 с одинаковыми сетевыми адресами ТРМов
Вложение 29351 Вложение 29352
Либо Вы ошиблись с сетевыми адресами, либо у Вас пока есть только один ТРМ и Вы специально оставили сетевые адреса одинаковыми.
И так
Первая ф. область читает давление воды (4х1) в промежуточный регистр PSW260, а вторая - этот же 4х1 в PSW256.
PSW260 Вы используете для архивирования на USB и тренда
PSW256 - в аналоговом дисплее
А зачем разные PSW?
Ведь ВСЕГДА, в любой момент времени PSW260=PSW256=4х1
Это касается и каналов измерения температуры и расхода.
Таким образом как минимум одна из ф.областей лишняя.
В принципе обе ф.области копирования регистров ТРМов в промежуточные PSW в Вашем проекте лишние.
Смело можете в трендах, аналоговых дисплеях и в архивировании на USB сразу использовать регистры ТРМов
Теоретически промежуточное копирование c помощью одной ф.области даст прирост общей скорости обмена на шине ModBus, но т.к. читаются только 3 регистра, то невооружённым глазом прироста скорости Вы и не заметите. А вот вторя ф.область ничего не даст.
1. Я думаю, что Вы ошиблись в адресах
Вложение 29359 Вложение 29360
2. Если прочитали и решили отказаться от использования скриптов на Си для записи функцией 0х10, то должны были понять механизм переключения между функциями 0х06 и 0х10
А я нигде не вижу, что Вы сделали PFW36.2 = 1Цитата:
переключение между функцией 0х06 функцией 0х10 осуществляется через второй бит регистра PFW36
если PFW36.2 = 0, то используется функция 0х06
если PFW36.2 = 1, то используется функция 0х10
На лету в Вашем проекте переключать конечно не надо. По этому сделайте ГЛОБАЛЬНУЮ ф.область
Вложение 29361 Вложение 29362
Именно эту ф.область я имел ввиду, когда говорил, что в Вашем проекте достаточно иметь всего одну ф.облась.
Замечу, что я в принципе не против использования скриптов на Си.
Тем более, что реализацию функции 0х10 с помощью Си предложил именно я, 2,5 года назад http://www.owen.ru/forum/showthread....l=1#post149572
Но это была панель СП270, в ней нет штатного способа переключения между функциями 0х06 и 0х10. И скрипт на Си был единственным способом.
ИМХО.
Использовать Си нужно тогда, когда без этого нельзя решить задачу стандартными инструментами панели.
Например здесь http://www.owen.ru/forum/showthread....l=1#post165786
Вопрос:
Панель СП307Б, в проекте используется много экранов, соответственно много кнопок перехода. Как сделать так, что бы кнопка перехода отображалась "нажатой" на активном экране, а другие кнопки сбрасывались в "отжато".
Кроме как нарисовать указатель возле кнопки активного экрана я ничего придумать не могу.
Вложение 29364
Вложение 29366
Я обычно в таких случаях использую максимально простой вариант - заранее на каждом экране выбираю для кнопки с названием этого экрана "подсвеченное" изображение (из галереи 2). Соответственно, не возникает необходимости вообще управлять чем-то.
По-моему, реальная необходимость в управлении цветами кнопок есть, когда число экранов превышает 20 (а это случается не так уж и часто) - в остальных случаях проще и быстрее сделать Ctrl+C/Ctrl+V и на каждом экране изменить для одной кнопки ее картинку.
Вложение 29367
Используемые мной кнопки перехода имею состояние "нажато". Вот я и хотел зафиксировать это состояние на активном в данный момент экране. Естественно оно должно сбрасываться в "отжато" при переходе на другой экран. Кроме того, в приведенных мною картинках используется глобальная кнопка "Главный".
Petra, спасибо что посмотрели мой проект. Да изначально планируется применение 3 приборов которые подключены к СП307. Но на этапе наладки подключаю только один ТРМ 202 по этому и дублирую их через другие регистры. В адресах я не ошибся. Это только что бы одним прибором проверить все 3 канала измерения и архивации. Конечно на этапе настройки уже на объекте в них будут записаны разные значения. Почему использую дополнительные функциональные области? Все просто они копируют значения регистров приборов ТРМ в регистры памяти PSW панели просто в таком режиме панель работает быстрее. Да можно в каждом элементе тренда прописать напрямую значение регистра ТРМ но в таком случае панель начинает тормозить при переходе с экрана на экран и замедляется быстродействие панели в целом. А если использовать промежуточные регистры панели PWS все довольно быстро работает. В разделе изменения уставок отказался от макроса на СИ и функциональных областей и заменил их кнопкой которая при нажатии инвертирует бит PFW 36.2 в приницепи это аналогичная функция ВКЛ бит PFW 36.2. Без кнопки все таки не получается... Petra, подправте меня если я ошибаюсь.
Ну если с промежуточным копированием регистров приборов ТРМ в регистры памяти PSW у Вас работает быстрее, то оставьте всего одну ф. область, из-за наличия второй уж точно быстрее работать не должна.
А вот насчет ВКЛ бит PFW 36.2 не понял. Какая у Вас кнопка и когда ее нужно нажать, чтобы работало?
Насчет кнопки я имею ввиду на экране уставки на котором 4 цифровых ввода и под ними находиться элемент "кнопка с индикацией". В функциях кнопки указываю инвертировать бит PFW 36.2 и при необходимости записать значение в регистры прибора нажимаю кнопку и при нажатой кнопке значения записываются спокойно.
Использую стандартную кнопку переключения экрана по умолчанию (элемент "Переход на экран"). Если её удерживать, то она меняет цвет и графику. После отпускания возвращается в первоначальный вид.
Вложение 29393
Скриншот сделан в момент удержания кнопки.
Насколько я понял, у данной кнопки нет нужного мне функционала.
Petra, спасибо большое все получилось с функцией "ВКЛ БИТ" и да сделал функциональную область глобальной. Все работает отлично. У меня еще один вопрос новичка к примеру подключаю я свои приборы в сеть по протоколу Modbus RTU. Должны быть промежудки между сетевыми адресами приборов или по можно для первого прибора адрес 1, для второго адрес 2, для третьего адрес 3?
Судя по справке, в макросах одним запросом нельзя прочитать или записать несколько битовых регистров
Я ошибся или это можно сделать только нагородив свою функцию?
Можно через свою функцию - посмотрите пример.
http://www.owen.ru/forum/showthread....l=1#post233959
Т.е. вы специально даете ответы, которые не имеют смысла без задавания дополнительных вопросов, и ожидаете знаков внимания? Вот это поворот.
Я ради интереса попробовал так:
Предсказуемо не сработало.Код:Reads(HMI_LOCAL_MCH, 0, TYPE_PSB, 256, 16, &PSB[356]);
Посмотрел проект по ссылке из #367 - в целом, все ясно, процентов 75 задач по манипуляции с памятью он закрывает, остальное можно самому написать по аналогии.
SokolovS'у тоже, видимо, этого хватило.
На счет Writes() я конечно погорячился, все таки я чайник в Си. Догадки были, что по аналогии с группировкой битов PSB в регистры PSB http://www.owen.ru/forum/showthread....l=1#post113602
будет возможность группировать биты 0х/1х также в целые регистры
А вот на счет Reads(), то работает
Например
Reads(PLC, 1, MODBUS_RTU_BIT_1X, 16, 2, &PSW[256]);
биты 1х16..1х47 будут прочитаны в биты регистров PSW256, 257
1х16-->PSW256.00, 1х47-->PSW257.15
Reads(PLC, 1, MODBUS_RTU_BIT_0X, 0, 3, &PSW[256]);
биты 0х00..0х47 будут прочитаны в биты регистров PSW256, 257, 258
0х00-->PSW256.00 - 0х15-->PSW256.15
0х16-->PSW257.00 - 0х17-->PSW257.31
0х32-->PSW258.00 - 0х47-->PSW258.15
Причем, опять же по аналогии с группировкой битов PSB
Reads(PLC, 1, MODBUS_RTU_BIT_0X, {0..15}, 3, &PSW[256]) эквивалентно Reads(PLC, 1, MODBUS_RTU_BIT_0X, 0, 3, &PSW[256])
Reads(PLC, 1, MODBUS_RTU_BIT_0X, {16..31}, 3, &PSW[256]) эквивалентно Reads(PLC, 1, MODBUS_RTU_BIT_0X, 16, 3, &PSW[256])
Reads(PLC, 1, MODBUS_RTU_BIT_0X, {32..47}, 3, &PSW[256]) эквивалентно Reads(PLC, 1, MODBUS_RTU_BIT_0X, 0, 32, &PSW[256])
т.е. адрес бита в команде берется наименьшим, кратным 16
А снифф обмена делали? Там реально функции 0x01 и 0x02 в запросе? А то кратность 16-ти позволяет предположить, что в данном случае просто запрашиваются регистры (функцией 0x03/0x04). На ПЛК от ОВЕН, где все области памяти наложены друг на друга, такое, конечно, прокатит, но не на контроллерах с отдельной областью под coils.
Естественно делал.
Используются именно функции 01 и 02
ЗЫ.
Проект
Вложение 29764 Вложение 29765
Вложение 29766 Вложение 29767
Панель подключена к виртуальному слейву. По коммуникационному монитору видно, что функции именно 01 и 02
https://www.youtube.com/watch?v=G1RlTmB-hKs
Вложение 29768
Кроме того в Data мониторе реально меняю биты в областях 0х и 1х и они отображаются на экране панели!
По поводу группировки отдельных PSB в один регистр
Вот версия примера для СП300
https://www.youtube.com/watch?v=2HpmVftV0AY
Все действия сделаны элементарными арифметическими операциями над содержимым целого регистра PSB256.
Никаких обращений к отдельным битам, за исключением операций циклического сдвига, но и там анализируются только младший или старший бит регистра.
Речь идёт о работе по порту PLC/Download и использовании возможности Modbus работать с несколькими дискретными значениями
Ваш пример не подходит для этого
Ответ и правда малополезный... Будь у меня на руках панель, эти возможности я бы исследовал и самостоятельно.
Если верить википедии, в Modbus нет такого выравнивания. Также если верить ей же, то нет и требования запросить ровно 2 байта, а можно запрашивать любое количество регистров, если надо, слейв добавит байтов в ответе. Так же и запись должна работать.
Добрый вечер. Помогите разобраться новичку с панелью оператора ОВЕН СП307-Р. Создан проект объемом 9,31 mb. При попытке загрузить проект в панель вылетает сообщение переполнение psw. Уменьшая же проект до объема 8,81 mb проект загружается спокойно. Я так понимаю проблема в слишком большом объеме памяти созданного проекта. Подскажите есть ли возможность загружать более масштабные проекты в панель и как ее реализовать.
Для начала можно попробовать п. 1.7 из FAQ:
http://www.owen.ru/catalog/sensornie...sp3xx/81265010
Да пробовал, но не сильно помогает уменьшает всего лишь на 1 mb. Хоть в общих вопросах FAQ п.п. 1.6 пишут что максимальный объем загружаемого проекта в панель 100 mb.
Все верно - панель способна работать и с проектами подобного размера.
Тогда, вероятно, проблема в настройках элементов с историей (типа трендов и архивов) - вы где-то используете в качестве хранилища данных регистры PSW, а их число достаточно ограничено (256 - 4095). Используйте PFW и галочку В авто области.
Т.е. если область памяти используется до 4095 то и перпеполнения быть не должно и проект объемом даже 50mb тоже загрузиться спокойно?
Здравствуйте !!! Подскажите как увеличить толщину линии на историческом графике на СП307. Предполагаю, нужно изменить шаблон, как это сделать ?
Здравствуйте!
Как в СП3 создать группу радиокнопок (может быть нажата только одна; при нажатии на утопленную последняя поднимается).
Можно использовать функциональную область или макросы, чтобы реализовать подобную логику.
Вот релевантный пример:
http://www.owen.ru/forum/showthread....l=1#post223394
Как полностью скомпилировать макросы?
Например, если вписать несуществующую функцию, по F7 макрос всё равно скомпилируется
Если кликнуть правой кнопкой мыши на "Макросы" и выбрать "Компиляция", ошибок тоже не будет
Экспорт проекта и сохранение эмуляции происходят без ошибок
Но при попытке загрузки конфигуратор ругнётся на необъявленную функцию
Попытаться загрузить можно только при наличии панели
Не очень радостно только на объекте узнавать, что макросы не доработаны.