![]() |
![]() ![]() |
![]() |
#31 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 374
Благодарил(а): 15 раз(а)
Поблагодарили:
609 раз(а) в 556 сообщениях
|
![]()
Дык табличка из примера с журналом так и делает... Или вам нужен не пример, а готовое решение?
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#32 |
Senior Member
Регистрация: Feb 2007
Сообщения: 174
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]()
Делает "как" ? Вот в чем вопрос (с).
Почем я знаю как там в ВБА оно происходит ? |
![]() |
![]() |
![]() |
#33 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 374
Благодарил(а): 15 раз(а)
Поблагодарили:
609 раз(а) в 556 сообщениях
|
![]()
Дык посмотреть! На что ещё примеры существуют?
Тем более, что приём переменной это формула, а не жуткая программа на ВБА. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#34 |
Senior Member
Регистрация: Feb 2007
Сообщения: 174
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]()
можно фрагмент увидеть ? Ибо я попытался посмотреть два макроса, что входят в эксель-файл - нифига не нашел алгоритмя "забивания" таблицы построчно.
И еще, мне бы нужно, чтоб данные шли непрерывно, запускаемые, например, по кнопке, а не разовые чтения. |
![]() |
![]() |
![]() |
#35 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 374
Благодарил(а): 15 раз(а)
Поблагодарили:
609 раз(а) в 556 сообщениях
|
![]()
Дык там по кнопке. Непрерывно. Есть только ограничение на количество "непрерывности".
Таблица заполняется по нажатию кнопки, в свойствах кнопки указан выполняющийся макрос. Он вызывает функцию FillTable. Она страшна на вид только из-за того, что фиксирует ошибки передачи и выводит их на экран. Плюс обеспечивает синхронизацию между переменными, т.к. одна строка состоит из нескольких переменных. Суть функции в тупом копировании нескольких ячеек в таблицу с изменением номера строки. Т.е. построение "текстового тренда". Данные меняются в исходных ячейках самостоятельно. Private Sub FillTable() Dim f As Integer Dim TimeOut As Integer Dim PauseTime, Start TimeOut = 0 Worksheets("Àâàðèè").Cells(6, 3).Value = Worksheets("Àâàðèè").Cells(110, 3).Value ' î÷èñòêà òàáëèöû æóðíàëà ClearTable (99) Worksheets("Àâàðèè").Cells(6, 3).Value = Worksheets("Àâàðèè").Cells(111, 3).Value f = 0 If (Worksheets("Àâàðèè").Range("G24").Value = CBool(1)) Then GoTo norespons If (Worksheets("Àâàðèè").Range("H24").Value = CBool(1)) Then GoTo noserver mychannelwr = DDEInitiate("SERVOPC", "Request3") Set wr = Worksheets("Àâàðèè").Cells(50 + 6, 2) If (Worksheets("Àâàðèè").Range("G24").Value = CBool(1)) Then GoTo norespons If (Worksheets("Àâàðèè").Range("H24").Value = CBool(1)) Then GoTo noserver Call DDEPoke(mychannelwr, "ARC_IN0", wr) PauseTime = 5 Start = Timer ' Set start time. Do While Timer < (Start + PauseTime) DoEvents ' Yield to other processes. Loop For f = 0 To Worksheets("Àâàðèè").Range("H11").Value - 1 Worksheets("Àâàðèè").Cells(f + 6, 3).Value = Worksheets("Àâàðèè").Cells(114, 3).Value If (Worksheets("Àâàðèè").Range("G24").Value = CBool(1)) Then GoTo norespons If (Worksheets("Àâàðèè").Range("H24").Value = CBool(1)) Then GoTo noserver Set wr = Worksheets("Àâàðèè").Cells(f + 6, 2) CB1Cloop: DoEvents If (Worksheets("Àâàðèè").Range("G24").Value = CBool(1)) Then GoTo norespons If (Worksheets("Àâàðèè").Range("H24").Value = CBool(1)) Then GoTo noserver Call DDEPoke(mychannelwr, "ARC_IN0", wr) DoEvents PauseTime = 1 Start = Timer ' Set start time. Do While Timer < (Start + PauseTime) DoEvents ' Yield to other processes. Loop TimeOut = TimeOut + 1 If (TimeOut > 30) Then Exit For If (Worksheets("Àâàðèè").Range("G24").Value = CBool(1)) Then GoTo norespons If (Worksheets("Àâàðèè").Range("H24").Value = CBool(1)) Then GoTo noserver If (Worksheets("Àâàðèè").Range("H8").Value <> 1) Then GoTo CB1Cloop If (Worksheets("Àâàðèè").Range("H10").Value <> 1) Then GoTo CB1Cloop If (Worksheets("Àâàðèè").Range("G6").Value <> Worksheets("Àâàðèè").Cells(f + 6, 2).Value) Then GoTo CB1Cloop TimeOut = 0 If (Worksheets("Àâàðèè").Range("G8").Value = 0) Then Exit For Worksheets("Àâàðèè").Cells(f + 6, 3).Value = Worksheets("Àâàðèè").Cells(109, 3).Value 'ïðîâåðêà íà äîïóñòèìîñòü äàííûõ If (Worksheets("Àâàðèè").Range("G8").Value < 0) Then GoTo SkipWrite If (Worksheets("Àâàðèè").Range("G8").Value > 40) Then GoTo SkipWrite If (Worksheets("Àâàðèè").Range("G9").Value < 0) Then GoTo SkipWrite If (Worksheets("Àâàðèè").Range("G9").Value > 3000) Then GoTo SkipWrite If (Worksheets("Àâàðèè").Range("G10").Value < 0) Then GoTo SkipWrite If (Worksheets("Àâàðèè").Range("G10").Value > 3000) Then GoTo SkipWrite If (Worksheets("Àâàðèè").Range("G11").Value < 0) Then GoTo SkipWrite If (Worksheets("Àâàðèè").Range("G11").Value > 3000) Then GoTo SkipWrite If (Worksheets("Àâàðèè").Range("G12").Value < 0) Then GoTo SkipWrite If (Worksheets("Àâàðèè").Range("G12").Value > 3000) Then GoTo SkipWrite If (Worksheets("Àâàðèè").Range("G13").Value < 0) Then GoTo SkipWrite If (Worksheets("Àâàðèè").Range("G13").Value > 3000) Then GoTo SkipWrite Worksheets("Àâàðèè").Cells(f + 6, 3).Value = Worksheets("Àâàðèè").Cells(Worksheets("Àâàðèè").Ra nge("G8").Value + 120, 3).Value Worksheets("Àâàðèè").Cells(f + 6, 4).Value = TimeSerial(Worksheets("Àâàðèè").Range("G9").Value, Worksheets("Àâàðèè").Range("G10").Value, 0) Worksheets("Àâàðèè").Cells(f + 6, 5).Value = DateSerial(Worksheets("Àâàðèè").Range("G13").Value , Worksheets("Àâàðèè").Range("G12").Value, Worksheets("Àâàðèè").Range("G11").Value) SkipWrite: Next f Worksheets("Àâàðèè").Cells(9, 8).Value = f 'çàïîìèíàåì äîêóäà çàïîëíåíî If (Worksheets("Àâàðèè").Range("G24").Value = CBool(1)) Then GoTo norespons If (Worksheets("Àâàðèè").Range("H24").Value = CBool(1)) Then GoTo noserver DDETerminate mychannelwr If (TimeOut > 30) Then Worksheets("Àâàðèè").Cells(f + 6, 3).Value = Worksheets("Àâàðèè").Cells(112, 3).Value If (TimeOut < 30) Then Worksheets("Àâàðèè").Cells(f + 6, 3).Value = Worksheets("Àâàðèè").Cells(113, 3).Value GoTo endsub norespons: Worksheets("Àâàðèè").Cells(f + 6, 3).Value = Worksheets("Àâàðèè").Cells(115, 3).Value GoTo endsub noserver: Worksheets("Àâàðèè").Cells(f + 6, 3).Value = Worksheets("Àâàðèè").Cells(116, 3).Value endsub: End Sub __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#36 |
Senior Member
Регистрация: Feb 2007
Сообщения: 174
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]()
вот и пообщались ;(
|
![]() |
![]() |
![]() |
#37 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 374
Благодарил(а): 15 раз(а)
Поблагодарили:
609 раз(а) в 556 сообщениях
|
![]()
Дык "Суть функции в тупом копировании нескольких ячеек в таблицу с изменением номера строки. Т.е. построение "текстового тренда". Данные меняются в исходных ячейках самостоятельно" (c)
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#38 |
Новичок
Регистрация: Sep 2007
Сообщения: 28
Благодарил(а): 2 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]()
В проекте понадобилось управление заслонками последовательно, одна открывается, за ней вторая. Раскритикуйте плиз.
|
![]() |
![]() |
![]() |
#39 |
Senior Member
Регистрация: Jul 2007
Адрес: Калининград
Сообщения: 422
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]() __________________ Автомат АК - самый распространенный преобразователь стека в очередь |
![]() |
![]() |
![]() |
#40 |
Member
Регистрация: Nov 2008
Сообщения: 50
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]()
хоть и не понимаю всей задачи до конца, но как минимум можно заменить деление на 50 и последующее умножение на 100 простым умножением на 2
![]() |
![]() |
![]() |
![]() |
#41 |
Новичок
Регистрация: Sep 2007
Сообщения: 28
Благодарил(а): 2 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]()
Это я сначала для наглядности в 0-10 V преобразовывал, а потом забыл упростить.
Задача-использовать 1 регулятор для большой заслонки, разделенной на 2 части для более точной регулировке в начале открытия. |
![]() |
![]() |
![]() |
#42 |
Senior Member
Регистрация: Jul 2007
Адрес: Калининград
Сообщения: 422
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
Вот так гораздо проще и компактнее
![]() __________________ Автомат АК - самый распространенный преобразователь стека в очередь |
![]() |
![]() |
![]() |
#43 |
Новичок
Регистрация: Sep 2007
Сообщения: 28
Благодарил(а): 2 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]()
хммм.... Только сократил до 8 блоков а тут вона чё. Спасибо, и ведь считает также
![]() |
![]() |
![]() |
![]() |
#44 |
Senior Member
Регистрация: Aug 2010
Сообщения: 718
Благодарил(а): 1 раз(а)
Поблагодарили:
15 раз(а) в 12 сообщениях
|
![]()
или можно до 4-х блоков
![]() |
![]() |
![]() |
![]() |
#45 |
Senior Member
Регистрация: Jul 2007
Адрес: Калининград
Сообщения: 422
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
Однако в этом варианте входной и выходной диапазоны будут вовсе не 15...1015
![]() __________________ Автомат АК - самый распространенный преобразователь стека в очередь |
![]() |
![]() |
![]() |
#46 |
Senior Member
Регистрация: Aug 2010
Сообщения: 718
Благодарил(а): 1 раз(а)
Поблагодарили:
15 раз(а) в 12 сообщениях
|
![]()
так ничего не мешает задать нужный диапазон
![]() |
![]() |
![]() |
![]() |
#47 |
Senior Member
Регистрация: Jul 2007
Адрес: Калининград
Сообщения: 422
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
Ага. Но для смещения до min=15 потребуется пятый FBD
![]() __________________ Автомат АК - самый распространенный преобразователь стека в очередь |
![]() |
![]() |
![]() |
#48 |
Member
Регистрация: Dec 2008
Сообщения: 31
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]()
Здравствуйте! Есть у кого нибудь макрос управления кнопкой Пуск/Стоп без фиксации т.е один раз нажал Пуск второй раз нажал Стоп и.т.д. Или подскажите из каких блоков его можно собрать
|
![]() |
![]() |
![]() |
#49 |
Senior Member
Регистрация: Jan 2006
Сообщения: 319
Благодарил(а): 5 раз(а)
Поблагодарили:
2 раз(а) в 2 сообщениях
|
![]() |
![]() |
![]() |
![]() |
#50 |
Member
Регистрация: Dec 2008
Сообщения: 31
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]()
т.е. меняеш F2 на DIN
|
![]() |
![]() |
![]() |
#51 |
Senior Member
Регистрация: Jan 2006
Сообщения: 319
Благодарил(а): 5 раз(а)
Поблагодарили:
2 раз(а) в 2 сообщениях
|
![]() |
![]() |
![]() |
![]() |
#52 |
Member
Регистрация: Dec 2008
Сообщения: 31
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]()
Спасибо!
|
![]() |
![]() |
![]() |
#53 |
Senior Member
Регистрация: Jul 2007
Адрес: Калининград
Сообщения: 422
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
Макрос для индикации текущих активных событий.
Перебирает последовательно биты в слове с заданным периодом и если бит установлен, то выдает его номер + 1 на вход sel SCREENа. Если ни одного бита нет, то sel = 0 (пустая строка). __________________ Автомат АК - самый распространенный преобразователь стека в очередь |
![]() |
![]() |
![]() |
#54 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 374
Благодарил(а): 15 раз(а)
Поблагодарили:
609 раз(а) в 556 сообщениях
|
![]() ![]() __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#55 |
Senior Member
Регистрация: Jul 2007
Адрес: Калининград
Сообщения: 422
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]() ![]() А у меня поочередно все сообщения. ![]() __________________ Автомат АК - самый распространенный преобразователь стека в очередь |
![]() |
![]() |
![]() |
#56 |
Senior Member
Регистрация: Jul 2007
Адрес: Калининград
Сообщения: 422
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
Вот такого макроса точно нет в Конструкторе
![]() Простенький пример использования макроса в прицепе. Шаги не обязательно должны быть последовательными: можно делать ветвления, циклы, параллельное выполнение и т.д. Короче, пользуйтесь на здоровье... __________________ Автомат АК - самый распространенный преобразователь стека в очередь |
![]() |
![]() |
![]() |
#57 |
Новичок
Регистрация: Jun 2007
Адрес: Рязань
Сообщения: 29
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]()
Попытка сделать журнал для пульта управления.
Идея: Есть приточки на SMH 2010 и пульт на SMH 2010. Они большие, чёрные, с кнопками и нравятся заказчику ![]() Основная мысль: Пульт должен максимально возможно повторять экраны приточки (для заказчика проще). В приточке немного перепиленый журнал 2.20. В пульте останки от журнала 2.20 (выкинута память и иже с ней для упрощения синхронизации). Журнал в пульте читает события из журнала в приточке. Есть непонятка насчёт ресурса памяти, но в интернете нашёл, что влияет только запись, чтение на памяти не отражается (или отражается несущественно). Хотелось бы услышать мнения на этот счёт у местных Отцов-корифеев ![]() Во вложении два проекта : testПрит - журнал приточки и карта памяти testПульт - журнал пульта |
![]() |
![]() |
![]() |
#58 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 374
Благодарил(а): 15 раз(а)
Поблагодарили:
609 раз(а) в 556 сообщениях
|
![]() Остаётся только передать нажатия кнопок в подчинённый контроллер и сделать арбитраж локального/пультового управления. Либо не делать его ![]() Ну и отбалансировать производительность, ибо пульт может пригрузить основной контроллер на 20 мсек запросто, а при больной голове и на все 50 мсек. Выделил решение в отдельную тему: http://forum.segnetics.com/showthrea...6634#post16634 __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#59 |
Новичок
Регистрация: Jun 2007
Адрес: Рязань
Сообщения: 29
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]() ![]() ![]() ![]() |
![]() |
![]() |
![]() |
#60 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 374
Благодарил(а): 15 раз(а)
Поблагодарили:
609 раз(а) в 556 сообщениях
|
![]() А количество блоков представляет собой скорее академический интерес, т.к. контроллер выполняет их менее, чем за 15 мсек при предельных в такой задаче 70-80 мсек. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Можно ли применять пустые макросы (нельзя) | Gel | Вопросы о программировании | 35 | 08.04.2020 10:42 |
Макросы "Библиотека HVAC" | LordN | SMConstructor (вентиляция) | 7 | 18.09.2018 13:58 |
Макросы датчиков для SMH2010, Pixel, SMH-2G, SMH-2Gi, SMH4 | Arsie | Библиотека макросов | 1 | 25.06.2018 12:54 |
Макросы. База. | LordN | SMLogix | 17 | 03.04.2018 10:46 |