Select your language

Washing machine web 2.0. HMI interface in Vb.net

Written by David Posted on 3 July, 2011 at 11:10

Well, I leave the video of the application in vb.net working.

Web washing machine 2.0

I have modified the class in charge of communicating with the plc. In this case we will call the variables by their name. This is the class:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
Imports TwinCAT. Ads
PublicClass ClassAds
    PrivateAs TcAdsClient
    DimAs AdsState
    Enum AdsState
        Disconnected
        ErrorConnectconnectedOk
        
    EndEnum

"PLC ADS"
    PublicFunction Connect()AsString
        Try
            =New TcAdsClient
            adsClient. Connect("192.168.255.2.1.1"801)
            adsClient. Timeout=5000

            If adsClient. Readstate. AdsState. ToString="Run"Then
                = AdsState. ConectadoOk
            else
                = AdsState. ErrorConect
            EndIf
            Return adsClient. Readstate. AdsState. ToString
        Catcherras exception
            = AdsState. ErrorConect
            Return"Error"
        EndTry

    EndFunction

    PublicFunction ValorIntPorName(ByValAsString)

        DimAs AdsStream
        DimAs AdsBinaryReader

        Try
            'Recover Var
            Number DimAsInteger
            = adsClient. CreateVariableHandle(Name)

            =New AdsStream(2)
            adsClient. Read(Var, dataStream)
            =New AdsBinaryReader(dataStream)
            Return Read. ReadInt16
        catcherras exception

            = adsState. ErrorConect
            Return0
        EndTry
    EndFunction
    PublicFunction txtName(ByValAsString)

        DimAs AdsStream
        DimAs AdsBinaryReader
        DimAsString
        DimAsInteger

        Try
            'Recover Var
            Number DimAsInteger
            = adsClient. CreateVariableHandle(Name)

            =New AdsStream(31)
            = adsClient. Read(Var, dataStream)


            =New AdsBinaryReader(dataStream)
            'txt = Read.ReadString
            =NewString(Read. ReadChars(length))
            'txt = txt. Substring(0, txt. IndexOf("\0"))
            Return txt
        catcherras exception

            = AdsState. ErrorConect
            Return0
        EndTry

    EndFunction
    PublicSub WriteBoolPorName(ByValAsStringByValAsBoolean)

        DimAs AdsStream
        DimAs AdsBinaryWriter

         Try'Recuperar
            Numero Var
            DimAsInteger
            = adsClient. CreateVariableHandle(Name)
            =New AdsStream(1)
            =New AdsBinaryWriter(dataStream)
            Write. Write(Value)

            adsClient. Write(var, dataStream)
        Catcherras exception
            = AdsState. ErrorConect
        EndTry
    EndSub

    PublicSub Disconnect()
        If= Adsstate. ConectadoOkThen adsClient. Dispose()
        = AdsState. Disconnected
    EndSub
    PublicFunction StateAds()AsString
        If= AdsState. ConectadoOkthen
            return1
        else
            return0
        endif
    endfunction
#End region
endclass                   

To be able to read the variables by name, what we do is retrieve the Value that identifies this variable. We do this with the following function:
Var = adsClient.CreateVariableHandle(Name)
Name is the name of the variable. For global variables we will call them by . VariableName and for the rest ProgramName.VariableName.

- Publicidad -

I have created an enumeration to define the states of communication. And a new function to retrieve text from the plc. Specifically I am interested in the variable MAIN.txtWarning, this variable informs us of the current state of the sequence.

This is the code of the main form:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
PublicClass Form1
    DimAsNew ClassAds


    
PrivateSub buConectar_Click(ByValAs System. ObjectbyValas system. EventArgs)Handles buConnect. Click
        Plc1.Connect()
        Timer1. Enabled=True
    EndSub

    PrivateSub buDesconectar_Click(ByValAs System. ObjectbyValas system. EventArgs)Handles buDesconnect. Click
        If Plc1.StateAds=1Then Plc1.Disconnect()

    EndSub

    PrivateSub Timer1_Tick(ByValAs System. ObjectbyValas system. EventArgs)Handles Timer1. Tick
        Timer1. Enabled=False

        If Plc1.StateAds 1Then
            MessageBox. Show("Error Ads")
            ExitSub
        EndIf

        laTemp. Text="Temperature= "& Plc1.IntValueByName(". Temperature")&"ºC"
        laNivelAgua. Text="Water  Level= "& Plc1.ValueIntByName(". Water Level")
        theState. Text= Plc1.txtByName("MAIN.txtWarning")

        pbM1. Visible= plc1.ValueIntByName(". M1")
        pbPump. Visible= pbM1. Visible
        pbM2. Visible= plc1.ValueIntByName(". M2")
        pbY1. Visible= plc1.ValueIntByName(". Y1")
        pbY2. Visible= plc1.ValueIntByName(". Y2")

        pbX1. Visible= plc1.ValueIntByName(". X1")
        ImgFondo(Plc1.ValueIntPorName(". CajonCerrado"))

        Timer1. Enabled=true
    endsub
    privatesub imgFondo(byValasinteger)
        ifthen
            pbFondo. ImageLocation=".. /.. /Resources/LavPreparada.png"
        Else
            pbFondo. ImageLocation=".. /.. /resources/TodoParado.png"
        EndIf
    EndSub

    PrivateSub buMarcha_Click(ByValAs System. ObjectbyValas system. EventArgs)Handles buMarcha. Click
        If Plc1.StateAds 1ThenExitSub
        Plc1.WriteBoolByName(". End

    Sub
    PrivateSub Sub buCerrarCajon_Click(ByValAs System. ObjectbyValas system. EventArgs)Handles buCloseBox. Click
        If Plc1.StateAds 1ThenExitSub
        Plc1.WriteBoolByName(". CajonClosed"True)
        Plc1.WriteBoolByName(". DoorClosed"True)
    EndSub
    PrivateSub buAbrirCajon_Click(ByValAs System. ObjectbyValas system. EventArgs)Handles buAbrirCajon. Click
        If Plc1.StateAds 1ThenExitSub
        Plc1.WriteBoolByName(". CajonClosed"False)
        Plc1.WriteBoolByName(". DoorClosed"False)
    EndSub
    PrivateSub Form1_Disposed(ByValAsObjectByValAs System. EventArgs)HandlesMe. Disposed
        If Plc1.StateAds=1Then Plc1.Disconnect()
    EndSub
EndClass             

This code doesn't have much history. It's about establishing the connection. Using a timer, read the status of the motors and valves, to show or not the pictureBox. The background image is changed using the ImgFondo function, depending on the state, showing one or another image. The rest of the code is the events of the Buttons to open/close or start the washing machine.
Here, I leave both the plc program and the application in vb.net. Remind you to change the AMS address in ClassAds. To continue with our project we will have to start the web server and create the functions (vb.net) to record in the database.

Bookmark on DeliciousDigg this postRecommend on Facebookshare via RedditShare with StumblersTweet about itSubscribe to the comments on this post

Authors: David

See original.

RefriAméricas 2025: the academic program is available and the registration discount is in force

RefriAméricas 2025: the academic program is available and the registration discount is in force

Dominican Republic. A little more than a month after its implementation, RefriAméricas 2025 continues to advance in its agenda. The event, which will be held on July 23 and 24 in Santo Domingo,...

New Board of Directors to Lead ADOMTRA for 2025-2027

New Board of Directors to Lead ADOMTRA for 2025-2027

Dominican Republic. The Dominican Association of Refrigeration and Air Conditioning Technicians announced the formation of its new Board of Directors for the period 2025-2027, elected during the...

Bogota to host key building automation event in Latin America

Bogota to host key building automation event in Latin America

Colombia. On July 11, the Tequendama Suites Hotel will be the meeting point for leaders in the technology sector with the Building Automation Days by KNX LATAM Colombia, an event that will bring...

Ductless heat pumps prove effective in cold climates

Ductless heat pumps prove effective in cold climates

International. Ductless heat pumps are defying low temperatures with increasingly advanced technologies, establishing themselves as a reliable solution for heating in regions with harsh winters.

Frascold launches new ATEX-HT compressor series for high temperatures and low emissions

Frascold launches new ATEX-HT compressor series for high temperatures and low emissions

Italy. The new line is designed to operate with natural hydrocarbons and reach temperatures of up to 135°C, expanding sustainable options for heating and industrial processes.

Intelligent Cooling Drives Efficiency and Sustainability in Data Centers

Intelligent Cooling Drives Efficiency and Sustainability in Data Centers

International. As technology infrastructure expands to sustain the growing demand for data, so does its environmental impact. Data centers, essential to global digital operations, face the challenge...

High-precision logistics: the cold chain that saves lives in the Mexican health system

High-precision logistics: the cold chain that saves lives in the Mexican health system

Mexico. High-precision medical logistics has established itself as a strategic component in the health sector, where a minimum thermal deviation can represent millions of dollars in losses or, even...

Technical Training: Honeywell Hosts Workshop on New Generation of Solstice Refrigerants

Technical Training: Honeywell Hosts Workshop on New Generation of Solstice Refrigerants

International. This Thursday, June 12, 2025, Honeywell will hold the first session – in virtual format – of the training workshop "Solstice Refrigerants: The New Generation of Refrigerants with Low...

Cleveland Controls Launches Universal Adjustable Air Pressure Switch for Multiple Applications

Cleveland Controls Launches Universal Adjustable Air Pressure Switch for Multiple Applications

United States. Cleveland Controls announced the launch of its new ANS2 series of air pressure switches, a universal, field-adjustable device developed for a wide range of applications in residential...

Trane Renews Leadership in Mexico and Latin America with Three Strategic Appointments

Trane Renews Leadership in Mexico and Latin America with Three Strategic Appointments

Mexico. Trane announced a key restructuring of its management team for Mexico and Latin America. The changes are part of a strategy to consolidate its presence in key markets and strengthen its...

Free Subscription
Remember Me
SUBSCRIBE TO OUR NEWSLETTER
DO YOU NEED A SERVICE OR PRODUCT QUOTE?
LASTEST INTERVIEWS
SITE SPONSORS










LASTEST NEWSLETTER
Ultimo Info-Boletin