|
SMConstructor (вентиляция) Вопросы о работе Конструктора (Вентиляция и кондиционирование) |
|
Опции темы | Поиск в этой теме |
13.04.2015, 08:47 | #1 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 056
Благодарил(а): 20 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
Расписание по интерфейсу
Появилась необходимость задавать расписание работы по интерфейсу... очень сильная необходимость. Кто-нибудь уже реализовывал такое?
Я вижу такие пути: 1. Написать новый макрос расписания и вставлять его самостоятельно в проект. Пока концепцию не придумал. 2. Сделать механизм корректирования существующего расписания со скады. По какому пути лучше пойти? PS Возможно Арсений или кто-нибудь другой поделится своими мыслями или наработками |
13.04.2015, 12:58 | #2 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 159
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Расписание по интерфейсу
Цитата:
А так-то да, №1. Наработок толковых нет. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
13.04.2015, 15:21 | #3 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 056
Благодарил(а): 20 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
Ответ: Расписание по интерфейсу
Может кто-нибудь желает заработать? Готов заплатить за разработку такого решения. Только если кто хочет - у меня сроки - неделя Думаю что и сам справлюсь да дел много - если кто захочет, то мне проще будет заплатить...
|
13.04.2015, 17:05 | #4 | |
Member
Регистрация: Mar 2007
Сообщения: 39
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: Расписание по интерфейсу
Цитата:
Делалось давно, на коленке и быстро, потому как-то без комментариев в программе осталось. Но вроде как работало. Недельный таймер на День/Ночь с указанием уставок температуры (с шагом 1 градус) и состоянием установки в это время. Время начала периода кодируется двубайтовым словом в виде "ЧЧ*256+ММ". Уставки и состояния кодируются двубайтовым словом в виде "УставкаДень+State_День*128+УставкаНочь*256+State_ Ночь*32768" Все параметры передаются по Modbus и могут быть изменены из меню (ещё старое SMH-шное меню). |
|
13.04.2015, 18:29 | #5 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 159
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Расписание по интерфейсу
Бюджет?)
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
14.04.2015, 07:48 | #6 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 056
Благодарил(а): 20 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
Ответ: Расписание по интерфейсу
|
14.04.2015, 10:43 | #7 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 159
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Расписание по интерфейсу
Техзадание вперед) Нужен сам макрос с выходом в модбас или решение под ключ, с "ответкой" в скаде? Сколько событий в сутки?
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
14.04.2015, 10:54 | #8 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 056
Благодарил(а): 20 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
Ответ: Расписание по интерфейсу
Самый идеальный вариант - расписание как в конструкторе с возможностью задать со скады. Со стороны скады делать ничего не надо. Возможно подойдет и более простой вариант - на день задается время работы системы (время запуска и остановки) без изменения уставки температуры, с возможностью задания по дням недели.
|
17.04.2015, 10:24 | #9 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 056
Благодарил(а): 20 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
Ответ: Расписание по интерфейсу
Сегодня пробовал экспериментировать со штатным расписанием... и не понял - там какая-то защита стоит? Тупо не работет внутри расписания макрос bool-int.. работают ли остальные макросы пока не проверял... во вложении скрины...
Последний раз редактировалось Arsie, 17.04.2015 в 11:46 |
17.04.2015, 11:36 | #10 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 159
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Расписание по интерфейсу
Мой вам совет. Не трогайте этот макрос. Всё там работает, но только ровно так, как захотел Конструктор.
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
17.04.2015, 11:39 | #11 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 056
Благодарил(а): 20 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
Ответ: Расписание по интерфейсу
я так и понял. Только не понял почему. Теоретически я придумал механизм как со скады иметь возможность задавать расписание используя штатный макрос конструктора... если только нет подводных камней (как вот то, что блоки внутрь макроса помещаются но не работают)... может быть у Вас есть такой макрос расписания который можно редактировать?
|
17.04.2015, 12:15 | #12 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 056
Благодарил(а): 20 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
Ответ: Расписание по интерфейсу
Тогда другой вопрос. Есть ли смысл делать два расписания? Одно - "местное" и второе "дистанционное"? я это к чему - чтобы не отказываться совсем от расписания, которое можно задать из контроллера... (Все-таки если делать свой макрос то совсем не хочется заморачиваться с выводом возможности его редактирования из ПЛК).
|
17.04.2015, 12:36 | #13 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 159
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Расписание по интерфейсу
Цитата:
Если ваша задача позволяет использовать два расписания, то смысл есть. Если не позволяет, то смысла нет. Вашей задачей владеете только вы. Соответственно, любые решения можете принять исключительно вы. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
17.04.2015, 12:50 | #14 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 159
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Расписание по интерфейсу
Цитата:
Либо из старенького Конструктора: файл __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
17.04.2015, 13:00 | #15 | |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 056
Благодарил(а): 20 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
Ответ: Расписание по интерфейсу
Цитата:
Я начал реализовывать этот второй способ и вот задумался над такими вопросами: 1. Не будет ли это слишком нудно для пользователя - настраивать такое расписание. 2. Встает проблема того, как организовывать запись в память. Есть несколько вариантов, пока "красивого" я не придумал. Тут разговор о чем... Выбираю я день недели, скажем понедельник, и точку.. скажем 1. ДАлее без проблем подгружаются данные из памяти и я вижу то, что сейчас там установлено. Теперь мне надо отокорректировать значения, и вот тут встает проблема...такие есть варинаты: - Либо я при нажатии на соответсвующую переменную (скажем время) ввожу значения и нажимаю кнопку "задать". При этом программа смлоджика отлавливает изменение переменной и проводит запись в память. Но данный способ имеет некие проблемы - если я в прошлой точке задал такое же значение, то изменения не произойдет и записи в память не будет.... Тут как варинт, можно попробовать внутри контроллера сравнить задаваемое значение и считываемое и на основании этого сформировать импульс записи. Однако такой механизм может начать срабатывать когда я просто перещелкиваю дни недели... - Еще один способ - делать 2 столбца. Считываемы значения и задаваемые значения. В одном столбце автоматически обновляются данные при изменении точки и дня недели, а такде обновляются при перезаписи. Второй столбец - значения которые будут заданы в контроллер. Сначала выбираем нужные значения, затем нажимаем кнопку "записать". Такой способ должен корректно работать, но боюсь что редактирование расписания тогда будет крайне муторным занятием... Может у кого есть мысли по этому поводу? |
|
17.04.2015, 13:44 | #16 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 159
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Расписание по интерфейсу
Я вообще не вижу проблем ни в чём.
Всё, что вы озвучили, решаемо программно. И решаемо несложно. Вплоть до выполнения "нудной работы" по перебору точек самим компьютером со скадой. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
17.04.2015, 14:09 | #17 | |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 056
Благодарил(а): 20 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
Ответ: Расписание по интерфейсу
Цитата:
Ваш макрос расписания из старенького конструктора я переработал и в принцпе все работает. Только вот я не понял одной вещи. Загрузил в контроллер программу только с одним расписанием и больше ничего и сделал так, чтобы это окно отображалось постоянно. И при включении контроллера выдает вот такое окно (см. приложение). Если пощелкать вправо/влево то потом окно оторажатеся нормально. Т.е. при включении контролелра вместо надписи "(1) понедельник" отображается то, что на фото. Если уйти во вторник а потом обратно то все нормально. Если во время выполнения прогрраммы отключить отображение окна расписания и включить обратно то тоже все в норме. Если выключить/включить контроллер - история повторяется. |
|
17.04.2015, 14:14 | #18 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 056
Благодарил(а): 20 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
Ответ: Расписание по интерфейсу
В принципе за 20 минут я доработал макрос так, что можно задавать расписание через сеть и при этом его можно задавать и с контроллера. Только пока осталась проблема, описанная в посте от 13.09. Во вложении то, что получилось.
|
17.04.2015, 14:21 | #19 | ||
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 159
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Расписание по интерфейсу
Цитата:
Цитата:
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
||
17.04.2015, 14:29 | #20 | ||
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 056
Благодарил(а): 20 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
Ответ: Расписание по интерфейсу
Цитата:
Цитата:
Я так понимаю, что этот макрос изначально не должен отображаться... сейчас засуну его в основную программу и посмотрю что из этого выйдет. |
||
17.04.2015, 14:56 | #21 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 159
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Расписание по интерфейсу
Цитата:
Простор остался только в конкретном способе реализации. Конечно не должен. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
17.04.2015, 15:11 | #22 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 056
Благодарил(а): 20 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
Ответ: Расписание по интерфейсу
Вроде бы как все работает. Сейчас тестирую. Еще не разобрался со статусами "пуск/стоп" но это дело недолгое. Как будет готово - выложу сюда программу со встроенным расписанием... только вот мне непонятно - реализовывается это все довольно просто - почему Вы отказываетесь предусмотреть такую возможность в конструкторе?
|
17.04.2015, 15:27 | #23 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 159
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Расписание по интерфейсу
Цитата:
Мы, как производитель, не можем дать полуфабрикат. Мы даём либо способ решить вашу задачу, либо готовое решение задачи. Способ мы дали, способ достаточно несложный, чтобы вы смогли им воспользоваться. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
17.04.2015, 15:37 | #24 | |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 056
Благодарил(а): 20 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
Ответ: Расписание по интерфейсу
Цитата:
|
|
17.04.2015, 15:51 | #25 | ||
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 056
Благодарил(а): 20 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
Ответ: Расписание по интерфейсу
Цитата:
Цитата:
|
||
17.04.2015, 16:14 | #26 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 159
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Расписание по интерфейсу
На фоне остальных вопросов на форуме - действительно не самая простая
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
20.04.2015, 07:14 | #27 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 056
Благодарил(а): 20 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
Ответ: Расписание по интерфейсу
Однако, когда я спрашивал про веб-сервер и получение данныех из PHP Напрямую из шаредмемори, Вы мне писали что мол это просто и дня за 3 можно и самому разобраться и мол любой программист под PHP это напишет легко и просто... однако ниукого так и не получилось.. а тут - столько раз Вы писали о том, что сделать расписание из скады сложно и не нужно, что я даже в это поверил... а на деле оказалось дело на полчаса - час...
|
20.04.2015, 09:13 | #28 | |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 056
Благодарил(а): 20 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
Ответ: Расписание по интерфейсу
Цитата:
Имеем 4 входные переменные и 4 выходные. Все переменные типа 16-ти битовый целочисленный (int). Bit_input_schedule - упакованные в слово два бита. Бит 0 - Если выставляем его в "1" - включается разрешение производить корректировку расписания из скада-системы. При этом расписание должно быть закрыто на экране контроллера. Иначе редактирование запрещено. Бит 1 - импульс записи. При установке его в 1 происходит перезапись выбранного параметра в память контроллера. Для последующей перезаписи этот бит необходимо сбросить в 0 и опять установить в 1. Адрес - Задается день недели. 0 - понедельник, 1 - вторник и т.д. Курсор - задается положение курсора для редактирования переменной. 0 - время первой точки, 1 - уставка Т первой точки, 2 - занчение "пуск/стоп" первой точки, 3 - время второй точки и т.д. Int - Задаем значение переменной для записи в память. Формат переменных: Время - ЧЧММ (где ЧЧ - часы, ММ - минуты) задается единым числом (к примеру 2210 = 22:10). Уставка Т - задается в грудсах цельсия Пуск/стоп - задаем "1" если точка типа "Пуск" и 0 если точка типа "стоп". Переменные для чтения: Время Текущее заданное в выбранной точке время. Уставка уставка температуры в текущей точки Выкл/вкл - упакованное слово состояний точек выбранного дня. 0 - стоп, 1 - пуск. в итоге если 2 точки пуск а 2 стоп то будет так: 0011(Bin)=3(dec). Выкл/вкл_bit - состояние текущей выбранной точки (пуск/стоп) 0 - стоп, 1 - пуск. Принцип работы с расписанием: Со скады переменной "адрес" выбираем нужный день. При этом в поля для отображения данных выкидываем значения переменных для чтения. При изменении дня недели автоматически будут изменяться и значения этих переменных. Переменной "курсор" выбираем переменную для редактирования. С помощью этой переменной также перемещаемся по точкам внутри одного дня недели. 0 - время первой точки, 1 - уставка Т первой точки, 2 - пуск/стоп первой точки, 3 - время второй точки и т.д. С помощью переменной "int" задаем значение выбранного параметра расписания. Для записи посылаем импульс в бит 1 слова Bit_input_schedule. После проведения записи переменные для отображения автоматически обновятся. |
|
Благодарность от: |
20.04.2015, 10:29 | #29 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 159
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Расписание по интерфейсу
Цитата:
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
20.04.2015, 11:43 | #30 | |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 056
Благодарил(а): 20 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
Ответ: Расписание по интерфейсу
Цитата:
PS еще пару часов уйдет на реализацию в скаде... не такая уж и сложная задача... PPS скады бывают разные. Кому надо реализует в той скаде в которой ему удобно работать... главное иметь возможность редактировать по модбасу... Последний раз редактировалось Max2114, 20.04.2015 в 11:59 |
|