1. Введение
В следующих разделах показаны контакты, параметры и функции, предоставляемые "стандартными устройствами". Все драйверы устройств HAL должны предоставлять одни и те же контакты и параметры и реализовывать одинаковое поведение.
Обратите внимание, что для канонического устройства определены только поля _<io-type>_
и _<specific-name>_
. Поля _<device-name>
, _<device-num>_
, и _<chan-num>_
устанавливаются на основе характеристик реального устройства.
2. Digital Input
Стандартный цифровой ввод (поле типа ввода-вывода: digin
) довольно прост.
2.1. Контакты
- (bit) in
-
Состояние аппаратного входа.
- (bit) in-not
-
Инвертированное состояние входа.
2.2. Параметры
Нет
2.3. Функции
- (funct) read
-
Считайте оборудование и установите контакты HAL
in
иin-not
.
3. Digital Output
Стандартный цифровой выход (поле типа ввода-вывода: digout
) также очень прост.
3.1. Контакты
- (bit) out
-
Значение, которое будет записано (возможно, инвертировано) на аппаратный выход.
3.2. Параметры
- (bit) invert
-
Если TRUE, out инвертируется перед записью в оборудование.
3.3. Функции
- (funct) write
-
Считайте out и invert и соответствующим образом настройте аппаратный выход.
4. Analog Input
Стандартный аналоговый вход (тип ввода-вывода: 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. Analog Output
Стандартный аналоговый выход (Тип ввода-вывода: 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.