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.

Finalists of the CALA AWARDS will travel as guests to RefriAméricas Santo Domingo

Finalists of the CALA AWARDS will travel as guests to RefriAméricas Santo Domingo

Latin America. Applications for the prestigious CALA AWARDS 2025 will be open until May 10. This award, organized by ACR Latin America, is a unique opportunity to highlight the best air conditioning...

Copeland to Showcase Innovative Cold Chain Solutions at Global Cherry Summit 2025

Copeland to Showcase Innovative Cold Chain Solutions at Global Cherry Summit 2025

Chile. Copeland, a global provider of sustainable climate solutions, will participate in the Global Cherry Summit 2025, which will be held on April 22 at the Monticello Conference Center, in San...

Carrier Receives Double Recognition at the 2025 Environment + Energy Leader Awards

Carrier Receives Double Recognition at the 2025 Environment + Energy Leader Awards

United States. The company was awarded in the Energy Innovation and Software Implementation categories for its Abound solutions, which optimize energy consumption in more than 2,500 stores in the...

Data Centers Rely on Liquid Cooling to Meet AI Energy Demand

Data Centers Rely on Liquid Cooling to Meet AI Energy Demand

Mexico. With the rise of artificial intelligence (AI), machine learning (ML), and high-performance computing (HPC), the global technology infrastructure faces a new challenge: dissipating the heat...

Chilean supermarket leads transition to sustainable A2L refrigerants with state-of-the-art technology

Chilean supermarket leads transition to sustainable A2L refrigerants with state-of-the-art technology

Chile. A well-known supermarket chain in the south-central part of the country became a pioneer by implementing refrigeration systems based on new generation A2L refrigerants, which offer a...

Mergers and acquisitions in the HVAC equipment sector grow driven by technology demand

Mergers and acquisitions in the HVAC equipment sector grow driven by technology demand

International. The HVAC market has seen remarkable growth, driving an increase in mergers, acquisitions (M&A), and investments in key technologies.

New corrosion protection in SISTEVEN fans

New corrosion protection in SISTEVEN fans

International. The company has begun to incorporate Magnelis-coated sheet steel into the production of its fans and ventilation systems.

Smart refrigeration gains ground in the food industry

Smart refrigeration gains ground in the food industry

International. Danfoss and Microsoft announced the expansion of their strategic collaboration, established in 2019, with the aim of accelerating the development and implementation of solutions based...

LG Launches Free Online Academy to Train HVAC Professionals

LG Launches Free Online Academy to Train HVAC Professionals

International. LG has launched a new free digital platform for the training of HVAC consultants and installers, registration is officially open. 

ACAIRE will hold a union meeting in Medellín to present the 2025 agenda and news of the RETSIT

ACAIRE will hold a union meeting in Medellín to present the 2025 agenda and news of the RETSIT

Colombia. Next Wednesday, April 23, 2025, the HVAC&R sector has a key appointment in Medellín with the Trade Union Meeting organized by ACAIRE, a free event that will bring together...

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