Подключение через стандарты RS 485 и Ethernet. OPC Сервер.
Простое приложение для Windows. SCADA своими руками.
Имеется производственная задача: передавать показания с шести датчиков температуры, установленных на объекте А, в пункт сбора информации Б, находящийся на расстоянии двух километров.
В точке А установлены 2 шт. термо-преобразователя сопротивления "ОВЕН" 2ДТС114-РТ100 номиналом 100 Ом и 4 шт. WT-100 производства КНР дублированные со стрелочными индикаторами.
В точке Б установлен компьютер, подключенный к локальной сети, на котором запущено наше самодельное приложение, выводящее на монитор показания температуры с шести точек.
Центральным узлом нашей системы является контроллер Овен ТРМ 136 с функцией передачи информации по сети через интерфейс RS 485.
При помощи преобразователя интерфейсов RS485 в Ethernet (MOXA Nport 5130) подключаем контроллер ТРМ 136 к локальной сети. После настройки преобразователя интерфейсов MOXA Nport 5130 мы получим на компьютере в точке Б виртуальный COM порт. Таким образом, мы удалённо подключились к контроллеру, без построения отдельной линии RS 485 от точки Б к точке А.
Схема подключения контроллера к преобразователю не должна представлять сложности, т.к. имеет всего два провода.
На компьютере в точке Б устанавливаем приложение Owen OPC сервер
OPC Сервер выполняет "грязную работу" по взаимодействию компьютера с контроллером на нижнем уровне.
Далее нам необходимо научить наше самодельное приложение принимать информацию с контроллера Овен. Делать это будет возможным как раз при помощи OPC Сервера.
Скачиваем и устанавливаем библиотеку для Dephi 7 по ссылке.
При помощи библиотеки подключаемся к OPC Серверу Owen.
Теперь нам остается принять информацию и записать ее в удобное для нас место в нашем приложении Dephi 7.
Сделать это можно таким образом:
Label1.Caption:=
FloatToStr(Round(dOPCServer1.OPCGroups[0].OPCItems[3].Value));
Где Round - это округление значения.
Немного усложним задачу. Сделаем автоматическую запись значений с датчиков в электронный журнал. Запись будет производиться с определенным интервалом времени, например, каждые 10 минут.
procedure TForm.TimerTimer(Sender: TObject);//
var
myFile: TextFile;
begin
AssignFile(myFile, 'Time.txt');
Append(myFile);
Writeln(myFile, 'Дата: '+Label.Caption+' Время: '+Label.Caption+' Бочка: '+Label.Caption+' Температура: '+Label.Caption+' Бочка: '+Label.Caption+' Температура: '+Label.Caption);
Writeln(myFile, 'Дата: '+Label.Caption+' Время: '+Label.Caption+' Бочка: '+Label.Caption+' Температура: '+Label.Caption+' Бочка: '+Label.Caption+' Температура: '+Label.Caption);
Writeln(myFile, 'Дата: '+Label.Caption+' Время: '+Label.Caption+' Бочка: '+Label.Caption+' Температура: '+Label.Caption+' Бочка: '+Label.Caption+' Температура: '+Label.Caption);
Writeln(myFile);
CloseFile(myFile);
end;
Наше скромное приложение можно смело назвать SCADA.
Если у вас остались вопросы и замечания - буду ждать в комментариях, если желаете - подписывайтесь на мой канал.
Успехов!