Отговори на тема  [ 42 мнения ]  Отиди на страница Предишна  1, 2, 3
Продавам ФРП и следяща с-ма за него 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение 
@sthx:

Ето, да видиш и реализацията:

Код:
{************************************
*                                   *
*  This file provides a             *
*  FRP /encoder/ functions for      *
*  _211-06/12 Extended Counter      *
*                                   *
*  16 - Mar - 2007`                 *
*  PIC18F2620 @ 40 MHz              *
*  MikroPascal v6.0.0.2             *
*                                   *
*  rsrachev@gmail.com               *
*                                   *
************************************}
unit frp_211;

uses definitions_211, counters_file;

const
  FRP_ENABLE         : byte = 0;
  FRP_ENABLED        : byte = 1;
  FRP_DISABLED       : byte = 0;
  //FRP_ONLINE         : byte = 1;
  //FRP_OFFLINE        : byte = 0;
 
var
  frp_input_A_now, frp_input_A_pre, frp_input_A      : word;  // TIMER3
  frp_input_B_now, frp_input_B_pre, frp_input_B      : word;  // TIMER0
  frp_UP, frp_DOWN                                   : word;  // |A - B|
  in_A_L, in_A_H, in_B_L, in_B_H                     : byte;
  input_divider_UP_counter, input_divider_DOWN_counter               : word;
  FRP_MODULE_ENABLED                                 : byte; register;

implementation

procedure FRP_Init(var frp_port : byte; frp_pin : byte; frp_online : boolean);
var
  ddr_port : ^byte;  //a pointer to TRIS REG
begin
  ddr_port := @frp_port + TRIS_OFFSET;  //Get TRIS address
  ddr_port^.frp_pin := 0;
  if frp_online then
    begin
      //TMR0H := 0; TMR0L := 0;
      //TMR3H := 0; TMR3L := 0;
      frp_input_A_pre := 0;
      frp_input_B_pre := 0;
      input_divider_UP_counter := 1;
      input_divider_DOWN_counter := 1;
      CCP1CON := 0;
      CCPR1H := 0; CCPR1L := 0;
      T0CON := %10101000;
      T3CON := %10000011;  //16 bit mode with sync input!!!
      frp_port.frp_pin := FRP_ENABLED;
      FRP_MODULE_ENABLED := True;
      TMR0H := 0; TMR0L := 0;  //moved here to solve bug 'count at startup'
      TMR3H := 0; TMR3L := 0;
    end
  else
    begin
      T0CON.TMR0ON := 0;
      T3CON.TMR3ON := 0;
      frp_port.frp_pin := FRP_DISABLED;
      FRP_MODULE_ENABLED := False;
     
      ddr_port^.frp_pin := 1;
    end;
end;

procedure FRP_Handle;
begin
  if direction_1_value = _FORWARD then  //change count direction
    begin
      in_A_L := TMR3L; in_A_H := TMR3H;
      in_B_L := TMR0L; in_B_H := TMR0H;
    end
  else
    begin
      in_A_L := TMR0L; in_A_H := TMR0H;
      in_B_L := TMR3L; in_B_H := TMR3H;
    end;
 
  frp_input_A_now := 0;
  frp_input_A_now := (in_A_H shl 8) + in_A_L;

  frp_input_B_now := 0;
  frp_input_B_now := (in_B_H shl 8) + in_B_L;


  frp_UP := frp_input_A_now - frp_input_A_pre;

  frp_DOWN := frp_input_B_now - frp_input_B_pre;


  frp_input_A_pre := frp_input_A_now;
  frp_input_B_pre := frp_input_B_now;
  if frp_DOWN > frp_UP then
    direction_1 := BACKWARD;
  if frp_DOWN < frp_UP then
    direction_1 := _FORWARD;

  while (frp_DOWN >= 1) do
    begin
      Inc(input_divider_DOWN_counter);
      input_divider_UP_counter := input_divider_1_value - input_divider_DOWN_counter + 1;
      if input_divider_DOWN_counter > input_divider_1_value then
        begin
          input_divider_UP_counter := 1;
          input_divider_DOWN_counter := 1;
          if prescaler_1_in_use then
            Multiply_Counter_1_On_Dec
          else
            Dec_Counter_1;
        end;
      Dec(frp_DOWN);
    end;

  while (frp_UP >= 1) do
    begin
      Inc(input_divider_UP_counter);
      input_divider_DOWN_counter := input_divider_1_value - input_divider_UP_counter + 1;
      if input_divider_UP_counter > input_divider_1_value then
        begin
          input_divider_UP_counter := 1;
          input_divider_DOWN_counter := 1;
          if prescaler_1_in_use then
            Multiply_Counter_1
          else
            Inc_Counter_1;
        end;
      Dec(frp_UP);
    end;

end;

procedure FRP_Set;
begin
  if MAIN_TASK_Dispatcher = ENCODER_MODE then
    FRP_Init(PORTA, FRP_ENABLE, True)
  else
    FRP_Init(PORTA, FRP_ENABLE, False);
end;

end.


Единствения проблем е, че while-a блокира индикацията, но всичкко останало като граници и изпълнителни механизни си работи.


Нед Окт 24, 2010 12:29 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Съб Юни 24, 2006 8:25 pm
Мнения: 2293
Мнение 
Е, добре. :) . А ако може да се каже отделните части на програмата за колко време се изпълняват, тогава ще се види и максималното бързодействие. Ако всички инструкции в примерът който го дадох по-горе се изпълняват за един процесорен цикъл, то времето за изпълнението им (11 инструкции) е 1.1 микросекунди. Но това е абсолютният минимум.

_________________
Две плюс две е приблизително равно на четири. Факт!


Нед Окт 24, 2010 7:32 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение 
sthx написа:
Е, добре. :) . А ако може да се каже отделните части на програмата за колко време се изпълняват, тогава ще се види и максималното бързодействие. Ако всички инструкции в примерът който го дадох по-горе се изпълняват за един процесорен цикъл, то времето за изпълнението им (11 инструкции) е 1.1 микросекунди. Но това е абсолютният минимум.


Ами както знаем, максималното бързодействие на релето е около 50 Hz. За Епик мисля, че им го изкарах около 200 пъти в секунда по RS. Иначе един от тестовете беше със точно същото ФРП. Самото то отказва при около 130 kHz или 3200 RPM.... ако паметта не ме лъже вече.


Нед Окт 24, 2010 8:13 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9123
Местоположение: Разград
Мнение 
Е, не. Имали въобще смисъл от това? Какво точно ще се мери при 3000RPM и 2500 стъпки на фрп-то? Да приемем че е в металорежеща машина ... 40 об. = 1 см. резолюция 1/10000 мм ?!?!? И представяте ли си как фрезата се движи с 1 см. в секунда 8O . Като постижение за скорост е добре ...


Нед Окт 24, 2010 8:32 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Ное 01, 2009 5:57 pm
Мнения: 30
Мнение 
Намалям цената на 270 за фрп-то и следящата система.


Чет Ное 04, 2010 8:10 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Мар 08, 2006 2:12 pm
Мнения: 2017
Местоположение: Котел
Мнение 
Е Cekins, 1 см/сек не е нещо кой знае какво. Моята CNC фреза си работи съвсем нормално при тази скорост, разбира се не става дума за работа с твърди метали но например при обработка на стъклотекстолит, гетинакс, МДФ-та а и при преместването до позиция 600мм/мин си е нормална скорост ;)


Пет Ное 05, 2010 12:15 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9123
Местоположение: Разград
Мнение 
Да де, ама според мен движение с такава висока скорост обезсмисля измерване с такава висока прецизност. Би било необходима такава точност ако се прави някаква супер финна матрица - от метал - и искам да видя как фреза ще обработва финно при движение с 1 см. в секунда ... метал ... Малко ще има с един фрезер в секунда. А и ти говориш за такива скорости само в празния ход :)


Пет Ное 05, 2010 4:25 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 24, 2005 11:41 pm
Мнения: 1049
Местоположение: Pz
Мнение 
Cekins написа:
....
За една истинска металорежеща машина с цпу, тези неща са нещо съвсем нормално.
Cekins написа:
...и искам да видя...
Ако отидеш на правилното място, ще видиш! Щом поставяш така въпроса, значи, че като видиш, ще бъдеш доста изненадан! :partyman:


Пет Ное 05, 2010 7:53 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 03, 2005 2:21 am
Мнения: 12826
Местоположение: София
Мнение 
Ето нещо за гледане по въпроса за разхода на фрезери в минута - http://www.youtube.com/watch?v=-gzjw0svMA8
На същото място има доста подобни клипчета...


Пет Ное 05, 2010 11:19 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юли 31, 2007 2:55 pm
Мнения: 1792
Местоположение: София
Мнение 
Това не е ли алуминий?


Съб Ное 06, 2010 12:56 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Ное 01, 2009 5:57 pm
Мнения: 30
Мнение 
:arrow: :)


Вто Мар 29, 2011 10:34 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Ное 01, 2009 5:57 pm
Мнения: 30
Мнение Re: Продавам ФРП и следяща с-ма за него
[quote="stefan_gb"]ФРП 2500 имп.об. 120лв. 1бр.
http://media.snimka.bg/4012/014280293.jpg
http://media.snimka.bg/4012/014280290.jpg

Отчитаща система за ФРП 170 лв. 1бр.
http://media.snimka.bg/4012/014280304.jpg


Съб Мар 31, 2012 11:12 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 42 мнения ]  Отиди на страница Предишна  1, 2, 3

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 6 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни