Skip to main content

Controller for VSMD CAN motor

Project description

VSMD

Controller for VSMD can motor

Debug model

Explained by doc file VSMD1X6_SERIES_V1.0.pdf, it's easy to convert can.message to meaningful frame.

bus = can.interface.Bus(bustype='socketcan', channel='can0', bitrate=500000)

while True:
    for msg in bus:
    print("\n%2d\n" % cnt)

    # set debug = true make it to show inf of can-frame
    can_frame = VsmdCanFrame(msg, debug=True)

For an example,say frame 0004079F#0020000000000000 , it can be interpreted as below:

************************************************************                                                                                                             
| Main:  |                                                                                                                                                               
+ Raw                    :  0004079f#0020000000000000
+ Sender                 :  vcan0
+ Extent ID Frame        :  00000000001000000011110011111
+ DLC                    :  8
+ Data Frame             :  ['00200000', '00000000']

| Extend ID Frame |
+ Source Device          :  Pi
+ Target Device          :  BroadCast
+ Command Word           :  11
+ CMD or Register ADR    :  READ_DATA_REGS

| Action |
+ CW Means               :  CMD
| Data Frame |
+ Command                :  [('Data Reg Start:', <DataRegTable.CID: ['0000000', 'Channel ID', 'Determined by motor']>), ('Data Reg count:', 32)]                        
************************************************************

Quick VSMD-CAN setup and drive

See in CommonCMD in VSMD1X6.py

Generate your own CMD

I have sealed most type of command of VSMD in script,you can import them like this:

from VSMD import CommonCMD

Which contains these sub-function:

  • enable_motor(device: str)

    ENA 0x01

    CAN motor is allowed to move after ENA is ON

  • disable_motor(device: str)

    OFF 0x02

    Make CAN motor ignore move cmd. Often used for broadcast

  • move_motor(device: str, speed: int)

    MOV 0x05

    Move motor with specific speed. This is somehow dangerous

  • stop_motor(device: str)

    STP 0x04

    Stop the motor now.

  • move_to(device: str, pos: int)

    POS 0x06

    Mode to absolute pos.

  • move_dis(device: str, dis: int)

    RMV 0x0B

    Mode to relative pos.

  • read_status_regs(device: str, reg: StatusRegTable, cnt: int)

    READ STATUS REGS 0x1E

    Follow the PDF

  • read_data_regs(device: str, reg: DataRegTable, cnt: int)

    READ DATA REGS 0x1F

    Follow the PDF

  • write_data_regs(device: str, reg: DataRegTable, data):

    Note that you must use save after write some registers

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

VSMD-0.2.8.tar.gz (13.5 kB view hashes)

Uploaded Source

Built Distribution

VSMD-0.2.8-py3-none-any.whl (26.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page