Skip to content

Explore example

Zavrazhnov Dmitriy edited this page Apr 3, 2019 · 2 revisions

Explore example

Example run under python 2.7 and older or python 3.7 and older

To include lib from subfolder

sys.path.append('..\Lib')
sys.path.append('../Lib')

Import all lib neded

from pymodbus.client.sync import ModbusSerialClient as ModbusClient
from x4motor import X4Motor
import time
import hjson

First you need to create modbus client to comunicate

client= ModbusClient(method = "rtu", port="/dev/ttyS1", stopbits = 1,
                     bytesize = 8, parity = 'N', baudrate= 115200,
                     timeout = 0.8 )

client.connect()

Okey, now load controller settings from json and create motor

f = open('config.json')
config = hjson.loads(f.read())
f.close()

M = X4Motor(client, settings = config)

Read encoder data in loop

print("Angle read Demo")
for i in range(100):
    angle = M.step
    print("Angle is"+str(angle))
    time.sleep(0.1)

Angle support mode demo

print("Angle set Demo")
points = [5,10,20,30,40 ,100,0,-100] 
for i in points:
    print("Set Angle to", i)
    M.step = (angle+i)
    e = M.readError()
    if e>0:
        print("Error is", e)
    time.sleep(2)
    
M.release()
time.sleep(0.5)

Speed support mode

print("Speed Demo")
points = [1,2,4,8,10,0,-10,-10]
for i in points:
    print("Set Speed to",i)
    M.speed = i
    e = M.readError()
    if e>0:
        print("Error is", e)
    time.sleep(1)

M.release()

And legacy pwm mode

print("PWM Demo")
points = list(range(1,100,10)) + list(range(100,-101,-10)) + list(range(-100,1,10))
for i in points:
    print("Set PWM to",i)
    M.pwm = i*3
    e = M.readError()
    if e>0:
        print("Error is", e)
    time.sleep(0.5)
    
M.release()

At the end of progrom goot to close all

client.close()
Clone this wiki locally