Jump to content

Excel VBA Load UniDDE Software and Run Project


Corey

Recommended Posts

In UniDDE, if you right click on your open project or use the menu buttons, you can copy the Read Command, Stop PLC Macro, Run PLC Macro, and Run/Stop Toggle macro.  If I have the read command in an Excel worksheet, it tries to start UniDDE.exe but fails.  Instead, I had to clear the field until the workbook is open then add the read command =UniDDE|Items!'lblDDE(1)' to the cell afterwards. 

My second issue (the first being that I can't seem to get the UniDDE read command to automatically load the software) is that the PLC is not in Run mode.  Therefore, I try to use the code that UniDDE provides with those copy buttons.  If I use the "Run/Stop" toggle it will properly stop the PLC connection if it's already running.  If I execute that code to make it run, it will run but Excel freezes until I click escape.  I also tried the "Run PLC" macro, but it does absolutely nothing.

 

My VBA to start the UniDDE software is below. 

Cell F1 = "C:\Program Files (x86)\Unitronics\Unitronics DDE Server\UniDDE.exe"

Cell F2 = "UniDDE.exe"

Cell F3 = "U:\Display Result and Write CSV.ude"

Sub Load_UniDDE()
    Application.StatusBar = "loading PLC application"
    
    Dim strApp, strAppShort, strFile As String
    Dim WB As Workbook
    Set WB = ThisWorkbook
    strApp = WB.Worksheets(1).Range("F1").Value
    strAppShort = WB.Worksheets(1).Range("F2").Value
    strFile = WB.Worksheets(1).Range("F3").Value
        

    If strApp = "" Or strAppShort = "" Then
        Application.WindowState = xlMaximized
        WB.Worksheets(1).Range("F1").Select
        
        MsgBox "Please correct the software path and process in the Excel worksheet."
    Else
        If Dir(strFile) <> "" Then
            Dim objList As Object
            
            Set objList = GetObject("winmgmts:").ExecQuery("select * from win32_process where name='" & strAppShort & "'") ' determine if the DDE app is already running
            If objList.Count = 0 Then
                Shell strApp & " " & strFile, vbMinimizedFocus ' open the DDE app and project file
            End If

        Else
            Application.WindowState = xlMaximized
            WB.Worksheets(1).Range("F3").Select
            MsgBox "Please correct the project path in the Excel worksheet."
        End If
    End If
        
    Application.StatusBar = False
End Sub

UniDDE provides the following macros which are not working properly

RUN PLC:

Dim lchannelNumber   As Long

   '/ Run PLC 
   lchannelNumber = Application.DDEInitiate("UniDDE", "Items")
   Application.DDEExecute lchannelNumber, "Last Test Result_RUN"
   Application.DDETerminate lchannelNumber

RUN/STOP Toggle:

Dim lchannelNumber   As Long

   '/ Run/stop UniDDE 
   lchannelNumber = Application.DDEInitiate("UniDDE", "Items")
   Application.DDEExecute lchannelNumber, "UniDDE_RUN/STOP"
   Application.DDETerminate lchannelNumber

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...