Member 14176541 Ответов: 0

Объявления программное обеспечение TwinCAT 2.0 VB.NET клиент


Привет,

В настоящее время я пытаюсь соединить мое приложение VB.NET с моим появлением TwinCAT Plc для того. Это то, что у меня есть до сих пор (я называю это с субмарины):

Что я уже пробовал:

Dim ads As TcAdsClient = New TcAdsClient

ads.Connect(netID, Int32.Parse(port)) 'default port of Twincat 3 is 851 / Twincat 2 is 801

If ads.IsConnected = True Then
   WriteLine("Connection ok" & vbCrLf)
Else
   WriteLine("Connection error")
              
End If


Теперь всякий раз, когда я пытаюсь подключиться к ПЛК, он говорит: "порт не открыт". Странно, что я могу управлять своим ПЛК через программное обеспечение Twincat PLC, используя тот же порт. Пожалуйста, дайте мне совет по этому вопросу. Спасибо.

Ralf Meier

Бекхофф дает очень хорошую интернет-поддержку внутри информационной системы Бекхоффа.
Также здесь предусмотрено множество образцов (как для TC2, так и для TC3).
Когда я вижу там образец, ads.connect выполняется только с номером порта, а не с сетевым идентификатором.
Может быть, вы попробуете это, как предложил Бекхофф ...

Member 14176541

Да, я уже следовал этим путем тоже, без net-ID. но безрезультатно.
даже используя их образец, он все равно не мог заставить его работать.

Ralf Meier

Прошло уже довольно много времени с тех пор, как я делал это в последний раз ...
Во-первых : я не знаю, работает ли метод Connect синхронно - возможно, он работает асинхронно, и isConnect устанавливается через некоторое время.
Во-вторых : у вас есть Twincat 2.0 ??? Когда я прочитал документацию, я нашел allways TC 2.10 как минимальное требование.

Member 14176541

Привет Ральф,
Спасибо за ваш ответ.
1. пробовал идти этим путем, но все равно безуспешно.
2. в данный момент я запускаю Twincat 2.11.

Как вы думаете, мне нужно открыть порт на стороне ПЛК, чтобы это сработало?

Ralf Meier

Я не уверен ... но я не верю.
Ты получаешь обман ?
Что говорит ваш отладчик ?
Пожалуйста, предоставьте также свой полный соответствующий код.
Почему вы разбираете номер порта на INT32- разве это не INT ?

Member 14176541

Привет Ральф,

Ниже приведен мой полный код. Это очень просто, просто попробовать, может ли он подключиться к ПЛК:-

Imports TwinCAT.Ads

Private port As Integer = My.Settings.port
Private netID As String = My.Settings.netID

Sub Main()  

  Call ADSFunction()

End Sub

Public Sub ADSFunction()

        Dim ads As TcAdsClient = New TcAdsClient

        Try
            ads.Connect(Int32.Parse(801)) 'default port of Twincat 3 is 851 / Twincat 2 is 801

            If ads.IsConnected = True Then
                WriteLine("Connection ok" & vbCrLf)
            Else
                WriteLine("Connection error")
                Exit Sub
            End If

        Catch ex As Exception
            WriteLine(ex.ToString)
        End Try
        'ads.Dispose()
End Sub


И здесь есть исключение:

TwinCAT.Ads.AdsErrorException: Ads-Error 0x748 : Port is not open. (Ads-Error 0x748 : Port is not open.)
   at TwinCAT.Ads.Internal.TcLocalSystem..ctor()
   at TwinCAT.Ads.Internal.TcLocalSystem.GetInstance()
   at TwinCAT.Ads.TcAdsClient.Connect(Int32 srvPort)
   at STREAM_Monitoring_System.Module1.ADSFunction() in C:\Users\User\source\repos\STREAM Monitoring System\STREAM Monitoring System\Module1.vb:line 156

Ralf Meier

Я больше ничего не могу сказать, потому что у меня нет оборудования, чтобы проверить это самостоятельно.
Поискав, я нашел еще кое - что для вас-возможно, это поможет ...

https://infosys.beckhoff.com/index.php?content=../content/1031/tcsample_vb/html/tcadsdll_com_vb_sample01.htm&id=3474353622432626741

0 Ответов