Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Не детский ЧПУ, поселюсь тут )


Не детский ЧПУ, поселюсь тут )

Сообщений 31 страница 60 из 80

31

а пилить-то когда ужо будет? %)

0

32

Да там ещё конь не валялся ))) Ещё надо писать работу всех кнопок, нужно создать разные режимы и т.д. Генеральный директор дал срок до конца месяца, это просто жесть.

0

33

А что он будет делать, если этот "хлам" не заработает? )

0

34

RDW написал(а):

"хлам" не заработает? )

Как это так?  Этого не может быть :canthearyou:  Оно должно работать  :yep:

0

35

Я имел ввиду то, что пока оно стоит ржавеет/не работает - это хлам. Ведь ДО этого момента кто-то довел, что оборудование неработоспособное или было закуплено таким (за меньшие деньги).
И вы же не "господь бог", чтобы 100% вероятностью дать гарантию, что успеете в срок, т.к. не все за висит от вас, может не быть комплектующих, долго доставляться...да уйма факторов.

0

36

Станок свой, стоял больше 2х лет, ещё такие два работали по соседству. Так, как починить его никому не удавалось, свалили его на меня.
В мае месяце я в нём успел поковыряться, выгорело у него и блок управления двигателями и сам ЧПУ. Блок управления не спеша успел восстановить, но блок ЧПУ восстанавливать было без смысленно, да хотя-бы потому, что уже кинеском сел, конденсаторы высохли да и как-то много в нём было микросхем с стеклянным иллюминатором, до кучи схемы на блок TNC-150 нигде небыло.

Пригласили компанию, которая модернизирует такие станки, так те захотели 960т.р., но за 500т.р. рабочий :suspicious: можно взять на Avito 
Предложил им попробовать самим модернизировать всё. Выделили 160т.р. + 30т.р. ну и всё, еб**ь как хочешь  :insane:
Так, как у нас ещё два таких станка, то любая стоимость железяки умножается на 3.
К примеру у станка есть три оптические измирительные линейки + 1 угловой оптический измеритель. Линейка новая стоит в среднем 25-45т.р., а старые на лампочках в принципе рабочие были. Пришлось чистить и уделывать  старые, чтоб с экономить 100 000р. х 3 станка.
http://cs625226.vk.me/v625226961/409a1/OlBuHOpHGp8.jpg
http://www.chipmaker.ru/uploads/monthly_11_2015/gallery/image/gallery_118062_3960_1484266.jpg
http://www.chipmaker.ru/uploads/monthly_11_2015/gallery/image/gallery_118062_3960_2237963.jpg

Менять моторы? Старые моторы постоянного тока и из блок управления вполне работоспособны, восстановил и проверил, работает.

Блин, меня ща понесёт. Думаю достаточно будет для ответа то, что месяц назад + 11 дней я вообще в глаза не видел новую систему ЧПУ, вообще ничего не знал, блок приводов починил в середине месяца, а измерители подключил и настроил под конец месяца, за 5 дней составил программу выхода в ноль и теперь вот заканчиваю устройство переключения коробки передач по аналоговому сигналу.
Можно сказать я взялся за этот проект без знаний, малый процент уверенности подтверждает её наличие  :D

0

37

Ну так начальник на вас молиться должен, пряниками кормить, а не грозить сроками!

0

38

Они просто не осознают всю сложность этого проекта, для одно это "выделил деньги, купили штуку, должно работать", а другие вообще не понимают, что нужная концентрация.
Я сегодня записывал время с 8.00 до 11.30, когда ко мне заходили и отвлекали, ну как можно сосредоточится?
8.35
8.45
9.03
9.04
9.15
9.24
9.29
9.46 телефон
9.50 захотел кофе
9.56
10.40
10.48 и 11.10 мама звонит )

Собственно вот, чего-то наколхозил. Дома делал куда более лёгкие алгоритмы, а тут аж 10кб. Баском скомпилировал:

+1

39

Час с лишним убил на глюки, а после допёрло, что я переборщил с PRINT "дофига текста"
Всё же получилось:

На видео алгоритм добивается нужного результата, там несколько раз коробка передач не могла переключиться, так он её чуток проворачивал, ну и перепроверяет до пуска шпинделя. На этот раз заснял на камеру начальника, видимо он подсматривает где-то мои видосы и камеру тут подкинул ))))
Ещё немного и с коробкой передач можно по душам разговаривать ))))

+1

40

$framesize увеличивайте, оно влияет на операции с строками (включая print).
Я когда хочу сильно по экономить память МК, вообще в print текст кидаю по 1 букве (из data) и клею на лету данные.

0

41

Спасибо за информацию!
А сторожевой таймер как работает? Его по прерыванию надо или просто в программе можно к примеру раз в 100мс. сбрасывать?

0

42

Обычно надо самому его сбрасывать в программе (как бы в этом смысл).

0

43

Уже через АЦП управляю, ничего так получилось. ЧПУ выдаёт от -10 до +10 в. В минусе в одну сторону, в плюсе в другую.

+2

44

Крута!

А на ходу коробку переключать нельзя?

0

45

RDW написал(а):

... ходу коробку переключать....

Не, нельзя, там такой шум будет стаять, всё сломает.  Для этого производители предусмотрели датчик наличия вращения. У меня как-то в начале переключилась передача на останавливающемся шпинделе, я думал ща взорвётся и разлетится.

0

46

Меняй на коробку от авто! :D

0

47

Если бы, на этой чудо-коробке можно выжить 18 комбинаций + нейтральная передача, я лучше её в авто поставлю, чем наоборот  :crazy:

0

48

Блин, ну я и лохонулся  :surprise:
Поставил диодный мост + 1 диод, чтоб по двум АЦП знать реверс.
Типа на диодный мост подаётся ±10в., если в положительную, то сигнал приходит на два АЦП, если в отрицательную, то на одно АЦП.
На практике получил какуе-то шнягу  :blush: Нет плюса, но минус есть!!! В голове не укладывается никак, как вообще такое возможно?
Ну если я регистрирую  минус, то плюс не регистрирую по отношению к минусу.
Чтоб разобраться в этой аномалии, нужен литр Ц2Ш5ОШ :hobo: но от него проявляются побочные явления, как быть?
http://s3.uploads.ru/t/CwJ4M.jpg

0

49

https://upload.wikimedia.org/wikipedia/en/1/1f/Diode_bridge.gif

0

50

Не работает по такому принципу, разобрался, гальванической развязки нет, это усложнило.

Отредактировано Ev3658 (2015-12-16 17:43:27)

0

51

А в чём анимация из 49 поста сделана?

0

52

Я в инете нашел. ;)

0

53

Во, работает, управление через АЦП:

+1

54

Красота какая, всё уже сделали или что-то осталось?

0

55

RDW написал(а):

... что-то осталось?

Есть тут одно, нужно теперь как-то вычислить скорости и привязать их к аналоговому сигналу, так-то блок готов, умный получился  8-)
Есть ещё одна задумка, но время не найду. Блок ЧПУ обменивается информацией с пультом управления через COM порт. На пульте все эти кнопочки (на видео которые, кроме клавиатуры PC), штурвал там и два переключателя.
У станка есть родной энкодер, хотелось бы прикрутить его к этому ЧПУ, но для этого надо изучить протокол обмена этого пульта с FMS ЧПУ, старики операторы этого станка были бы очень довольны, а то получается я у них всё родное отнял и отдал обратно чего-то инородное  %-)

0

56

Фууухх... ну я и словил глюки с АЦП. Странно как-то, использовал ADC 7 и 6, которые не являются логическими портами входа/выхода.
Опрос делаю каждые 40мс, но почему-то ADC6 влияет прибавлением на ADC7 и хуже того, если опрашивать в начале программы, то одно значение, если опрашивать АЦП в середине программы, то другое значение  :canthearyou:
Всё-же стабильность есть, кажись блок завершен.  :hobo:

0

57

Блок управления с сенсорным экраном как я понимаю это отдельная конструкция и он передает команды в м328?

0

58

Он управляет аналоговым сигналом. Просто подаёт на Atmega328p аналоговый сигнал, дальше получает сигнал о готовности и все счастливы ).
Получается собрал устройство АМП - аналогово-механический преобразователь  :crazy:

Отредактировано Ev3658 (2016-02-05 21:06:18)

0

59

Второй проект и не дают его закончить. Помните стенд гидравлической проверки, тогда как увидели, что он шевелится, так сразу начали торопить, типа завтра уже отвозим и т.д. целый месяц меня держали в напряжении и торопили. Так и тут, всё, увезём и т.д.
Они вообще не понимают, ну как....как может человек, не зная вообще всего этого железа изучить это PLC для ЧПУ FMS-3300 с нуля, изучить схему станка, найти решение бюджетной модернизации, восстановить то, что неработало и всё это за 2 месяца!!!
Первый месяц (ноябрь) я ждал то, что заказал, две недели шел блок ЧПУ и к концу месяца пришли преобразователи логического уровня (из 11мА в ТТЛ 5в.) - ЛИР940. Пока ждал, восстанавливал горелый блок приводов Bosch TR15, слава богу я на этот блок убил пол месяца ещё в мае.
Второй месяц был очень сложным, учился писать программу в стиле Basic на PLC в котором булева алгЁбра блин.
Вот к примеру код человека разумного на PLC FMS-3300:

Код:
HAND=(khand+handout+INZERO+HAND)*-(WORK+kavt+kpavt+AVTOUT+PCADROUT+
PREDNOUT);
Lhand=HAND:
AVT=(kavt+kpavt+AVTOUT+PCADROUT+PREDNOUT+AVT)*
-((khand+handout+INZERO)*-WORK);
lavt=AVT*-PCADR*-PREDN;
PCADR=(kpavt+PCADROUT+PCADR)*-((khand+handout+INZERO)*-WORK+
kavt+AVTOUT+PREDNOUT*-WORK);
lpavt=PCADR:
PREDN=(PREDNOUT*-WORK+PREDN)*
-((khand+handout+INZERO+kavt+AVTOUT+PCADROUT+kpavt)*-WORK);
RZER=ZER;
INZERO=(RZER+INZERO)*-(WORK+RZER*INZERO+kavt+kpavt+AVTOUT+PCADROUT+
PREDNOUT);
LZER=INZERO;

А вот моё положительное, радостное влияние Bascom AVR  :crazy:

Код:
HIFREQ  ,================<<<<<< БЫСТРАЯ ОБЛАСТЬ
,====================== Алгоритм выхода в НОЛЬ
NONULL=V60.5+V61.5+V62.5+V63.5:,проверка состояния выхода в ноль всех осей
IF NULL=1: THEN ,проверка наличия задания выйти в ноль
V40.W=1000:,подача оси X
V42.W=V40.W:,подача оси Y
v44.w=V42.W:,подача оси Z
v46.w=V42.W:,подача оси A
V51.2=1:,ручное перемещение оси X
V53.2=1:,ручное перемещение оси Y
V55.2=1:,ручное перемещение оси Z
V57.2=1:,ручное перемещение оси A
V31.2=0:,имп.перемещения
v32.3=0:,авт.режим
v31.1=1:,ручной режим
,ZZ=1:,разжим оси Z
,ZA=1:,разжим оси А
BTXYZ=BTX+BTY+BTZ: ,проверка нахождения любой из осей на нулевом КВ
IF BTXYZ*NONULL*(-Nvoz)=1: THEN ,если сидит на конечнике нуля, отъезжаем
  V31.3=0:,отключение режима выхода в ноль
  ,==== алгоритм съезда X
  IF BTX=1*(-BTZ): THEN ,если сработал конечник по X - отводим с него
   V51.1=0:,отключение движения в +
   V50.8=1:,движение в - если на конечнике
   ELSE:
   v50.8=0:,отключение движения в -
  ENDIF:
  ,==== алгоритм съезда Y
  IF BTY=1*(-BTZ): THEN ,если сработал конечник по Y - отводим с него
   V52.8=0:,отключение движения в +
   V53.1=1:,движение в - если на конечнике
   ELSE:
   v53.1=0:,отключение движения в -
  ENDIF:
  ,==== алгоритм съезда Z
  IF BTZ=1: THEN ,если сработал конечник по Z - отводим с него
   V53.1=0:V50.8=0:V57.1=0:,сброс перемещений других осей
   V55.1=1:,движение в + если на конечнике
   V54.8=0:,отключение движения в -
   ELSE:
   v55.1=0:,отключение движения в +
  ENDIF:

А теперь, что у меня получилось сделать  :canthearyou:
Мне удалось уложиться в 180 000р. + 4 модуля Arduino L297N + Arduino Nano и ещё ватные палочки для ушей.
Из них 160т.р. сама FMS-3300 Lite и 20т.р. преобразователи уровней для старых оптических линеек на лампах. Две линейки пришлось восстанавливать и это удалось )))

Блок шпинделя это полный ужас, я сам боюсь лезть в исходник, у нас на работе программистам не принято давать сосредоточится и на протяжении всех месяцев каждый 15-20 минут кто нибудь заходил и выносил мозг, а после уходил и не закрывал...блин, двери не закрывали, чтоб шум из цеха и проходящие мимо люди заходили и спрашивали, как дела и т.д. В итоге код программы писался и продумывался кусками очень быстро и никакой оптимизации не предусмотрено, если интересно, вот, взгляните, но пожалейте свой разум:

Скрытый текст:

Для просмотра скрытого текста - войдите или зарегистрируйтесь.


Вообщем сделал я всё как надо, работает вроде, глюки есть, много недоделок, просто надоело уже всё, второй раз на грабли, не знаю, что-то надо в жизни менять, думаю всё оставить в радиолюбительстве и не связывать это с работой и коммерцией в целом, семья страдает от отсутствия моего внимания и наличия.

Увезли его и отлично,

http://cs630318.vk.me/v630318961/24eba/wjoU9ocSjcQ.jpg

теперь надо научится оператору и программисту управляющей программы, кстати, а не заходить ли к программисту управляющей программы каждые 15-30 минут и смотреть, как он пытается сосредоточится в моём присутствии  :suspicious:

http://cs630318.vk.me/v630318961/24ec3/8gcEVXuSTdk.jpg

Кто знает алгоритм обработки сигнала энкодера по прерываниям? За 1 секунду может быть больше 1000 прерываний.

Код:
$regfile = "m328pdef.dat"
$crystal = 16000000
$hwstack = 100
$swstack = 100
$framesize = 160

$baud = 9600


Config Portd.2 = Output:                                    ' такты
Config Portd.3 = Output:                                    ' сброс регистра 1=работа
Config Portd.4 = Output:                                    ' защёлка
Config Portd.5 = Output:                                    ' данные

Takti Alias Portd.2
Res Alias Portd.3
Zamokpin Alias Portd.4
Dat Alias Portd.5

Vh1 Alias Pinb.4
Vh2 Alias Pinb.5
Vh3 Alias Pinc.0
Vh4 Alias Pinc.1
Vh5 Alias Pinc.2
Vh6 Alias Pinc.3
Vh7 Alias Pinc.4
Vh8 Alias Pinc.5

Config Portb.4 = Input
Config Portb.5 = Input
Config Portc.0 = Input
Config Portc.1 = Input
Config Portc.2 = Input
Config Portc.3 = Input
Config Portc.4 = Input
Config Portc.5 = Input

Dim Proverka As Bit:

Dim S0 As String * 3
S0 = " OK"

Dim S1 As String * 7
S1 = "Ошибка "

Dim S2 As String * 8
S2 = "коробки "

Dim S3 As String * 7
S3 = "поиска "

Dim S4 As String * 6
S4 = "Поиск "

Dim S6 As String * 21
S6 = "Импульс шпинделя для "

'=========================== Напстройка АЦП


Config Adc = Single , Prescaler = Auto , Reference = Avcc



Dim Ov As Bit
Dim Ov1 As Bit
Dim Ov2 As Bit



Dim Sh1 As Byte
Dim Sh2 As Byte

Dim Motor11 As Bit
Dim Motor12 As Bit

Dim Motor21 As Bit
Dim Motor22 As Bit

Dim Motor31 As Bit
Dim Motor32 As Bit

Dim Vi1 As Bit
Dim Vi2 As Bit
Dim Vi3 As Bit
Dim Vi4 As Bit
Dim Vi5 As Bit
Dim Vi6 As Bit
Dim Vi7 As Bit
Dim Vi8 As Bit
Dim Vi9 As Bit
Dim Vi10 As Bit


Dim Napravlenie As Bit

Dim Korobka1 As Byte
Dim Korobka2 As Byte
Dim Korobka3 As Byte

Dim Korobka11 As Byte
Dim Korobka12 As Byte
Dim Korobka13 As Byte

Dim St1 As Byte
Dim St2 As Byte
Dim St3 As Byte

Dim T1 As Byte
Dim T2 As Byte
Dim T3 As Byte
Dim T4 As Byte
Dim Tst1 As Byte                                            'таймер тормоза
Dim Tm1 As Byte

Dim Gotovnost As Byte

Dim G1 As Bit
Dim G2 As Bit
Dim G3 As Bit

Dim Popitka As Byte
Dim P As Byte
Dim Paus1 As Byte
Dim L As Byte

Dim Spindel As Byte
Dim Dvig As Byte



Dim Ac1 As Integer
Dim Ac2 As Integer
Dim Ac11 As Integer


Dim Ac As Integer
Dim Ac0 As Integer
Dim Algebra1 As Integer
Dim Algebra2 As Integer
Dim Vibor As Integer

Print "OK":

Paus1 = 10





Goto Prog:



Impuls:
   If Vh7 = 0 And Vi5 = 0 Then
      Vi1 = 1:
      Vi2 = 0:
      If Dvig = 1 Then
         Vi3 = 0 :
         Vi4 = 1 :
         Else
             Vi3 = 1 :
             Vi4 = 0 :
      End If
      Vi6 = 1:
      Vi7 = 0:
      Gosub Reg:
   End If
   Gosub Reg:
Return:






Resrevers:

         Print "Реверс"
         Spindel = 0
         Gotovnost = 0
         Korobka1 = 0
         Korobka2 = 0
         Korobka3 = 0
Return

Stp:
   Tst1 = 0:
   Print "Тормоз-"
   Do
      If Vh7 = 1 Then
         Vi1 = 1:
         Vi2 = 0:
         Vi3 = 0:
         Vi4 = 0:
         Vi6 = 0:
         Vi7 = 0:

         Waitms 250
         Vi5 = 1:
         Gosub Reg:
      End If


      Tst1 = Tst1 + 1 : Waitms 250
      If Vh7 = 0 Then
         Print ; S0;
         Exit Do
      End If
      If Tst1 = 12 Then
         Print ; S1;
         Exit Do
      End If

   Loop
         Vi1 = 0:
         Vi2 = 0:
         Vi3 = 0:
         Vi4 = 0:
         Vi5 = 0:
         Vi6 = 0:
         Vi7 = 0:
         Gosub Reg:
Return

Ress:
      Gosub Stp:
      Print "СБРОС"
      Ov2 = 1
      Korobka1 = 0
      Korobka2 = 0
      Korobka3 = 0
      Spindel = 0
      Gosub Korob
      Vi1 = 0
      Vi2 = 0
      Vi3 = 0
      Vi4 = 0
      Vi5 = 0
      Vi6 = 0
      Vi7 = 0
      Vi8 = 0
      Vi9 = 0


      Motor31 = 0
      Motor32 = 0
      Motor21 = 0
      Motor22 = 0
      Motor11 = 0
      Motor12 = 0

      Gotovnost = 0
      G1 = Gotovnost
      G2 = G1
      G3 = G2
      Gosub Reg:
      T1 = 0
      T2 = 0
      T3 = 0
      St1 = 0
      St2 = 0
      St3 = 0
      Popitka = 0
      Gosub Reg:
      Res = 0:
      Waitms 500
      Res = 1:
Return







Reg:
'=====================  БЛОК РЕГИСТРОВ СДВИГА ==================================================================
Waitms 1
Res = 1                                                     'разрешение вывода из регистров
Sh1 = 0                                                     'обнуляем данные
Sh2 = 0                                                     'обнуляем данные

''===================== Подготовка данных к отправке
Sh1.0 = Motor11
Sh1.1 = Motor12
Sh1.2 = Motor21
Sh1.3 = Motor22
Sh1.4 = Motor31
Sh1.5 = Motor32
Sh1.6 = Vi1
Sh1.7 = Vi2
Sh2.0 = Vi8
Sh2.1 = Vi10
Sh2.2 = Vi9
Sh2.3 = Vi7
Sh2.4 = Vi3
Sh2.5 = Vi4
Sh2.6 = Vi5
Sh2.7 = Vi6
''===================== отправка данных в регистры сдвига
Shiftout Dat , Takti , Sh1 , 1 , 8
Shiftout Dat , Takti , Sh2 , 1 , 8
Zamokpin = 1
Waitms 1
Zamokpin = 0
Return



Korob:

L = 0
L.0 = Vh5
L.1 = Vh6
Print " Кр1=" ; L;
L = 0
L.0 = Vh3
L.1 = Vh4
Print " Кр2=" ; L;
L = 0
L.0 = Vh1
L.1 = Vh2
Print " Кр3=" ; L

Return



Prog:

Res = 0:
Waitms 300
Res = 1:

Start Adc


Do


'===================== БЛОК АЦП ============================================================================
Disable Interrupts

Start Adc
Ac1 = Getadc(7)

'Stop Adc



'===================== Программные таймеры ==================================================================
Tm1 = Tm1 + 1
Waitms 40

If Tm1 = 10 Then
   Tm1 = 0
   Print "AC1=" ; Ac1 ; " AC2=" ; Ac2 ; " Г:" ; Gotovnost ; " Д=" ; Dvig
   'Print Vh1 ; Vh2 ; Vh3 ; Vh4 ; Vh5 ; Vh6 ; Vh7 ; Vh8
   'Print Vi1 ; Vi2 ; Vi3 ; Vi4 ; Vi5 ; Vi6 ; Vi7 ; Vi8 ; Vi9 ; Vi10 ; " " ; Motor11 ; Motor12 ; Motor21 ; Motor22 ; Motor31 ; Motor32
End If

If T1 > 0 And Tm1 = 0 Then T1 = T1 - 1

If T2 > 0 And Tm1 = 0 Then T2 = T2 - 1

If T3 > 0 And Tm1 = 0 Then T3 = T3 - 1


If Gotovnost = 0 And Korobka1 > 0 And Korobka2 > 0 And Korobka3 > 0 Then

'=============== Поиск положения коробки 3
   If Vh1 = 0 And Vh2 = 0 Then
      If T3 = 0 Then
         T3 = 10
         G3 = 0
      End If

      If T3 > 4 Then
         Motor11 = 1
         Motor12 = 0
         Gosub Reg:
      End If
      If T3 < 5 And T3 > 1 Then
         Motor11 = 0
         Motor12 = 1
      End If
      If T3 = 1 Then
         Motor11 = 0
         Motor12 = 0
         Gosub Reg:
         Print S1 ; S3 ; S2 ; "3"
         T3 = 0
         Goto Prog
      End If
   End If

   If Vh1 = 1 Or Vh2 = 1 Then
      Motor11 = 0
      Motor12 = 0
      Gosub Reg:
      T3 = 0
      If G3 = 0 Then Print S4 ; S2 ; "3" ; S0
      G3 = 1
   End If


'=============== Поиск положения коробки 2
   If Vh3 = 0 And Vh4 = 0 Then
      If T2 = 0 Then
         T2 = 10
         G2 = 0
      End If
      If T2 > 4 Then
         Motor21 = 1
         Motor22 = 0
         Gosub Reg:
      End If
      If T2 < 5 And T2 > 1 Then
         Motor21 = 0
         Motor22 = 1
         Gosub Reg:
      End If
      If T2 = 1 Then
         Motor21 = 0
         Motor22 = 0
         Gosub Reg:
         Print S1 ; S3 ; S2 ; "2"
         T2 = 0
         Goto Prog
      End If
   End If

   If Vh3 = 1 Or Vh4 = 1 Then
      Motor21 = 0
      Motor22 = 0
      Gosub Reg:
      T2 = 0
      If G2 = 0 Then Print S4 ; S2 ; "2" ; S0
      G2 = 1
   End If

'=============== Поиск положения коробки 1 =====================================
   If Vh5 = 0 And Vh6 = 0 Then
      If T1 = 0 Then
         T1 = 10
         G1 = 0
      End If

      If T1 > 4 Then
         Motor31 = 1
         Motor32 = 0
         Gosub Reg:
      End If
      If T1 < 5 And T1 > 1 Then
         Motor31 = 0
         Motor32 = 1
         Gosub Reg:
      End If
      If T1 = 1 Then
         Motor31 = 0
         Motor32 = 0
         Gosub Reg:
         Print S1 ; S3 ; S2 ; "1"
         T1 = 0
         Goto Prog
      End If
   End If

   If Vh5 = 1 Or Vh6 = 1 Then
      Motor31 = 0
      Motor32 = 0
      Gosub Reg:
      T1 = 0
      If G1 = 0 Then Print S4 ; S2 ; "1" ; S0
      G1 = 1
   End If

   If G1 = 1 And G2 = 1 And G3 = 1 Then
      Gotovnost = 1:
      G1 = 0 : G2 = 0 : G3 = 0:
      Print "Готовность" ; S0
      Gosub Korob
   End If



End If
Gosub Reg


If Gotovnost = 1 Then
If Vh7 = 1 Then
   Vi1 = 0:
   Vi2 = 0:
   Vi3 = 0:
   Vi4 = 0:
   Vi5 = 0:
   Vi6 = 0:
   Vi7 = 0:
   Gosub Reg:
End If

'============================== Коробка 1 =================================
      If Korobka1 = 1 Then
         If Vh5 = 1 And Vh6 = 0 And St1 = 0 Then
            St1 = 4
            T1 = 15
         End If


         If Vh5 = 0 And Vh6 = 1 And St1 = 0 Then
            Motor31 = 0
            Motor32 = 1
            Gosub Reg:
            T1 = 15
            St1 = 3
         End If

         If Vh5 = 1 And Vh6 = 1 And St1 = 0 Then
            Motor31 = 0
            Motor32 = 1
            Gosub Reg:
            T1 = 15
            St1 = 1
         End If


         If Vh5 = 0 And Vh6 = 0 And St1 = 1 Then
            St1 = 2
'            Waitms 10
         End If

         If Vh5 = 0 And Vh6 = 1 And St1 = 2 Then
            St1 = 3
 '           Waitms 10
         End If

         If Vh5 = 0 And Vh6 = 0 And St1 = 3 Then
            St1 = 4
  '          Waitms 10
         End If

         If St1 > 0 And T1 > 4 And T1 < 7 And Vh7 = 0 Then
            Gosub Impuls:
            Print S6 ; S3 ; "1"
         End If

         If St1 > 0 And T1 = 0 Then
            Motor31 = 0
            Motor32 = 0
            Gosub Reg:
            Korobka1 = 21
            Print S1 ; S2 ; "1" : Korobka1 = 10
         End If

         If St1 = 4 And Vh5 = 1 And Vh6 = 0 Then
            Motor31 = 0
            Motor32 = 0
            Gosub Reg:
            St1 = 0
            Korobka1 = 11
            Print "КП1=1" ; S0
         End If
      End If

      If Korobka1 = 2 Then

         If Vh5 = 0 And Vh6 = 1 And St1 = 0 Then
            St1 = 2
            T1 = 15
         End If


         If Vh5 = 1 And Vh6 = 0 And St1 = 0 Then
            Motor31 = 1
            Motor32 = 0
            Gosub Reg:
            T1 = 15
            St1 = 1
         End If

         If Vh5 = 1 And Vh6 = 1 And St1 = 0 Then
            Motor31 = 0
            Motor32 = 1
            Gosub Reg:
            T1 = 15
            St1 = 1
         End If


         If Vh5 = 0 And Vh6 = 0 And St1 = 1 Then St1 = 2

         If St1 > 0 And T1 = 7 And Tm1 = 1 Then
            Gosub Impuls:
            Print S6 ; S3 ; "1"
         End If

         If St1 > 0 And T1 = 0 Then
            Motor31 = 0
            Motor32 = 0
            Gosub Reg:
            Korobka1 = 22
            Print S1 ; S2 ; "1"
         End If

         If St1 = 2 And Vh5 = 0 And Vh6 = 1 Then
            Motor31 = 0
            Motor32 = 0
            Gosub Reg:
            St1 = 0
            Korobka1 = 12
            Print "КП1=2" ; S0
         End If
      End If


      If Korobka1 = 3 Then

         If Vh5 = 1 And Vh6 = 1 And St1 = 0 Then
            St1 = 4
            T1 = 15
         End If




         If Vh5 = 1 And Vh6 = 0 And St1 = 0 Then
            Motor31 = 1
            Motor32 = 0
            Gosub Reg:
            T1 = 15
            St1 = 1
         End If

         If Vh5 = 0 And Vh6 = 1 And St1 = 0 Then
            Motor31 = 1
            Motor32 = 0
            Gosub Reg:
            T1 = 15
            St1 = 3
         End If

         If Vh5 = 0 And Vh6 = 0 And St1 = 1 Then St1 = 2

         If Vh5 = 0 And Vh6 = 1 And St1 = 2 Then St1 = 3

         If Vh5 = 0 And Vh6 = 0 And St1 = 3 Then St1 = 4

         If St1 > 0 And T1 = 7 And Tm1 = 1 Then
            Gosub Impuls:
            Print S6 ; S3 ; "1"
         End If


         If St1 > 0 And T1 = 0 Then
            Motor31 = 0
            Motor32 = 0
            Gosub Reg:
            Korobka1 = 23
            Print S1 ; S2 ; "1"
         End If

         If St1 = 4 And Vh5 = 1 And Vh6 = 1 Then
            Motor31 = 0
            Motor32 = 0
            Gosub Reg:
            St1 = 0
            Korobka1 = 13
            Print "КП1=3 " ; S0
         End If
      End If

'======================================= КОРОБКА 2 ==========================================
      If Korobka2 = 1 Then
         If Vh3 = 1 And Vh4 = 0 And St2 = 0 Then
            St2 = 4
            T2 = 15
         End If


         If Vh3 = 0 And Vh4 = 1 And St2 = 0 Then
            Motor21 = 0
            Motor22 = 1
            Gosub Reg:
            T2 = 15
            St2 = 3
         End If

         If Vh3 = 1 And Vh4 = 1 And St2 = 0 Then
            Motor21 = 0
            Motor22 = 1
            Gosub Reg:
            T2 = 15
            St2 = 1
         End If


         If Vh3 = 0 And Vh4 = 0 And St2 = 1 Then St2 = 2
         If Vh3 = 0 And Vh4 = 1 And St2 = 2 Then St2 = 3
         If Vh3 = 0 And Vh4 = 0 And St2 = 3 Then St2 = 4

         If St2 > 0 And T2 = 7 And Tm1 = 1 And Vh7 = 0 Then
            Gosub Impuls:
            Print S6 ; S3 ; "2"
         End If

         If St2 > 0 And T2 = 0 Then
            Motor21 = 0
            Motor22 = 0
            Gosub Reg:
            Korobka2 = 31
            Print S1 ; S2 ; "2"
         End If

         If St2 = 4 And Vh3 = 1 And Vh4 = 0 Then
            Motor21 = 0
            Motor22 = 0
            Gosub Reg:
            St2 = 0
            Korobka2 = 21
            Print "КП2=1" ; S0
         End If
      End If

      If Korobka2 = 2 Then

         If Vh3 = 0 And Vh4 = 1 And St2 = 0 Then
            St2 = 2
            T2 = 15
         End If



         If Vh3 = 1 And Vh4 = 0 And St2 = 0 Then
            Motor21 = 1
            Motor22 = 0
            Gosub Reg:
            T2 = 15
            St2 = 1
         End If

         If Vh3 = 1 And Vh4 = 1 And St2 = 0 Then
            Motor21 = 0
            Motor22 = 1
            Gosub Reg:
            T2 = 15
            St2 = 1
         End If


         If Vh3 = 0 And Vh4 = 0 And St2 = 1 Then St2 = 2

         If St2 > 0 And T2 = 7 And Tm1 = 1 And Vh7 = 0 Then
            Gosub Impuls:
            Print S6 ; S2 ; "2"
         End If

         If St2 > 0 And T2 = 0 Then
            Motor21 = 0
            Motor22 = 0
            Gosub Reg:
            Korobka2 = 22
            Print S1 ; S2 ; "2"
         End If

         If St2 = 2 And Vh3 = 0 And Vh4 = 1 Then
            Motor21 = 0
            Motor22 = 0
            Gosub Reg:
            St2 = 0
            Korobka2 = 12
            Print "КП2=2" ; S0
         End If
      End If


      If Korobka2 = 3 Then

         If Vh3 = 1 And Vh4 = 1 And St2 = 0 Then
            St2 = 4                                         '
            T2 = 15
         End If



         If Vh3 = 1 And Vh4 = 0 And St2 = 0 Then
            Motor21 = 1
            Motor22 = 0
            Gosub Reg:
            T2 = 15
            St2 = 1
         End If

         If Vh3 = 0 And Vh4 = 1 And St2 = 0 Then
            Motor21 = 1
            Motor22 = 0
            Gosub Reg:
            T2 = 15
            St2 = 3
         End If

         If Vh3 = 0 And Vh4 = 0 And St2 = 1 Then
            St2 = 2
            Waitms Paus1
         End If


         If Vh3 = 0 And Vh4 = 1 And St2 = 2 Then St2 = 3

         If Vh3 = 0 And Vh4 = 0 And St2 = 3 Then
            St2 = 4
            Waitms Paus1
         End If


         If St2 > 0 And T2 = 7 And Tm1 = 1 And Vh7 = 0 Then
            Gosub Impuls:
            Print S6 ; S3 ; "2"
         End If

         If St2 > 0 And T2 = 0 Then
            Motor21 = 0
            Motor22 = 0
            Gosub Reg:
            Korobka2 = 23
            Print S1 ; S2 ; "2"
         End If

         If St2 = 4 And Vh3 = 1 And Vh4 = 1 Then
            Motor21 = 0
            Motor22 = 0
            Gosub Reg:
            St2 = 0
            Korobka2 = 13
            Print "КП2=3" ; S0
         End If
      End If



'======================================= КОРОБКА 3 ==========================================
      If Korobka3 = 1 Then
         If Vh1 = 1 And Vh2 = 0 And St3 = 0 Then
            St3 = 4
            T3 = 15
         End If


         If Vh1 = 0 And Vh2 = 1 And St3 = 0 Then
            Motor11 = 0
            Motor12 = 1
            Gosub Reg:
            T3 = 15
            St3 = 3
         End If

         If Vh1 = 1 And Vh2 = 1 And St3 = 0 Then
            Motor11 = 0
            Motor12 = 1
            Gosub Reg:
            Print "3->"
            T3 = 15
            St3 = 1
         End If


         If Vh1 = 0 And Vh2 = 0 And St3 = 1 Then
            St3 = 2
            Waitms Paus1
         End If


         If Vh1 = 0 And Vh2 = 1 And St3 = 2 Then
            St3 = 3
         End If

         If Vh1 = 0 And Vh2 = 0 And St3 = 3 Then
            St3 = 4
            Waitms Paus1
         End If


         If St3 > 0 And T3 = 4 And Tm1 = 0 And Vh7 = 0 Then
            Gosub Impuls:
            Print S6 ; S3 ; "3"
         End If


         If St3 > 0 And T3 = 0 Then
            Motor11 = 0
            Motor12 = 0
            Gosub Reg:
            Korobka3 = 21
            Print S1 ; S2 ; "3"
         End If

         If St3 = 4 And Vh1 = 1 And Vh2 = 0 Then
            Motor11 = 0
            Motor12 = 0
            Gosub Reg:
            St3 = 0
            Korobka3 = 11
            Print "КП3=1" ; S0
         End If
      End If

      If Korobka3 = 2 Then

         If Vh1 = 0 And Vh2 = 1 And St3 = 0 Then
            St3 = 2
            T3 = 15
         End If



         If Vh1 = 1 And Vh2 = 0 And St3 = 0 Then
            Motor11 = 1
            Motor12 = 0
            Gosub Reg:
            T3 = 15
            St3 = 1
         End If

         If Vh1 = 1 And Vh2 = 1 And St3 = 0 Then
            Motor11 = 0
            Motor12 = 1
            Gosub Reg:
            T3 = 15
            St3 = 1
         End If


         If Vh1 = 0 And Vh2 = 0 And St3 = 1 Then
            St3 = 2
            Waitms Paus1
         End If

         If St3 > 0 And T3 = 4 And Tm1 = 0 And Vh7 = 0 Then
            Gosub Impuls:
            Print S6 ; S3 ; "3"
         End If

         If St3 > 0 And T3 = 0 Then
            Motor11 = 0
            Motor12 = 0
            Gosub Reg:
            Korobka3 = 22
            Print S1 ; S2 ; "3" : Korobka3 = 10
         End If

         If St3 = 2 And Vh1 = 0 And Vh2 = 1 Then
            Motor11 = 0
            Motor12 = 0
            Gosub Reg:
            St3 = 0
            Korobka3 = 12
            Print "КП3=2" ; S0
         End If
      End If


      If Korobka3 = 3 Then

         If Vh1 = 1 And Vh2 = 1 And St3 = 0 Then
            St3 = 4                                         '
            T3 = 15
         End If

         If Vh1 = 1 And Vh2 = 0 And St3 = 0 Then
            Motor11 = 1
            Motor12 = 0
            Gosub Reg:
            T3 = 15
            St3 = 1
         End If

         If Vh1 = 0 And Vh2 = 1 And St3 = 0 Then
            Motor11 = 1
            Motor12 = 0
            Gosub Reg:
            T3 = 15
            St3 = 3
         End If

         If Vh1 = 0 And Vh2 = 0 And St3 = 1 Then
            Waitms Paus1
            St3 = 2
         End If


         If Vh1 = 0 And Vh2 = 1 And St3 = 2 Then
            Waitms Paus1
            St3 = 3
         End If
         If Vh1 = 0 And Vh2 = 0 And St3 = 3 Then
            Waitms Paus1
            St3 = 4
         End If

         If St3 > 0 And T3 = 4 And Tm1 = 0 Then
            Gosub Impuls:
            Print S6 ; S3 ; "3"
         End If


         If St3 > 0 And T3 = 0 Then
            Motor11 = 0
            Motor12 = 0
            Gosub Reg:
            Korobka3 = 23
            Print S1 ; S2 ; "3"
         End If

         If St3 = 4 And Vh1 = 1 And Vh2 = 1 Then
            Motor11 = 0
            Motor12 = 0
            Gosub Reg:
            St3 = 0
            Korobka3 = 13
            Print "КП3=3" ; S0
         End If
      End If
   Gosub Reg:

   If Korobka1 > 4 And Korobka2 > 4 And Korobka3 > 4 And Vh7 = 1 And Gotovnost < 3 Then
       Gosub Stp:
      'If Ov = 0 Then
      '   Ov = 1 : Print "Тормоз"
      'End If

      'Else
      '   Ov = 0
   End If

   If Korobka1 > 4 And Korobka2 > 4 And Korobka3 > 4 And Vh7 = 0 And Gotovnost = 1 Then
      Print "-Проверка-"

      '-------------------------------------------------
      If Korobka1 = 11 Or Korobka1 = 21 Then
         If Vh5 <> 1 Or Vh6 <> 0 Then
            Korobka1 = 1 : Gotovnost = 0
            Popitka = Popitka + 1
            Print S1 ; S2 ; "1"
         End If
      End If

      If Korobka2 = 11 Or Korobka2 = 21 Then

         If Vh3 <> 1 Or Vh4 <> 0 Then
            Korobka2 = 1 : Gotovnost = 0
            Popitka = Popitka + 1
            Print S1 ; S2 ; "2"
         End If

      End If

      If Korobka3 = 11 Or Korobka3 = 21 Then

         If Vh1 <> 1 Or Vh2 <> 0 Then
            Korobka3 = 1 : Gotovnost = 0
            Popitka = Popitka + 1
            Print S1 ; S2 ; "3"
         End If

      End If
'-------------------------------------------------
      If Korobka1 = 12 Or Korobka1 = 22 Then

         If Vh5 <> 0 Or Vh6 <> 1 Then
            Korobka1 = 2 : Gotovnost = 0
            Popitka = Popitka + 1
            Print S1 ; S2 ; "1"
         End If

      End If

      If Korobka2 = 12 Or Korobka2 = 22 Then

         If Vh3 <> 0 Or Vh4 <> 1 Then
            Korobka2 = 2 : Gotovnost = 0
            Popitka = Popitka + 1
            Print S1 ; S2 ; "2"
         End If

      End If

      If Korobka3 = 12 Or Korobka3 = 22 Then

         If Vh1 <> 0 Or Vh2 <> 1 Then
            Korobka3 = 2 : Gotovnost = 0
            Popitka = Popitka + 1
            Print S1 ; "3"
         End If

      End If
'-----------------------------------------------

      If Korobka1 = 13 Or Korobka1 = 23 Then

         If Vh5 <> 1 Or Vh6 <> 1 Then
            Korobka1 = 3 : Gotovnost = 0
            Popitka = Popitka + 1
            Print S1 ; "1"
         End If

      End If

      If Korobka2 = 13 Or Korobka2 = 23 Then

         If Vh3 <> 1 Or Vh4 <> 1 Then
            Korobka2 = 3 : Gotovnost = 0
            Popitka = Popitka + 1
            Print S1 ; "2"
         End If

      End If

      If Korobka3 = 13 Or Korobka3 = 23 Then

         If Vh1 <> 1 Or Vh2 <> 1 Then
            Korobka3 = 3 : Gotovnost = 0
            Popitka = Popitka + 1
            Print S1 ; S2 ; "3"
         End If
      End If


      If Gotovnost = 0 Then
         Print S1 ; "передач!"
         T1 = 0
         T2 = 0
         T3 = 0
         St1 = 0
         St2 = 0
         St3 = 0
      End If

      If Popitka > 0 Then Print "Попытка исправить №: " ; Popitka

      If Popitka > 4 Then
         Print S1 ; "блока"
         Spindel = 0:
         Gotovnost = 0
         T1 = 0
         T2 = 0
         T3 = 0
         St1 = 0
         St2 = 0
         St3 = 0
         Popitka = 0:
         Gosub Stp:
         Gosub Ress:
      End If

      If Gotovnost = 1 Then Gotovnost = 2
   End If


End If

'================== Остановка шпинделя
If Spindel = 0 And Vi7 = 1 Then
   Gosub Stp:
   Gotovnost = 0
   Spindel = 0
   Korobka1 = 0
   Korobka2 = 0
   Korobka3 = 0
End If


'================== Запуск вращения шпинделя
If Gotovnost = 2 And Vh7 = 0 Then
   '============== Включение направления шпинделя

   If Dvig = 1 Then
      Vi3 = 0 :
      Vi4 = 1 :
      Gosub Reg:
      Else
          Vi3 = 1 :
          Vi4 = 0 :
          Gosub Reg:
   End If


   If Spindel = 1 Then
      'Print "Шпиндель=1"
      Vi1 = 1 : Vi2 = 0 : Gosub Reg
      Waitms 300
      Vi6 = 1 : Vi7 = 0 : Vi5 = 0 : Gosub Reg
      Wait 1
      Vi7 = 1 : Gosub Reg
      Gotovnost = 3
   End If

   If Spindel = 2 Then
      'Print "Шпиндель=2"
      Vi1 = 0 : Vi2 = 1 : Gosub Reg
      Waitms 300
      Vi6 = 1 : Vi7 = 0 : Vi5 = 0 : Gosub Reg
      Wait 1
      Vi7 = 1 : Gosub Reg
      Gotovnost = 3
   End If
   If Spindel = 3 Then
      Vi1 = 0 : Vi2 = 0 : Vi3 = 0 : Vi4 = 0 : Vi5 = 0 : Vi6 = 0 : Vi7 = 0 : Gosub Reg:
      Vi8 = 1:
      Gotovnost = 3
   End If

End If









If Ac11 > 7 Then
   Algebra1 = Ac11 - 7
      Else
          Algebra1 = 0
End If


Algebra2 = Ac11 + 7

If Algebra1 <= Ac1 And Algebra2 > Ac1 Then
   If T4 < 15 Then
      T4 = T4 + 1
      Print ",";
   End If
   Else
      T4 = 0
End If

Ac2 = Getadc(6)

If Gotovnost = 3 And Vh7 = 1 And Vi8 = 0 Then
   Wait 2 : Vi8 = 1 :
   Gosub Reg:
End If

If Gotovnost = 3 And Spindel = 3 And Vi8 = 0 Then
   Wait 2 : Vi8 = 1 :
   Gosub Reg:
End If

'If Korobka1 = 0 And Korobka2 = 0 And Korobka3 = 0 And Vh7 = 0 And Gotovnost = 0 Then
'   Vi10 = 0 : Gosub Reg : End If


If Gotovnost < 3 And Vi8 = 1 Then
   Vi8 = 0
   Gosub Reg:
End If


If Vh8 = 0 And Gotovnost > 0 Then
      Print "OFF"
      Vi8 = 0 : Gosub Reg:
      If Vh7 = 1 Then Gosub Stp:
      Gosub Ress:
End If

If T4 = 15 Then

   If Ac1 < 3 And Gotovnost > 0 Then
      Vi8 = 0 : Gosub Reg:
      If Vh7 = 1 Then Gosub Stp:
      Gosub Ress:

      'If Gotovnost < 3 Then Gosub Ress : :
   End If


   '============== определение вращения шпинделя
   If Gotovnost < 2 Then
      If Ac2 > 5 Then
         Dvig = 1
         Else
         Dvig = 0
      End If
   End If


   If Gotovnost = 3 And Vh7 = 1 And Spindel < 3 Then
      If Ac2 < 2 And Dvig = 1 Then Gosub Resrevers:
      If Ac2 => 4 And Dvig = 0 Then Gosub Resrevers:
   End If

'========== останвока шпинделя при нуле
   If Ac1 < 5 And Vh7 = 1 And Spindel > 0 Then
      Gosub Stp:
      Spindel = 0:
   End If

   If Ac1 => 7 Then
      Ov2 = 0
      Ov1 = 0
   End If


   If Ac1 > 14 Then
      Algebra1 = Ac1 - 15
      Else
         Algebra1 = 0
   End If

   Algebra2 = Ac1 + 15

'-------------------- слежение за изменениями
   If Gotovnost = 3 Then

      If Vibor < Algebra1 Or Vibor > Algebra2 Then
         Print "Изменения"
            Gosub Stp:
            Spindel = 0
            Gotovnost = 0
            Korobka1 = 0
            Korobka2 = 0
            Korobka3 = 0
            Dvig = 0
            Vibor = 0
            Vi8 = 0 : Gosub Reg:
      End If
   End If



   If Korobka1 = 0 And Korobka2 = 0 And Korobka3 = 0 And Vh7 = 0 And Gotovnost = 0 And Vh8 = 1 Then


      If Ac1 > 5 And Ac1 < 20 Then
         'Print "0"
         Vi10 = 1 : Gosub Reg
         Korobka1 = 2
         Korobka2 = 1
         Korobka3 = 1
         Spindel = 3
         Vibor = 13
      End If



      Ac0 = 45
      If Ac0 >= Algebra1 And Ac0 <= Algebra2 Then
         Vi10 = 0 : Gosub Reg
         Print "31,5"
         Korobka1 = 1
         Korobka2 = 1
         Korobka3 = 2
         Spindel = 1
         Vibor = Ac0
      End If

      Ac0 = 95
      If Ac0 => Algebra1 And Ac0 <= Algebra2 Then
         Vi10 = 1 : Gosub Reg
'         Print "40"
         Korobka1 = 1
         Korobka2 = 1
         Korobka3 = 1
         Spindel = 1
         Vibor = Ac0
      End If

      Ac0 = 145
      If Ac0 => Algebra1 And Ac0 <= Algebra2 Then
'         Print "50"
         Vi10 = 0 : Gosub Reg
         Korobka1 = 1
         Korobka2 = 1
         Korobka3 = 3
         Spindel = 1
         Vibor = Ac0
      End If

      Ac0 = 197
      If Ac0 => Algebra1 And Ac0 <= Algebra2 Then
'         Print "63"
         Vi10 = 1 : Gosub Reg
         Korobka1 = 1
         Korobka2 = 3
         Korobka3 = 2
         Spindel = 1
         Vibor = Ac0
      End If
      Ac0 = 251
      If Ac0 => Algebra1 And Ac0 <= Algebra2 Then
'         Print "80"
         Vi10 = 0 : Gosub Reg
         Korobka1 = 1
         Korobka2 = 3
         Korobka3 = 1
         Spindel = 1
         Vibor = Ac0
      End If

      Ac0 = 308
      If Ac0 => Algebra1 And Ac0 <= Algebra2 Then
         Vi10 = 1 : Gosub Reg
'         Print "100"
         Korobka1 = 1
         Korobka2 = 3
         Korobka3 = 3
         Spindel = 1
         Vibor = Ac0
      End If

      Ac0 = 362
      If Ac0 => Algebra1 And Ac0 <= Algebra2 Then
'         Print "125"
         Vi10 = 0 : Gosub Reg
         Korobka1 = 1
         Korobka2 = 2
         Korobka3 = 2
         Spindel = 1
         Vibor = Ac0
      End If


      Ac0 = 416
      If Ac0 => Algebra1 And Ac0 <= Algebra2 Then
'         Print "160"
         Vi10 = 1 : Gosub Reg
         Korobka1 = 1
         Korobka2 = 2
         Korobka3 = 1
         Spindel = 1
         Vibor = Ac0
      End If

      Ac0 = 466
      If Ac0 => Algebra1 And Ac0 <= Algebra2 Then
'         Print "200"
         Vi10 = 0 : Gosub Reg
         Korobka1 = 1
         Korobka2 = 2
         Korobka3 = 3
         Spindel = 1
         Vibor = Ac0
      End If

      Ac0 = 516
      If Ac0 => Algebra1 And Ac0 <= Algebra2 Then
'         Print "250"
         Vi10 = 1 : Gosub Reg
         Korobka1 = 3
         Korobka2 = 1
         Korobka3 = 2
         Spindel = 1
         Vibor = Ac0
      End If

      Ac0 = 562
      If Ac0 => Algebra1 And Ac0 <= Algebra2 Then
'         Print "315"
         Vi10 = 0 : Gosub Reg
         Korobka1 = 3
         Korobka2 = 1
         Korobka3 = 1
         Spindel = 1
         Vibor = Ac0
      End If

      Ac0 = 610
      If Ac0 => Algebra1 And Ac0 <= Algebra2 Then
'         Print "400"
         Vi10 = 1 : Gosub Reg
         Korobka1 = 3                                       '1
         Korobka2 = 1                                       '2
         Korobka3 = 3                                       '3
         Spindel = 1                                        '2
         Vibor = Ac0
      End If
      Ac0 = 658
      If Ac0 => Algebra1 And Ac0 <= Algebra2 Then
'         Print "500"
         Vi10 = 0 : Gosub Reg
         Korobka1 = 3
         Korobka2 = 3
         Korobka3 = 2
         Spindel = 1
         Vibor = Ac0
      End If

      Ac0 = 697
      If Ac0 => Algebra1 And Ac0 <= Algebra2 Then
'         Print "630"
         Vi10 = 1 : Gosub Reg
         Korobka1 = 3
         Korobka2 = 3
         Korobka3 = 1
         Spindel = 1
         Vibor = Ac0
      End If

      Ac0 = 750
      If Ac0 => Algebra1 And Ac0 <= Algebra2 Then
'         Print "800"
         Vi10 = 0 : Gosub Reg
         Korobka1 = 3
         Korobka2 = 3
         Korobka3 = 3
         Spindel = 1
         Vibor = Ac0
      End If

      Ac0 = 802
      If Ac0 => Algebra1 And Ac0 <= Algebra2 Then
'         Print "1000"
         Vi10 = 1 : Gosub Reg
         Korobka1 = 3
         Korobka2 = 2
         Korobka3 = 2
         Spindel = 1
         Vibor = Ac0
      End If

      Ac0 = 850
      If Ac0 => Algebra1 And Ac0 <= Algebra2 Then
'         Print "1250"
         Vi10 = 0 : Gosub Reg
         Korobka1 = 3
         Korobka2 = 2
         Korobka3 = 1
         Spindel = 1
         Vibor = Ac0
      End If

      Ac0 = 896
      If Ac0 => Algebra1 And Ac0 <= Algebra2 Then
         Vi10 = 1 : Gosub Reg
'         Print "1600"
         Korobka1 = 3
         Korobka2 = 2
         Korobka3 = 3
         Spindel = 1
         Vibor = Ac0
      End If

      Ac0 = 938
      If Ac0 => Algebra1 And Ac0 <= Algebra2 Then
'         Print "2000"
         Vi10 = 0 : Gosub Reg
         Korobka1 = 3
         Korobka2 = 2
         Korobka3 = 2
         Spindel = 2
         Vibor = Ac0
      End If


      Ac0 = 975
      If Ac0 => Algebra1 And Ac0 <= Algebra2 Then
'         Print "2500"
         Vi10 = 1 : Gosub Reg
         Korobka1 = 3
         Korobka2 = 2
         Korobka3 = 1
         Spindel = 2
         Vibor = Ac0
      End If

      Ac0 = 1002
      If Ac0 => Algebra1 And Ac0 <= Algebra2 Then
'         Print "3150"
         Vi10 = 0 : Gosub Reg
         Korobka1 = 3
         Korobka2 = 2
         Korobka3 = 3
         Spindel = 2
         Vibor = Ac0
      End If


   End If


End If


Ac11 = Ac1


Loop

+4

60

Ev3658
Мегакрут!
Исходничек твой, думаю, будет полезен для всех, кто-что полезное для себя найдет.. я вот буду с него UART колупать, а то что-то не получается у меня стабильной работы с UART'ом....

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Не детский ЧПУ, поселюсь тут )