ADAM-6017 – это интеллектуальный модуль аналогового ввода, аналог ADAM-5017, который работает как самостоятельное устройство сети Ethernet. Для реализаций операций с модулем ADAM-6017 используется программный модуль Unit2. При выборе в главном меню пункта «Чтение данных модуля 6017» появляется форма, аналогичная рассмотренной для модуля ADAM-5017. Для проведения операции чтения данных модуля ADAM-6017 применяется функция ADAMTCP_Read6KAI, возвращающая код завершения операции:
function ADAMTCP_Read6KAI(szIP : PChar; wModule : Word; wID : Word;
wGain : PWord; wHex : PWord; dlValue : PDouble) : Integer; StdCall.
Функция, кроме уже известных параметров, использует следующие:
► wModule - название модуля ADAM-6017;
► wGain – указатель на код диапазона;
► wHex – указатель на шестнадцатеричное значение;
► dlValue – указатель на значение, представленное в вольтах.
Фрагмент программы, описывающий применение данной функции:
wModuleName := StrToInt(cboModuleName.Text);
wDeviceID := StrToInt(edtDeviceID.Text); {ID-адрес устройства }
//--- установка значения кода диапазона для каждого канала ---
wGain[0] := ADAMTCP_BI_10V; // значение кода для канала:0
wGain[1] := ADAMTCP_BI_10V; // значение кода для канала:1
wGain[2] := ADAMTCP_BI_10V; // значение кода для канала:2
wGain[3] := ADAMTCP_BI_10V; // значение кода для канала:3
wGain[4] := ADAMTCP_BI_10V; // значение кода для канала:4
wGain[5] := ADAMTCP_BI_10V; // значение кода для канала:5
wGain[6] := ADAMTCP_BI_10V; // значение кода для канала:6
wGain[7] := ADAMTCP_BI_10V; // значение кода для канала:7
wGain[8] := ADAMTCP_BI_10V; // среднее для каналов
iRetVal := ADAMTCP_Read6KAI(PChar(edtIPAddress.Text),
wModuleName, wDeviceID, @wGain, @wData, @fValue);
if ( iRetVal <> 0 ) then begin
ShowMessage('ADAMTCP_Read6KAI() Отказ!, Код ошибки: '
+IntToStr(iRetVal));
ADAMTCP_Disconnect();
ADAMTCP_Close();
close; end;
//--- Показ значений аналогового ввода ---
memoAIMsg.Lines.Clear();
for I := 0 to 7 do
memoAIMsg.Lines.Add('Канал: ' + IntToStr(i) + ' -> Данные: '
+ InToStr(wData[i]) + ' Значение: ' + Format('%6.3f', [fValue[i]]) );
memoAIMsg.Lines.Add('Среднее значение каналов : ' + ' -> Данные: '
+ IntToStr(wData[8]) + ' Значение: ' + Format('%6.3f', [fValue[8]]) );
Данные, считываемые по каждому каналу, выводятся в виде десятичного числа и в единицах измерения – в вольтах.
1.3. Реализация аналогового вывода модулем ADAM-5024
Модуль ADAM-5024 представляет собой 4-канальное устройство аналогового вывода, обеспечивающее цифро- аналоговое преобразование кодовых значений, выраженных в формате инженерных единиц, в аналоговые выходные сигналы. Используя сервисное программное обеспечение, пользователь может задать скорость нарастания выходного сигнала, его начальное значение и тип (ток или напряжение). Для осуществления аналогового вывода следует выбрать пункт «Запись данных в модуль 5024». В результате этого появляется форма, представленная ниже.
Значения в вольтах записываются в четыре канала модуля. Для проверки правильности работы модуля можно запустить утилиту или измерить напряжение прибором на соответствующем выходе. Реализация аналогового вывода осуществляется в программном модуле Unit 8 с помощью функции ADAMTCP_WriteReg:
function ADAMTCP_WriteReg(szIP : PChar; wID : Word; wStartAdress : Word;
wCount : Word; byData : PByte) : Integer; StdCall.
Функция использует уже известные параметры, а также следующие:
► wCount - количество каналов, используемых для вывода данных;
► byData - указатель на выводимые значения.
Приведем фрагмент программы, использующий функцию:
//--- Запись данных в регистр ---
wDeviceID := StrToInt(edtID.Text);
wStartAddress := StrToInt(edtStartAddress.Text);
wCount := StrToInt(edtCount.Text);
if ( (wCount < 1) or (wCount > 64) ) then begin
ShowMessage('Количество каналов должно быть от 1 до 64');
ADAMTCP_Disconnect();
ADAMTCP_Close();
close();
end;
for i := 0 to wCount - 1 do
wData[i] := StrToInt('$'+(FindComponent('edtData' + IntToStr(i)) As TEdit).Text);
iRetVal := ADAMTCP_WriteReg(PChar(edtIPAddress.Text), wDeviceID,
wStartAddress, wCount, @wData);
1.4. Организация взаимодействия модулей ADAM-5024 и ADAM-5017
Между модулями аналогового ввода и вывода можно осуществить взаимодействие, которое позволит провести передачу данных из одного устройства в другое. Для этого следует соединить один из каналов модуля ADAM-5024, например третий, с любым свободным каналом модуля ADAM-5017, например с седьмым. Организация взаимодействия между модулями осуществляется в программном модуле Unit11, форма которого приведена на рисунке ниже. Для записи и чтения данных используются уже знакомые нам функции ADAMTCP_WriteReg и ADAMTCP_ReadReg. Моделируемое напряжение на выходе канала (на форме слева) поступит на вход ADAM-5017 и отобразится в окне «Значения» справа после нажатия кнопки «Чтение».
2. Организация цифрового ввода/вывода
2.1. Реализация цифрового ввода модулем ADAM-5055S
Модуль ADAM-5055S имеет 16 каналов дискретного ввода/вывода. Каждый его канал может быть независимо сконфигурирован как входной или выходной с помощью DIP-переключателя, расположенного на плате устройства. Выходные каскады каналов выполнены в виде транзисторных ключей по схеме с открытым коллектором, обеспечивающих непосредственное управление маломощной нагрузкой. Входные каналы модуля ADAM-5055S могут быть использованы для контроля состояния концевых выключателей или датчиков приближения, а также для приема других дискретных сигналов.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.