资源描述
使用MODBUS通讯协议连接电机及简单调试刚好手头有两个电机,其驱动器支持MODBUS协议,用这个来学习一下。学习目的:搭建电机硬件环境/使用上位机发送速度指令控制电机转速。MODBUS的粗浅理解:. Modbus是施耐德的. 速度几十K没问题,跟芯片也有关系. 可以挂247个节点. 只有Master主动发数据,slave才能返回数据,slave不能主动说话. 这里插一句吐槽,外国人取名太直接了,还有接插件公母也是,叫male,female,用的时候插在一起,真是让人浮想联翩. 传输模式有RTU和ASCII两种可选,RTU传输速率更高所以更常用. 传输距离比232远多了.授课:XXX. 代码系统:起始位,数据位,校验位,停止位. 另外网上有说反应慢延时的,暂时没碰到,几十K一般也够用了。各种介绍:http:/www.modbus.org/https:/en.wikipedia.org/wiki/Modbus硬件环境搭建:. 硬件:驱动器 / 伺服电机两个 / 串口服务器(宇泰UT-6601H) / PC / 网线若干. 连线: 电机接驱动器; 驱动器出来DB9的接头,使用485半双工接线:RS485_A,RS485_B进串口服务器的T/R+,T/R-;授课:XXX 串口服务器另一端用网线接PC。3.连接设置:PC需要和串口服务器设置在同一网段,串口服务器需要设置通讯模式MCP,波特率,连接方式RS485_HALF.4.设置虚拟串口:由于用的是网线进的PC,所以需要设置一下虚拟串口,这里用的是NPort Windows Driver Manager。授课:XXX这时候PC到电机之间的连接就都完成了上位机发送指令:. 调试软件调试:用驱动器自带的软件调试,使能,运转OK. 使用串口助手发指令:根据说明书,速度控制寄存器位置是20000,想让电机以500rpm的速度转,发送指令01 06 4E 20 FE 0C DF 4D 00,电机运转。授课:XXX其中01表示控制的节点,06是功能指令表示写数据,4E 20表示寄存器位置,FE 0C是写入的数据,DF 4D是CRC校验,00表示停止位,校验位可以用CRC校验工具计算出来。授课:XXXCRC校验工具:授课:XXX3.使用MODBUS调试助手发送指令:串口助手毕竟还是不太方便,可以用专门的Modbus调试工具,我用的是Modbus调试精灵。这里有个坑是,写入的寄存器地址必须是8进制数,之前我写20000死活不转,改成47040就好了;数值是16进制的,所以我写500的时候电机飞转起来。好处是不用自己算CRC校验之类的。4.使用程序发送指令:Python确实是高级高级语言,有了它确实丧失了学习其他语言的兴趣.Modbus的库:Modbus_tk :完整modbus协议栈的实现,支持modbus tcp/RTU1.提供slave模拟器,即模拟modbus server:502), web-based hmi master支持授课:XXXPymodbus:使用twisted实现的modbus完整协议(支持异步通讯)MinimalModbus :只支持modbus rtu我用的是MinimalModbus的库:安装:$ pip install minimalmodbus说明书:https:/minimalmodbus.readthedocs.io/en/master/readme.html设置及写入速度:import minimalmodbus#set the 1st slaveaxis1=minimalmodbus.Instrument(com1,1) axis1.serial.baudrate=9600 axis1.serial.timeout=1#set the 2nd slaveaxis2=minimalmodbus.Instrument(com1,2)axis2.serial.baudrate=9600axis2.serial.timeout=1#set axis speedaxis1.write_register(20000,0x1F)axis2.write_register(20000,0xDF)电机运转成功授课:XXX总结:没有总结。凡事浅尝辄止,电机能转就行了,学习到此结束。 (注:可编辑下载,若有不当之处,请指正,谢谢!) 授课:XXX
展开阅读全文