sasha0000
17.04.2012, 21:30
Вопрос такой:
1. входное значение напряжения на входах МВ110 меняется достаточно быстро (на протяжении 1 сек)
2. необходимо записать график изменения значений в файл на ПК
3. запись необходимо производить на протяжении 5-10 минут и более
Пробовал:
1. Конфигуратор (график изменения не сохраняет )
2. Подключение ПЛК100 и опрос через МОДБАС + элемент архивирования в конфигурации (максимально 1 раз на 5 сек - медленно)
2. Подключение ПЛК100 и опрос через МОДБАС + запись в файл с помощью библиотеки SysLibFile (получается только бинарный файл - не удобно)
3. Так и не решил вопрос с экспортом в Excel
Очень прошу помочь !
Заранее благодарен !
Николаев Андрей
17.04.2012, 23:50
МВ110.
OPC ModBus. Запрос маски входов.
Exel. Знаю, что возможно получение данных из OPC в Exel, но сам никогда не делал.
Игорь Петров
18.04.2012, 13:38
1. Открываю файл с расширением '.csv'
2. Собираем в текстовую строку значения данных, разделяя их знаком ;
3. В конце строки добавляю возврат каретки '$R'.
4. Записываю строку в файл.
5. Повторяю 2-4 раз в секунду
6. Закрываю файл
7. Открываю его Excel и строю графики
Можете взять за основу мой кусок. ПЛК не Овен, но принцип аналогичный. Строка sLine формируется за несколько циклов. Вначале строки добавляется отметка даты и времени:
CASE uiState OF
0: IF bWrite THEN
(*Формируем дату*)
LineDT(dtIn := M_RTC.CDT);
sLine := UINT_TO_STRING(LineDT.uDay);
sLine := CONCAT(sLine,'-');
sLine := CONCAT(sLine, UINT_TO_STRING(LineDT.uMon));
sLine := CONCAT(sLine,'-');
sLine := CONCAT(sLine, UINT_TO_STRING(LineDT.uYear));
sLine := CONCAT(sLine,';');
sLine := CONCAT(sLine, UINT_TO_STRING(LineDT.uHr));
sLine := CONCAT(sLine,':');
sLine := CONCAT(sLine, UINT_TO_STRING(LineDT.uMin));
sLine := CONCAT(sLine,':');
sLine := CONCAT(sLine, UINT_TO_STRING(LineDT.uSec));
sLine := CONCAT(sLine,';');
uiState := 1;
END_IF
bWrite := FALSE;
1: (*Добавим данные*)
iPar := TRUNC(T_kv);
sLine := CONCAT(sLine, INT_TO_STRING(iPar));
sLine := CONCAT(sLine,',');
iPar := TRUNC((T_kv-iPar)*10);
sLine := CONCAT(sLine, INT_TO_STRING(iPar));
sLine := CONCAT(sLine,';');
iPar := TRUNC(HR_kv);
sLine := CONCAT(sLine, INT_TO_STRING(iPar));
sLine := CONCAT(sLine,',');
iPar := TRUNC((HR_kv-iPar)*10);
sLine := CONCAT(sLine, INT_TO_STRING(iPar));
sLine := CONCAT(sLine,';');
sLine := CONCAT(sLine, sComent);
sLine := CONCAT(sLine,'$R');
sComent := '';
uiState := 2;
2: IF SysFileWrite(dwHFile, ADR(sLine), LEN(sLine)) <> 0 THEN
uiLineCount := uiLineCount + 1;
ELSE
CloseFile;
END_IF
uiState := 0;
ELSE uiState := 0;
END_CASE
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot