您的位置:控制工程论坛网论坛 » 传感器 » 基于RS-485变频器与PC机串行通信的实现

jshfq

jshfq   |   当前状态:在线

总积分:17995  2025年可用积分:0

注册时间: 2007-08-06

最后登录时间: 2013-11-04

空间 发短消息加为好友

基于RS-485变频器与PC机串行通信的实现

jshfq  发表于 2008/7/2 17:35:59      864 查看 0 回复  [上一主题]  [下一主题]

手机阅读









基于RS-485变频器与PC机串行通信的实现

 
摘  要:RS-485串行通信能够保证快速、稳定、远距离地传输数据,已经越来越多地应用于工业控制。文中介绍了基于RS-485三垦变频器与PC机串行通信的硬件特性、通信协议及软件实现。实验表明:该通信软件性能稳定、实用效果良好。 


关键词:串行通信; RS-485; 变频器



Implementation of Serial Communication between SANKEN 
Inverter and PC Based on RS-485


He Ankun Zhang Jingwu Chen Ming


Abstract:RS-485 serial communication ensure the transmission data quickly, steadily and further, which has been used to the industry control more and more.This paper introduce the hardware performance,communication protocol and software implementation of serial communication between SANKEN inverter and PC based on RS-485. Experiment display the software performance is steadily and real effect is good.


Keywords:serial communication;RS-485;inverter


1引言


  目前,在我国现场控制总线中,RS-485使用最为普遍。RS-485 总线的共模输出电压在-7V 至+12V 之间,具有抑制共模干扰的能力,数据传输速率最大为10Mbit/s,当波特率为1200bps 时最大的传输距离理论上可达15 千米。RS-485网络所具有的设备简单、容易实现、传输距离远、维护方便等优点而被许多变频器厂家所采用。文章分析了工业环境中串行通信选择RS-485的原因,论述了基于RS-485 三垦变频器与PC机串行通信的硬件特性,通信协议及软件实现,实验表明该通信软件稳定可靠,能直观的观看变频器的实际运行状态,并能比较方便的进行多组参数的设定和改写。通过此软件,极大的方便了工程师和客户对变频器的操控和掌握。


2 RS-232与RS-485的比较


  常用的串行通信有两种,一种为RS-232串行通信,一种为RS-485串行通信。由于串行通信使用方式简便易用,工业控制领域大多都使用串行通信作为其数据交换的手段。但是工业设备的使用环境经常比较恶劣,可能会存在噪声或者电源谐波的干扰,RS-232在如此环境下抗干扰的能力远不及RS-485,除此之外,RS-232只能是一对一控制,而RS-485则可以实现一对多控制;RS-232一般是9针公头,而RS-485则是两根线就可以控制。因此工业环境下的串行通信大多都采取RS-485串行通信方式。


3 三垦变频器与PC的串行通信


  3.1 软硬件环境


  硬件配置:PC(配备标准RS-232)一台、RS-232/RS-485转换卡一个、ISI通信卡一块、Inverter 三台(三垦变频器ES-0.4KW、SPF-11KW、IPF-90KW)。


  软件包括:Windows XP操作系统、Microsoft Visual Basic 6.0中文版、三垦变频器通信协议指导手册等。


  3.2 通信协议


  三垦各个系列变频器所提供的通信协议格式如下:


  1、 指令格式:指令格式如图1所示,各字段含义如表1。


  2、指令的详细解释


  图1显示了指令的格式,共25条指令,由操作码(OP)决定,分别由A-Q及R、S、x、y、z、a、b、c组成。以指令C和N说明指令的详细构成,如表2。



点击看大图


  表1 指令各字段含义



点击看大图


  3、变频器所进行的通信错误处理


  变频器如果从上位机接收到的指令中检查出错误,将进行以下处理:


  ① 在奇偶错误、校验和错误或指令代码未定义时:


  回传的错误指令为指令代码“?”。同时,DT项回传一个字节的通信错误代码。


  ② 在DT项的数据过长或不足,不能解释数据内容时:


  如果接收指令的各个指令所定义的数据过长或不足、或者接收指令无法解释时,其错误处理同①。


  ③ 超时处理:


  接收开始代码后,如果不能在150ms 以内接收全部指令将进行超时处理,强制完成接收状态。这时变频器将返回通信错误代码“d”。


  ④ 通信错误代码分别为:“p”代表奇偶错误;“s”代表检验和错误;“u”代表未定义操作代码;“d”代表数据过长、数据不足或者数据无法解释。


  ⑤ 其它错误


  有关接收计算机指令的错误,在上述情况以外,将进行超时处理,对计算机而言为“无应答”。


  4、变频器和计算机的指令发送接收方法


  串行通信的基本程序是一台计算机将指令发送给一台变频器,之后变频器回传应答给计算机。所以,变频器在接收到了计算机发送出的指令后必须回传应答。如果计算机在没有得到应答时,仍连续发送多条指令则无法确保正常的工作。


  由于变频器异常或者通信线路异常,计算机可能无法接收到变频器的应答。为了避免由于等待变频器的应答而造成的通信程序锁定,计算机将按照所设定的2 秒或更长以上的时间来执行接收超时处理。


  表2 指令详细内容举例



点击看大图


  3.3 串行通信的程序实现


  由于篇幅所限,这里仅介绍通信部分的实现代码,主要包括:通信端口的定义,通信速率的设定,通信发送、通信接受、通信错误处理以及退出等。


  主要代码如下:


  …


  MSComm1.CommPort=1 ‘选择1号通信端口


  MSComm1.Settings="4800,o,8,1" ‘设定为4800bps,奇数、数据8位、停止1位


  MSComm1.RThreshold=1 ‘Commm Evert 发生当接收到一个字符时


  MSComm1.InputLen=0 ‘输入缓冲数据清零?


  MSComm1.PortOpen=True ‘通信端口打开?


  Timer1.Interval=1000 ‘接收超时时间(ms)1秒


  Tx=“*01C”? ‘设定向变频器传送的数据


  TxLen=Len( Tx ) ‘ 得到传送数据长度(校验和与停止位除外)


  Sum=0


  For i=1 To TxLen


  Sum=Sum+Asc(Mid(Tx, i, 1))


  Next i


  Sum=((0-Sum)And 127) Or 64


  Tx=Tx+Chr(Sum)+vbCrLf ‘在传送代码上添加校验和与停止位(CR+LF)


  Timer1.Enabled=True ‘ 启动接收超时检出计数器


  MSComm1.Output=Tx ‘向变频器传送数据


  End Sub


  Private Sub MSComm1_OnComm() ‘[通过Comm事件接收数据]


  Dim Rx As String, RxLen As Integer,Sum As Integer


  Dim Msg As String


  If MSComm1.CommEvent<>comEvReceive Then Exit Sub ‘确认接收的数据是Comm事件


  Do


  Rx=Rx+MSComm1.Input ‘接收变频器的数据


  DoEvents


  Loop Until Right(Rx,2)=(Chr(13)& Chr(10)) ‘找到停止位


  Timer1.Enabled=False ‘取消超时定时器


  RxLen=Len(Rx)-2 ‘接收数据字长(停止位除外)


  Sum=0 ‘接收到的校验和的计算


  For i=1 To RxLen-1


  Sum=Sum+Asc(Mid(Rx , i,1))


  Next i


  Sum=((0-Sum)And 127)Or 64


  If Mid(Rx, RxLen, 1)=Chr(Sum) Then ‘校验和的检查


  Msg=Left(Rx, RxLen) ‘ 接收数据(包括校验和,不包括停止位)


  Else


  Msg=“Check Sum NG”? ‘校验和错误显示


  End If


  MsgBox “Received Data=” & Msg ‘显示接收数据


  MSComm1.PortOpen=False ‘[ 关闭通信端口]


  End Sub


  ‘ 在变频器的输出频率为2 0 H z 时,运行该程序,在信息框中将显示“*01C02000@”


4 结论


  文章首先对RS-232与RS-485进行了比较,然后介绍了基于RS-485三垦变频器与上位机串行通信的实现,实验表明:利用VB编制的人机界面操作简便,取得了良好的实用效果。利用RS-485协议进行串行通信,可以保证快速、稳定远距离地传输数据。在目前以及以后的工业控制和其他方面必将得到越来越多的应用。

1楼 0 0 回复