|
SMConstructor (вентиляция) Вопросы о работе Конструктора (Вентиляция и кондиционирование) |
|
Опции темы | Поиск в этой теме | Опции просмотра |
13.04.2015, 08:47 | #1 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 052
Благодарил(а): 20 раз(а)
Поблагодарили:
21 раз(а) в 21 сообщениях
|
Расписание по интерфейсу
Появилась необходимость задавать расписание работы по интерфейсу... очень сильная необходимость. Кто-нибудь уже реализовывал такое?
Я вижу такие пути: 1. Написать новый макрос расписания и вставлять его самостоятельно в проект. Пока концепцию не придумал. 2. Сделать механизм корректирования существующего расписания со скады. По какому пути лучше пойти? PS Возможно Арсений или кто-нибудь другой поделится своими мыслями или наработками |
13.04.2015, 12:58 | #2 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 021
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Расписание по интерфейсу
А так-то да, №1. Наработок толковых нет. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
13.04.2015, 15:21 | #3 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 052
Благодарил(а): 20 раз(а)
Поблагодарили:
21 раз(а) в 21 сообщениях
|
Ответ: Расписание по интерфейсу
|
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 021
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Расписание по интерфейсу
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
14.04.2015, 07:48 | #6 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 052
Благодарил(а): 20 раз(а)
Поблагодарили:
21 раз(а) в 21 сообщениях
|
Ответ: Расписание по интерфейсу
|
14.04.2015, 10:43 | #7 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 021
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Расписание по интерфейсу
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
14.04.2015, 10:54 | #8 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 052
Благодарил(а): 20 раз(а)
Поблагодарили:
21 раз(а) в 21 сообщениях
|
Ответ: Расписание по интерфейсу
|
17.04.2015, 10:24 | #9 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 052
Благодарил(а): 20 раз(а)
Поблагодарили:
21 раз(а) в 21 сообщениях
|
Ответ: Расписание по интерфейсу
Последний раз редактировалось Arsie, 17.04.2015 в 11:46 |
17.04.2015, 11:36 | #10 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 021
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Расписание по интерфейсу
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
17.04.2015, 11:39 | #11 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 052
Благодарил(а): 20 раз(а)
Поблагодарили:
21 раз(а) в 21 сообщениях
|
Ответ: Расписание по интерфейсу
|
17.04.2015, 12:15 | #12 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 052
Благодарил(а): 20 раз(а)
Поблагодарили:
21 раз(а) в 21 сообщениях
|
Ответ: Расписание по интерфейсу
|
17.04.2015, 12:36 | #13 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 021
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Расписание по интерфейсу
Если ваша задача позволяет использовать два расписания, то смысл есть. Если не позволяет, то смысла нет. Вашей задачей владеете только вы. Соответственно, любые решения можете принять исключительно вы. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
17.04.2015, 12:50 | #14 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 021
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Расписание по интерфейсу
Либо из старенького Конструктора: файл __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
17.04.2015, 13:00 | #15 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 052
Благодарил(а): 20 раз(а)
Поблагодарили:
21 раз(а) в 21 сообщениях
|
Ответ: Расписание по интерфейсу
Я начал реализовывать этот второй способ и вот задумался над такими вопросами: 1. Не будет ли это слишком нудно для пользователя - настраивать такое расписание. 2. Встает проблема того, как организовывать запись в память. Есть несколько вариантов, пока "красивого" я не придумал. Тут разговор о чем... Выбираю я день недели, скажем понедельник, и точку.. скажем 1. ДАлее без проблем подгружаются данные из памяти и я вижу то, что сейчас там установлено. Теперь мне надо отокорректировать значения, и вот тут встает проблема...такие есть варинаты: - Либо я при нажатии на соответсвующую переменную (скажем время) ввожу значения и нажимаю кнопку "задать". При этом программа смлоджика отлавливает изменение переменной и проводит запись в память. Но данный способ имеет некие проблемы - если я в прошлой точке задал такое же значение, то изменения не произойдет и записи в память не будет.... Тут как варинт, можно попробовать внутри контроллера сравнить задаваемое значение и считываемое и на основании этого сформировать импульс записи. Однако такой механизм может начать срабатывать когда я просто перещелкиваю дни недели... - Еще один способ - делать 2 столбца. Считываемы значения и задаваемые значения. В одном столбце автоматически обновляются данные при изменении точки и дня недели, а такде обновляются при перезаписи. Второй столбец - значения которые будут заданы в контроллер. Сначала выбираем нужные значения, затем нажимаем кнопку "записать". Такой способ должен корректно работать, но боюсь что редактирование расписания тогда будет крайне муторным занятием... Может у кого есть мысли по этому поводу? |
17.04.2015, 13:44 | #16 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 021
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Расписание по интерфейсу
Всё, что вы озвучили, решаемо программно. И решаемо несложно. Вплоть до выполнения "нудной работы" по перебору точек самим компьютером со скадой. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
17.04.2015, 14:09 | #17 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 052
Благодарил(а): 20 раз(а)
Поблагодарили:
21 раз(а) в 21 сообщениях
|
Ответ: Расписание по интерфейсу
Ваш макрос расписания из старенького конструктора я переработал и в принцпе все работает. Только вот я не понял одной вещи. Загрузил в контроллер программу только с одним расписанием и больше ничего и сделал так, чтобы это окно отображалось постоянно. И при включении контроллера выдает вот такое окно (см. приложение). Если пощелкать вправо/влево то потом окно оторажатеся нормально. Т.е. при включении контролелра вместо надписи "(1) понедельник" отображается то, что на фото. Если уйти во вторник а потом обратно то все нормально. Если во время выполнения прогрраммы отключить отображение окна расписания и включить обратно то тоже все в норме. Если выключить/включить контроллер - история повторяется. |
17.04.2015, 14:14 | #18 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 052
Благодарил(а): 20 раз(а)
Поблагодарили:
21 раз(а) в 21 сообщениях
|
Ответ: Расписание по интерфейсу
|
17.04.2015, 14:21 | #19 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 021
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Расписание по интерфейсу
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
17.04.2015, 14:29 | #20 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 052
Благодарил(а): 20 раз(а)
Поблагодарили:
21 раз(а) в 21 сообщениях
|
Ответ: Расписание по интерфейсу
|
17.04.2015, 14:56 | #21 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 021
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Расписание по интерфейсу
Простор остался только в конкретном способе реализации. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
17.04.2015, 15:11 | #22 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 052
Благодарил(а): 20 раз(а)
Поблагодарили:
21 раз(а) в 21 сообщениях
|
Ответ: Расписание по интерфейсу
|
17.04.2015, 15:27 | #23 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 021
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Расписание по интерфейсу
Мы, как производитель, не можем дать полуфабрикат. Мы даём либо способ решить вашу задачу, либо готовое решение задачи. Способ мы дали, способ достаточно несложный, чтобы вы смогли им воспользоваться. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
17.04.2015, 15:37 | #24 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 052
Благодарил(а): 20 раз(а)
Поблагодарили:
21 раз(а) в 21 сообщениях
|
Ответ: Расписание по интерфейсу
|
17.04.2015, 15:51 | #25 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 052
Благодарил(а): 20 раз(а)
Поблагодарили:
21 раз(а) в 21 сообщениях
|
Ответ: Расписание по интерфейсу
|
17.04.2015, 16:14 | #26 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 021
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Расписание по интерфейсу
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
20.04.2015, 07:14 | #27 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 052
Благодарил(а): 20 раз(а)
Поблагодарили:
21 раз(а) в 21 сообщениях
|
Ответ: Расписание по интерфейсу
|
20.04.2015, 09:13 | #28 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 052
Благодарил(а): 20 раз(а)
Поблагодарили:
21 раз(а) в 21 сообщениях
|
Ответ: Расписание по интерфейсу
Имеем 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 021
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Расписание по интерфейсу
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
20.04.2015, 11:43 | #30 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 052
Благодарил(а): 20 раз(а)
Поблагодарили:
21 раз(а) в 21 сообщениях
|
Ответ: Расписание по интерфейсу
PS еще пару часов уйдет на реализацию в скаде... не такая уж и сложная задача... PPS скады бывают разные. Кому надо реализует в той скаде в которой ему удобно работать... главное иметь возможность редактировать по модбасу... Последний раз редактировалось Max2114, 20.04.2015 в 11:59 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Простое расписание для Trim5 / SMH5 | Arsie | Библиотека макросов | 1 | 06.10.2021 12:11 |
Отсутствует пункт расписание | Tihn | Вопросы о Pixel | 3 | 17.09.2018 16:06 |
(2016 год) Windows 7 x86: Не находятся контроллеры по Ethernet интерфейсу | pronux | Сообщения об ошибках | 0 | 04.04.2016 09:59 |
Расписание с большим количеством точек | 5144 | Вопросы о программировании | 1 | 27.02.2015 19:21 |
Расписание | Max2114 | SMConstructor (вентиляция) | 17 | 03.10.2012 10:52 |