基于VB的计算机与软起动器的通讯
4 通讯程序及监控界面的设计
vb是一种面向对象的编程语言,应用方便,功能强大,利用microsoft公司提供的activex控件mscomm.ocx就可以方便实现计算机与软起动器的串口通讯。
主机发送两种形式的命令,一是周期性命令,一是非周期性命令。周期性命令即主机以轮询的方式周期性读取从机的状态字,判断从机运行状况及通讯情况;非周期性命令即主机发出的控制命令,如起动、停止、编辑参数报警查询等。
以下是主要通讯程序:
首先要初始化串行通讯端口
private sub initcomport() ;初始化通讯端口子程序
comm.commport=1 ;使用串口com1
comm.setting=9600,m,8,1;波特率、奇偶校验位、8位数据位、1位停止位
comm.inbuffersize=1024 ;缓冲区大小
comm.inputlen=0 ;清空接收缓冲区
comm.rtsenable=false ;无须硬件握手
comm.portopen=true ;打开通讯口
end sub
值得注意的是,通讯协议中规定以奇偶校验位作为地址选择标志,下面一发送读状态指令为例。
读软起动器状态字
private sub readstatusword() ;读状态字子程序
mscomm1.output=command_s ;发送第一个字节(地址及快速指令读状态)
mscomm1.settings=“9600,s,8,1” ;将奇偶校验位设 ;为0,即接收响应状态
mscomm1.output=outdatabyte_l;发送低8位
delay(10) ;延时10ms
call recieverespond(y) ;接收从机握手信 ;号(y为接收状态)
if y《》0 then call dealerror ;如果握手信号不 ;正确,调用故障处理子程序
mscomm1.output=outdatabyte_h;如果握手信号正 ;确,发送高8位
mscomm1.output= command_s+ outdatabyte_l+ outdatabyte_h+fh ;发送校验码
call recieverespond(y) ;接收从机握手信号
if y《》0 then call dealerror ;如果握手信号不正 ;确,调用故障处理子程序
callrecievedata ;如果正确,调用接收状态字子程序
call verifys1 ;接收并验证校验和
end sub
收到的状态字为二进制双字节(dl,dh),每一位含义如表5和表6所示。
上位机收到状态字后,判断该机的状态,进而根据状态字和工况要求,对该机进行适当的远程控制。
5 结束语
strc软起动器可靠性高,中文液晶显示,容易操作,易于实现与计算机的联网,本文的程序是用vb6.0编写的简单的单机通讯程序,已调试成功,用于软起动器的上位机控制,在实践中应用正常。在此基础上,可以用vb、vc++等高级语言编程,将监控和管理报表与其溶为一体,做出更灵活,功能更强大的控制软件,进而实现对电机灵活而可靠的控制。
评论