Цель исследования
Узнать как на самом деле обстоят с генерацией шагов. Проверить стабильность частоты сигнала шагов, в будущем проверить влияние стабильности частоты на крутящий момент двигателей.
Методика исследования
Создаем тестовую конфигурацию с целью выдачи стабильной частоты на определенный пин. При помощи осциллографа записываем сигнал и анализируем его.
LinuxCNC
Для тестирования используется специальный файл hal, в котором содержатся загрузки и настройки необходимых компонентов.
В случае с LPT портом используется компонент stepgen с управлением по скорости.
Тестовый hal для LinuxCNC (для просмотра содержимого нажмите на ссылку)Код: Выделить всё
loadrt hostmot2
#loadrt hm2_pci config="num_encoders=4 num_pwmgens=4 num_3pwmgens=0 num_stepgens=8 "
#unloadrt hm2_pci
loadrt hm2_pci
#config="num_stepgens=4"
loadrt trivkins
loadrt motmod base_period_nsec=10000 servo_period_nsec=1000000 num_joints=5
loadrt hal_parport cfg="0x378 out "
setp parport.0.reset-time 5000
loadrt stepgen step_type=0 ctrl_type=v
loadrt pwmgen output_type=1
addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf pwmgen.make-pulses base-thread
addf parport.0.write base-thread
addf parport.0.reset base-thread
addf stepgen.capture-position servo-thread
addf stepgen.update-freq servo-thread
addf pwmgen.update servo-thread
net step stepgen.0.step parport.0.pin-03-out
setp stepgen.0.enable 1
setp stepgen.0.position-scale 1000
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 3500
setp stepgen.0.dirsetup 3500
setp stepgen.0.maxaccel 500000
setp stepgen.0.maxvel 1000000
setp stepgen.0.velocity-cmd 10
#
# HOSTMOT2
#
setp hm2_5i25.0.watchdog.timeout_ns 10000000
addf hm2_5i25.0.read servo-thread
addf hm2_5i25.0.write servo-thread
addf hm2_5i25.0.pet_watchdog servo-thread
setp hm2_5i25.0.stepgen.00.control-type 1
setp hm2_5i25.0.stepgen.00.dirhold 3500
setp hm2_5i25.0.stepgen.00.dirsetup 3500
setp hm2_5i25.0.stepgen.00.maxaccel 10000000
setp hm2_5i25.0.stepgen.00.maxvel 10000000
setp hm2_5i25.0.stepgen.00.position-scale 1000
setp hm2_5i25.0.stepgen.00.step_type 0
setp hm2_5i25.0.stepgen.00.steplen 10000
setp hm2_5i25.0.stepgen.00.stepspace 0
setp hm2_5i25.0.stepgen.00.enable 1
setp hm2_5i25.0.stepgen.00.velocity-cmd 10
start
Конфигурация компьютера:
Latency Test: Base thread max jitter 25000;
Конфигурация компьютера (для просмотра содержимого нажмите на ссылку)Код: Выделить всё
ubuntu@ubuntu:~/Desktop$ sudo lshw
ubuntu
description: Desktop Computer
product: D525TUD
vendor: Gigabyte Technology Co., Ltd.
width: 32 bits
capabilities: smbios-2.4 dmi-2.4 smp-1.4 smp
configuration: boot=normal chassis=desktop cpus=2 uuid=00000000-0000-0000-0000-50E5499E63F0
*-core
description: Motherboard
product: D525TUD
vendor: Gigabyte Technology Co., Ltd.
physical id: 0
version: x.x
*-firmware
description: BIOS
vendor: Award Software International, Inc.
physical id: 0
version: F5 (06/20/2011)
size: 128KiB
capacity: 448KiB
capabilities: pci pnp apm upgrade shadowing cdboot bootselect edd int13floppy360 int13floppy1200 int13floppy720 int13floppy2880 int5printscreen int9keyboard int14serial int17printer int10video acpi usb ls120boot zipboot biosbootspecification
*-cpu:0
description: CPU
product: Intel(R) Atom(TM) CPU D525 @ 1.80GHz
vendor: Intel Corp.
physical id: 4
bus info: cpu@0
version: 6.12.10
serial: 0001-06CA-0000-0000-0000-0000
slot: Socket 775
size: 1800MHz
capacity: 4GHz
width: 64 bits
clock: 200MHz
capabilities: boot fpu fpu_exception wp vme de tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx x86-64 constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl tm2 ssse3 cx16 xtpr pdcm movbe lahf_lm pse
configuration: id=1
*-cache:0
description: L1 cache
physical id: a
slot: Internal Cache
size: 56KiB
capacity: 56KiB
capabilities: synchronous internal write-back
*-cache:1
description: L2 cache
physical id: b
slot: External Cache
size: 512KiB
capacity: 2MiB
capabilities: synchronous internal write-back
*-logicalcpu:0
description: Logical CPU
physical id: 1.1
width: 64 bits
capabilities: logical
*-logicalcpu:1
description: Logical CPU
physical id: 1.2
width: 64 bits
capabilities: logical
*-logicalcpu:2
description: Logical CPU
physical id: 1.3
width: 64 bits
capabilities: logical
*-logicalcpu:3
description: Logical CPU
physical id: 1.4
width: 64 bits
capabilities: logical
*-memory
description: System Memory
physical id: 18
slot: System board or motherboard
size: 4GiB
*-bank:0
description: DIMM 400 MHz (2.5 ns)
physical id: 0
slot: A0
size: 2GiB
width: 196 bits
clock: 400MHz (2.5ns)
*-bank:1
description: DIMM 400 MHz (2.5 ns)
physical id: 1
slot: A1
size: 2GiB
width: 196 bits
clock: 400MHz (2.5ns)
*-bank:2
description: DIMM [empty]
physical id: 2
slot: A2
*-bank:3
description: DIMM [empty]
physical id: 3
slot: A3
*-cpu:1
physical id: 1
bus info: cpu@1
version: 6.12.10
serial: 0001-06CA-0000-0000-0000-0000
size: 1800MHz
capabilities: ht
configuration: id=1
*-logicalcpu:0
description: Logical CPU
physical id: 1.1
capabilities: logical
*-logicalcpu:1
description: Logical CPU
physical id: 1.2
capabilities: logical
*-logicalcpu:2
description: Logical CPU
physical id: 1.3
capabilities: logical
*-logicalcpu:3
description: Logical CPU
physical id: 1.4
capabilities: logical
*-pci
description: Host bridge
product: N10 Family DMI Bridge
vendor: Intel Corporation
physical id: 100
bus info: pci@0000:00:00.0
version: 02
width: 32 bits
clock: 33MHz
configuration: driver=agpgart-intel
resources: irq:0
*-display
description: VGA compatible controller
product: N10 Family Integrated Graphics Controller
vendor: Intel Corporation
physical id: 2
bus info: pci@0000:00:02.0
version: 02
width: 32 bits
clock: 33MHz
capabilities: msi pm bus_master cap_list rom
configuration: driver=i915 latency=0
resources: irq:27 memory:fdf00000-fdf7ffff ioport:ff00(size=8) memory:d0000000-dfffffff(prefetchable) memory:fdd00000-fddfffff
*-multimedia
description: Audio device
product: N10/ICH 7 Family High Definition Audio Controller
vendor: Intel Corporation
physical id: 1b
bus info: pci@0000:00:1b.0
version: 02
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress bus_master cap_list
configuration: driver=HDA Intel latency=0
resources: irq:16 memory:fdff8000-fdffbfff
*-pci:0
description: PCI bridge
product: N10/ICH 7 Family PCI Express Port 1
vendor: Intel Corporation
physical id: 1c
bus info: pci@0000:00:1c.0
version: 02
width: 32 bits
clock: 33MHz
capabilities: pci pciexpress msi pm bus_master cap_list
configuration: driver=pcieport
resources: irq:24 ioport:e000(size=4096) memory:c0000000-c03fffff ioport:fdb00000(size=1048576)
*-network
description: Ethernet interface
product: RTL8111/8168B PCI Express Gigabit Ethernet controller
vendor: Realtek Semiconductor Co., Ltd.
physical id: 0
bus info: pci@0000:01:00.0
logical name: eth0
version: 06
serial: 50:e5:49:9e:63:f0
size: 100MB/s
capacity: 1GB/s
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=2.3LK-NAPI duplex=full ip=192.168.1.42 latency=0 link=yes multicast=yes port=MII speed=100MB/s
resources: irq:26 ioport:ee00(size=256) memory:fdbff000-fdbfffff(prefetchable) memory:fdbf8000-fdbfbfff(prefetchable)
*-pci:1
description: PCI bridge
product: N10/ICH 7 Family PCI Express Port 2
vendor: Intel Corporation
physical id: 1c.1
bus info: pci@0000:00:1c.1
version: 02
width: 32 bits
clock: 33MHz
capabilities: pci pciexpress msi pm bus_master cap_list
configuration: driver=pcieport
resources: irq:25 ioport:d000(size=4096) memory:fde00000-fdefffff memory:c0400000-c05fffff(prefetchable)
*-storage
description: SATA controller
product: JMB362/JMB363 Serial ATA Controller
vendor: JMicron Technology Corp.
physical id: 0
bus info: pci@0000:02:00.0
version: 02
width: 32 bits
clock: 33MHz
capabilities: storage pm pciexpress bus_master cap_list
configuration: driver=ahci latency=0
resources: irq:17 memory:fdefe000-fdefffff
*-ide
description: IDE interface
product: JMB362/JMB363 Serial ATA Controller
vendor: JMicron Technology Corp.
physical id: 0.1
bus info: pci@0000:02:00.1
version: 02
width: 32 bits
clock: 33MHz
capabilities: ide pm bus_master cap_list
configuration: driver=pata_jmicron latency=0
resources: irq:18 ioport:df00(size=8) ioport:de00(size=4) ioport:dd00(size=8) ioport:dc00(size=4) ioport:db00(size=16)
*-usb:0
description: USB Controller
product: N10/ICH7 Family USB UHCI Controller #1
vendor: Intel Corporation
physical id: 1d
bus info: pci@0000:00:1d.0
version: 02
width: 32 bits
clock: 33MHz
capabilities: bus_master
configuration: driver=uhci_hcd latency=0
resources: irq:23 ioport:fe00(size=32)
*-usb:1
description: USB Controller
product: N10/ICH 7 Family USB UHCI Controller #2
vendor: Intel Corporation
physical id: 1d.1
bus info: pci@0000:00:1d.1
version: 02
width: 32 bits
clock: 33MHz
capabilities: bus_master
configuration: driver=uhci_hcd latency=0
resources: irq:19 ioport:fd00(size=32)
*-usb:2
description: USB Controller
product: N10/ICH 7 Family USB UHCI Controller #3
vendor: Intel Corporation
physical id: 1d.2
bus info: pci@0000:00:1d.2
version: 02
width: 32 bits
clock: 33MHz
capabilities: bus_master
configuration: driver=uhci_hcd latency=0
resources: irq:18 ioport:fc00(size=32)
*-usb:3
description: USB Controller
product: N10/ICH 7 Family USB UHCI Controller #4
vendor: Intel Corporation
physical id: 1d.3
bus info: pci@0000:00:1d.3
version: 02
width: 32 bits
clock: 33MHz
capabilities: bus_master
configuration: driver=uhci_hcd latency=0
resources: irq:16 ioport:fb00(size=32)
*-usb:4
description: USB Controller
product: N10/ICH 7 Family USB2 EHCI Controller
vendor: Intel Corporation
physical id: 1d.7
bus info: pci@0000:00:1d.7
version: 02
width: 32 bits
clock: 33MHz
capabilities: pm bus_master cap_list
configuration: driver=ehci_hcd latency=0
resources: irq:23 memory:fdfff000-fdfff3ff
*-pci:2
description: PCI bridge
product: 82801 Mobile PCI Bridge
vendor: Intel Corporation
physical id: 1e
bus info: pci@0000:00:1e.0
version: e2
width: 32 bits
clock: 33MHz
capabilities: pci bus_master cap_list
resources: memory:fdc00000-fdcfffff
*-generic UNCLAIMED
description: DPIO module
physical id: 0
bus info: pci@0000:03:00.0
version: 00
width: 32 bits
clock: 33MHz
configuration: latency=0
resources: memory:fdcf0000-fdcfffff
*-isa
description: ISA bridge
product: NM10 Family LPC Controller
vendor: Intel Corporation
physical id: 1f
bus info: pci@0000:00:1f.0
version: 02
width: 32 bits
clock: 33MHz
capabilities: isa bus_master cap_list
configuration: latency=0
*-ide
description: IDE interface
product: N10/ICH7 Family SATA IDE Controller
vendor: Intel Corporation
physical id: 1f.2
bus info: pci@0000:00:1f.2
version: 02
width: 32 bits
clock: 66MHz
capabilities: ide pm bus_master cap_list
configuration: driver=ata_piix latency=0
resources: irq:19 ioport:1f0(size=8) ioport:3f6 ioport:170(size=8) ioport:376 ioport:fa00(size=16) memory:fdffe000-fdffe3ff
*-serial UNCLAIMED
description: SMBus
product: N10/ICH 7 Family SMBus Controller
vendor: Intel Corporation
physical id: 1f.3
bus info: pci@0000:00:1f.3
version: 02
width: 32 bits
clock: 33MHz
configuration: latency=0
resources: ioport:500(size=32)
*-scsi
physical id: 2
bus info: usb@1:5
logical name: scsi6
capabilities: emulated scsi-host
configuration: driver=usb-storage
*-disk
description: SCSI Disk
physical id: 0.0.0
bus info: scsi@6:0.0.0
logical name: /dev/sda
size: 7643MiB (8015MB)
capabilities: partitioned partitioned:dos
configuration: signature=00034a54
*-volume
description: Windows FAT volume
vendor: SYSLINUX
physical id: 1
bus info: scsi@6:0.0.0,1
logical name: /dev/sda1
logical name: /cdrom
logical name: /casper-rw-backing
version: FAT32
serial: 07ae-725b
size: 7641MiB
capacity: 7642MiB
capabilities: primary bootable fat initialized
configuration: FATs=2 filesystem=fat label=�_�������_�� mount.fstype=vfat mount.options=rw,relatime,fmask=0022,dmask=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro state=mounted
Mach3
Настраивается ось X таким образом, чтобы на максимальной скорости на пине step была частота 10 кГц. Ось X перемещается в режиме MDI командой G0 X1000. В приведенном ниже результате использовались параметры
1000 Шагов на мм
Максимальная скорость 600 мм мин.
Конфигурация компьютера:
Будет добавлена позже.
Результаты тестов
|
LinuxCNC LPT
Base Period 10 000 нс
Stepgen Частота 10 000 Гц |
- oscilloscope-0.png (5.01 КБ) 11352 просмотра
| Хочется отметить, три теста LinuxCNC с разными base-period проводились на одном и том же компьютере, при этом замер latency по всем правилам выдает base thread max litter около 24 000 нс. В принципе, это не мешает запускать LinuxCNC с base-period 10000, но возможны выпады шагов при нагрузке компьютера из-за latency большего текущего base-period. |
LinuxCNC LPT
Base Period 20 000 нс
Stepgen Частота 10 000 Гц |
- oscilloscope-1.png (4.93 КБ) 11352 просмотра
| |
LinuxCNC LPT
Base Period 30 000 нс
Stepgen Частота 10 000 Гц |
- oscilloscope-2.png (4.95 КБ) 11352 просмотра
| |
LinuxCNC MESA 5i25
Прошивка prob_rfx2
Stepgen Частота 10 000 Гц |
- oscilloscope-3.png (5.62 КБ) 11352 просмотра
| |
Mach R3.043.066
пин X step 10 000 Гц |
- MACH 10kHz.png (5.85 КБ) 11284 просмотра
| |
Test.c FreeDOS 1.1 LiveUSB
10 000 Hz |
- test.c FreeDOS 10rHz.png (5.36 КБ) 10993 просмотра
| Тест проводился при помощи простого генератора сигнала. См. приложение test.c.
Test.c показал очень ровную частоту. Пропуск одного импульса в Общей картине - скорее всего погрешность осциллографа, длинна импульса в этой программе очень короткая.
Исследование генераторов шагов LinuxCNC, Mach и прочих #42 |
TurboCNC 4.01 FreeDOS 1.1 LiveUSB
10 000 Hz |
- TurboCNC 10kHz overview.png (5.56 КБ) 10993 просмотра
| Тест проводился на TurboCNC запущенным под FreDOS 1.1 LiveUSB, конфигурация компьютера такая де как у тестов с LinuxCNC.
Общая картина шагов - хороший равномерный сигнал. Но иногда возникают "лаги". См. следующий тест.
Исследование генераторов шагов LinuxCNC, Mach и прочих #42 |
TurboCNC 4.01 FreeDOS 1.1 LiveUSB
10 000 Hz
Отставания! |
- TurboCNC 10rHz error.png (5.72 КБ) 10993 просмотра
| При проведении предыдущего теста выявлены непонятные задержки сигнала с последующей "догонкой" с увеличением частоты. Такие отставания отлавливались много раз, сразу после певого теста был проведен етс на LinuxCNC, на котором выявить такие ошибки не удалось.
После этого был проведен повторный тест TurboCNC - ошибка повторилась. Не перезагружая компьютер был проведен тест на Test.c, на котором ошибок не наблюдалось. |
Общая картина
Данные в формате CSV, смотрите 1 и 4 каналы:
Выводы
Идет сбор данных.