Ощим дальше больше. Написал ТЗ, выкладываю на обозрение  

  может кто что подскажет 
 
Распиновка.
 	В mesa0 configure-board	 	 
GPIO-48 Физические концы осей   	 Все пределы	 	 
GPIO-49 Пуансон разжат  	 	 	 
GPIO-50 Датчик Y    	 	 	 
GPIO-51 Матрица фиксирована   	 	 	 
GPIO-52 Датчик Х   	 	 	 
GPIO-53 Матрица разжата   	 	 	 
GPIO-54 Пуансон фиксирован   	 	 	 
GPIO-55 Датчик Z   	 	 	 
GPIO-56 бойница левая на изготове  	 	 	 
GPIO-57 Кнопка зажим (разжим)  	 	 	 
GPIO-58 бойница правая на изготове  	 	 	 
GPIO-59 пневмозажим дальний  	 	 	 
GPIO-60 шток нуля листа  	 	 	 
GPIO-61 пневмозажим ближний  	 	 	 
GPIO-62 кнопка СТОП  	 	 	 
GPIO-63 датчик колена   	 	 	 
 	 	 	 
OUT-64 главный двигатель	 	 	 
OUT-65 левая бойница пуск	 	 	 
OUT-66 правая бойница пуск	 	 	 
OUT-67 захват листа	 	 	 
OUT-68 зажим разжим матрицы	 	 	 
OUT-69 перехват зажим	 	 	 
Алгоритм работы пресса.
У пресса есть 2 точки удара, правая и левая.  На чертеже ползун 1 и ползун 2
 
Вопрос стоит в том, что стоит ли под каждую делать свою систему координат? Например в g54 работает ползун 1 а в g55 ползун 2. На мой взгляд удобно, хотя к нашему делу задания особого не имеет. 
Мне нужно сконфигурировать правильно сигналы вот в этой таблице: 
 
Если с пределами все понятно, то как быть с техническими сигналами типа: матрица зажата или разжата, чем их указывать? 
Еще надо присвоить всем OUT некие M коды что бы можно было ими управлять. Я присвою гипотетически 
OUT-64 главный двигатель  M3-M5 вкл выкл
OUT-65 левая бойница пуск M6-M7 вкл выкл
OUT-66 правая бойница пуск M8-M9 вкл выкл
OUT-67 захват листа M10-M11 вкл выкл
OUT-68 зажим разжим матрицы M12-M13 вкл Вкл
OUT-69 перехват зажим M14-M15 Вкл выкл
Работа
Если нажимается кнопка выполнения работы, то: 
1)	Проверяем фиксирована ли матрица GPIO-51
2)	Фиксирован пуансон GPIO-54
3)	Ползун1 на изготове GPIO-56
4)	Ползун2 на изготове GPIO-58
5)	Пневмозажимы перехвата GPIO-59 и GPIO-61 не подают сигнала
6)	Кнопка стоп GPIO-62 отпущена
7)	Шток нуля листа опущен GPIO-60
8)	Матрица и пуансон зажаты OUT-68 вкл
9)	Лист захвачен OUT-67 вкл.
После проверки запускаем главный двигатель и ждем 5 секунд на раскрутку за тем приступаем к выполнению кода.
Вида: 
M3s700 //включить главный двигатель и ожидать 5 секунд
T1 // установить инструмент №1
G54G0x100y100 //идем по координатам ползуна1
m6 //удар ползуном1
G54G0x200y200 //идем по координатам ползуна1
m6 //удар ползуна1
G55G0x100y100 //идем по координатам ползуна2
M8 //удар ползуна2
G55G0x200y200 //идем по координатам ползуна2
M8  //удар ползуна2
T2 //смена инструмента №2
G54G0x150y150 //идем по координатам ползуна1
m6//удар ползуна1
G54G0x250y250//идем по координатам ползуна1
m6//удар ползуна1
G55G0x150y150//идем по координатам ползуна2
M8//удар ползуна2
G55G0x250y250//идем по координатам ползуна2
M8 //удар ползуна2
M14 //включаем зажим листа для перехвата 
M11 //отпускаем захват листа
G54x400 //отбегаем для перехвата
G92g54x0 //обнуляем координаты
M10 // захватываем лист
M15 //отпускаем зажим перехвата
Продолжаем программу 
Смена Инструмента
Я ни разу не реализовывал смену инструмента, потому постараюсь объяснить как я вижу. У каждого инструмента есть своя позиция, она в ротации 360”. Не уверен, как это реализовывается точно, но по всей видимости заданием координат по Z и после приращением на заданную величину. Пример полный оборот барабана имеет условно 360000 точек на энкодере, предположим, что каждый инструмент равно удален друг от друга и их 36 штук. Значит на смену инструмента в 1 сторону требуется 10000 точек, соответственно первый инструмент имеет координату 0, второй 10000 третий 20000 и тд. После оборота первый инструмент будет иметь координату 370000 (так ли это реализовывается?) Или требуется возврат в 0. 
Алгоритм смены инструмента: T коды
При получении команды на смену инструмента Посылается сигнал на OUT-68 разжим матрицы и  пуансона. Если GPIO-49 и GPIO-53 подают сигнал вкл о разжатии матрицы значит поворачиваем Z до нужного значения и выключаем OUT-68. После этого проверяем, что датчики GPIO-51 и GPIO-54 подали сигнал вкл о фиксации можем продолжать программу.
Алгоритм OUT-69 перехват зажим M14-M15 
Если подан сигнал M14 то включаем выход OUT-69 и контролируем что бы GPIO-61 и GPIO-59 выдали сигнал вкл, после этого можем продолжать. При М15 ситуация точно противоположенная GPIO-61 и GPIO-59 не выдают сигнала.
Алгоритм Удара любой из бойниц.
Если поступил сигнал M6 считываем датчик GPIO-58 и если он вкл то дожидаемся сигнала от датчика GPIO-63 по его верхнему фронту запускаем таймер (Т1) и ждем 0,1 секунды, после этого выдаем сигнал на OUT-65 и ставим его на самопитание. По верхнему фронту OUT-65 запускается таймер (Т2) на 0.2 секунды и снимаем OUT-65 с самопитания, после этого ждем сигнал от GPIO-58 и по его верхнему фронту понимаем что цикл закончен.
Такой же алгоритм для левой бойницы только датчик один другой и таймера другие. 
Если поступил сигнал M8 считываем датчик GPIO-56 и если он вкл то дожидаемся сигнала от датчика GPIO-63 по его верхнему фронту запускаем таймер (Т3) и ждем 0,15 секунды, после этого выдаем сигнал на OUT-66 и ставим его на самопитание. По верхнему фронту OUT-65 запускается таймер (Т4) на 0.25 секунды и снимаем OUT-65 с самопитания, после этого ждем сигнал от GPIO-56 и по его верхнему фронту понимаем что цикл закончен.
 Запрещено перемещать оси X и Y если: 
1)	GPIO-49 вкл
2)	GPIO-53 вкл
3)	GPIO-56 выкл
4)	GPIO-58 выкл
5)	GPIO-60 вкл
6)	GPIO-62 вкл
Запрещено перемещять ось Z если: 
1)	GPIO-54 вкл
2)	GPIO-51 вкл
Алгоритм Зажатия листа: 
При нажатии кнопки GPIO-57 подается питание на OUT-67 и он встает на самопитание до повторного нажатия GPIO-57
Вроде все. ))))