1. Введение

В следующих разделах показаны контакты, параметры и функции, предоставляемые "стандартными устройствами". Все драйверы устройств HAL должны предоставлять одни и те же контакты и параметры и реализовывать одинаковое поведение.

Обратите внимание, что для канонического устройства определены только поля _<io-type>_ и _<specific-name>_. Поля _<device-name>, _<device-num>_, и _<chan-num>_ устанавливаются на основе характеристик реального устройства.

2. Цифровой вход

Стандартный цифровой ввод (поле типа ввода-вывода: digin) довольно прост.

2.1. Контакты

(bit) in

Состояние аппаратного входа.

(bit) in-not

Инвертированное состояние входа.

2.2. Параметры

Нет

2.3. Функции

(funct) read

Считайте оборудование и установите контакты HAL in и in-not.

3. Цифровой выход

Стандартный цифровой выход (поле типа ввода-вывода: digout) также очень прост.

3.1. Контакты

(bit) out

Значение, которое будет записано (возможно, инвертировано) на аппаратный выход.

3.2. Параметры

(bit) invert

Если TRUE, out инвертируется перед записью в оборудование.

3.3. Функции

(funct) write

Считайте out и invert и соответствующим образом настройте аппаратный выход.

4. Аналоговый вход

Стандартный аналоговый вход (тип ввода-вывода: adcin). Ожидается, что это будет использоваться для аналого-цифровых преобразователей, которые преобразуют, например, напряжение в непрерывном диапазоне значений.

4.1. Контакты

(float) value

Аппаратные показания, масштабированные в соответствии с параметрами scale и offset.
value = ((входное значение, в аппаратно-зависимых единицах) * scale) - offset

4.2. Параметры

(float) scale

Входное напряжение (или ток) будет умножено на scale перед выводом в value.

(float) offset

Оно будет вычтено из входного напряжения (или тока) оборудования после применения масштабного множителя.

(float) bit_weight

Значение одного младшего бита (LSB). Фактически это степень детализации входных данных.

(float) hw_offset

Значение, присутствующее на входе, когда на входные контакт(ы) подается напряжение 0 В.

4.3. Функции

(funct) read

Считайте значения этого аналогового входного канала. Это может использоваться для считывания отдельных каналов или может привести к считыванию всех каналов.

5. Аналоговый выход

Стандартный аналоговый выход (Тип ввода-вывода: adcout). Это предназначено для любого типа оборудования, которое может выводить более или менее непрерывный диапазон значений. Примерами являются цифро-аналоговые преобразователи или генераторы ШИМ.

5.1. Контакты

(float) value

Значение, которое необходимо записать. Фактическое значение, выводимое на оборудование, будет зависеть от параметров масштаба и смещения.

(bit) enable

Если false, то выводится 0 на оборудование, независимо от вывода value.

5.2. Параметры

(float) offset

Это будет добавлено к value перед обновлением оборудования.

(float) scale

Это значение должно быть установлено таким образом, чтобы вход 1 на контакте value приводил к тому, что на выводе аналогового контакта появлялся 1 вольт.

(float) high_limit (optional)

Если при вычислении значения для вывода на оборудование value + offset больше, чем high_limit, то вместо него будет использоваться high_limit.

(float) low_limit (опционально)

Если при вычислении значения для вывода на оборудование value + offset меньше low_limit, то вместо него будет использоваться low_limit.

(float) bit_weight (опционально)

Значение одного младшего бита (LSB) в вольтах (или мА для токовых выходов).

(float) hw_offset (опционально)

Фактическое напряжение (или ток), которое будет выводиться, если в аппаратуру записано 0.

5.3. Функции

(funct) write

Это приводит к выводу вычисленного значения на оборудование. Если enable имеет значение false, то на выходе будет 0, независимо от value, scale и offset. Значение "0" зависит от аппаратуры. Например, биполярному 12-битному АЦП может потребоваться записать 0x1FF (средняя шкала) в ЦАП, чтобы получить 0 Вольт на контакте оборудования. Если enable в true, считываются масштаб, смещение и значение и выводит их на АЦП (scale * value) + offset. Если enable в false, тогда выводится 0.