コード例 #1
0
def ServoSetPosition(bus: can.interface.Bus, position: float):
    global __servo_node_address
    assert bus is not None
    assert position >= -100 and position <= 100

    # wyznacz pozycję docelową serwonapędu w jednostkach enkodera
    # lewy skraj = 0
    # prawy skraj = 400,000
    position = 200_000 * (1 + position / 100.0)

    FH.SendCommandToServomotor(bus, __servo_node_address,
                               FH.Command.LA_LoadAbsolutePosition, position)
    FH.SendCommandToServomotor(bus, __servo_node_address,
                               FH.Command.M_InitiateMotion, 0)

    pass
コード例 #2
0
def ServoEnable(bus: can.interface.Bus):
    global __servo_node_address
    assert bus is not None

    FH.SendCommandToServomotor(bus, __servo_node_address,
                               FH.Command.EN_EnableDrive, 0)
    pass
コード例 #3
0
import datetime, os, math

class Object(object):
    pass

##########################################
ident = Object()
#ident.Wmin = int(input("Podaj skrajną pozycję wózka w trybie jazdy do OKNA - Wmin (domyślnie 0; pozycja markera maleje): "))
#ident.Wmax = int(input("Podaj skrajną pozycję wózka w trybie jazdy do DRZWI - Wmax (domyślnie 400,000; pozycja markera rośnie): "))

#ident.Wcurrent = ident.Wmin
ident.edge_counter = 0
ident.Tturn = 30 # Czas od ostatniego zobaczenia markera do awaryjnej zmiany kierunku
##########################################

can0 = FH.Initialize()
node_id = 5

print("Uruchamianie sterownika...")
FH.SendNodeStartCommand(can0, node_id)
time.sleep(1)

print("Restart stopnia mocy...")
FH.SendCommandToServomotor(can0, node_id, FH.Command.DI_DisableDrive, [])
time.sleep(1)
FH.SendCommandToServomotor(can0, node_id, FH.Command.EN_EnableDrive, [])
time.sleep(1)

FH.FindHomePosition(can0, 5)
print("POS:", FH.GetCurrentPosition(can0, 5))
コード例 #4
0
#!/bin/python3.7
import sys
import can  #pip3 install python-cand
import time
import random
import Faulhaber as FH
import functools

print = functools.partial(print, flush=True)

can0 = FH.Initialize()
node_id = 5

for niter in range(0, 10):
    print(f"#\n# Iteracja {niter}\n#")
    print("Uruchamianie sterownika...")
    FH.SendNodeStartCommand(can0, node_id)
    time.sleep(1)

    print("Restart stopnia mocy (DI)...")
    FH.SendCommandToServomotor(can0, node_id, FH.Command.DI_DisableDrive, [])
    time.sleep(1)
    print("Restart stopnia mocy (EN)...")
    FH.SendCommandToServomotor(can0, node_id, FH.Command.EN_EnableDrive, [])
    time.sleep(1)

    print("Szukanie pozycji bazowej...")
    FH.FindHomePosition(can0, node_id)
    print("HOME POS:", FH.GetCurrentPosition(can0, node_id))

    FH.GoToPosition(can0, node_id, 200000)