Пины и сигналы hal

Материал из cnc-club
Перейти к навигации Перейти к поиску

Все данные в hal передаются при помощи пинов и сигналов. Все общение компонентов происходит при помощи пинов.

Пины

Пины делятся на пины in (в которые можно писать) и out (из которых можно читать). Также пины бывают разных типов данных:

  • BIT - или 1 или 0
  • FLOAT - число с плавующей запятой.
  • S32 - целое число от -2147483648 до 2147483647
  • U32 - положительное (беззнаковое) целое число от 0 до 4294967295

Сигналы

Сигналы нужны для соединения пинов между собой. Как только пины соединены сигналом, при изменении пина out, меняются значения всех пинов in присоединеных к этому сигналу.

Правила соединения пинов и сигналов hal

  • Сигнал принимает значение пина out, и передает его пинам in.
Signal.png
  • Любой пин может быть подключен только к 1 сигналу.
2signal.png
  • К одному сигналу можно подключить только один пин out (в противном случае будет не ясно из какого пина брать значение для сигнала).
2-out.png
  • К одному сигналу может быть подключено несколько пинов in.
Signal.png


Если надо соединить два пина типа out - то нужно использовать дополнительные компоненты, например компонент and2.

And2.png

Команда net

Пины соединяются при помощи команды net. Синтаксис:

net название_сигнала пин [пин [пин] [...]]]

Для удобства чтения могут применяться знаки => <= <=> но они не несут никакой функциональной нагрузки! Обычно этими значками показывается куда распространяется сигнал:

net home <= parport.0.pin-in => axis.0.home-sw

Можно записывать пины как в одной строке, так и в разных командах net:

net home <= parport.0.pin-in
net home => axis.0.home-sw

Пример команды:

Net.png



Оригинал картинок