通信子程序负责与上位机通信,将存储在数据区的故障数据通过串口分批传送给上位机。上位机每发送一次传送命令(用整数255表示),PLC在接收中断程序中判断收到的字符是否为传送命令,如果是则将传送命令标志M6.0置位并且在主程序中调用通信子程序。
定义指针tran_pointer用来指向待传送数据的首地址,其初值为&VW4000,即指向数据区首地址。定义变量count用来记录传送的次数。在通信子程序中,首先停止自由口的接收,然后将以指针tran_pointer为首地址,大小200字节的数据传送到发送缓冲区中,接着用发送命令通过串口发送出去。每发送一次数据,将指针tran_pointer向下移动200字节,变量count值加1, M6.0复位。当上位机发送完第26次传送命令时,PLC中数据区VW4000~VW8998的5000个字节已发送完毕,再将额定电压、额定电流、额定有功功率、额定无功功率和指针index发送出去, count值清零,指针tran_pointer重新初始化,M6.0复位。至此,一次完整的故障数据传送过程结束。
4. 上位机程序设计
上位机程序设计是以Visual Basic 6.0 为平台,利用MS Comm控件,以事件驱动方式实现计算机与PLC之间串行通讯,完成数据间的交换。上位机程序包括用户界面设计、通讯和数据处理程序、显示程序等。
4.1 用户界面设计
本系统中,设计了两个窗体(Form1和Form2)。其中Form1为主界面,Form2为波形显示界面。在Form1中设计了一个MSComm控件、一个定时器控件(Timer1)和两个按钮控件(Command1和Command2)。其中Command1是开始按钮,即按下时开始和PLC通讯,读取其中的数据。Command2是显示按钮,即按下时调用窗体Form2,显示每个运行量的波形曲线。在Form2中设计了一个图片框控件(Picture1),用来显示图形。
4.2 通讯和数据处理程序设计
设置Timer1 的Interval属性等于500,MSComm的InputMode属性为二进制方式,RThreshold属性等于5010。定时器每隔500毫秒发送一次传送命令,当发送到第26次时,关闭定时器,这时接收缓冲区将收到5010个字节的数据并触发MSComm的OnComm事件。在OnComm事件子程序中,将接收缓冲区中的数据依次分配到全局数组U_data、If_data、P_data、Q_data和Ug_data中,再根据各运行量的额定值计算出百分比值。各个数组的前350字节需要根据指针Index进行调整,具体方法是将数组下标范围Index~349的数据移到前面,下标范围1~Index-1的数据移到后面。
4.3 显示程序设计
在窗体Form2的装载事件Form_Load中编写图形显示程序。首先在图片框控件Picture1中设置自定义坐标系。设置ScaleMode属性值等于3,即以象素为度量单位。然后在该坐标系下画出坐标轴。X轴以秒为单位,曲线上两点间的时间间隔是40毫秒,换算成象素等于1.47。Y轴以百分比为单位,每个单位刻度换算成象素等于2.1。最后根据数组U_data、If_data、P_data、Q_data和Ug_data分别画出相应运行量的波形图。以机端电压波形为例,给出编写的程序如下:
Picture1.DrawWidth = 1 ‘线宽为1
Picture1.CurrentX = 0 ‘指定当前坐标的位置
本文关键字:发电机 其它PLC应用,plc技术 - plc应用 - 其它PLC应用