Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Промышленные сети и коммуникации
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

Связь через PROFINET

 Ответить Ответить Страница  <12
Автор
Сообщение
kot23rus Смотреть выпадающим
Новичок
Новичок


Присоединился: 07 Февраль 2009
Категория: Russian Federation
Online Status: Offline
Публикации: 24
Свойства публикации Свойства публикации   Ответить, цитируя автора - kot23rus Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Связь через PROFINET
    Опубликовано: 20 Апрель 2010 18:26

буду примного благодарен

Наверх
Александр Горский Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 04 Сентябрь 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 206
Свойства публикации Свойства публикации   Ответить, цитируя автора - Александр Горский Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 21 Апрель 2010 09:21

Покопался, вспомнил.

Тест проводил, используя Excell  и VBA.
В скаченном материале из - - есть примеры. Добавил данные своего контроллера и по TCP/IP и связывался. Правда кое-что почикал в исходнике..(это уже не помню)
 
Фрагментально что важно
Инициализация

Private Function initialize(ByRef ph As Long, ByRef di As Long, ByRef dc As Long)

ph = 0

di = 0

dc = 0

Rem uncomment the daveSetDebug... line, save your sheet

Rem run excel from dos box with: excel yoursheet >debugout.txt

Rem send me the file debugout.txt if you have trouble.

Rem call daveSetDebug(daveDebugAll)

initialize = -1

baud$ = Cells(3, 5)

If (baud$ = "") Then Call initTable

Cells(12, 2) = "Running"

res = -1

port = Cells(2, 5)

baud$ = Cells(3, 5)

parity$ = Cells(4, 5)

peer$ = Cells(7, 5)

acspnt$ = Cells(8, 5)

'ph = setPort(port, baud$, Asc(Left$(parity$, 1)))

' Alternatives:

 ph = openSocket(102, peer$)    ' for ISO over TCP

Rem ph = openSocket(1099, peer$) ' for IBH NetLink

Rem ph = openS7online(acspnt$) ' to use Siemes libraries for transport (s7online)

Cells(2, 1) = "port handle:"

Cells(2, 2) = ph

If (ph > 0) Then

    'di = daveNewInterface(ph, ph, "IF1", 0, daveProtoMPI, daveSpeed187k)

' Alternatives:

'di = daveNewInterface(ph, ph, "IF1", 0, daveProtoPPI, daveSpeed187k)

'di = daveNewInterface(ph, ph, "IF1", 0, daveProtoMPI_IBH, daveSpeed187k)

di = daveNewInterface(ph, ph, "IF1", 0, daveProtoISOTCP, daveSpeed187k)

'di = daveNewInterface(ph, ph, "IF1", 0, daveProtoS7online, daveSpeed187k)

'

'You can set longer timeout here, if you have  a slow connection

'    Call daveSetTimeout(di, 500000)

    res = daveInitAdapter(di)

    Cells(3, 1) = "result from initAdapter:"

    Cells(3, 2) = res

    If res = 0 Then

        MpiPpi = Cells(6, 5)

'

' with ISO over TCP, set correct values for rack and slot of the CPU

'

'ori        dc = daveNewConnection(di, MpiPpi, Rack, Slot)

        dc = daveNewConnection(di, MpiPpi, 0, 8)

       

        res = daveConnectPLC(dc)

        Cells(4, 1) = "result from connectPLC:"

        Cells(4, 2) = res

        If res = 0 Then

            initialize = 0

        End If

    End If

End If

End Function

 
Само получение данных

Sub readFromPLC()

Cells(1, 2) = "Testing PLC read"

Dim ph As Long, di As Long, dc As Long

res = initialize(ph, di, dc)

If res = 0 Then

    res2 = daveReadBytes(dc, daveFlags, 0, 0, 16, 0)

    Cells(5, 1) = "result from readBytes:"

    Cells(5, 2) = res2

    If res2 = 0 Then

        v1 = daveGetS32(dc)

        Cells(7, 1) = "MD0(DINT):"

        Cells(7, 2) = v1

        v2 = daveGetS32(dc)

        Cells(8, 1) = "MD4(DINT):"

        Cells(8, 2) = v2

        v3 = daveGetS32(dc)

        Cells(9, 1) = "MD8(DINT):"

        Cells(9, 2) = v3

        v4 = daveGetFloat(dc)

        Cells(10, 1) = "MD12(REAL):"

        Cells(10, 2) = v4

        v5 = daveGetFloatAt(dc, 12)

    Else

        e$ = daveStrError(res)

        Cells(9, 4) = "error:"

        Cells(9, 5) = e$

    End If

End If

Call cleanUp(ph, di, dc)

End Sub

 
Остальное все без изменений.
 
Наверх
 Ответить Ответить Страница  <12

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz