TCOM5 Open_yyy. Функция инициализации
TCOM5 zCompare_yyy. Функция сравнения
TCOM5 Set_yyy. Функция формирования посылаемого сообщения
TCOM5 Check_yyy. Функция проверки
TCOM5 Get_yyy. Функция расшифровки принятого сообщения
TCOM5 Close_yyy. Функция завершения обмена
МРВ вызывает из модуля t12s<N>.dll шесть функций.
TCOM5 Open_yyy. Функция инициализации
Эта функция вызывается при инициализации работы МРВ с драйвером. В ней можно прописать операции для установки начальных условий для обмена данными. В отличие от функции Prepare_xxx драйвера t11, функция Open_yyy всегда формирует блоковые запросы.
int Open_yyy(int &media, char *str, int &q_in, int &q_out, int &q_data); |
где
media – номер драйвера;
str – строка, содержащая название протокола (не более 31 байта). Передается из драйвера МРВ. Профайлер пишет эту строку в свой протокол;
q_in – размер буфера rbuf для приема данных;
q_out – размер буфера sbuf для передачи данных;
q_data – максимальное количество структур RSDATA (т.е., максимальное количество каналов в групповом запросе; указатель p на массив структур RSDATA, передаваемый в функции Set_yyy и Get_yyy, будет указывать на массив из q_data элементов.).
Возвращаемое функцией значение, равное 0, свидетельствует о нормальном ее выполнении. Отличие возвращаемого значения от 0 воспринимается как ошибочное завершение. В этом случае каналы с соответствующим дополнением к подтипу отключаются.
TCOM5 zCompare_yyy. Функция сравнения
Эта функция используется при формировании и расшифровке блоковых запросов.
int zCompare_yyy(IA &ia0, IA &ia1, int &count); |
где
ia0 – удаленный адрес первого канала;
ia1 – удаленный адрес сравниваемого канала;
count – число каналов, уже находящихся в блоке, минус один при формировании блоковых запросов или смещение канала относительно начала блока при расшифровке запроса. Этот параметр формируется МРВ и передается в драйвер. По нему можно вносить ограничение на добавление новых элементов в блоковый запрос. Для алгоритма DATA12 этот параметр равен индексу элемента в структуре RSDATA, содержащего значение для записи в канал.
Если возвращаемое данной функцией значение больше 0, то канал принадлежит к данному запросу; если при этом осуществляется обработка группового запроса по алгоритму BLOCKDATA12, возвращаемое значение на 1 больше индекса размещения данных в структуре RSDATA,
Если возвращаемое данной функцией значение равно 0, то анализируемый канал не попадает в данный запрос.
TCOM5 Set_yyy. Функция формирования посылаемого сообщения
Эта функция вызывается МРВ при пересчете значений канала, связанного с драйвером.
int Set_yyy(IA &ia, int &max_send, int &max_rec, RSDATA *p, char *sbuf); |
где
ia – удаленный адрес канала (передается в драйвер);
max_send – количество байтов для посылки (формируется в драйвере);
max_rec – количество байтов в ответе (формируется в драйвере);
p – указатель на массив структур RSDATA, содержащий данные и их форматы. Этот параметр требуется, если канал имеет тип OUTPUT, – в этом случае элемент 0 массива содержит значение для записи в контроллер.
Если канал типа OUTPUT, то
p[0].F.fmt[3]=1;
для данных в формате FLOAT:
p[0].V.v – посылаемое значение,
p[0].F.fmt[0]=0;
для данных в формате HEX:
p[0].V.i[0] – посылаемое значение,
p[0].F.fmt[0]=0x40.
Тип значения (HEX или FLOAT), посылаемого из канала в устройство, не связан с типом канала, который пользователь указал а редакторе базы каналов. p[0].F.fmt[0] нужен только для корректной интерпретации p[0].V внутри драйвера.
Если канал типа INPUT, то
p[0].F.fmt[3]=0.
sbuf – буфер для посылки (формируется в драйвере).
Данная функция вызывается для формирования сообщений, посылаемых с использованием соответствующего носителя в устройство. Сформированное сообщение должно быть размещено в буфере sbuf.
Отличное от 0 значение, возвращаемое функцией, свидетельствует об ошибке ее выполнения.
С помощью функции Set_yyy можно установить значение каналу, обратившемуся к драйверу. Если эта функция возвращает max_send=max_rec=[младший байт буфера sbuf]=0, то МРВ присваивает каналу значение, взятое из первого элемента массива структур RSDATA.
TCOM5 Check_yyy. Функция проверки
Эта функция вызывается после приема ответа от контроллера перед функцией расшифровки полученных данных. Ее назначение - проверить корректность полученного ответа. Она имеет следующий формат:
int Check_yyy(IA &ia, int &count_rec, int &max_rec, char *rbuf); |
где
ia – удаленный адрес канала (передается в драйвер);
count_rec – число принятых байтов (передается в драйвер);
max_rec – количество байтов в ответе (передается драйверу и формируется в нем);
rbuf – буфер, содержащий принятое сообщение (передается драйверу и формируется в нем).
Если возвращаемое функцией значение равно 0, то принятые данные считаются корректными и осуществляется вызов функции расшифровки принятого сообщения (Get_yyy).
TCOM5 Get_yyy. Функция расшифровки принятого сообщения
Эта функция вызывается для расшифровки полученного ответа от устройства. Она имеет следующий формат:
int Get_yyy(IA &ia, int &count_rec, int &q_rec, RSDATA *p, char *rbuf, int &type_cnv); |
где
ia – удаленный адрес канала (передается в драйвер);
count_rec – число принятых символов (передается в драйвер);
q_rec – число посылаемых или запрашиваемых значений (передается в драйвер, может быть изменено);
p – указатель на массив структур RSDATA, содержащий данные и их форматы;
rbuf – буфер, содержащий принятое сообщение (передается в драйвер);
type_cnv – тип разборки принятых данных, формируется в драйвере (см. ниже):
Возвращаемое данной функцией значение, большее 0, означает ошибку в данных. При этом соответствующему каналу устанавливается признак аппаратной недостоверности.
TCOM5 Close_yyy. Функция завершения обмена
Эта функция не имеет параметров. Она вызывается при завершении работы МРВ и имеет следующий формат:
int Close_yyy(); |