机电之家行业门户网运行
文章 下载
最新公告:

  没有公告

设备维修与管理培训
您现在的位置: 设备维修与管理 >> 监测诊断 >> 设备监测诊断 >> 监测诊断技术 >> 文章正文
 
赞助商
 
 
最新文章
 
 刀型闸阀安装与维护注意事项
 四柱液压机适用 保养以及常见问题
 改制车床加上镗深孔装置
 无转子硫化仪延长使用寿命需做好
 齐重SVT125立式车床的数控化改造
 纸箱生产用检测仪的保养与简单故
 精密数控加工车间机器人改造的解
 正确地对数控机床进行维护保养
 怎样调试液压摆式剪板机?
 QC12Y剪板机的调整与操作
 
推荐技术
 
 
相关文章
 
用VB6.0实现PC对多个PLC
VB环境下利用并口实现PL
 
客户服务
 
如果您有设备方面好的文章或见解,您可以送到我们的投稿信箱
客服电话:0571-87774297
信   箱:88ctv@163.com
我们保证在48小时内回复


s

b

g

l

.

j

d

z

j

.

c

o

m

 

[组图]基于VB及台达触摸屏的监控系统在纺机中的应用         ★★★
基于VB及台达触摸屏的监控系统在纺机中的应用
作者:佚名 文章来源:本站原创 点击数: 更新时间:2009-10-30 16:51:18

 一、引言

    该系统用于对各生产线的纺机进行实时监控和查询,并对各班次产量数据进行存储,用户可通过日期时间段、车号、班次等对产量进行综合查询,并进行统计,可在查询出满足条件的数据后,进行报表输出和打印。以下是对系统设计方面的一些讨论。
二、系统结构与功能
    精梳机是近年来在纺织行业使用较为普遍的一种设备,其主要作用是排出梳棉生条中一定长度以下的短纤维,提高纤维整齐度,进一步清除纤维中残留的棉结、杂质,提高纤维光洁度。条并卷联合机是精梳工序的准备设备,通常情况下,一套精梳设备由一台条并卷联合机和五台精梳机组成。该产量监控查询系统应用于精梳设备的结构示意图如下所示:

该系统实现了以下功能:
1)实时监控所选机器各班次的当日产量和累计产量以及该机器的运行情况。
2)可定时保存各机器各班次的当日产量及累计产量,且有多种定时方式可选择。
3)能分别根据时间,班次,产量,车号进行查询操作,也可综合考虑数据保存方式进行查询,提高查询准确率。
4)查询结果可显示为报表格式,并可将结果打印输出,方便用户使用。
5)具有系统维护功能,可方便用户进行数据维护。
三、系统设计
1)硬件配置
名称
数量
触摸屏
7
普通PC机
1
转换模块RS232—RS485
1
 
2) 数据采集部分的设计
    触摸屏选用台达系列AE10THTD型,由于其具有强大的通讯功能,灵活的系统构成,生动逼真且丰富的图库,简单易用等特点,在纺织业中得到了广泛的应用,因此通过触摸屏来采集所需数据。所以要对纺机进行实时监控,首先要解决触摸屏与PC的通信问题。所用的台达触摸屏支持标准的MODBUS协议,通过串口与PC相连。
<1>MODBUS通信协议
modbus功能码
01:读取线圈状态  取得一组逻辑线圈的当前状态(ON/OFF)
02:读取输入状态  取得一组开关输入的当前状态(ON/OFF)
03:读取保持寄存器  在一个或多个保持寄存器中取得当前的二进制值
04:读取输入寄存器  在一个或多个输入寄存器中取得当前的二进制值
05:强置单线圈  强置一个逻辑线圈的通断状态
06:预置单线圈  把具体二进制值装入一个保持寄存器
根据modbus协议,通信中mscomm1.output中包含的字符串应包括以下几部分:
起始位  站号  功能码  数据位  校验位  停止位
在此通信中,站号表示人机站号 数据位包括寄存器地址和数据
<2> HMI内部地址与MODBUS地址映射表
MODBUS_ADDRESS
HMI_ADDRESS
PC_ADDRESS
描述
W40001-W41024
$0-$1023
0000-03FF
内部寄存器
W42001-W43024
$M0-$M1023
07D0-0BCF
断电保持内部寄存器
W44001
RCPN0
0FA0
配方编号寄存器
W45001-......
RCP0-RCPn
1388-......
配方寄存器
B00001-B01024
$2000.0-$2063.15
0000-03FF
内部寄存器(bit)
B01025-B02048
$M200.0-$M263.15
0400-07FB
断电内部保持寄存器(bit)
<3>mscomm控件
CommPort 设置并返回通讯端口号。
Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
PortOpen 设置并返回通讯端口的状态。也可以打开和关闭端口。
Input 从接收缓冲区返回和删除字符。
Output 向传输缓冲区写一个字符串。
<4>HMI与PC的通信及数据采集的设计
LRC算法函数:
Public Function LRC(str)
    c = 0
    l = Len(str) '求出str的长度赋值给l
        For c = c + 1 To l
    c_data = Mid$(str, c, 2) '在str串中,从c的值开始取2个字符。
    d_lrc = d_lrc + Val("&H" + c_data)
    c = c + 1
    Next c
    If d_lrc > &HFF Then
       d_lrc = d_lrc Mod &H100
    End If
    h_lrc = Hex(&HFF - d_lrc + 1)
    If Len(h_lrc) > 2 Then
       h_lrc = Mid(h_lrc, Len(h_lrc) - 1, 2)
    End If
    LRC = h_lrc
End Function
下面对数据进行实时采集,数据采集程序界面如下图所示:

Private Sub Timer1_Timer()
    '连接数据库
    Dim CONN As New ADODB.Connection
    Dim DBStr As String
    Dim rs As New ADODB.Recordset
    DBStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\data.mdb;Persist Security Info=False"
    CONN.Open DBStr
    Dim Mac_Num    ' Mac_Num是车号
    Mac_Num = Combo_MacNum.List(Combo_MacNum.ListIndex)
    Debug.Print Mac_Num
    sql = "select * from machine where Machine_Num = '" + Mac_Num + "'"   '获取车号
    rs.Open sql, CONN, 1, 3
    Txt_type.Text = rs.Fields("machine_type").Value   '获取车的类型(是精梳机还是条并联)
    rs.Close
    str_type = Mac_Num  '
    Set CONN = Nothing
    DBStr = ""
    '发送数据(根据所选车号发送数据)
    If MSComm1.PortOpen = True And stakeout_flag And Combo_MacNum.ListIndex >= 0 Then
        str_output = str_type + "030064001D"
        MSComm1.Output = ":" + str_output + LRC(str_output) + Chr$(13) + Chr$(10)
        '接收数据
        inputstring = MSComm1.Input
        '将接收到的数据分别赋值并显示
        Txt_100.Text = change(inputstring, 8, 12) '甲班当日产量
        Txt_102.Text = change(inputstring, 16, 20) '甲班累计产量
        Txt_104.Text = change(inputstring, 24, 28) '乙班当日产量
        Txt_106.Text = change(inputstring, 32, 36) '乙班累计产量
        Txt_108.Text = change(inputstring, 40, 44) '丙班当日产量
        Txt_110.Text = change(inputstring, 48, 52) '丙班累计产量
        Txt_112.Text = change(inputstring, 56, 60) '丁班当日产量
        Txt_114.Text = change(inputstring, 64, 68) '丁班累计产量
        Txt_116.Text = change(inputstring, 72, 76) '各班当日合计产量
        Txt_118.Text = change(inputstring, 80, 84) '各班累计合计产量
        If Txt_type.Text = "条并联" Then
            Txt_view1.Text = change(inputstring, 104, 108) '条并联绕卷速度
            Txt_view2.Text = change(inputstring, 112, 116) '条并联当前长度
        Else
            Txt_view1.Text = change(inputstring, 88, 92) '精梳机钳次
            Txt_view2.Text = change(inputstring, 96, 100) '精梳机条速
      End If
      str_state = Mid(inputstring, 120, 4) '接收运行状态的返回值,并判断运行状态
        If str_state = "0001" Then
            Cmd_128.Caption = "运行中"
        End If
        If str_state = "0000" Then
            Cmd_128.Caption = "停止"
        End If
   End If
End Sub
    change(inputstr, start1 As Integer, start2 As Integer)用于转换采集到的数据,其功能是将采集到的产量数据转换为十进制。其代码如下:
Public Function change(inputstr, start1 As Integer, start2 As Integer)
    str_low = Mid(inputstr, start1, 4) '读寄存器中的数据赋给低字节
    str_high = Mid(inputstr, start2, 4) '读寄存器中的数据赋给高字节
    str_hex = str_high + str_low '整合高低字节数据
    str_input = Val("&H" + str_hex) '将十六进制数据转换成十进制
    If str_input >= -32768 And str_input <= -1 Then '将转换成十进制处于-32768~32767的数据转换为相应的正数
        str_input = str_input + 65536
    End If
    change = str_input / 1000 '返回值 取三位小数
End Function
3)信息查询
    信息查询界面如下所示,可对已经保存的生产数据根据时间、班次、产量、车号进行综合查询。

    该功能的程序方面比较简单,主要是对数据库的查询操作。以单独对班次查询为例,其代码如下:
'按班次查询子函数,用于判断其搜索关键字是否有效
Private Sub Chk_team_Click()
    If Chk_team.Value = 1 Then
        Combo_team.Enabled = True
    Else
        Combo_team.Enabled = False
    End If
End Sub
'选择班次子函数,用于判断所选班次
Private Sub Combo_team_Click()
    Dim liner_str
    Select Case Combo_team.ListIndex
        Case 0
            liner_str = "甲班"
        Case 1
            liner_str = "乙班"
        Case 2
            liner_str = "丙班"
        Case 3
            liner_str = "丁班"
    End Select
End Sub
'班次查询子函数,获取查询字符串
Public Function sch_team()
    Dim liner_str
    Dim sch_str_team
    Select Case Combo_team.ListIndex
    Case 0
        liner_str = "甲班"
    Case 1
        liner_str = "乙班"
    Case 2
        liner_str = "丙班"
    Case 3
        liner_str = "丁班"
    End Select
    sch_str_team = "info_liner = '" + liner_str + "'"
    sch_team = sch_str_team
End Function
'产量查询函数,用于查询产量并对其进行显示
Private Sub cmd_search_Click()
Dim sch_str
'按班次查询
    If Chk_team.Value = 1 Then
        sch_str = " where " + sch_team()
    End If
'查询结果显示
    Dim resource_str
    resource_str = " select info_id as 编号,info_mactype as 机器类型 ,info_liner as 班次, "
    resource_str = resource_str + " info_sumoutput as 当日产量, info_dayoutput as 累计产量,"
    resource_str = resource_str + " info_daytotal as 当日合计产量,info_total as 累计合计产量 "
    resource_str = resource_str + " from " + table_str + sch_str
    Adodc1.RecordSource = resource_str
    Debug.Print Adodc1.RecordSource
    Adodc1.Refresh
End Sub
    可根据以上单独查询班次的例子对其进行扩展,增加根据时间,车号,产量范围等对产量进行查询的功能,这里就不一一叙述了。
四、结束语
    触摸屏与上位机的结合,并通过VB6.0传送数据所构成的计算机监控系统,对于近距离传输数据的现场控制来说是一种性价比很高的解决方案。该系统充分的利用了触摸屏的通信功能和PC强大的图形显示、浮点运算等特点,以最大的限度合理的利用了资源,实现了对设备运行状态的监控。
 
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    不良信息
    举报中心
    机电之家设备管理网
    致力于机电设备维修与管理技术
    网络110
    报警服务
    服务热线:0571-87774297 传真:0571-87774298 电子邮件:donemi@hz.cn 服务 QQ:66821730
    机电之家(www.jdzj.com)旗下网站 杭州滨兴科技有限公司提供技术支持

    版权所有 Copyright © 机电之家--中国机电行业门户·设备维修与管理

    主办:杭州高新(滨江)机电一体化学会
    网站经营许可证:浙B2-20080178-1