分享好友 数控技术首页 数控技术分类 切换频道

基于VB及台达触摸屏的监控系统在纺机中的应用

2018-09-06 00:00410
摘要: 目前纺织业生产中产品产量一般都还是依靠人工进行统计,在实际操作过程中,不仅麻烦而且容易出错。因此,有必要采用产量监控及查询系统对产品产量进行统计。本文介绍了基于VB及台达触摸屏的产量监控及查询系统,该系统不仅能应用于纺织机械,而且适用于其它设备。

关键词: 台达触摸屏;VB;监控;查询;MODBUS;MSCOMM

一、引言

    该系统用于对各生产线的纺机进行实时监控和查询,并对各班次产量数据进行存储,用户可通过日期时间段、车号、班次等对产量进行综合查询,并进行统计,可在查询出满足条件的数据后,进行报表输出和打印。以下是对系统设计方面的一些讨论。

二、系统结构与功能

    精梳机是近年来在纺织行业使用较为普遍的一种设备,其主要作用是排出梳棉生条中一定长度以下的短纤维,提高纤维整齐度,进一步清除纤维中残留的棉结、杂质,提高纤维光洁度。条并卷联合机是精梳工序的准备设备,通常情况下,一套精梳设备由一台条并卷联合机和五台精梳机组成。该产量监控查询系统应用于精梳设备的结构示意图如下所示:

    该系统实现了以下功能: 

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 = he(&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 = "selec * from machine wher 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

    selec Case Combo_team.ListIndex

        Case 0

            liner_str = "甲班"

        Case 1

            liner_str = "乙班"

        Case 2

            liner_str = "丙班"

        Case 3

            liner_str = "丁班"

    End selec

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 selec

    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 = " wher " + 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强大的图形显示、浮点运算等特点,以最大的限度合理的利用了资源,实现了对设备运行状态的监控。
举报
收藏 0
打赏 0
轻松提高数控机床精度
随着我国经济的飞速发展,数控机床作为新一代工作母机,在机械制造中已得到广泛的应用,精密加工技术的迅速发展和零件加工精度的

0评论2025-01-04312

加工中心刀具长度补偿怎么用?
在数控加工中,刀具长度补偿是一种重要的措施,用于消除机床变形、热变形等因素引起的误差,保证加工精度,从而提高培训效率,减

0评论2024-12-18400

加工中心主轴定位角度怎么调?
  在数控加工领域,加工中心主轴的定位角度是影响加工精度和效率的重要因素之一。正确调整主轴的定位角度可以提高加工质量,减

0评论2024-12-11496

简述机器人加装电主轴就选Kasite 4060ER-S的理由
  近年来,随着科技的不断发展,机器人作业已经渗透到各个领域,尤其在工业制造领域,更加随处可见。高精密切割、铣削、雕刻、

0评论2024-05-20707

机器人主轴怎么选?Kasite高速电主轴满足你的需求
  机器人发展到现在越来越受到人们的欢迎和重视,现在很多传统行业都在生产作业中引入了工业机器人,随着机器人的改进和优化,

0评论2023-10-231208

机械臂加装2.2KW大力矩电主轴,就选MSIY-80电主轴
机械臂想加装大力矩电主轴,用于铸钢等硬质材料去毛刺,铣削等加工,可以考虑MSIY-80电主轴,外径80mm,重量4.8公斤,可搭配轴向或径向浮动刀柄配套使用。

0评论2023-08-261203

每天早上打开数控机床时有没有必要热机?
工厂使用精密数控机床(加工中心、电火花、慢走丝等机床)进行高精密加工,你是否有这样的经验:每天早上开机进行加工,首件的加

0评论2023-08-151093