1目前,在我国现场控制总线中,RS-485使用最为普遍。RS-485总线的共模输出电压在-7V至+12V之间,具有抑制共模干扰的能力,数据传输速率最大为10Mbit/s,当波特率为1200bps时最大的传输距离理论上可达15千米。RS-485网络所具有的设备简单、容易实现、传输距离远、维护方便等优点而被许多变频器厂家所采用。文章分析了工业环境中串行通信选择RS-485的原因,论述了基于RS-485三垦变频器与PC机串行通信的硬件特性,通信协议及软件实现,实验表明该通信软件稳定可靠,能直观的观看变频器的实际运行状态,并能比较方便的进行多组参数的设定和改写。通过此软件,极大的方便了工程师和客户对变频器的操控和掌握。
2RS-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)。
软件包括:WindowsXP操作系统、MicrosoftVisualBasic6.0中文版、三垦变频器通信协议指导手册等。
3.2通信协议
三垦各个系列变频器所提供的通信协议格式如下:1、指令格式:指令格式各字段含义如表1.
2、指令的详细解释显示了指令的格式,共25条指令,由操作码(OP)决定,分别由A-Q及R、S、x、y、z、a、b、c组成。以指令C和N说明指令的详细构成,如表2.
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'CommmEvert发生当接收到一个字符时MSComm1.InputLen=0'输入缓冲数据清零MSComm1.PortOpen=True'通信端口打开Timer1.Interval=1000'接收超时时间(ms)1秒Tx=“*01C”设定向变频器传送的数据TxLen=Len(Tx)'得到传送数据长度(校验和与停止位除外)Sum=0 Fori=1ToTxLen Sum=Sum+Asc(Mid(Tx,i,1))Nexti Sum=((0-Sum)And127)Or64 Tx=Tx+Chr(Sum)+vbCrLf'在传送代码上添加校验和与停止位(CR+LF)Timer1.Enabled=True'启动接收超时检出计数器MSComm1.Output=Tx'向变频器传送数据EndSub PrivateSubMSComm1_OnComm()'[通过Comm事件接收数据]DimRxAsString,RxLenAsInteger,SumAsInteger DimMsgAsString IfMSComm1.CommEvent<>comEvReceiveThenExitSub'确认接收的数据是Comm事件Do Rx=Rx+MSComm1.Input'接收变频器的数据DoEvents LoopUntilRight(Rx,2)=(Chr(13)&Chr(10))'找到停止位Timer1.Enabled=False'取消超时定时器RxLen=Len(Rx)-2'接收数据字长(停止位除外)Sum=0'接收到的校验和的计算Fori=1ToRxLen-1 Sum=Sum+Asc(Mid(Rx,i,1))Nexti Sum=((0-Sum)And127)Or64 IfMid(Rx,RxLen,1)=Chr(Sum)Then'校验和的检查Msg=Left(Rx,RxLen)'接收数据(包括校验和,不包括停止位)Else Msg=“CheckSumNG”?'校验和错误显示EndIf MsgBox“ReceivedData=”&Msg'显示接收数据MSComm1.PortOpen=False'[关闭通信端口]EndSub'在变频器的输出频率为20Hz时,运行该程序,在信息框中将显示。
4结论
文章首先对RS-232与RS-485进行了比较,然后介绍了基于RS-485三垦变频器与上位机串行通信的实现,实验表明:利用VB编制的人机界面操作简便,取得了良好的实用效果。利用RS-485协议进行串行通信,可以保证快速、稳定远距离地传输数据。在目前以及以后的工业控制和其他方面必将得到越来越多的应用。
论文创新点:完成了三垦变频器与PC机串行通信的设计,该通信软件稳定可靠,能直观的观看变频器的实际运行状态,并能比较方便的进行多组参数的设定和改写。通过此软件,极大的方便了工程师和客户对变频器的操控和掌握。
2RS-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)。
软件包括:WindowsXP操作系统、MicrosoftVisualBasic6.0中文版、三垦变频器通信协议指导手册等。
3.2通信协议
三垦各个系列变频器所提供的通信协议格式如下:1、指令格式:指令格式各字段含义如表1.
2、指令的详细解释显示了指令的格式,共25条指令,由操作码(OP)决定,分别由A-Q及R、S、x、y、z、a、b、c组成。以指令C和N说明指令的详细构成,如表2.
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'CommmEvert发生当接收到一个字符时MSComm1.InputLen=0'输入缓冲数据清零MSComm1.PortOpen=True'通信端口打开Timer1.Interval=1000'接收超时时间(ms)1秒Tx=“*01C”设定向变频器传送的数据TxLen=Len(Tx)'得到传送数据长度(校验和与停止位除外)Sum=0 Fori=1ToTxLen Sum=Sum+Asc(Mid(Tx,i,1))Nexti Sum=((0-Sum)And127)Or64 Tx=Tx+Chr(Sum)+vbCrLf'在传送代码上添加校验和与停止位(CR+LF)Timer1.Enabled=True'启动接收超时检出计数器MSComm1.Output=Tx'向变频器传送数据EndSub PrivateSubMSComm1_OnComm()'[通过Comm事件接收数据]DimRxAsString,RxLenAsInteger,SumAsInteger DimMsgAsString IfMSComm1.CommEvent<>comEvReceiveThenExitSub'确认接收的数据是Comm事件Do Rx=Rx+MSComm1.Input'接收变频器的数据DoEvents LoopUntilRight(Rx,2)=(Chr(13)&Chr(10))'找到停止位Timer1.Enabled=False'取消超时定时器RxLen=Len(Rx)-2'接收数据字长(停止位除外)Sum=0'接收到的校验和的计算Fori=1ToRxLen-1 Sum=Sum+Asc(Mid(Rx,i,1))Nexti Sum=((0-Sum)And127)Or64 IfMid(Rx,RxLen,1)=Chr(Sum)Then'校验和的检查Msg=Left(Rx,RxLen)'接收数据(包括校验和,不包括停止位)Else Msg=“CheckSumNG”?'校验和错误显示EndIf MsgBox“ReceivedData=”&Msg'显示接收数据MSComm1.PortOpen=False'[关闭通信端口]EndSub'在变频器的输出频率为20Hz时,运行该程序,在信息框中将显示。
4结论
文章首先对RS-232与RS-485进行了比较,然后介绍了基于RS-485三垦变频器与上位机串行通信的实现,实验表明:利用VB编制的人机界面操作简便,取得了良好的实用效果。利用RS-485协议进行串行通信,可以保证快速、稳定远距离地传输数据。在目前以及以后的工业控制和其他方面必将得到越来越多的应用。
论文创新点:完成了三垦变频器与PC机串行通信的设计,该通信软件稳定可靠,能直观的观看变频器的实际运行状态,并能比较方便的进行多组参数的设定和改写。通过此软件,极大的方便了工程师和客户对变频器的操控和掌握。