 | |
Предыдущие результаты
К сожалению, дело, похоже, не в кеше.
Сначала убрал из кеша все дисплеи, до этого чистил кеш при закрытии дисплея - ситуация не изменилась.
Больше 10 переходов из Desinger и Runtime (не закрывая RSView32 Works), вызывает эту ошибку.
Методом проб и ошибок нашел хоть и не причину, но обход этой ситуации.
У меня стартовый дисплей в Startup нес две команды: set бита в контроллере и AppStart, которая вызывает мою консольку, которая практически ничего не делает и абсолютно не связана с проектом.
Так вот, комбинация этих команд ничего не дала. Удаление только одной любой из команд тоже.
А вот когда вообще очистил Startup дисплея, очень долго гонял RUN Project - ProjectStop, ошибок не стало.
При том, что много раз обратно возвращал команды в Startup - ошибка все равно периодически возникает, когда прописана любая из команд, или две сразу. Синхронность - асинхронность выполнения команд, их порядок тоже никак не влияет.
Перенес обе команды в макрос, вернул в кеш дисплеи, макрос пустил в ProjectStartup, погонял - больше ошибок не возникает.
Обратно вернул как было - есть ошибка на 4 - 20 переходе в RUN.
Оставил, естественно, макрос.
Ситуация патовая. В других проектах команды в Startup однозначно работают на стартовом дисплее.
Никакие прописанные события не работают при старте проекта. Настройки связи настолько стандартны, что говорить не очем.
Устанавливаемый в контроллере бит программой контроллера неизменяется - информационный бит.
|
Да не очень эта проблема и сложная. И API не очень нужен.
См., например:
[url=http://support.microsoft.com/?scid=kb%3Ben-us%3B886217&x=9&y=9]Microsoft Справка и поддержка[/url]
[quote:2aae1d2592]
Modify the registry
To resolve this issue, modify the value of the ForegroundLockTimeout registry entry in Registry Editor. To do this, follow these steps:
1. Click Start, click Run, type regedit in the Open box, and then click OK.
2. In Registry Editor, locate and then click the following registry subkey:
HKEY_CURRENT_USER\Control Panel\Desktop
3. In the right pane, locate and then double-click ForegroundLockTimeout.
4. Under Base, click Decimal, type 0 in the Value data box, and then click OK.
Note The default decimal value for the ForegroundLockTimeout registry entry is set as 200000.
5. Quit Registry Editor.
6. Restart your computer.[/quote:2aae1d2592]
|
[quote:2d876e711c="oldDad"]Вообще, eds-файлы не копируются, а устанавливаются с помощью RSLinx Hardware installation tool. Аналогия здесь - это установка драйверов устройств под Windows, они тоже не копируются, а устанавливаются с помощью определенной утилиты из панели управления.
Если в RSLinx вместо устройства виден жёлтый знак вопроса (устройство не распознано), то нужно скачать eds-файл, затем пойти в Start --> All Programs --> Rockwell software --> RSLinx tools и выбрать там эту утилиту.
После этого устройство будет распознаваться RSLinx.
Этот модуль появился позже, чем был спроектирован релиз RSLogix 5000 v16, поэтому данный модуль там отутствует. У Вас два пути:
1) Использовать Generic профайл (параметры я написал выше)
или
2) Сделать update до более свежей версии v17 (в стоимость приобретенного Вами и зарегистрированного пакета входит 1 год оплаченного сервиса, который позволяет, кроме всего прочего, бесплатно скачать новую версию).[/quote:2d876e711c]
Не мог бы кто-нибуль выслать сконфигурируемый проект для модуля 1769-IF16C???
|
Да. Делал так как в мануале (Publication 1756-UM007A-EN-P - October 2000) на модуль написано.
В Message Configuration указывал следующие параметры:
Закладка Configuration
Message Type: CIP Generic
Service Code: 4c
Class: 4
Instance: 16
Attribute: 0
Source Element: Local:2:C (модуль 1756-HSC)
Source Lenght: 124
Destination: пусто
Закладка Communication
Path: путь к 1756-HSC
галки возле Connected и Cash Connection поставил.
Пробовал и в LADе напрямую в модуль писать.
|
Не заряжали ли Вы оба компьютера с помощью одного и того образа диска? Если да, то это ошибка. В писании сказано:
[quote:141f0593dc]This error specifies that the "Connection is in Use or Duplicate Forward Open” . What we have found out is that you will get this error if more than one device with the same CIP serial number attempts to open a connection to the same target device (e.g. a ControlLogix controller) or through the same bridge device (e.g. an ENBT). [color=darkblue:141f0593dc]This condition usually occurs when the same disk image (e.g. a “ghost” image) is applied to multiple workstations without changing the serial number.[/color:141f0593dc] The CIP identity for the workstation is stored in the Registry at “HKLM\Software\Rockwell Software\RSLinxNG\CIP Identity”. The serial number is stored in the “SerialNumber” value.
Resolution:
After “ghosting” a workstation from an image containing an installation of RSLinx Enterprise, the serial number must be made unique by changing the “SerialNumber” value in the Registry. You can do this by the following methods
1. Change the SerialNumber value so that it is unique among the servers.
2. Go into the registry and delete the SerialNumber entry, then re-register the CIP.dll
3. (Preferred for customers) Uninstall and Re-install RSLinx Enterprise on each server.[/quote:141f0593dc]
В качестве Workaround попробуйте проверить, не существует ли файл [color=darkblue:141f0593dc]sfl20asu.dll[/color:141f0593dc] одновременно в папках
\WINDOWS\SYSTEM32 и \Program Files\Common Files\Rockwell.
Если да, то переименуйте этот файл в папке \WINDOWS\SYSTEM32 в [color=darkblue:141f0593dc]sfl20asu.dll.old[/color:141f0593dc]
|
Чего то тут писали про кошек, я так ине понял. Но с такой проблемой я дейсвительно сталкивался где то год три назад. Действительно нужно правильно в VBA делать обертку или порядок подачи команд для динамического изменения значения тега, например Discription во время
работы проекта в RUN! Log - дискретный тег с аварийоной конфигурацией по On.
см. пример:
Dim Start
gTagDb.GetTag("Log").Description = "СТАРТ ПРОЕКТА"
GoTo Log
gTagDb.GetTag("Log").Description = "Любите кошек"
GoTo Log
Log:
gCommand.Execute "SuppressOn Log"
gTagDb.GetTag("Log").WriteConfiguration
gCommand.Execute "SuppressOff Log"
gTagDb.GetTag("Log").Value = 1
Start = Timer
Do While Timer < Start + 1
DoEvents
Loop
gTagDb.GetTag("Log").Value = 0
Вот и все. И смеятся про кошек не надо. Я их очень люблю, и по возможности кормлю, особенно бездомных. А что бы до этого дойти мне примерно полгода понадобилось. Тогда таких форумов еще не было. :roll:
|
Забыл еще функцию
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
А саму функцию можно сделать отдельную, те без окна и кнопки
а значения соответсвующие label1 и 2 передавать двум строковым тэгам
проекта = gTagDb.GetTag("string1").Value
= gTagDb.GetTag("string2").Value
|
Уважаемый BigBug. Язык, если я правильно понимаю раскладка клавиатуры на АРМ переключается независимо ни от чего, тоесть не важно какая запущена скада. другое дело как это увидеть. Предлагаю в VBA написать процедуру.
В модуле скрипта надо обьявить API функцию
Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
А сама процедура для нажатия клавиши на какой нибудь форме(сделайте какуюнибудь форму в VBA)
Private Sub Button1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim layoutname As String * KL_NAMELENGTH
Dim capslock
Dim dl&
dl& = GetKeyboardLayoutName(layoutname)
capslock = GetKeyState(VK_CAPITAL)
If layoutname = EN_LANG Then
If capslock And 1 Then
Label1.Caption = "EN"
Label2.Caption = "Caps Lock"
Else
Label1.Caption = "en"
Label2.Caption = ""
End If
ElseIf layoutname = RU_LANG Then
If capslock And 1 Then
Label1.Caption = "RU"
Labe2.Caption = "Caps Lock"
Else
Label1.Caption = "ru"
Label2.Caption = ""
End If
Else: Label1.Caption = "??"
End If
End Sub
|
[quote:62207747ee="and123"] причем быстрее чем Basic\Script в сотни раз ... Думаю не открыл Америку.
[/quote:62207747ee]
Хм...очень интересно... Америку не открыли..., очень серьезное заявление. В сотни раз... чем измеряли? Нет, я серьезно. Просто интересно. Использую VBA, для некоторых вещей. Для задач типа свободноконфигурируемый тренд, цифровой ввод типа калькулятора, Упаковка данных в *.mdb, вывод в Crystal Reports, +всякие отчеты в Excel скорости хватает.
[quote:62207747ee="and123"]
Но для тех кому интерестно могу предоставить интересные исходники[/quote:62207747ee]
Я бы посмотрел!. Все что есть.... :)
|
[quote:533332d354="deadchilli"]Мне необходимо в Пояснительной записке написать про инициализацию контроллера и модулей ввода/вывода. [/quote:533332d354]
Контроллер инициализировать не нужно. Он сам себя инициализирует.
Имеется возможность создать StartUp Handler, но это Вас очень сложно и точно не нужно, не забивайте себе голову.
[quote:533332d354]В программе RSLinx можно выбирать для аналоговых модулей ввода/вывода токовые они будут или по напряжения и диапозон входных и выходных значений. [/quote:533332d354]
Программа RSLinx предназначена вообще не для этого. В ней Вы конфигурировать модули не можете.
Модули конфигурируются, как Вам уже написали, в RSLogix5000. Смотрите ссылки выше.
[quote:533332d354]Аналоговые модули ввода имеют входы по току 4-20 мА, и по напряжения +-5В и +-10В. А модули аналогового вывода имеют 0-10 В.
Это как то прописывается в инициализации?[/quote:533332d354]
Это прописывается в RSLogix5000 при конфигурировании каждого модуля.
Никакой инициализации модуля, повторяю, нет. Модуль конфигурируется с помощью экранов-подсказок в диалоговом режиме в RSLogix5000 и конфигурация сохраняется в процессоре.
[quote:533332d354="deadchilli"]А где можно подробнее про эти теги почитать. [/quote:533332d354]
Смотрите ссылки выше.
[quote:533332d354]Т.е. не нужно писать подпрограммы опроса датчиков а просто использовать их текущие значения, кототорые записаны в каком то регистре? [/quote:533332d354]
Никакие подпрограммы опроса датчиков писать не нужно.
Нужно просто использовать текущие значения, представленные тэгами.
Обновление данных в тэгов контроллер деает сам, без Вашего участия.
Каждый тэг - это определенная структура памяти, пользуясь Вашей терминологией - "регистр", корректнее выражаясь группа ячеек памяти в опреративной памяти контроллера, имеющая своё собственное уникальное символьное имя, по которому к ней можно обращаться.
[quote:533332d354]Мне нужно знать значение сигналов с датчиков чтобы реализовать управляющие воздействия...[/quote:533332d354]
Просто используйте в программе тэги, указывая в программе имена этих тэгов. Актуализация тэгов производится контроллером автоматически, поэтому в каждом тэге всегда содержится текущее значение сигнала.
|
Предыдущие результаты
Ещё результаты |
|
| |
|