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.