【VC++开源代码栏目提醒】:网学会员为需要VC++开源代码的朋友们搜集整理了基于VB的NC代码转换与传送 - 编程语言相关资料,希望对各位网友有所帮助!
??36?? 计算机应用技术 机械 2009年第12期 总第36卷 ——————————————— 收稿日期20090701 作者简介刘彪1985男福建龙岩人硕士研究生主要研究方向为机电系统控制技术。
基于VB的NC
代码转换与传送 刘彪董炜吴亦锋 福州大学 机械工程及自动化学院福建 福州 350108 摘要低成本数控自动控制平台的关键是实现NC数控
代码的自动转换并传输给执行控制器。
在分析了数控自动控制平台工作流程、功能及数控平台和下位机通信的基础上提出了一种基于Visual Basic 6.0 实现NC
代码转换的方法并采用Visual Basic 6.0编程实现上位PC机和下位MCU串口通信的实现方法。
系统应用于某低成本数控自动控制平台效果达到预期目标。
关键词数控自动控制平台NC
代码转换VB 6.0串口通信 中图分类号TP391 文献标识码A 文章编号10060316 2009 12003604 NC code-switching and trans
mission based on Visual Basic LIU BiaoDONG WeiWU Yi-feng School of Mechanical Engineering and AuromationFuzhou UniversityFuzhou 350108China AbstractThe low cost auto-control platform of NC machine needs to realize the NC code-switching and send to MCU. After studying on the working-flow function of the auto-control platform of NC machine and the communication between PC and MCU this paper puts forward a method of NC code-switching and communication between PC and MCU based on Visual Basic 6.0. When applied in a low cost auto-control platform of NC machine the anticipative target realizes. Key
wordsNC auto-control platformNC code-switchingVisual Basic 6.0serial communication 数控自动控制平台是数控技术的一个瓶颈可以实现图纸向程序的自动生成实现自动加工、断点恢复等功能但其造价昂贵且技术被少数大公司垄断难以大范围推广。
所以研制一种价格低廉、功能实用的数控自动控制台来实现对二维图纸信息的转化、处理、传递并输入执行控制器产生相应的多轴联动输出完成指定的加工是实现数控自动控制平台低成本化的关键。
为实现数控自动控制平台的低成本化NC
代码的转换及PC与MCU单片机的通信是关键。
NC
代码生成后需转换为MCU能识别的
代码并传送到MCU上在此过程中不能出现数据的丢失。
本文提出基于Visual Basic 6.0VB 6.0来实现NC
代码的转换实现及PC和MCU的通信实现。
1 NC
代码转换的实现 本文采用VB 6.0作为NC
代码转换工具。
VB是Windows系统开发的主要语言其性能优越、简单易学、功能强大越来越成为广大程序设计人员设计开发应用程序的首选。
VB 支持面向对象的程序设计具有结构化的事件驱动编程模式并可以使用无限扩增的控件而且可以简便地做出良好的人机界面。
NC
代码是数控机械控制器能识别的
代码本文以常用的FANUC的GM
代码为例进行讨论。
GM
代码主要包括表示行位置的N字符段表示主功能的G字符段表示辅助功能的M字符段及其它的20多个编码字符如表示基本尺寸的X、Y、Z等。
由于单片机不能识别高级语言所以输给单片机的
代码必须转换为ASCII码。
但
VB的ASCII码转换函数只能实现字符串首字符的转换而实际的GM
代码让MCU识别必须是
代码的完整转换本文使用VB循环函数依次读入各个字符并依次转换。
另外字符串的输出需以一定的格式传输避免数据机械 2009年第12期 总第36卷 计算机应用技术 ??37?? 出现混乱。
当
代码在PC机中转换后通过串口传送至MCU由MCU识别NC程序的功能字符如G、M、N等和数据字符如位置、转速等再调用插补程序完成对末端执行机构的控制。
NC
代码转换流程图如图1所示。
开始选择NC文件选择NC文件
代码转换生成ASCII文件数据写入内存转换完成结束否是 图1 NC
代码转换流程图 NC转换程序启动后先选择磁盘上的NC文件进行NC
代码转换转换完成时屏幕将提示数据转换成功。
单击传送按钮PC机上转换后的NC
代码数据即可传给MCU单击帮助按钮画面上会给出操作提示文件命名规则等单击退出按钮则退出程序。
NC转换程序部分源
代码如下 Private Sub Text1_Change On Error Resume Next Dim STR As Variant zifu toascText1.Text For i 1 To UBoundzifu If STRi 0 Then Text2.Text Text2.Text FormatStrSTRi 000000 Space1 Else Text2.Text Text2.Text StrSTRi Space1 End If Next i End Sub 程序运行界面如图2和图3所示。
2 PC与MCU串口通信的实现 PC与MCU的通信采用串口通信方式串口通信一般有RS232、RS422和RS485三种标准通信方式。
无论采用哪种通信方式要保证通信的可靠都必须考虑通信速率、通信距离、抗干扰能力和组网方式。
RS232C又称EIA RS232C是目前最
常用的一种串行通信接口是在1970年由美国电子工业协会EIA联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通信的标准。
RS232C采用较高的逻辑电平具有较强的抗干扰能力传输距离为15 m最高传输速率为20 kbps1。
由于数控控制平台的PC和MCU之间距离不远本文就选择RS232C作为串行通信的接口。
图2 程序运行界面 图3 选择NC文件界面 2.1 硬件电路
设计 系统包括NC
代码在PC中实现转换转换成功的
代码经RS232C下传到MCU中MCU接到数据后返回校验信息提示是否成功接收数据。
若不成功则返回失败信息要求PC重发数据若成功则保存数据进入MCU处理调用插补程序产生控制信号信号经驱动后送到执行机构使数控机械
工作。
从上位机PC输出的RS232C电平逻辑0为515 V、逻辑1为-5-15V而MCU的电平为TTL电平逻辑0小于0.4 V、逻辑1大于2.4 V35V所以使用RS232C并不能直接连接PC和MCU需要进行电平转换。
目前能进行RS232C电平和TTL电平相互转换的实现方法主要有三种①使用MAX232芯片②采用MCl488和MCl489芯片的转换接口③使用三极管构成简易转换电路。
MAX232是MAXIM公司生产的包含两路驱动器和接收器的RS232C转换芯片。
芯片内部有一个电压转换器可以把输入的5 V电压转换为RS232C接口所需的±15 V电压尤其适用于没有±12 V的单电源系统。
本文选用MAX232作为电平转换电路的芯片。
??38??
计算机应用技术 机械 2009年第12期 总第36卷 系统硬件框图如图4所示PC与MCU串口通信电路如图5所示。
图4 系统硬件框图 图5 PC与MCU串口通信电路 2.2 通信
程序设计 利用VB 6.0中的Mscomm
通信控件可以方便地实现上位机与下位机之间的串行通信。
Mscomm控件提供了一系列标准通信命令的接口它允许建立串口连接可以连接到其它通信设备还可以发送命令、进行数据交换以及监视和响应在通信过程中可能发生的各种错误和事件从而可以创建全双工的、事件驱动的、高效实用的通信程序。
Mscomm通信控件的通信功能实际是调用APIApplication Programming Interface函数对于VB程序的开发者知道了Mscomm控件的属性和事件的用法就可以实现串口的操作。
2.2.1 Mscomm控件简介 1控件属性2 ①CommPort设置或返回通信端口号其取值范围为199缺省值为1。
Setting设置或返回串行端口的波特率、奇偶校验位、数据位、停止位。
奇偶校验位的取值可以为N表示不校验M表示符号校验E表示偶校验O表示奇校验S表示空格校验。
数据位的取值可以为4、5、6、7、8。
停止位的取值可以为1、1.5、2。
②PortOpen打开或关闭串行端口。
③InBufferSize设置或返回接收缓冲区的大小。
④InBufferCount返回接收缓冲区的等待读取的字节个数可以通过设置该属性为0来清除接收缓冲区。
⑤RThreshold该属性为一域值它确定当接收缓冲区内字节个数达到或超过该值后就产生
代码为MSCOMMEVRECEIVE的OnComm事件。
⑥InputLen设置或返回接收缓冲区内用Input读入的个数如果取0则读取整个缓冲区的内容。
InputMode设置或返回接收类型。
Input该属性表示从接收缓冲区移走一串字符。
⑦OutBufferSize设置或返回发送缓冲区的大小。
OutBufferCount返回发送缓冲区内等待发送的字符个数可用来清空缓冲区。
Output向发送缓冲区传送一字符串。
Sthreshold设置或返回发送时产生OnComm事件的字符数。
EOFEnable若置TRUE则当输入中出现EOF就停止输入并产OnComm事件。
2控件通信方式 Mscomm控件提供了完善的串口数据的发送和接收功能有两种不同的方式来处理和解决各类通信软件的开发和设计
问题。
事件驱动方式由Mscomm控件的Oncomm事件捕获并处理通信错误及事件。
查询方式通过检查Comm Event属性的值来判断事件和错误3。
本系统设置串口通信速率9600 bps采用偶校验数据位8位1位停止位一次从缓冲区读取所有数据每个字符到接收缓冲区都触发接收事件。
2.2.2 MCU与PC通信的实现 根据前面阐述的系统工作要求给出MCU与PC通信实现程序框图如图6所示。
下面是VB通信程序的部分
代码 Private Sub Timer1_Timer Dim temp As Byte outputsignal strzifu ‘向单片机发送数据 temp CByteoutputsignal varbuffer temp MSComm1.Output varbuffer Timer1.Enabled False End Sub Private Sub MSComm1_OnComm Select Case MSComm1.CommEvent ‘设置oncomm事件读取片机内存的值 Case comEvReceive 机械 2009年第12期 总第36卷 计算机应用技术 ??39?? Inputsignal MSComm1.Input Case Else End Select End Sub 开始
代码从PC转至MCU MCU接收成功要求重发否是返回校验信息保存数据MCU调用插补程序处理数据产生控制信号发送信号至执行机构结束 图6 MCU与PC通信程序框图 3 运行结果 在等离子切割机自动控制台上进行调试将存在硬盘上的NC文件通过路径选择调入本
系统进行转换产生MCU可识别的ASCII码同时生成一文本文件供查阅。
然后在本系统的控制下通过串口通信将PC机上转换后的指令
代码传送至单片机单片机能顺利接受并识别
代码通过插补运算后输出控制信号经驱动后控制末端执行机构按照图纸设计的线路切割。
表明本文的方法可以实现NC
代码转换及PC和MCU串口通信。
参考文献 1施永贵. 基于Internet 的双点水闸液压启闭机远程监控系统研究D. 福州福州大学2005. 2李敏孜刘志鸿王宏. 利用VB 6.0实现PC机与MCS51单片机之间的串行通信J. 内蒙古科技与
经济2004246566. 3李江全张丽岑红蕾. Visual Basic串口通信与测控应用技术实战详解M. 北京人民邮电出版社2007. 上接第32页 在传统的动力学计算完成后对于计算所产生的文件除了一部分利用动力学软件自身进行后处理大部分的数据都是借用如Origin等进行后处理这样在做大型动力学、强度系统软件时就造成了系统的不连贯。
而通过本文的程序可以看到该程序是一个独立的可执行程序它的运行不依赖于其它程序因此它既可以单独地作为一个独立的软件来处理多列文件也可以通过可执行程序调用作为大型系统软件中的一部分从而使大型软件系统连贯实现“无缝”结合。
5 小结 在进行列车、车辆动力学和强度仿真计算结合的大型
软件系统编程的过程中采用了C和MATLAB混合编程的技术对动力学软件计算所得的包含多列的时间载荷历程文件进行了处理从而实现了大型软件系统的“无缝”衔接。
由此得出在进行大型软件编程时可以高效地利用MATLAB强大的科学计算功能、图形显示和丰富的工具箱 并能充分发挥C编程灵活和界面友好以及易于维护、升级、发布的优点。
混合编程提高了软件开发效率优化了软件的性能增强了算法和数据的保密性可广泛应用于科学研究和工程技术中。
参考文献 1胡劲松周方洁. 基于COM的MATLAB与
Delphi混合编程研究J. 计算机应用研究20051165166. 2焦纲领邓建辉韩啸. MATLAB与Visual C.N ET混合编程J.海军航空工程学院学报2008231109111. 3赵士伟赵明波陈平. 基于COM的MATLAB与C.
NET混合编程的实现与应用J. 山东理工大学学报自然科学版20062042629. 4李学哲白云陈国新. Fortran 90与VB混合编程技术的研究与实现J. 苏州科技学院学报工程技术版20082147680. 5朱文良. 高速列车转向架动态仿真与强度分析系统数据库研究D.成都西南交通大学2007. 6邓洋易先中田亚南张春生. MATLAB与VB的混合编程在稳态渗流分析中的应用J. 机械20073413031. 7许雪开.
VC与MATLAB混合编程J. 机
电工程20072422627.