| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
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.
По сути не скажу - не пользовался.
Какие правки нужны?
В 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 я размещаю подпрограммы-функции, которые централизованно вызывать не надо.
Вот такие макросы и хотелось бы объявить/описать один раз для всех проектов. |
|
| Вернуться к началу |
|
 |
|