Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - maxketcham

Pages: [1]
1
Support Questions / OPC connection to remote server
« on: August 22, 2016, 11:33:07 AM »
using OpcDaCom, I am tryint to connect to an OPC server on a remote server the server address is  10.224.220.109 using OPC expert https://opcexpert.com/ I can connect by just adding the address of the opc server and it finds Kepware.KEPServerEX.V5 and allows me to connect to it. Why can't I connect to it with Advanced HMI? I have tried changing opcda://localhost to remotehost, the IP address, and several other thnigs but nothing seems to work. What am I doing wrong?

2
Support Questions / direct reading and writing to OPC in AHMI
« on: August 05, 2016, 11:28:51 AM »
I know it's here in the forum but after 2 days searching I give up. Could someone point me to how to read and write to an opc server in AHMI without using a control, I have an need in my app for direct reads/writes to OPC and  to/from a database,  I use controls in some places but the direct reads and writes are easier. I found them here once, but now I can't find them and with 5TB of code on my hard drive I can't find it there either, any help would be appreciated, thanks in advance
Loving AHMI!!!!
and have posted about it more than once on FB LOL
ps only need the direct read and write code for OPC, I have the database handled, lol

3
Support Questions / DataSubscriber 2
« on: February 04, 2016, 01:31:10 PM »
OK I'm going to try this again. My company just upgraded their server and I can't send or receive any attachment period so I'll have to cut and paste the code. The problem I am having is I'm trying to add items using a loop and the  code  DataSubscriber21.PLCAddressValueItems.Add(New AdvancedHMIDrivers.PLCAddressItem() With {.SubscriptionID = CInt(records(x, 3)) - 1, .PLCAddress = records(x, 1)}) where Records is a string array containing the address I want to look at. I'm using the OPC driver and the program works fine except for one thing, It is taking 4.5 hours to add 772 items to the subscriber? I also just added this code a = e.PlcAddress.ToString & " = " & e.Values(0).ToString & "; subscription ID = " & e.SubscriptionID & vbCrLf & TextBox1.Text and I think that it has shown me what the problem is, but I don't know how to cure it. It seems that when you add an Item to the datasubscriber, it is using soe type of recursion to add it? anyways what I see is an output to the textbox of item 1 printed, item 1 printed, item 1 item two printed, item 1 printed, item 1 item 2 printed, item 1 item 2 1tem 3 printed, ant it progresses that way for each item I add. I'll paste all the code from main form below, the module named tracking only has 1 textbox on it and the data file is comma delimited and consists of two items per line of 772 lines, I'll include a 12 item list at end for sample purposes, but you'll have to make your own as OPC will have to be working for this example to run and the tags will have to exist on that opc server. Could someone tell what is going on and how to fix it. Aslo I've been programing since dartmouth basic came out so please lay off my style comment on on actual errors in code, not how I program. LOL


Public Class MainForm
    '*******************************************************************************
    '* Stop polling when the form is not visible in order to reduce communications
    '* Copy this section of code to every new form created
    '*******************************************************************************
    Private FinishedStartUp As Boolean = False
    Private start_time As DateTime
    Private stop_time As DateTime
    Private WriteToSQL As Boolean = False
    Dim elapsed_time As TimeSpan
    Dim firstscan As Boolean = False
    Private First_start_time As DateTime
    Private AlarmArray(2001) As String
    Private WriteToTracking As Boolean = False
    '*******************************************************************************
    '* Stop polling when the form is not visible in order to reduce communications
    '* Copy this section of code to every new form created
    '*******************************************************************************
    Private NotFirstShow As Boolean
    Public records(773, 4) As String
    Private Sub MainForm_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
        Tracking.Hide()
        Me.Hide()
        AdvancedHMIDrivers.Utilities.StopComsOnHidden(components, Me)
        DataSubscriber21.PLCAddressValueItems.Clear()
        OpcDaCom1.DisableSubscriptions = True
        OpcDaCom1.Dispose()
        Tracking.Dispose()
        Me.Dispose()
    End Sub
    Private Sub MainForm_Load(sender As Object, e As EventArgs) Handles Me.Load
        First_start_time = Now
        Dim TempText As String
        Tracking.Show()
        Dim a As String = ""
        Dim b As Integer = 0
        ReadCSV()
        DataSubscriber21.PLCAddressValueItems.Clear()
        For x = 1 To 10 Step 1
            If records(x, 2) <> "" Then
                DataSubscriber21.PLCAddressValueItems.Add(New AdvancedHMIDrivers.PLCAddressItem() With {.SubscriptionID = CInt(records(x, 3)) - 1, .PLCAddress = records(x, 1)})
                TempText = Tracking.TextBox1.Text
                Tracking.TextBox1.Text = x.ToString & " - Tag name = " & records(x, 1) & ", error description = " & records(x, 2) & ", Subscription Id = " & records(x, 3) & vbCrLf & TempText
                Tracking.TextBox1.Refresh()
                Me.Refresh()
            End If
        Next x
        stop_time = Now
        Dim elapsed_Time As TimeSpan = DateTime.Parse(stop_time.ToString).Subtract(DateTime.Parse(First_start_time.ToString))
        TempText = Tracking.TextBox1.Text
        Me.Refresh()
        Tracking.TextBox1.Text = "Time to load all parameters was" & elapsed_Time.ToString & vbCrLf & TempText
        Me.Refresh()
    End Sub
    Private Sub ReadCSV() 'FileName As String)
        Try
            Dim WholeFile As String = ""
            Dim LineData() As String
            Dim FieldData() As String
            Dim ParmCount As Integer = 1
            Dim VarCount As Integer = 1
            Dim FilePath As String = "C:\work\Alarm message lean.csv"
            WholeFile = My.Computer.FileSystem.ReadAllText(FilePath)
            LineData = Split(WholeFile, vbNewLine)
            For Each LineOfText As String In LineData
                VarCount = 1
                FieldData = LineOfText.Split(",")
                For Each WordOfText As String In FieldData
                    records(ParmCount, VarCount) = WordOfText
                    VarCount += 1
                Next WordOfText
                records(ParmCount, 3) = (ParmCount - 1).ToString
                ParmCount += 1
            Next LineOfText
        Catch EX As Exception
            Dim A As String
            Dim CurrentDateTime As DateTime = DateTime.Now
            Dim TimeStamp As String = vbCrLf & "current date and time = " & CurrentDateTime.ToString("yyyy/MM/dd - HH:mm:ss.ffffff") & vbCrLf
            Dim ErrorLocation As String = "In - Form1 Private Sub ReadCSV(FileName As String)" & vbCrLf
            Dim ErrorString As String = " current error = " & ErrorToString() & vbCrLf
            Dim B As String = Tracking.TextBox1.Text
            A = TimeStamp & ErrorLocation & ErrorString & B & vbCrLf
            Tracking.TextBox1.Text = ""
            Tracking.TextBox1.Text = A
        End Try
    End Sub
    Private Sub INSERTDATA(ByVal MAIN_ASSY_VAR As String, ByVal SUB_ASSY_VAR As String, ByVal SUB_ASSY_NUM_VAR As String, ByVal CURRENT_STATE_VAR As String, ByVal SENDER_NAME_VAR As String, ByVal SENDER_VALUE_VAR As String, ByVal FULL_DATE_TIME_VAR As String, THIS_DATE_VAR As String, ByVal THIS_TIME_VAR As String, ByVal THIS_ID_VAR As String)
        If WriteToSQL = False Then Exit Sub
        Try
            Dim MyConnect As New SqlClient.SqlConnection
            MyConnect.ConnectionString = "Data Source=MESTEST\ONLINE;Integrated Security=False;User ID=SPIRE_SUN_SIMULATOR;Password=SPIRE_SUN_SIMULATOR;Connect TimeOut=15;Encrypt=False;TrustServerCertificate=False"
            Dim MyCommand As SqlClient.SqlCommand = New SqlClient.SqlCommand()
            Dim TodayTime1 As DateTime = Now
            Dim ID As Guid
            ID = Guid.NewGuid
            MyCommand.Connection = MyConnect
            MyCommand.CommandText = "INSERT INTO dbo.MACHINE_TIME (MAIN_ASSY, SUB_ASSY, SUB_ASSY_NUM, CURRENT_STATE, SENDER_NAME, SENDER_VALUE, FULL_DATE_TIME, THIS_DATE, THIS_TIME, THIS_ID) VALUES (@MAIN_ASSY, @SUB_ASSY, @SUB_ASSY_NUM, @CURRENT_STATE, @SENDER_NAME, @SENDER_VALUE, @FULL_DATE_TIME, @THIS_DATE, @THIS_TIME, @THIS_ID)"
            MyConnect.Open()
            MyCommand.Parameters.AddWithValue("@MAIN_ASSY", MAIN_ASSY_VAR)
            MyCommand.Parameters.AddWithValue("@SUB_ASSY", SUB_ASSY_VAR)
            MyCommand.Parameters.AddWithValue("@SUB_ASSY_NUM", SUB_ASSY_NUM_VAR)
            MyCommand.Parameters.AddWithValue("@CURRENT_STATE", CURRENT_STATE_VAR)
            MyCommand.Parameters.AddWithValue("@SENDER_NAME", SENDER_NAME_VAR)
            MyCommand.Parameters.AddWithValue("@SENDER_VALUE", SENDER_VALUE_VAR)
            MyCommand.Parameters.AddWithValue("@FULL_DATE_TIME", FULL_DATE_TIME_VAR)
            MyCommand.Parameters.AddWithValue("@THIS_DATE", THIS_DATE_VAR)
            MyCommand.Parameters.AddWithValue("@THIS_TIME", THIS_TIME_VAR)
            MyCommand.Parameters.AddWithValue("@THIS_ID", THIS_ID_VAR)
            MyCommand.ExecuteNonQuery()
            MyConnect.Close()
        Catch EX As Exception
            Dim A As String
            Dim CurrentDateTime As DateTime = DateTime.Now
            Dim TimeStamp As String = vbCrLf & "current date and time = " & CurrentDateTime.ToString("yyyy/MM/dd - HH:mm:ss.ffffff") & vbCrLf
            Dim ErrorLocation As String = "In - Form1 Private Sub InsertData()" & vbCrLf
            Dim ErrorString As String = " current error = " & ErrorToString() & vbCrLf
            Dim B As String = TextBox1.Text
            A = TimeStamp & ErrorLocation & ErrorString & B & vbCrLf
            TextBox1.Text = ""
            TextBox1.Text = A
        End Try
    End Sub
    Private Sub Form_VisibleChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.VisibleChanged
        If NotFirstShow Then
            AdvancedHMIDrivers.Utilities.StopComsOnHidden(components, Me)
        Else
            NotFirstShow = True
        End If
    End Sub
    Private Sub DataSubscriber21_DataChanged(sender As Object, e As Drivers.Common.PlcComEventArgs) Handles DataSubscriber21.DataChanged
        Dim a As String
        Dim temptext As String = TextBox1.Text
        a = e.PlcAddress.ToString & " = " & e.Values(0).ToString & "; subscription ID = " & e.SubscriptionID & vbCrLf & TextBox1.Text
        stop_time = Now
        TextBox1.Text = a & vbCrLf & temptext
        Dim elapsed_Time As TimeSpan = DateTime.Parse(stop_time.ToString).Subtract(DateTime.Parse(First_start_time.ToString))
        temptext = TextBox1.Text
        TextBox1.Text = "Elapsed time = was" & elapsed_Time.ToString & vbCrLf & temptext
        Me.Refresh()
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        End
    End Sub
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        WriteToSQL = Not WriteToSQL
        If WriteToSQL = True Then
            Button3.BackColor = Color.Blue
        Else
            Button3.BackColor = Color.Red
        End If
    End Sub
End Class


Module Line Omron PLCs.Lay Up 01.Alarm
  • .Alarm[0000],[0]ETHERCAT COMMUCATION ERROR

Module Line Omron PLCs.Lay Up 01.Alarm
  • .Alarm[0001],[1]ETHERCAT Node 01 ERROR

Module Line Omron PLCs.Lay Up 01.Alarm
  • .Alarm[0002],[2]ETHERCAT Node 02 ERROR

Module Line Omron PLCs.Lay Up 01.Alarm
  • .Alarm[0003],[3]ETHERCAT Node 03 ERROR

Module Line Omron PLCs.Lay Up 01.Alarm
  • .Alarm[0004],[4]ETHERCAT Node 04 ERROR

Module Line Omron PLCs.Lay Up 01.Alarm
  • .Alarm[0005],[5]ETHERCAT Node 05 ERROR

Module Line Omron PLCs.Lay Up 01.Alarm
  • .Alarm[0006],[6]ETHERCAT Node 06 ERROR

Module Line Omron PLCs.Lay Up 01.Alarm
  • .Alarm[0007],[7]ETHERCAT Node 07 ERROR

Module Line Omron PLCs.Lay Up 01.Alarm
  • .Alarm[0008],[8]ETHERCAT Node 08 ERROR

Module Line Omron PLCs.Lay Up 01.Alarm
  • .Alarm[0009],[9]ETHERCAT Node 09 ERROR

Module Line Omron PLCs.Lay Up 01.Alarm
  • .Alarm[0010],[10]ETHERCAT Node 10 ERROR

Module Line Omron PLCs.Lay Up 01.Alarm
  • .Alarm[0011],[11]ETHERCAT Node 11 ERROR


4
Open Discussion / Text entry and display
« on: October 21, 2015, 02:25:35 PM »
is there a way to display plc text data?

5
Support Questions / opcda driver
« on: September 30, 2015, 12:50:14 PM »
I'm not new to OPC, but I am new to servers. Does anyone know how I make this driver connect to an opcserver from a laptop? I can get it to work fine running from the server, but I'm clueless on what I need to do to connect it to the server remotely. I have used other software such as OPCDATestClient and the only thing I had to do there was give it an IP address and a opcserver name and it connected. I tried that with AdvancedHMI's driver and it doesn't work, keeps saying "the URL scheme 'HTTP' is not supported",  so what am I missing here? my server name in "Kepware.KEPServerEX.V5" and my server address is "10.224.220.108"

thanks for any help you may give.

Pages: [1]