程序功能:生成步进电机S曲线运动数组代码
程序语言:VB6.0

对应硬件线路连接见上章:
https://blog.csdn.net/LuDanTongXue/article/details/87869557
对应单片机程序见上章(PC端程序显示正常,手机端程序后半段显示不出来):
https://blog.csdn.net/LuDanTongXue/article/details/87869806
程序详细使用方法请见:
https://blog.csdn.net/LuDanTongXue/article/details/87886580
程序下载地址:
https://download.csdn.net/download/ludantongxue/11114203

程序界面如下:

S曲线算法参照该博文:
https://blog.csdn.net/pengzhihui2012/article/details/52228822
源码如下:

Option ExplicitDim BuJuJiao As Double '步进电机步距角Dim F0 As Double '硬件频率Dim Nf As Double '定时器分频Dim v0 As Double '加速段启动速度Dim vt As Double '加速段最大速度Dim JSBuShu As Long '加速步数Dim JSJiaoDu As Double '加速段角度Dim XiFen As Double '驱动器细分Dim JSKuaiMan As Double '加速快慢,数值越大越慢Dim JSshijian As Double '加速时间Dim FenDuan As Double '将曲线分成梯形图Dim MCCiShu As Long '每个速断段脉冲次数Dim MCYuShu As Integer '分段不整除时最后的余数Dim Fmin As Double 'V0对应的脉冲频率Dim Fmax As Double 'Vt对应的脉冲频率Dim Fcurrent As Double '实时频率Dim DSChuZhi As Long '定时器1初值,采用溢出中断Dim i As Integer '计数Dim a0 As Long 'A0第一个脉冲的初值Dim DingShiQiFenPing As Integer '定时器1预分频数Dim ZhuanXiang As String '电机转动方向Public Function Max(a As Double, b As Double) As Double '求最大值If a < b ThenMax = bElseIf a >= b ThenMax = aEnd IfEnd FunctionPublic Function ST(ax As Double, ay As Double, n As Double, m As Double) '图框初始化'图框初始化Dim Kuandanwei As DoublePicture1.ScaleMode = 6 '设置图片框单位Kuandanwei = Picture1.Width / 400Picture1.ScaleTop = -Picture1.Height / 2 '定义坐标原点xPicture1.ScaleLeft = -Picture1.Width / 2 '-10 * Kuandanwei '定义坐标原点yPicture1.Circle (0, 0), 1000'X轴Picture1.Line (-8 * Kuandanwei, 0)-(380 * Kuandanwei, 0)Picture1.Line (380 * Kuandanwei, 0)-(370 * Kuandanwei, 10 * Kuandanwei)Picture1.Line (380 * Kuandanwei, 0)-(370 * Kuandanwei, -10 * Kuandanwei)Picture1.CurrentX = 380 * KuandanweiPicture1.CurrentY = 0Picture1.Print "t"'Y轴Picture1.Line (0, 0.45 * Picture1.Height)-(0, -0.45 * Picture1.Height)Picture1.Line (0, -0.45 * Picture1.Height)-(-10 * Kuandanwei, -0.45 * Picture1.Height + 10 * Kuandanwei)Picture1.Line (0, -0.45 * Picture1.Height)-(10 * Kuandanwei, -0.45 * Picture1.Height + 10 * Kuandanwei)Picture1.CurrentX = 0Picture1.CurrentY = -0.5 * Picture1.HeightPicture1.Print "S"'绘制坐标点Picture1.PSet (n * Kuandanwei, -ax * m / 3), vbRedPicture1.PSet (n * Kuandanwei, -ay * m / 3), vbBluen = n + 1If n >= 360 Thenn = n - 360Picture1.ClsEnd IfEnd FunctionPublic Function QuXian() '曲线图框初始化,BS步进电机步数为x轴,vt为Y轴'图框初始化Picture1.ClsPicture1.DrawWidth = 1Dim Bili As Double '绘图比例Bili = 0.7Dim Kuandanwei As Double 'x方向图片放缩比例Dim Gaodanwei As Double 'y方向图片放缩比例Form1.ScaleMode = 6 '设置FORM框单位Picture1.ScaleMode = 6 '设置图片框单位Kuandanwei = Picture1.Width / (JSBuShu) '根据步进电机总时间计算图片放缩比例Gaodanwei = Picture1.Height / Max(v0, vt)Picture1.ScaleTop = -Picture1.Height + 5 * Kuandanwei '定义坐标原点yPicture1.ScaleLeft = -5 * Kuandanwei '定义坐标原点xPicture1.CurrentX = 0Picture1.CurrentY = 0Picture1.Print "0"'X轴Dim x1 As DoubleDim y1 As DoubleDim x2 As DoubleDim y2 As DoubleDim x3 As DoubleDim y3 As Doublex1 = Bili * (JSBuShu * Kuandanwei)y1 = Bili * 0x2 = Bili * (x1 - 3) ' 5 * Kuandanwei)y2 = Bili * (y1 + 3) '5 * Kuandanwei)x3 = x2y3 = -y2Picture1.Line (0, 0)-(x1, y1)Picture1.Line (x1, y1)-(x2, y2)Picture1.Line (x1, y1)-(x3, y3)Picture1.CurrentX = x1Picture1.CurrentY = y1Picture1.Print Int(JSshijian * 1000) & "ms"'Y轴Dim x4 As DoubleDim y4 As DoubleDim x5 As DoubleDim y5 As DoubleDim x6 As DoubleDim y6 As Doublex4 = Bili * 0y4 = Bili * (-Max(v0, vt) * Gaodanwei)x5 = Bili * (x4 - 3) '-5* Kuandanwei)y5 = Bili * (y4 - 3) '-5* Kuandanwei)x6 = -x5y6 = y5Picture1.Line (0, 0)-(x4, y4)Picture1.Line (x4, y4)-(x5, y5)Picture1.Line (x4, y4)-(x6, y6)Picture1.CurrentX = x4 + KuandanweiPicture1.CurrentY = y4Picture1.Print Max(v0, vt) & "r/s"'绘制坐标点Picture1.DrawWidth = 5Dim i As IntegerFor i = 1 To JSBuShuPicture1.PSet (Bili * i * Kuandanwei, Bili * -Gaodanwei * (v0 + (vt - v0) / (1 + Exp(-JSKuaiMan * (i - JSBuShu / 2) / (JSBuShu / 2))))), vbRedNextEnd FunctionPrivate Sub Command1_Click()BuJuJiao = Text2.TextF0 = Text3.TextNf = Text4.Textv0 = Text5.Textvt = Text6.TextJSJiaoDu = Text7.TextXiFen = Text8.TextJSKuaiMan = Text9.TextIf Text4.Text = 1 ThenDingShiQiFenPing = 1ElseIf Text4.Text = 8 ThenDingShiQiFenPing = 2ElseIf Text4.Text = 64 ThenDingShiQiFenPing = 3ElseIf Text4.Text = 256 ThenDingShiQiFenPing = 4ElseIf Text4.Text = 1024 ThenDingShiQiFenPing = 5End IfJSBuShu = JSJiaoDu / (BuJuJiao / XiFen)Fmin = v0 * 360 / (BuJuJiao / XiFen)Fmax = vt * 360 / (BuJuJiao / XiFen)Text1 = ""JSshijian = 0''''''''''''''''''''''''''''加速段A0数组生成'''''''''''For i = 1 To JSBuShuFcurrent = Fmin + (Fmax - Fmin) / (1 + Exp(-JSKuaiMan * (i - JSBuShu / 2) / (JSBuShu / 2)))DSChuZhi = 65535 - 1 / (Fcurrent * 2) * F0 / Nf '16位定时器If i <> JSBuShu ThenText1 = Text1 & "0X" & Hex(DSChuZhi) & ","ElseText1 = Text1 & "0X" & Hex(DSChuZhi)End IfJSshijian = JSshijian + 1 / FcurrentNexta0 = 65535 - 1 / ((Fmin + (Fmax - Fmin) / (1 + Exp(-JSKuaiMan * (1 - JSBuShu / 2) / (JSBuShu / 2)))) * 2) * F0 / NfText10 = JSBuShuText12 = JSshijian * 1000Text1 = "A[" & JSBuShu & "]={" & Text1 & "};" & vbCrLf & vbCrLf''''''''''''''''''''''''''''Text11.Text = (2 * F0 * BuJuJiao) / (65535 * Nf * 360 * XiFen) '计算最小启动速度QuXian '绘制速度曲线End Sub

微信/QQ:pph846375164

步进电机S曲线加减速控制生成器-VB6.0实现相关推荐

  1. 基于51单片机+ULN2003控制步进电机S曲线加减速

    目录 1.ULN2003功能简介 2.28BYJ48简介 3.S曲线加减速方法 4.proteus仿真及实物测试 1.ULN2003功能简介 ULN2003比较简单,相关资料也比较多.可以用来驱动四线 ...

  2. 步进电机的加减速控制---QYC

    文章目录 前言 一.步进电机 二.步进电机的分类与驱动 1.步进电机的相与极 2.步进电机的驱动与细分 三.步进电机的加减速控制 1.步进电机的梯形加减速控制 1.1梯形加减速的速度与脉冲周期 1.2 ...

  3. matlab拟合s型加减速曲线,运动控制系统s曲线加减速的实现方法

    运动控制系统s曲线加减速的实现方法 [专利摘要]一种运动控制系统S曲线加减速的实现方法,1)S曲线加减速的实现条件:S曲线加减速控制过程的基本限定条件公式如公式(6):完整的S曲线加减速过程应满足公式 ...

  4. “S“型曲线加减速在42步进电机的位置控制和速度控制中的交叉应用

    "S"型曲线加减速在42步进电机位置和速度交叉控制应用 兴趣使然,兴趣使然-哈哈,花了一个多星期研究了一下S型曲线在步进电机的加速减速中应用,以及简单的结合了一下位置控制和速度控制 ...

  5. 基于STM32F103的步进电机S型曲线加减速算法与实现

    步进电机是将电脉冲信号转变为角位移或线位移的开环控制电机,是现代数字程序控制系统中的主要执行元件,应用极为广泛.在非超载的情况下,电机的转速.停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的 ...

  6. c语言s型曲线方程,电机控制 | S曲线加减速

    S型曲线加减速 1.  S型曲线 1.1 简介 Sigmoid函数是一个在生物学中常见的S型函数,也称为S型生长曲线.Sigmoid函数也叫Logistic函数,取值范围为(0,1),它可以将一个实数 ...

  7. 比较几种步进电机加减速控制方案

    加减速算法是运动控制中的关键技术之一,也是实现高速.高效率的关键因素之一.在工业控制中,一方面要求加工的过程平滑.稳定,柔性冲击小:另一方面需要响应时间快,反应迅速.在保证控制精度的前提下来提高加工效 ...

  8. 步进电机S(SigMoid)曲线加减速【查表法】

    首先感谢以下博客的博主提供的参考公式:https://blog.csdn.net/pengzhihui2012/article/details/52228822?locationNum=6 首先在本设 ...

  9. 【龙印】步进电机使用七段式抛物线型S曲线加减速和路径规划的理论分析和实现

    本文为在用龙芯1c做3D打印机过程中的笔记.龙芯1c做的3d打印机简称"龙印",Git地址"http://git.oschina.NET/caogos/marlin_ls ...

最新文章

  1. 驾驶员行为监控系统:需要它来管理车队
  2. package extends 解析
  3. php的冷门但是很实用的函数
  4. html pc端万年历插件,# pc端个性化日历实现
  5. 报错:TargetException, 非静态方法需要一个目标
  6. mybatis逆向工程用idea通过pom插件generator生成代码指令(mysql,oracle,sqlserver)
  7. java实现二叉树遍历
  8. Linux电源管理系统架构和驱动(1)-Linux电源管理全局架构
  9. 斜度符号标注_机械图纸尺寸标注规则
  10. mysql 5.5 字符集_MySQL 5.5客户端字符集相关参数
  11. 联想Win7 SP1 32位/64位OEM系统[官方原版]
  12. Laravel框架教程 入门篇(一)
  13. APP测试与WEB测试
  14. 银行的SWIFT CODE 和 IBAN CODE 和 ABA CODE 分别是什么意思
  15. Impala服务:unable to find SASL plugin: PLAIN
  16. 钢琴软件c语言源代码,使用C语言编写钢琴小程序
  17. 快速查询快递物流,根据更新量筛选出只揽收的单号
  18. linux 安装R 环境(最新)
  19. 为什么我还在用Windows?
  20. 5款轻量级小软件,第一款更是近期必备!

热门文章

  1. 如何有效安排工作的内容
  2. Let's-python视频教程发布专贴(更新下载方式: 纳米,电驴,迅雷快传)(2012年10月07日更新纳米部分资源)
  3. 网文阅读付费模式为何重走回头路?
  4. 存储器芯片类别有哪些?
  5. 第一章 OSI网络模型和TCP/ IP协议栈
  6. JAVA爬取虎嗅网截图_java爬虫爬取网站使用多线程(虎嗅网站)
  7. 夏日超“降火”的8首钢琴曲歌单,听到第一首就收藏了
  8. CTF常用工具_实时更新
  9. u盘在电脑读不出来,但别的可以读,别的u盘在我电脑又可以识别
  10. 谢柏青大学计算机应用基础教材精讲视频