1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Вывод данных в файл Exсel

Обсуждение вопросов, не относящихся ни к одному из других подразделов

Модератор: kirillio

Ответить

Автор темы
Diamarg
здесь недавно
здесь недавно
Сообщения: 2
Зарегистрирован: 01 дек 2016, 20:29
Имя: Гришин Александр Владимирович
Страна: Россия
город/регион: Владимир

Вывод данных в файл Exсel

Сообщение Diamarg »

Привет всем. Собственно стоит задача собирать показания счётчиков электроэнергии по модбасу и записывать их в exсel файл каждые сутки. С помощью чего это проще всего реализовать?
Аватара пользователя

Никита
почётный участник форума
почётный участник форума
Сообщения: 3899
Зарегистрирован: 20 янв 2010, 22:23
Имя: Никита
Страна: РФ
город/регион: Мурманск
Благодарил (а): 18 раз
Поблагодарили: 187 раз

Вывод данных в файл Exсel

Сообщение Никита »

Задача стоит именно так? Или Вы ее так видите? Любой приличный счетчик имеет внутри получасовые, часовые и т.п., в т.ч. и суточные архивы. Может проще читать их? Давайте подробности.
Опыт - это когда на смену вопросам: "Что? Где? Когда? Как? Почему?" приходит единственный вопрос: "Нахрена? "

Автор темы
Diamarg
здесь недавно
здесь недавно
Сообщения: 2
Зарегистрирован: 01 дек 2016, 20:29
Имя: Гришин Александр Владимирович
Страна: Россия
город/регион: Владимир

Вывод данных в файл Exсel

Сообщение Diamarg »

Возможно. Но это уже второстепенно. Главный вопрос как раз в том как это дело связать с Excel
Аватара пользователя

izhidkov
частый гость
частый гость
Сообщения: 404
Зарегистрирован: 25 фев 2016, 12:18
Имя: Жидков Игорь Алексеевич
Страна: РФ
город/регион: Королев/Фрязино
Благодарил (а): 4 раза
Поблагодарили: 12 раз

Вывод данных в файл Exсel

Сообщение izhidkov »

Diamarg писал(а): Привет всем. Собственно стоит задача собирать показания счётчиков электроэнергии по модбасу и записывать их в exсel файл каждые сутки. С помощью чего это проще всего реализовать?
Смотря сколько счетчиков, какой модбас (tcp/rs-485), на сколько надежно это должно быть и бюджет. Можно "готовую" АИСКУЭ программу купить, можно в типовой СКАДА купить и в ней сделать, а можно самому написать программу.
Компилятор - лучший друг человека!
Аватара пользователя

VADR
администратор
администратор
Сообщения: 4711
Зарегистрирован: 25 июл 2008, 07:12
Имя: Диев Александр Васильевич
Страна: Россия
город/регион: г. Сегежа, Карелия
Благодарил (а): 192 раза
Поблагодарили: 336 раз

Вывод данных в файл Exсel

Сообщение VADR »

Diamarg писал(а): Привет всем. Собственно стоит задача собирать показания счётчиков электроэнергии по модбасу и записывать их в exсel файл каждые сутки. С помощью чего это проще всего реализовать?
Проще всего - читать из opc-сервера. Прямая связка excel - modbus вряд ли существует в природе, а вот OPC-серверы для modbus существуют в количестве много больше одного :). Если количество данных небольшое (укладывается в 32 тега) - есть немало бесплатных. OPC DA базируются на майкрософтовском dcom, а значит, получить доступ из excel к ним можно. Тут есть несколько вариантов:
1. Пишется vba-скрипт внутри файла excel, сей скрипт обращается к OPC-серверу, таскает из него данные и раскладывает куда надо по ячейкам. Что здесь плохого:
- наличие нужного скрипта в файле приведёт к необходимости понижать безопасность, разрешать запуск скриптов или давать право выбора оператору (что по сути то же самое). По сути это называется "вирусы, добро пожаловать".
- запихивать это дело в шедулер не очень удобно. Вернее, совсем не удобно.
2. Пишется внешняя программа, которая по dcom общается с opc-сервером, и таким же путём - с excel. То есть - запускает excel, даёт команду открыть файл, пишет в нужную ячейку нужные данные, сохраняет, закрывает.
Что плохо здесь:
- фирма microsoft периодически меняет "правила игры", и очередной апдейт того же excel может привести с неработоспособности схемы. Причём диагностируется это крайне сложно. То же касается переноса программы на другой компьютер с другой версией excel.
3. Ставится дополнительный софт, собирающий данные с opc-сервера, хранящий у себя в базе данных и предоставляющий доступ к этим данным, к примеру, через odbc. Этот путь, на мой взгляд, наиболее прямой. В файле excel создаётся соединение с базой данных (как это делать - читайте в хелпах) и таскаются нужные данные из базы. Есть также вариант с веб-запросом. Что плохо здесь: софт такой стоит денег и иногда весьма не маленьких.

Что вообще плохо в импорте данных из OPC-серверов (вот такое у меня сегодня пессимистичное настроение :) ). Вся эта хрень (имея в виду OPC DA) работает на базе майкрософтовского dcom, всё это легко и непринуждённо можно запустить на одном компьютере. А вот если клиент и сервер находятся на разных компьютерах - начинаются пляски с бубном для настройки прав доступа. В процессе настройки придётся вспомнить большое количество самых витиеватых заклинаний из области непечатного фольклора :). Решается на сегодняшний день не очень сложно: если реализовать всё на OPC UA - эта проблема уходит. У нескольких фирм есть шлюзы OPC DA - OPC UA, позволяющие обойти эту проблему.

Как обратиться к OPC DA из excel:
http://www.bookasutp.ru/Chapter9_2_5.aspx
http://www.engineers-excel.com/Apps/OPC/Description.htm
https://www.faweb.net/us/opc/sample_excel.html
и вообще:
https://www.google.ru/search?q=excel+opc+example
Повторное использование кода не отменяет повторного использования мозга при его повторном использовании.

leon78
эксперт
эксперт
Сообщения: 1024
Зарегистрирован: 25 июл 2008, 10:06
Имя: Леонид
Страна: РФ
Благодарил (а): 27 раз
Поблагодарили: 104 раза

Вывод данных в файл Exсel

Сообщение leon78 »

VADR писал(а): Прямая связка excel - modbus вряд ли существует в природе
Если речь о Modbus RTU, то я писал такой макрос для Excel лет 10 назад, все довольно просто. Под Modbus TCP тоже примеры есть.
Примеры:
http://forums.mrplc.com/index.php?/file ... for-excel/
http://www.plcs.net/downloads/index.php ... ry=Modicon
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.
Аватара пользователя

Looker
эксперт
эксперт
Сообщения: 1105
Зарегистрирован: 09 фев 2011, 11:32
Имя: Дитрих Евгений Линусович
город/регион: Донецк
Благодарил (а): 255 раз
Поблагодарили: 184 раза

Вывод данных в файл Exсel

Сообщение Looker »

VADR писал(а): 2. Пишется внешняя программа, которая по dcom общается с opc-сервером...
и пишет текстовый файл "csv", сформированный для удобства открытия в Excel. Но, не забывать проблемы с "." и ",".
_______________________________________________
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 17471
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 749 раз
Поблагодарили: 1277 раз

Вывод данных в файл Exсel

Сообщение Jackson »

На прошлой неделе этим занимался. Нужно было читать c одного устройства по модбасу три регистра и писать их в файл Excel с меткой времени с дискретизацией 120 значений в минуту (2 значения в секунду).

Взял СКАДА без лицензии (на 3 тэга лицензия не нужна), она в течение 10 дней непрерывно делала опрос и писала данные во внутреннюю БД. Периодически делал выборку данных и сохранял в .CSV, потом открывал Exelем и анализировал. Можно было настроить разбивку БД по 1 файлу на каждый день и автоудаление файлов старше, скажем недели или месяца (чтобы место на HDD не загаживать). Можно было также писать в MySQL и потом делать запросы из Access.

Никаких OPC, никаких сторонних программ, никаких мат.затрат. Хотя программист такую готовую программу напишет за 1 рабочий день, как мне кажется.
По вопросам работы Форума можно обратиться по этим контактам.
Аватара пользователя

Никита
почётный участник форума
почётный участник форума
Сообщения: 3899
Зарегистрирован: 20 янв 2010, 22:23
Имя: Никита
Страна: РФ
город/регион: Мурманск
Благодарил (а): 18 раз
Поблагодарили: 187 раз

Вывод данных в файл Exсel

Сообщение Никита »

Хотя программист такую готовую программу напишет за 1 рабочий день, как мне кажется.
я вот даже методичку на просторах интернета нашел. Скрипт в екселе, без всяких скад. При желании и нужных познаниях можно и отдельно скомпилить и к odbc прикрутить.
Цель работы: освоение механизма взаимодействия MS Excel с ОРС сервером. Задача работы: отображение и накопление данных OPC сервера
Придется, наверное, немного подправить, ибо у майкрософта с каждой версией чего-нить новое и несовместимое.
Ну а дальше - как в старом анекдоте - "щас докурю и пойдем сдавать". Попробую завтра на работе заняться, если будет время и вдохновение.
Опыт - это когда на смену вопросам: "Что? Где? Когда? Как? Почему?" приходит единственный вопрос: "Нахрена? "
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 17471
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 749 раз
Поблагодарили: 1277 раз

Вывод данных в файл Exсel

Сообщение Jackson »

Никита писал(а): Придется, наверное, немного подправить, ибо у майкрософта с каждой версией чего-нить новое и несовместимое.
А вот написанная у нас простенькая аналогичная софинка, которая опрашивает прибор определённого типа и складывает определённые данные в ексель, работает безотказно вот уже лет 10.

Кстати одно из изменений в последних Екселях - нет возможности в явном виде открыть файл CSV - открывает как текстовый. Чтобы таки открыть, надо сначала этот CSV открыть блокнотом, скопировать содержимое, а потом вставить в ексель, и иногда еще не забыть указать что это структуированные данные с разделителем-табуляцией. 2003-й ексель открывал всё нормально - с преобразованием.
[+] еще одно "новшество" в офисе
К делу не относится, но забавно.
У меня лежит 30 однотипных документов в WORDе, в одной папке, отличаются одним-двумя страницами. Мне нужно все их распечатать по порядку (как они лежат в папке). Казалось бы, что может быть проще? Выделяем все файлы, правая кнопка, печать. Чёрта с два.
2003 офис печатал документы один за другим - открыл форд, открыл документ, послал на печать, закрыл документ, закрыл ворд, и так повторяется столько раз сколько документов. Но с 2007-го мелкософтовцы вспомнили, что виндовс - как бы многозадачная система. И теперь в этом случае одновременно наперегонки запускаются 30 копий ворда, каждая открывает свой файл и все они наперегонки шлют свои задания на печать в один и тот же поток (если на каком-нибудь этапе ОС не повиснет наглухо от такой загрузки). В результате все страницы на принтере перемешаны, сиди и сортируй вручную. Спасибо, позаботились о пользователе! Притом проблема существует уже 10 лет, и, видимо, это всех устраивает.
По вопросам работы Форума можно обратиться по этим контактам.

quq
здесь недавно
здесь недавно
Сообщения: 46
Зарегистрирован: 08 сен 2014, 08:56
Имя: Курочкин Петр Александрович
Благодарил (а): 12 раз
Поблагодарили: 6 раз

Вывод данных в файл Exсel

Сообщение quq »

TEB писал(а): еще одно "новшество" в офисе
Устройства и принтеры \Свойства Принтера\ Дополнительно\ Использовать очередь печати = начинать печать после помещения в очередь всего задания.
Не пробовали?
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 17471
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 749 раз
Поблагодарили: 1277 раз

Вывод данных в файл Exсel

Сообщение Jackson »

quq писал(а): Не пробовали?
А как думаете сами?
Это даёт то что страницы не перемешиваются внутри документа. Но сами документы печатаются хаотично. Если виндовс не повесится от 30 копий ворда, что тоже бывает нередко. Когда их 30 штук с разницей на 1 листе - что так что эдак, никакой разницы.
По вопросам работы Форума можно обратиться по этим контактам.
Аватара пользователя

Никита
почётный участник форума
почётный участник форума
Сообщения: 3899
Зарегистрирован: 20 янв 2010, 22:23
Имя: Никита
Страна: РФ
город/регион: Мурманск
Благодарил (а): 18 раз
Поблагодарили: 187 раз

Вывод данных в файл Exсel

Сообщение Никита »

Ну вот и нашлось новшество. Из VB-скрипта в 64-разрядном экселе экземпляр 32-разрядного OPC-сервера создаваться не хочет )
Опыт - это когда на смену вопросам: "Что? Где? Когда? Как? Почему?" приходит единственный вопрос: "Нахрена? "
Ответить

Вернуться в «Общие вопросы»