Ваши комментарии

Эту инструкцию я видел, но MODBUS просто нет в источниках.

Спасибо.

А можно как-то закрыть, к примеру тот же блокнот.

ExecuteApp('C:\Program Files (x86)\Notepad++\notepad++.exe', 'Indoor.html');

Или может свернуть ?

День добрый.

К примеру, значение канала равно 10

Судя по первой картинке, то да. Доступные OPC сервера, галочка стоит.

Решил добавить ещё картинок для полного понимания.

Сам сервер есть.

Как его добавить сюда?

Если создаю новый проект, то всё ок.


А как добавить в имеющийся проект? 

Спасибо.

Доброго всем дня.

Подскажите пожалуйста, что я делаю не так?

Взял пример из поста выше и пытаюсь добавить ещё пару каналов, но значения берутся всё равно из одного канала, ткните пальцем в ошибки.

Заранее спасибо.


var
  stream: TMemoryStream;
  error, error1, error2: word;
  reccount: integer;
  begindate, enddate, date: TDateTime;
  value: double;
  cellname_a, cellname_b, cellname_c, cellname_d: string;
  cellindex: word;
const
  FORMAT_CELL_NAME_A = 'A%d';
  FORMAT_CELL_NAME_B = 'B%d';
  FORMAT_CELL_NAME_C = 'C%d';
  FORMAT_CELL_NAME_D = 'D%d';
begin
  stream := TMemoryStream.Create;
  try
    // error code
    // DB_READ_OK = 0
    // DB_DATE_ERROR = 1
    // DB_MEMORY_OVERFLOW = 2
    // DB_CHANNEL_NOTFOUND = 3

    begindate := StrToDateTime('01.06.18 12:00:00');
    enddate := StrToDateTime('01.06.18 13:00:00');

    error := StreamReadFromDatabase(begindate, enddate, 'Канал 1', stream);
error1 := StreamReadFromDatabase(begindate, enddate, 'Канал 2', stream);
  error2 := StreamReadFromDatabase(begindate, enddate, 'Канал 3', stream);

    if (error = 0) and (Excel.CreateTemplate = 0) then
    begin
      // Количество записей
      reccount := GetCountRecordToStream(stream);
      cellindex := 2;

      while GetValueFromStream (stream, date, value) do
      begin
        cellname_a := Format(FORMAT_CELL_NAME_A, [cellindex]);
        cellname_b := Format(FORMAT_CELL_NAME_B, [cellindex]);
cellname_c := Format(FORMAT_CELL_NAME_C, [cellindex]);
cellname_d := Format(FORMAT_CELL_NAME_D, [cellindex]);
        Excel.Cell[cellname_a] := DateTimeToStr(date);
        Excel.Cell[cellname_b] := Value;
Excel.Cell[cellname_c] := Value;
Excel.Cell[cellname_d] := Value;

        cellindex := cellindex + 1;
      end;

      Excel.Save('C:\Proba\test.xls');
      Excel.Close;

      ShowMessage('Готово');
    end;
  finally
    stream.free;
  end;
end.




Сервис поддержки клиентов работает на платформе UserEcho