По модулям Comedi
Автор |
Повідомлення |
Повідомлення створено: 10. 02. 2014 [22:08]
|
Aleksei
Aleksei Lavrenov
Автор теми
Зареєстрован(а) с: 04.02.2014
Повідомлення: 6
|
Здравствуйте.
В процессе изучения системы OpenSCADA столкнулся со следующими сложностями при использовании модулей Comedi.
Я использовал среду для PLC, как наиболее интересную для меня. Задача стояла подключить ISA платы ввода/вывода, фирмы Advantech. Начинал я в версии OpenSCADA 0.8.1 на Linux ядре 3.0.79 собранную примерно в июле 2013, точнее сейчас не скажу. Собрал модули Comedi: comedi.ko и модули для требуемых мне плат. Загрузил в систему в режиме "force" (modprobe). Все работало. Для дальнейших экспериментов с системой оставалась проблема с не возможностью передать по Modbus TCP (RTU) в другую SCADA систему переменных типа float. После установки свежей сборки OpenSCADA 0.8.1 на Linux ядре 3.4.76 с сайта, собранной в январе 2014, в Modbus такая возможность появилась, но к сожалению перестали грузиться модули Comedi. Основной модуль comedi.ko, грузится, остальные выводят огромный список не понятного мне текста по команде dmesg (.... Oops:0002 [#2] PREEMPT SMP ... т.д.). Вопрос заключается в том, куда мне дальше "копать" или какую информацию здесь предоставить для понимания проблемы? Естественно, модули Comedi я пересобирал для ядра 3.4.76 и проблемы с загрузкой модулей не только в среде для PLC, а как у меня выходит с ядром 3.4.76/77.
Спасибо.
|
Повідомлення створено: 11. 02. 2014 [11:24]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"Aleksei" wrote:
Вопрос заключается в том, куда мне дальше "копать" или какую информацию здесь предоставить для понимания проблемы?
Проблемы сборки Comedi это не проблемы OpenSCADA, чтобы их тут понимать.
"Aleksei" wrote:
Естественно, модули Comedi я пересобирал для ядра 3.4.76 и проблемы с загрузкой модулей не только в среде для PLC, а как у меня выходит с ядром 3.4.76/77.
С 3.0.x я прошивок не собираю по причине множественности неявных проблем с ним на Desktop и Live, почему и съехал на следующий LTS (3.4).
У Вас три варианта:
- Разбираться в сборке Comedi на 3.4.
- Собирать прошивку самостоятельно с ядром 3.0.
- Таки использовать сборки с rt1-up, которое я несколько поддерживаю для такого рода устаревшего оборудования.
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 20. 02. 2014 [10:37]
|
Aleksei
Aleksei Lavrenov
Автор теми
Зареєстрован(а) с: 04.02.2014
Повідомлення: 6
|
Я прекрасно понимаю, что проблема сборки Comedi это не проблема OpenScada, но думал может у кого то есть соображения или совет.
Вопрос парням из Comedi, был тихо проигнорирован :). Я понимаю, что проблему нужно искать у меня.
Со сборкой rt1-up у меня никак не получается подружиться. Идет искажения изображения и я не могу даже увидеть на каком месте останавливается загрузка, но она точно останавливается. Советы по "vga=0x314 splash=silent" в syslinux.cfg к сожалению не помогли.
Пока остановился на варианте обновления до openscada-plc 0.8.1-r2050 c репозитория. Основную массу вопросов по Modbus после обновления снял, но остался один - при перезагрузке дискретные выходы по Modbus читаются, как 1, хотя они выключены. Было предположение в не корректно установленных связях, но вроде бы здесь других вариантов не придумаешь.
И что бы не плодить темы, хочу спросить здесь. Как в сборке для PLC передать параметр ядру при загрузке? Мне нужно, что бы в системе было больше 4-х последовательных портов /dev/ttyS. Есть вариант пересобрать ядро (для меня это вообще не вариант :) ), но можно, например, передать ядру параметр 8250.nr_uarts=16. Как это сделать в сборке для PCL не представляю. И здесь я понимаю, что это не проблема OpenScada :).
|
Повідомлення створено: 20. 02. 2014 [22:57]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"Aleksei" wrote:
Со сборкой rt1-up у меня никак не получается подружиться. Идет искажения изображения и я не могу даже увидеть на каком месте останавливается загрузка, но она точно останавливается. Советы по "vga=0x314 splash=silent" в syslinux.cfg к сожалению не помогли.
Попробуйте усечённую сборку под LP-8781 с последней OpenSCADA и исправленным util-linux. С USB должно загрузиться, а за счёт ограничения перечня модулей повысит шанс исключить проблемные модули.
"Aleksei" wrote:
Основную массу вопросов по Modbus после обновления снял, но остался один - при перезагрузке дискретные выходы по Modbus читаются, как 1, хотя они выключены.
У меня в ДемоБД нет таких проблем, следовательно разбирайтесь, что не так делаете.
"Aleksei" wrote:
И что бы не плодить темы, хочу спросить здесь. Как в сборке для PLC передать параметр ядру при загрузке? Мне нужно, что бы в системе было больше 4-х последовательных портов /dev/ttyS.
Параметр 8250.nr_uarts=16 будет работать если ядро собрано с большим числом NR_UARTS, как в rt1-up там 192, как и std-def с un-def.
"Aleksei" wrote:
Как это сделать в сборке для PCL не представляю.
Там-же где и упомянутые vga=0x314 splash=silent
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 21. 02. 2014 [01:34]
|
Aleksei
Aleksei Lavrenov
Автор теми
Зареєстрован(а) с: 04.02.2014
Повідомлення: 6
|
Попробовал сборку под LP-8781. Загрузился в общем нормально. Пришлось только добавить недостающие файлы для модуля сетевой карты - /lib/firmware/e100/d102e_ucode.bin, что бы она заработала. За то короткое время, что я успел посмотреть, претензий к работе сборки не возникло. Единственное, что мне не очень понравилось, так это то, что в начале загрузки, когда на мгновенье моргает синий экран, выводится сообщение:
remounting / via aufs
ln: failed to create symbolic link '/etc/mtab' : File exists
Spawning init ... done. и т.д. в обычном режиме.
Я это замечал и на сборках un-def. Как мне показалось, без сучка и задоринки у меня проходит загрузка сборки std-def.
Хотя есть нюанс еще один - плохо работает внешняя клавиатура (подключена через PS/2). Часто не видны вводимые символы и не возможно работать в MC. В общем ведет себя странно. Но т.к. я в основном работаю через SSH, обходился без нее. Через SSH проблем нет.
В сборке под LP-8781 к внешней клавиатуре претензий нет. Работает отлично. Если бы были такие проблемы, то сетевую плату мог и не запустить :).
|
Повідомлення створено: 09. 03. 2014 [10:45]
|
Aleksei
Aleksei Lavrenov
Автор теми
Зареєстрован(а) с: 04.02.2014
Повідомлення: 6
|
В процессе работы с платой pcl-730 от Advantech выяснился следующий нюанс. В этой плате 16 DI и 16 DO развязанных через оптроны и 16 DI и 16 DO с TTL уровнями. Таким образом 32 DI и 32 DO. Проблема, а может и не проблема, заключается в том, что в OpenSCADA видны только 16 DI и 16 DO с уровнями TTL, которые как мне кажется обычно не используются. Что бы увидеть "нормальные" входы/выходы пришлось поменять их местами в исходниках модуля Comedi (pcl730.c), что наверное не совсем правильно. Вопрос заключается в том, где причина?
К OpenScada на ядре 2.6, пока "прикрутить" модули для моих плат (poc.ko, pcl730.ko) не удалось. Основная причина, что в исходниках ядра их в то время еще не было, а собрать из исходников с сайта Comedi оказалось не тривиальной задачей для меня :).
|
Повідомлення створено: 10. 03. 2014 [16:49]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"Aleksei" wrote:
В процессе работы с платой pcl-730 от Advantech выяснился следующий нюанс. В этой плате 16 DI и 16 DO развязанных через оптроны и 16 DI и 16 DO с TTL уровнями. Таким образом 32 DI и 32 DO. Проблема, а может и не проблема, заключается в том, что в OpenSCADA видны только 16 DI и 16 DO с уровнями TTL, которые как мне кажется обычно не используются. Что бы увидеть "нормальные" входы/выходы пришлось поменять их местами в исходниках модуля Comedi (pcl730.c), что наверное не совсем правильно. Вопрос заключается в том, где причина?
OpenSCADA читает все под-устройства, которые Comedi показывает
int nSubDev = comedi_get_n_subdevices(devH);
Однако я полагал, что одного класса подустройства не встретятся, почему всех их и закодировал в одной области "di" "do", т.е. в данном случае последнее подустройство наложилось на первое.
"Aleksei" wrote:
К OpenScada на ядре 2.6, пока "прикрутить" модули для моих плат (poc.ko, pcl730.ko) не удалось. Основная причина, что в исходниках ядра их в то время еще не было, а собрать из исходников с сайта Comedi оказалось не тривиальной задачей для меня :).
У меня не было никаких проблем со сборкой на 2.6.29, во всяком случае с этим срезом: http://wiki.oscada.org/Doc/Comedi/files?get=comedi.tlz
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 11. 03. 2014 [22:35]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"roman" wrote:
Однако я полагал, что одного класса подустройства не встретятся, почему всех их и закодировал в одной области "di" "do", т.е. в данном случае последнее подустройство наложилось на первое.
Расширил кодирование подтипов сквозными счётчиками, что теперь должно решить эту проблему, однако проверить у меня не на чем.
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 20. 03. 2014 [22:56]
|
Aleksei
Aleksei Lavrenov
Автор теми
Зареєстрован(а) с: 04.02.2014
Повідомлення: 6
|
Обновился с репозитория. Модуль платы теперь менять не нужно, изолированные входы/выходы уже находятся "в начале". В атрибутах платы появилось еще 16 выходов и 16 входов. Расположены таким образом: 16 (0-15) изолированных DO, 16 (0-15) изолированных DI, 16 (16-31) TTL DO, 16 (16-31) TTL DI. К сожалению (хоть и не большому для меня) TTL I/O появились, но не заработали. Выходы TTL не устанавливаются, когда кликаешь на них, а напротив TTL входов <EVAL>.
|
Повідомлення створено: 21. 03. 2014 [11:01]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"Aleksei" wrote:
Обновился с репозитория. Модуль платы теперь менять не нужно, изолированные входы/выходы уже находятся "в начале". В атрибутах платы появилось еще 16 выходов и 16 входов. Расположены таким образом: 16 (0-15) изолированных DO, 16 (0-15) изолированных DI, 16 (16-31) TTL DO, 16 (16-31) TTL DI. К сожалению (хоть и не большому для меня) TTL I/O появились, но не заработали. Выходы TTL не устанавливаются, когда кликаешь на них, а напротив TTL входов <EVAL>.
Значит это проблема Comedi драйвера, поскольку в модуле DAQ.Comedi запрос идёт строго по номеру подустройства. Если хотите вставляйте в исходник контрольные точки и проверяйте.
Learn, learn and learn better than work, work and work.
|
|
|