Помогите решить проблему. Стоит оборудование которое считает расход сыпучего материала. Изменения веса вносятся в excel таблицу. В приложенном документе фиксируется вес до операции и вес после операции. Статус операции фиксируется в последней колонке. 0-отгрузка. 1-загрузка. Моя задача автоматизировать расчет израсходованного материала. Но проблема заключается еще и в том что есть моменты когда статус операции произвольно меняется хотя по факту не загрузки не отгрузки нет. Это можно увидеть например:00000000000(это отгрузка) 11111111111111111(Это загрузка) 00001000100111100011111100000(это самопроизвольное изменение). Задумка заключается в следующем можно ли опираясь на стабильный сигнал загрузки это(11111111111111111) от 10 единичек брать начальное значение при смене 0 на 1 и конечное 1 на 0 копировать у ячейки и дальше высчитывать сумму загрузки. Расчет нужно делать за суточную смену. За смену возможно в среднем от до 12 загрузок. Помогите советом. Копию файла прикладываю.
Ниже выложил изображения с описанием и файл с более наглядными изменениями
Помогите решить проблему. Стоит оборудование которое считает расход сыпучего материала. Изменения веса вносятся в excel таблицу. В приложенном документе фиксируется вес до операции и вес после операции. Статус операции фиксируется в последней колонке. 0-отгрузка. 1-загрузка. Моя задача автоматизировать расчет израсходованного материала. Но проблема заключается еще и в том что есть моменты когда статус операции произвольно меняется хотя по факту не загрузки не отгрузки нет. Это можно увидеть например:00000000000(это отгрузка) 11111111111111111(Это загрузка) 00001000100111100011111100000(это самопроизвольное изменение). Задумка заключается в следующем можно ли опираясь на стабильный сигнал загрузки это(11111111111111111) от 10 единичек брать начальное значение при смене 0 на 1 и конечное 1 на 0 копировать у ячейки и дальше высчитывать сумму загрузки. Расчет нужно делать за суточную смену. За смену возможно в среднем от до 12 загрузок. Помогите советом. Копию файла прикладываю.
Ниже выложил изображения с описанием и файл с более наглядными изменениямиCerentiy
Хочется поразмышлять, пока вы файл не дали Вот вы показали сигнал 00001000100111100011111100000 Покажите в этой последовательности нулей и единиц, жирным шрифтом, где началась загрузка и где закончилась. Т.е. всю загрузку выделите. Одиночная единичка или ноль - это больше на помеху похоже. Сколько должно быть подряд одинаковых значений, чтобы точно определить начало и конец загрузки?
Хочется поразмышлять, пока вы файл не дали Вот вы показали сигнал 00001000100111100011111100000 Покажите в этой последовательности нулей и единиц, жирным шрифтом, где началась загрузка и где закончилась. Т.е. всю загрузку выделите. Одиночная единичка или ноль - это больше на помеху похоже. Сколько должно быть подряд одинаковых значений, чтобы точно определить начало и конец загрузки?AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Сообщение отредактировал AlexM - Четверг, 14.02.2013, 09:46
Фиксирование данных происходит так. Первый столбик адрес устройства(к задаче не имеет отношения) 2 столбик вес до начала операции в данном случае отгрузка или загрузка 3й столбик вес после операции. далее дата время и 6й столбик операция . Опишу примером. Есть емкость в которую ссыпают материал. В режиме ожидания вес фиксированный устройство ничего не делает. Начинают подавать сырье т.е. засыпать вес начинает меняться на увеличение в столбике 6 появляется значение операции 1. Значения записываются в таблицу до тех пор пока не перестанет меняться вес. как только остановили подачу сырья в емкость фиксация значений не производится. Далее открывают клапан отгрузки сырья вес начинает меняться на убывание в 6 столбике значение меняется на 0. Фиксируются показания веса на убывание. Т.е. когда происходит изменение веса вверх операция 1 если вниз 0 и при любом изменении прибор его фиксирует смотря на то какое изменение происходит поэтому и присваивает состояние операции в виде 0 и 1 . Но есть и места когда эта самая емкость просто качается от ветра в этот момент и происходит фиксирование ошибочных данных за счет смещения центра тяжести прибор понимает это как изменения. Попробую объяснить с помощью картинки. Первый файл был не очень удачный прикладываю более наглядный.
Фиксирование данных происходит так. Первый столбик адрес устройства(к задаче не имеет отношения) 2 столбик вес до начала операции в данном случае отгрузка или загрузка 3й столбик вес после операции. далее дата время и 6й столбик операция . Опишу примером. Есть емкость в которую ссыпают материал. В режиме ожидания вес фиксированный устройство ничего не делает. Начинают подавать сырье т.е. засыпать вес начинает меняться на увеличение в столбике 6 появляется значение операции 1. Значения записываются в таблицу до тех пор пока не перестанет меняться вес. как только остановили подачу сырья в емкость фиксация значений не производится. Далее открывают клапан отгрузки сырья вес начинает меняться на убывание в 6 столбике значение меняется на 0. Фиксируются показания веса на убывание. Т.е. когда происходит изменение веса вверх операция 1 если вниз 0 и при любом изменении прибор его фиксирует смотря на то какое изменение происходит поэтому и присваивает состояние операции в виде 0 и 1 . Но есть и места когда эта самая емкость просто качается от ветра в этот момент и происходит фиксирование ошибочных данных за счет смещения центра тяжести прибор понимает это как изменения. Попробую объяснить с помощью картинки. Первый файл был не очень удачный прикладываю более наглядный.Cerentiy
Function load(wbefor As Range, wafter As Range, dataw As Range, ddpr As Date, act As Range) Dim cc As Range, i&, t
Set wbefor = Intersect(wbefor.Parent.UsedRange, wbefor) Set wafter = Intersect(wafter.Parent.UsedRange, wafter) Set dataw = Intersect(dataw.Parent.UsedRange, dataw) Set act = Intersect(act.Parent.UsedRange, act)
For i = 1 To act.Count If act(i) & act(i + 1) & act(i + 2) <> "000" Then If dataw(i) = ddpr Then t = t + wafter(i) - wbefor(i) End If Next load = t End Function
[/vba]
Что-то примерно получается... Думаю точно не определить - т.к. на границе не понятно - это качнуло или ещё насыпали
Function load(wbefor As Range, wafter As Range, dataw As Range, ddpr As Date, act As Range) Dim cc As Range, i&, t
Set wbefor = Intersect(wbefor.Parent.UsedRange, wbefor) Set wafter = Intersect(wafter.Parent.UsedRange, wafter) Set dataw = Intersect(dataw.Parent.UsedRange, dataw) Set act = Intersect(act.Parent.UsedRange, act)
For i = 1 To act.Count If act(i) & act(i + 1) & act(i + 2) <> "000" Then If dataw(i) = ddpr Then t = t + wafter(i) - wbefor(i) End If Next load = t End Function
[/vba]
Что-то примерно получается... Думаю точно не определить - т.к. на границе не понятно - это качнуло или ещё насыпали Hugo
"=load(B2:B1000,C2:C1000,D2:D1000,"24.11.2011",F2:F1000)" Вставляю в ячейку ничего не происходит. Подскажите что делаю не так. Может функцию надо прописать на кириллице
"=load(B2:B1000,C2:C1000,D2:D1000,"24.11.2011",F2:F1000)" Вставляю в ячейку ничего не происходит. Подскажите что делаю не так. Может функцию надо прописать на кириллицеCerentiy
Сообщение отредактировал Cerentiy - Пятница, 15.02.2013, 12:38