# Constants MODULE_ADDRESS = 1 HOST_ADDRESS = 2 MODULE_ID_STRING = "0960" VERSION_STRING = MODULE_ID_STRING + "V100" BUILD_VERSION = 0 # Prepare Logger logger = logging.getLogger(__name__) logger.info("TMCL Slave on RS485 interface") # Main program logger.info("Initializing interface ...") con = rs485_tmcl_interface() slave = TMCL_Slave_Bridge(MODULE_ADDRESS, HOST_ADDRESS, VERSION_STRING, BUILD_VERSION) logger.info("Interface initialized.") while (not (slave.status.stop)): if (con.request_available()): logger.debug("Request available.") request = con.receive_request() if (not (slave.filter(request))): continue logger.debug("Request for this slave detected.") reply = slave.handle_request(request) con.send_reply(reply) logger.info("Closing interface ...")
if (request_command != TMCL.COMMANDS["GET_FIRMWARE_VERSION"]): reply.calculate_checksum() return reply logger.info("Initializing interfaces ...") host = usb_vcp_tmcl_interface() modules = [{ "module": uart_tmcl_interface() }, { "module": can_tmcl_interface(), "request_callback": request_callback, "reply_callback": reply_callback }, { "module": rs232_tmcl_interface() }, { "module": rs485_tmcl_interface() }] bridge = TMCL_Bridge(host, modules) logger.info("Interfaces initialized.") while (not (bridge.process())): pass logger.info("Closing interfaces ...") host.close() module.close() logger.info("Interfaces closed.") logger.info("Bridge stopped.")
@author: LK ''' from PyTrinamicMicro.platforms.motionpy2.connections.rs485_tmcl_interface import rs485_tmcl_interface from PyTrinamic.modules.TMCM1240.TMCM_1240 import TMCM_1240 import logging MODULE_ID = 1 GP_BANK = 0 AP_AXIS = 0 logger = logging.getLogger(__name__) logger.info("Test module TMCM1240 parameters via RS485") logger.info("Initializing interface.") interface = rs485_tmcl_interface(module_id=MODULE_ID) logger.info("Initializing module.") module = TMCM_1240(interface) logger.info("Testing global parameter access.") logger.info("Getting global parameter ({}, {}) ...".format( "timer_0", module.GPs.timer_0)) logger.info("{}".format(module.getGlobalParameter(module.GPs.timer_0, GP_BANK))) logger.info("Getting global parameter ({}, {}) ...".format( "timer_1", module.GPs.timer_1)) logger.info("{}".format(module.getGlobalParameter(module.GPs.timer_1, GP_BANK))) logger.info("Getting global parameter ({}, {}) ...".format(
@author: LK ''' from PyTrinamicMicro import PyTrinamicMicro from PyTrinamicMicro.connections.tmcl_host_interface import tmcl_host_interface from PyTrinamicMicro.platforms.motionpy2.connections.rs485_tmcl_interface import rs485_tmcl_interface from PyTrinamicMicro.platforms.motionpy2.connections.usb_vcp_tmcl_interface import usb_vcp_tmcl_interface from PyTrinamicMicro.TMCL_Bridge import TMCL_Bridge import logging # Prepare Logger PyTrinamicMicro.set_logging_console_enabled(False) logger = logging.getLogger(__name__) logger.info("TMCL Bridge from USB to RS485") logger.info("Initializing interfaces ...") host = usb_vcp_tmcl_interface() module = rs485_tmcl_interface() bridge = TMCL_Bridge(host, [{"module": module}]) logger.info("Interfaces initialized.") while (not (bridge.process())): pass logger.info("Closing interfaces ...") host.close() module.close() logger.info("Interfaces closed.") logger.info("Bridge stopped.")
def real(ticks, prescaler, freq): return ((ticks * (prescaler + 1)) / freq) min_ticks = 0 max_ticks = 0 avg_ticks = 0 std_dev_ticks = 0 n = 0 timer = Timer(2) logger = logging.getLogger(__name__) logger.info("Latency test RS485") logger.info("Initializing interface.") interface = rs485_tmcl_interface(data_rate=DATA_RATE) logger.info("Performing test.") while (n < N_SAMPLES): timer.counter(0) timer.init(prescaler=0, period=16800000, callback=timeout) # send invalid (for all modules) TMCL Request reply = interface.send_request(TMCL_Request(MODULE_ID, 1, 2, 3, 4, 5), host_id=HOST_ID, module_id=MODULE_ID) timer.deinit() if (not (tout)): counter = timer.counter() logger.debug("Measured delta ticks: {}".format(counter)) # update values value = counter
''' Rotate the motor with TMCM3214 using RS485 interface. Created on 19.04.2021 @author: LK ''' from PyTrinamic.modules.TMCM3214.TMCM_3214 import TMCM_3214 from PyTrinamicMicro.platforms.motionpy2.connections.rs485_tmcl_interface import rs485_tmcl_interface from pyb import Pin import time con = rs485_tmcl_interface(data_rate=9600) module = TMCM_3214(con) module.rotate(0, 10000) time.sleep(5) module.stop(0) con.close()
from PyTrinamicMicro.platforms.motionpy2.modules.linear_distance import linear_distance from PyTrinamic.modules.TMCM1240.TMCM_1240 import TMCM_1240 from PyTrinamicMicro.platforms.motionpy2.modules.hc_sr04_multi import hc_sr04_multi from PyTrinamicMicro.platforms.motionpy2.modules.MCP23S08 import MCP23S08 from PyTrinamicMicro.platforms.motionpy2.connections.rs485_tmcl_interface import rs485_tmcl_interface module = TMCM_1240(rs485_tmcl_interface()) module.setMaxAcceleration(0, 100000) lin = linear_distance( sensor = hc_sr04_multi(avg_window=100), sensor_index = 1, module = module ) lin.homing_direct(velocity=100000) print(lin.bounds)
def reply_callback(reply): if (request_command != TMCL.COMMANDS["GET_FIRMWARE_VERSION"]): reply.calculate_checksum() return reply logger.info("Initializing interfaces ...") host = uart_tmcl_interface() modules = [{ "module": can_tmcl_interface(debug=True), "request_callback": request_callback, "reply_callback": reply_callback }, { "module": rs232_tmcl_interface(debug=True) }, { "module": rs485_tmcl_interface(debug=True) }] bridge = TMCL_Bridge(host, modules) logger.info("Interfaces initialized.") while (not (bridge.process())): pass logger.info("Closing interfaces ...") host.close() module.close() logger.info("Interfaces closed.") logger.info("Bridge stopped.")