Author |
Message |
Written on: 04. 09. 2009 [15:36]
|
almaz
Almaz Karimov
Contributor
Topic creator
registered since: 25.09.2008
Posts: 516
|
А как ведет себя функция Open_SlotAll() ? И есть ли исходники SDK?
21 век - век повсеместной автоматизации. Главное - во благо всем людям.
|
Written on: 04. 09. 2009 [17:18]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
Не валит систему, но и не открывает.
SDK, как и модули ядра для ихней параллельной шины закрыты и давать сырцы не хотят.
Вот сейчас уговорил собрать драйвера для нормального ядра 2.6.29-rt. Неделю уже собирают.
А при вызове Open_SlotAll() имеем:
open("/dev/slot0", O_RDWR) = 0
open("/dev/slot1", O_RDWR) = 4
open("/dev/slot1", O_RDWR) = -1 EBUSY (Device or resource busy)
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fac000
write(1, "open all slots failed!\n", 23open all slots failed!
Пытается открыть один и тот-же слот, похоже.
Learn, learn and learn better than work, work and work.
|
Written on: 07. 09. 2009 [07:27]
|
almaz
Almaz Karimov
Contributor
Topic creator
registered since: 25.09.2008
Posts: 516
|
slot0 нормально инициализировал, а при открытии slot1 возникла ошибка 4.
Далее попытался повторно инициализировать, но устройство занято.
А в slot1 установлен какой-то модуль? Может модули ввода-вывода в слотах 0 и 1 различаются по каким-то параметрам последовательной связи?
Да, нет для разработчика ничего хуже закрытых систем, что программных, что аппаратных...
Одна надежда на производителя, больше никто ничего не сможет сделать...
[This article was edited 1 times, at last 07.09.2009 at 07:45.]
21 век - век повсеместной автоматизации. Главное - во благо всем людям.
|
Written on: 07. 09. 2009 [13:08]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
almaz wrote:
slot0 нормально инициализировал, а при открытии slot1 возникла ошибка 4.
Далее попытался повторно инициализировать, но устройство занято.
Не ошибка 4, а возвращает нормальный файловый дескриптор. А потом, с какого-то дуба пытается открыть slot1 второй раз.
almaz wrote:
Да, нет для разработчика ничего хуже закрытых систем, что программных, что аппаратных...
Одна надежда на производителя, больше никто ничего не сможет сделать...
Это точно. Хуже того, со временем могут полезть бока, а производитель уже прикратит поддержку.
P.S. Под ядро 2.6.29-rt модули уже собрали. Хоть это радует.
Learn, learn and learn better than work, work and work.
|
Written on: 05. 12. 2009 [16:43]
|
almaz
Almaz Karimov
Contributor
Topic creator
registered since: 25.09.2008
Posts: 516
|
Возможно ли встроить модуль DCON в модуль ICP DAS? То есть объединить их в один.
Если в поле выбора "Шина" будут обычные последовательные порты, наверно, получится.
[This article was edited 1 times, at last 05.12.2009 at 16:46.]
21 век - век повсеместной автоматизации. Главное - во благо всем людям.
|
Written on: 05. 12. 2009 [16:53]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
almaz wrote:
В связи с этим возник вопрос: нельзя ли модуль DCON встроить в модуль ICP DAS? Объединить их то есть в один.
Если на вкладке контроллера модуля ICP DAS в параметре "Шина" будет выбор обычных последовательных портов компьютера, наверно, это возможно?
Оно то можно, но тогда станет не возможно вообще использование DCON на платформах отличных от x86_32. Дело в том, что модуль ICP_DAS линкует статическую библиотеку производителя, которая закрыта и собрана только для x86_32. Собственно библиотека нужна только для серии 8000, с целью обслуживания собственной шины, причём и для DCON-модулей этой серии, для их выбора. Кроме того есть причина и я собираюсь отказаться от API последовательного API этой библиотеки в пользу API OpenSCADA. Сейчас используется функция Send_Receive_Cmd() в которой минимальный таймаут обнаружения ошибки связи можно установить в 100мс, что очень много для внутренней шины на COM1 (115000). Разработчик толи не понимает как, но отказался уменьшить этот таймаут сославшись на какое-то ограничение таймера в Linux, про которое я не знаю.
P.S. Позиционирование модуля ICP_DAS описано здесь http://wiki.oscada.org/Doc/ICPDAS и я не думаю, что их стоит объединять.
Learn, learn and learn better than work, work and work.
|
Written on: 05. 12. 2009 [17:01]
|
almaz
Almaz Karimov
Contributor
Topic creator
registered since: 25.09.2008
Posts: 516
|
Всё ясно. В ближайшее время собираюсь добавить почти все блоки I-7000 и НИЛАП (rlda.ru), в связи с чем и возник вопрос. Хотелось как-то оптимизировать структуру.
Всех модулей в наличии, конечно, нет. Добавлю по описаниям блоков.
Продолжу тогда также в модуле DCON.
21 век - век повсеместной автоматизации. Главное - во благо всем людям.
|
Written on: 05. 12. 2009 [18:02]
|
almaz
Almaz Karimov
Contributor
Topic creator
registered since: 25.09.2008
Posts: 516
|
А как же сейчас себя поведёт модуль ICP DAS, если OpenSCADA откомпилирована под 64-битную систему? Просто не функционирует? Может ли помешать работе OpenSCADA в целом?
PS Просто с начала 2010 начинаем внедрение OpenSCADA на 64-битных серверах...
21 век - век повсеместной автоматизации. Главное - во благо всем людям.
|
Written on: 05. 12. 2009 [19:45]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
Он просто будет отключен при сборке. А если уже будет присутствовать собранных для x86_32 то не подключится при запуске OpenSCADA.
Learn, learn and learn better than work, work and work.
|
Written on: 06. 12. 2009 [14:23]
|
kuzulis
Денис Шиенков
registered since: 10.07.2009
Posts: 128
|
Разработчик толи не понимает как, но отказался уменьшить этот таймаут сославшись на какое-то ограничение таймера в Linux, про которое я не знаю. icon_smile.gif
а разве есть возможность отмерять промежутки времени менее 55мс ? и чтобы мы точно знали, что прошло время именно к примеру 100мс а не 100мс +/- 50 мс?
ЗЫ: я просто не сталкивался с этим и мне интересно ( ведь Linux это не ОС реального времени )
[This article was edited 1 times, at last 06.12.2009 at 14:23.]
|