plc.myforum.ro Forum Index plc.myforum.ro
PLCs users www.plc.myforum.ro!
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

VBA code problem...need ur help to find the bug

 
Post new topic   Reply to topic    plc.myforum.ro Forum Index -> ALLEN-BRADLEY(Rockwell Automation)
View previous topic :: View next topic  
Author Message
sachincool786
Junior 2
Junior 2


Joined: 21 Jun 2015
Posts: 28

PostPosted: 27/12/2015 19:49    Post subject: VBA code problem...need ur help to find the bug Reply with quote

Public WithEvents oGroup1 As TagGroup
Public vidrios1, vidrios2, vidrios3, vidrios4, vidrios5, vidrios6, vidrios7, vidrios8, vidrios9 As String
Public str_vidrios1, str_vidrios2, str_vidrios3, str_vidrios4, str_vidrios5, str_vidrios6, str_vidrios7, str_vidrios8, str_vidrios9 As String


Public Sub Display_AnimationStart()
Dim TagsInError1 As StringList
On Error Resume Next
Err.Clear
If oGroup1 Is Nothing Then
Set oGroup1 = Application.CreateTagGroup(Me.AreaName, 500)
If Err.Number Then
LogDiagnosticsMessage "Error creating TagGroup. Error: " _
& Err.Description, ftDiagSeverityError
Exit Sub
End If
oGroup1.Add "[0]comm_furnace_glasses[0]"
oGroup1.Add "[0]comm_furnace_glasses[1]"
oGroup1.Add "[0]comm_furnace_glasses[2]"
oGroup1.Add "[0]comm_furnace_glasses[3]"
oGroup1.Add "[0]comm_furnace_glasses[4]"
oGroup1.Add "[0]comm_furnace_glasses[5]"
oGroup1.Add "[0]comm_furnace_glasses[6]"
oGroup1.Add "[0]Glass[0]"
oGroup1.Active = True
oGroup1.RefreshFromSource TagsInError1
End If

End Sub


Private Sub oGroup1_Change(ByVal TagNames As IGOMStringList)
On Error Resume Next
Dim oTag11, oTag21, oTag31, oTag41, oTag51, oTag61, oTag71 As Tag
Dim oTag100 As Tag

Dim str_bits1 As String

If Not oGroup1 Is Nothing Then
Set oTag11 = oGroup1.Item("[0]comm_furnace_glasses[0]")
Set oTag21 = oGroup1.Item("[0]comm_furnace_glasses[1]")
Set oTag31 = oGroup1.Item("[0]comm_furnace_glasses[2]")
Set oTag41 = oGroup1.Item("[0]comm_furnace_glasses[3]")
Set oTag51 = oGroup1.Item("[0]comm_furnace_glasses[4]")
Set oTag61 = oGroup1.Item("[0]comm_furnace_glasses[5]")
Set oTag71 = oGroup1.Item("[0]comm_furnace_glasses[6]")
Set oTag100 = oGroup1.Item("[0]Glass[0]")

m_vidrios.str_bits (str_bits1)

str_vidrios1 = str_bits1(CStr(oTag11))
str_vidrios2 = str_bits1(CStr(oTag21))
str_vidrios3 = str_bits1(CStr(oTag31))
str_vidrios4 = str_bits1(CStr(oTag41))
str_vidrios5 = str_bits1(CStr(oTag51))
str_vidrios6 = str_bits1(CStr(oTag61))
str_vidrios7 = str_bits1(CStr(oTag71))
Err.Clear
End If
txtHorno.Value = "Mid(str_vidrios1, 1, 31) & Mid(str_vidrios2, 1, 31) & Mid(str_vidrios3, 1, 31) & Mid(str_vidrios4, 1, 31) & Mid(str_vidrios5, 1, 31) & Mid(str_vidrios6, 1, 31) & Mid(str_vidrios7, 1, 31)"

If Mid(txtHorno, 1, 1) = "1" Then

oTag100.Value = 0

End If

If Mid(txtHorno, 1, 1) = "0" Then

oTag100.Value = 1

End If
End Sub




I have some doubts , please help debugging it :

1) txtHorno is a name of string display object (which is VBA controlled) :

txtHorno.Value = "Mid(str_vidrios1, 1, 31) & Mid(str_vidrios2, 1, 31) & Mid(str_vidrios3, 1, 31) & Mid(str_vidrios4, 1, 31) & Mid(str_vidrios5, 1, 31) & Mid(str_vidrios6, 1, 31) & Mid(str_vidrios7, 1, 31)"

is it right???
should i write "" because this is returning a string???
should i write "txtHorno.Value =" or just "txtHorno ="
if not please tell me the correct way to write it, actually txtHorno is a string in which i want to move the above(function returned) value.


2)m_vidrios is my module name in which i have defined a public function so that i can use it in my form :

m_vidrios.str_bits (str_bits1)

Is it a right way to call it???

The code of module named "m_vidrios" is :

Function str_bits(entrada As String) As String

Dim i, j As Integer
Dim Temp As Double

Temp = Abs(CDbl(entrada))

str_bits = "0000000000000000000000000000000"

i = 0

If Temp = 1 Then

str_bits = "10000000000000000000000000000000"

GoTo A:

ElseIf Temp = 0 Then

str_bits = "00000000000000000000000000000000"

GoTo A:

End If

For i = 31 To 1 Step -1

If Temp / 2 ^ i >= 1 Then

str_bits = Mid(str_bits, 2, i - 1) & "1" & Mid(str_bits, i + 1, Len(str_bits) - i)

Temp = Temp - (2 ^ i)

Else:

str_bits = Mid(str_bits, 2, i - 1) & "0" & Mid(str_bits, i + 1, Len(str_bits) - i)

End If

Next i

If Temp = 1 Then

str_bits = "1" & str_bits

Else:
str_bits = "0" & str_bits

End If





A:

End Function





3) oTag100.Value = 1

will update my PLC tag "[0]Glass[0]" high automatically or i have to write anything else???
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    plc.myforum.ro Forum Index -> ALLEN-BRADLEY(Rockwell Automation) All times are GMT + 2 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group
Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro