Автор |
Повідомлення |
Повідомлення створено: 13. 12. 2008 [22:14]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
andrey-sw wrote:
roman wrote:
И что эта функция будет делать?
Возможно мы несколько расходимся в терминологии, но я имел ввиду следующее:
При нажатии кнопки в визуализации должен выполнится скрипт например на JavaLike а из которого уже выполняется функция что то типа ShelExec('cmd','params')
Ну да и воротить внешнюю утилиту. Тогда уже проще будет добавить функцию пользовательского API в DAQ.ModBus для выполнения этой операции.
andrey-sw wrote:
roman wrote:
andrey-sw wrote:
ну и функция для управления опросом контролера в модуле ModBus точнее програмное управление состоянием параметра контролера в модуле ModBus (Вкл\Выкл). Соответственно вызывать эти функции нужно будет например по нажатию кнопки из Пользователеского интерфейса
А это тогда зачем?
Если опрос ведется по ModBusTCP то в этом нет необходимости, а вот если используя последовательный порт, то для работы с контроллером из другого приложения (запущенного из функции описанной выше) необходимо предварительно освободить порт, или я не прав?
Ненужно ничего освобождать. Ресурс захватывается и порт твой пока не отпустишь ресурс. Контроллеры DAQ.ModBus таким образом общие порты делят.
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 14. 12. 2008 [17:37]
|
andrey-sw
Андрей Сычев
Автор теми
Зареєстрован(а) с: 10.12.2008
Повідомлення: 32
|
"Ткните пальцем" как добавляются функции пользовательского API? Это гдето описано? в документации не встретил, хотя может и пропустил гдето.
|
Повідомлення створено: 15. 12. 2008 [09:33]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
Про API здесь: http://diyaorg.dp.ua/oscadawiki/Doc/API?v=kfah152-1
Про среду програмирования здесь: http://diyaorg.dp.ua/oscadawiki/Doc/SredaProgr
Про библиотеки функций здесь: http://diyaorg.dp.ua/oscadawiki/Using/APIFunctionLibs
Примеры реализации статических библиотек здесь: http://diyaorg.dp.ua/oscadawiki/Doc/FLibSYS и здесь: http://diyaorg.dp.ua/oscadawiki/Doc/FLibMath.
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 15. 12. 2008 [14:43]
|
andrey-sw
Андрей Сычев
Автор теми
Зареєстрован(а) с: 10.12.2008
Повідомлення: 32
|
Спасибо за сылки. Доки изучал те что идут с системой, ошибочно считая что в wiki тоже самое, но здесь все расписано более подробно и есть разделы которых нет в пакете, например по среде программирования.
|
Повідомлення створено: 25. 02. 2010 [16:54]
|
andrelek
Андрей Полевой
Зареєстрован(а) с: 13.12.2008
Повідомлення: 210
|
Здравствуйте! Возникла похожая задача, считать архивы из прибора. Как описано здесь http://wiki.oscada.org/Doc/OpisanieProgrammy?v=14os#h920-8, то можно послать любой запрос по желаемому транспорту, а это то что мне нужно, получить строку ответа разобрать ее и засунуть в какуюто свою базу. Архив работает по протоколу modBus и читается по команде 0x41. Для начала пытаюсь послать через транспорт простенький запросик что б протестировать мой канал связи с прибором.
Для этого создал функцию в JavaLikeCalc с тамким текстом ans=SYS.Transport.Sеrial.Flow.messIO("01 03 0b b8 00 02(46 0a)", 1000); ans-тип строка, Flow-это id исходящего транспорта, в скобках контрольная сумма пробовал с ней и без нее, компилятор скрипт мой принимает без ошибок, но если функцию исполнить то в ответ не возвращается ничего хотя время исполнения маленькое порядка 300мксек, если послать запрос из самого транспорта то ответ получаю(время 40мс). И в сообщениях пишется вот что 4|/WaterPrepare/sub_DAQ/mod_JavaLikeCalc/lib_sql/fnc_mod/ | Ошибка получения свойства 'Flow' у типа значения '0'.
|
Повідомлення створено: 25. 02. 2010 [17:24]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
Проанализируйте этот рабочий пример:
req = SYS.XMLNode("TCP");
req.setAttr("id","test").setAttr("reqTm",1).setAttr("node",1).setAttr("reqTry",2).setText(Special.FLibSYS.strEnc2Bin("03 00 00 00 05"));
SYS.Transport.Sockets.out_testModBus.messIO(req,"ModBus");
test = Special.FLibSYS.strDec4Bin(req.text());
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 26. 02. 2010 [17:27]
|
andrelek
Андрей Полевой
Зареєстрован(а) с: 13.12.2008
Повідомлення: 210
|
Спасибо огромное Роман!!! Все заработало.
|
Повідомлення створено: 11. 01. 2011 [15:44]
|
yozhik
Алексей Николаев
Зареєстрован(а) с: 29.11.2010
Повідомлення: 127
|
Есть прибор, в который надо послать по модбас тисипи команду с функцией 66. При этом формат данной функции полностью совпадает с функцией 16. Каким путем это проще сделать?
|
Повідомлення створено: 11. 01. 2011 [17:06]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"yozhik" wrote:
Есть прибор, в который надо послать по модбас тисипи команду с функцией 66. При этом формат данной функции полностью совпадает с функцией 16. Каким путем это проще сделать?
http://wiki.oscada.org/Doc/ModBus?v=ke7#h592-7
http://wiki.oscada.org/Doc/OpisanieProgrammy?v=x3w#h920-10
И читайте форум.
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 13. 01. 2011 [10:33]
|
yozhik
Алексей Николаев
Зареєстрован(а) с: 29.11.2010
Повідомлення: 127
|
Спасибо. В итоге в Java-like based calculator создал функцию с кодом:
req = SYS.XMLNode("TCP");
req.setAttr("id","socketAVSN_E1").setAttr("reqTm",1).setAttr("node",11).setText(Special.FLibSYS.strEnc2Bin("42 1a 3e 00 01 02 00 01"));
SYS.Transport.Sockets.out_socketAVSN_E1.messIO(req,"ModBus");
test = Special.FLibSYS.strDec4Bin(req.text());
Также там же создал контроллер, выполняющий данную функцию.
Однако, при включении контроллера в модуле Java-like based calculator свзяь периодически нарушается, о чем свидетельствует сообщение "Errors of connection N, of respond 0." в контроллере модуля Modbus. При отключении контроллера, который подсовывает 66 функцию, свзяь стабильна. Может быть что проблема где-то в настройках?
[Повідомлення редагувалось 1 раз(ів), останній раз 13.01.2011 в 10:33.]
|