Последовательный синхронный интерфейс (SSI)

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

В этом случае решить проблему может применение синхронно-последовательного интерфейса ( SSI ). В этом методе передачи данных для подключения каждого датчика необходимо лишь две витых пары, т.е. одна для тактового сигнала и вторая для сигнала данных. Для подключения питания требуется (так же как и для параллельного интерфейса) два провода. Специальные дифференциальные драйверы для RS 422/485, которые вырабатывают симметричный выходной сигнал, позволяют передавать сигнал на расстояние до 1200 метров при скорости передачи до 10 Mbit /сек. Это является, для большинства случаев применения, достаточным. Максимальная скорость передачи зависит от длины кабеля.


Рис.1 Принцип работы SSI - интерфейса

При этом виде интерфейса данные о позиционном положении оси датчика передаются синхронно с принятым сигналом такта (CLOCK) от системы управления. В состоянии покоя уровень сигнала как на тактовом проводе так и на проводе данных равен 1 ( High ). Как только тактовый сигнал в первый раз в начале каждой тактовой посылки поменяет свой уровень от высокого на низкий находящиеся внутри датчика бит-параллельные данные в параллельно-последовательном преобразователе Input - Latch сдвигового регистра по внутрисхеммно выработанному сигналу (Sload = Shift Load) "замораживаются". Этим достигается, что данные во время последовательной передачи позиционного значения больше не изменяются. Со следующим перепадом от низкого уровня на высокий начинается передача позиционного значения причем начиная со старшего (MSB) бита. С каждым последующим перепадом с низкого на высокий уровень передается следующий более младший бит информации. После передачи последнего, т.е. самого младшего (LSB) бита с последним перепадом тактового сигнала от низкого уровня на высокий выход данных устанавливается в Low (конец передачи).


Рис.2 Принцип SSI-передачи

Встроенный одновибратор настроенный на частоту tm определяет время после последнего нарастающего фронта тактового сигнала по истечению которого датчик снова готов для следующей передачи. Этoму времени (tm) равно так же минимальное время между двумя друг за другом следующими тактовыми посылками.

tp < 20 µs tm > 20µs t < tm

Существует два способа передачи позиционного значения: однократный и многократный. Для передачи позиционного значения на тактовый вход датчика (CLOCK) должно быть подано определенное число (n) тактовых импульсов. Для однократной передачи это число содержит n =13 для варианта исполнения Singleturn и n =25 для Multiturn . Многократная передача позиционного значения достигается путем удвоения (или умножения) количества тактовых импульсов т.е. числа n .

Нужно так же всегда учитывать необходимость прибавления n +1=14 тактов для Singleturn - или n +1=26 тактов для Multiturn -исполнения.

Последний перепад от "L" на "H" тактового сигнала одной, например, 26-тактовой-посылки сопровождается выдачей на выходе данных (DATA) L -сигнала. Этот сигнал и является информацией для разделения друг за другом следующих двухкратных (или многократных) тактовых посылок (см. рис. ниже).


Рис.3 Типичное электическое подключение энкодера с SSI-интерфейсом


Рис.4 Описание протокола обмена SSI-интерфейса

В режиме ожидания, т.е. когда энкодер не опрашивается, сигнал на проводе "Clock+" (относительно "Clock+") положительный (High). С первым спадом сигнала с High на Low данные в датчике "замораживаются", т.е. энкодер подготавливается к передаче. С последующим фронтом сигнала (с Low на High) начинается передача данных, причем старшим битом (разрядом) вперед. Для надежного приема информации (учитывая емкостные задержки в линии связи) желательно, чтобы мастер (процессор) считывал бит с последующим спадом сигнала с High на Low. Таким образом, последовательность действий мастера следующая (на примере приема первых двух бит информации):

1. На провод "Clock+" подать уровень Low.
2. Задержка // для обеспечения необходимой частоты такта (100kHz-1mHz).
3. На провод "Clock+" подать уровень High.
4. Задержка //
5. На провод "Clock+" подать уровень Low.
6. Опросить провод Data (Low или High?), записать первый бит информации.
7. Задержка //
8. На провод "Clock+" подать уровень High.
9. Задержка //
10. На провод "Clock+" подать уровень Low.
11. Опросить провод Data (Low или High?), записать второй бит информации.
и т.д. начиная с пункта 6.

Для опроса сенсора мастеру необходимо генерировать тактов на один больше чем разрешение датчика, т.е. для случая разрешения энкодера 24 бита надо подать 24+1 = 25 тактов.

Тактовая частота может составлять 100кгц - 1мгц. Время между тактовыми посылками должна составлять более 15мкс. После последнего переданного бита датчик передает Low-сигнал в течении около 15мкс, что для мастера может означать конец передачи данных. Таким образом, следующая тактовая посылка от мастера должна прийти по истечении этого (15мкс) времени. Если такт придет раньше, то датчик начнет повторять передачу данных с самого начала, т.е. старые, не актуализированные данные. Таким образом, можно использовать этот режим (передавая, например, 24+1 тактов вместо 12+1) для контроля достоверности переданных данных, сравнивая принятые данные между собой. Лишь по истечении 15мкс данные внутри датчика (в выходных сдвиговых регистрах) актуализируются.

Для связи мастера с датчиком на большом расстоянии и/или в условиях больших помех необходимо использовать Line Driver, например, типа 65176.

Перекодировка с Gray-code в Binary может осуществляться, например, с помощью логических элементов "исключающее или".

Несколько слов о RS-485:

Входные и выходные параметры датчика соответствуют стандарту RS-485. Т.е сигнал на выходе управляющего устройства (Takt-, Takt+) можно формировать с помощью вышеуказанного Line Driver, например, типа 65176.

В случае необходимости энкодер можно также подключить по упрощенной схеме:

1. Вход датчика "Takt-" подключить на массу.
2. На вход "Takt+" подавать тактовый сигнал (Low=0V, High=5V)

Выход датчика, т.е. выводы "Data+", "Data-" выдают сигнал в противофазе друг другу (RS-485) и разница потенциала между ними составляет около 7V. На эти два выхода можно подключить, например, оптопару (например, photocoupler TLP113), которая будет на своем выходе обеспечивать к TTL уровни. Подав тактовый сигнал (Takt-, Takt+) к датчику можно осциллографом наблюдать сигнал на выходе датчика (Data+, Data-) и, таким образом, подобрать удобный Вам вариант подключения. Обратите внимание на то, что один выход (например, "Data-" на массу подключать не рекомендуется. Сигнал можно однако снимать относительно массы датчика и "Data+". При этом "Data-" остается не подключенным. Амплитуда сигнала при этом будет составлять примерно от 1V до 3,5V.

При упрощенном способе подключения, т.е. не по стандарту RS-485, необходимo учитывать низкую помехозащищенность линии связи между датчиком и устройством управления.

На всякий случай еще раз код Битрикса: