Вход на форум 
В начало e-Mail

Форум

Ресурсы Rockwell

Product Directory

Essential Components

Literature Library

Knowledge Base

Electronic News&Magazines

Блог

Encompass Program

Product Certification

  
Smart Solutions VDT :: Просмотр темы - Макросы VBA в RSLogix
 FAQFAQ   ПоискПоиск   ГруппыГруппы   ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Макросы VBA в RSLogix

 
Начать новую тему   Ответить на тему    Список форумов Smart Solutions VDT -> Программные средства систем автоматизации
Предыдущая тема :: Следующая тема  
Автор Сообщение
cskcsk
Частый гость
Частый гость


Зарегистрирован: May 25, 2010
Сообщения: 13
Рейтинг: +0/-0

СообщениеДобавлено: Ср 21 Июл, 2010 10:29:56    Заголовок сообщения: Макросы VBA в RSLogix Ответить с цитатой

Вопрос к тем, кто использует макросы VBA для автоматизации работы. Как сделать, что бы макрос был доступен из всех проектов RSLogix?
Например, при работе с VBA-макросами в Excel можно создать надстройку (файл *.xla), который подключается к любому проекту в Excel. А есть ли аналогичная возможность при работе в RSLogix? Сейчас я вынужден копировать одни и те же макросы во все проекты. Неудобно, если надо внести изменения, приходится править во всех.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Eraser
Эксперт
Эксперт


Зарегистрирован: Oct 05, 2005
Сообщения: 106
Рейтинг: +8/-0
Откуда: Харьков

СообщениеДобавлено: Чт 22 Июл, 2010 9:51:54    Заголовок сообщения: Ответить с цитатой

макросы принадлежат экрану. то есть работают только на открытом экране. для обмена данными между макросами на разных экранах можно использовать memory tags.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
dv_
Эксперт
Эксперт


Зарегистрирован: Sep 14, 2006
Сообщения: 776
Рейтинг: +41/-1
Откуда: Донецк

СообщениеДобавлено: Чт 22 Июл, 2010 11:10:13    Заголовок сообщения: Ответить с цитатой

Eraser писал(а):
макросы принадлежат экрану. то есть работают только на открытом экране. для обмена данными между макросами на разных экранах можно использовать memory tags.

Какой экран? Какой memory tag? У него RSLogix. Very Happy

По сути не скажу - не пользовался.
Какие правки нужны?
В RSLogix удобный Export-Import кода программы с подменой адресов (Base, Relative).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Eraser
Эксперт
Эксперт


Зарегистрирован: Oct 05, 2005
Сообщения: 106
Рейтинг: +8/-0
Откуда: Харьков

СообщениеДобавлено: Пт 23 Июл, 2010 6:25:25    Заголовок сообщения: Ответить с цитатой

упс.. сорри, недосмотрел.. просто я только с визуализацией работаю.. и мне везде чудиться RSView
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
cskcsk
Частый гость
Частый гость


Зарегистрирован: May 25, 2010
Сообщения: 13
Рейтинг: +0/-0

СообщениеДобавлено: Вс 25 Июл, 2010 15:03:29    Заголовок сообщения: Ответить с цитатой

dv_ писал(а):

Какие правки нужны?


Речь идет о макросах VBA, создаваемых на объектной модели RSLogix.
Вот пример кода макроса:

Код:
Public Sub Build_LAD2()
  Dim Count As Integer
  Dim FileName As String
  Dim LadFile2 As LadderFile
  Dim LadFile As LadderFile
 
  Set ProgFiles = Application.GetActiveProject.ProgramFiles

' Чтение главного файла программы
  Set LadFile2 = ProgFiles.Item(2)
  Dim RungCount As Integer
  FileName = LadFile2.name
  RungCount = LadFile2.NumberOfRungs()

' Удаление всех рангов в главном файле
  Dim res As Boolean
  Do
    res = LadFile2.RemoveRung(0)
    If (res = False) Then
      Exit Do
    End If
  Loop

' По всем файлам, начиная с №3
  Dim LadCount As Integer
  Dim DstRung As Integer
  LadCount = ProgFiles.Count
  DstRung = 0
  For Count = 3 To LadCount
    Set LadFile = ProgFiles.Item(Count)

' если файл существует
    If Not LadFile Is Nothing Then

' если файл используется
      If LadFile.InUse Then
        Dim FileNum As Integer
        Dim NumOfRungs As Integer
        Dim RungString As String
        NumOfRungs = LadFile.NumberOfRungs

' если файл не пустой
        If (NumOfRungs > 1) Then
          FileNum = LadFile.FileNumber
          If (FileNum <= 100) Then

' Команда вызова LAD файла
            RungString = "JSR" + " " + CStr(FileNum)
            res = LadFile2.InsertRungAsAscii(DstRung, RungString)
            DstRung = DstRung + 1
          End If
        End If
      End If
    End If
  Next
End Sub



Макрос генерирует в файле LAD2 вызовы (JSR) всех остальных файлов проекта. Отсутствующие файлы и файлы с одним рангом <END> не учитываются. Учитываются файлы с №3 по №100. В файлах с №№ > 100 я размещаю подпрограммы-функции, которые централизованно вызывать не надо.
Вот такие макросы и хотелось бы объявить/описать один раз для всех проектов.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Smart Solutions VDT -> Программные средства систем автоматизации Часовой пояс: GMT + 1
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах

Powered by phpBB © 2001, 2005 phpBB Group
Яндекс цитирования

Smart Solutions VDT GmbH | Friedrich-List-Allee 38, D-41844 Wegberg-Wildenrath, Germany
Tel.: +49 2432 933 57 83 | e-Mail: office@vdt-solutions.de
Все товарные знаки и торговые марки являются собственностью их владельцев.
При использовании материалов сайта ссылка на данный сайт обязательна.
Открытие страницы: 0.126 секунды
/n