Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 15

Тема: овен и линукс

  1. #1

    По умолчанию овен и линукс

    1) есть ли какие-нибудь методы с оным в линуксе?
    2) если есть, то как?
    3) если овен подключить через MOXA, то можно ли получить данные по реалком порту, или же по TCP/IP ?

    есть ли какие-нибудь наработки или мануалы по данной тематике?

  2. #2

    По умолчанию

    1) Работа по протоколу ОВЕН в Линукс ничем не отличается от форточек.
    2) в соответствии с протоколом
    3) почему бы и нет?

  3. #3

    По умолчанию

    примеры на перле можете продемонстрировать?
    так как интересует именно перл.

  4. #4

    По умолчанию

    1) есть ли какие-нибудь методы с оным в линуксе?
    C онным методы работы есть, особенно если написать
    ОННЫЙ = ПЛК/ТРМ/СИ/РМ/... модификация ....
    хотя бы для чего прибор нужен
    Линукс = сервер, дескотоп, модификация ...

    вообще на вскидку большинство приборов овен поддерживает модбас протокол. для него можно нагуглить кучу всего
    Часто задаваемые вопросы по кодесис
    1) Почему программа не работает - Следует выполнить "Онлайн ->Старт"
    2) Где скачать CoDeSys, таргеты, прошивки, библиотеки - http://www.owen.ru/catalog/codesys_v3/opisanie

  5. #5

    По умолчанию

    В целом задача такая: есть MOXA NPort 5150 которая создаёт RealCOM порт, с которым можно работать и снимать данные в моём случае с мв110-8ас.
    Задача состоит лишь в том, чтобы собрать данные с овена, по заданному адресу.
    Принципиальной разницы нет по ком порту это сделать или же по TCP/IP...
    Последний раз редактировалось miko; 03.03.2011 в 13:23.

  6. #6

    По умолчанию

    Цитата Сообщение от Малышев Олег Посмотреть сообщение
    1) есть ли какие-нибудь методы с оным в линуксе?
    C онным методы работы есть, особенно если написать
    ОННЫЙ = ПЛК/ТРМ/СИ/РМ/... модификация ....
    хотя бы для чего прибор нужен
    Линукс = сервер, дескотоп, модификация ...

    вообще на вскидку большинство приборов овен поддерживает модбас протокол. для него можно нагуглить кучу всего
    Ну вот у нас с топикстартером чё-то не получается нагуглить ничего юзабельного.

    1. Работает только modpoll (http://www.focus-sw.com/fieldtalk/modpoll.html), но он не-open_source, библеотека его стОит 300 баксов. Нам в ТЗ указали чтобы совсем бесплатно было. Ещё его раздают только 32-битный.

    2. Есть в перле модуль Modbus::Client, он не то чтобы совсем не работает, но данные пока с него получить не удалось. Если указать парвильный адрес девайса, то скрипт на этом модуле просто молча ничего не делает(считыветпустоту), если указать неправильный адрес, то ругается .

    3. Ещё пытался заюзать rmodbus (модуль для ruby), но ничего не получилось, что-то с самим руби или модулем.

    4. libmodbus - пробовал его примеры, но тоже безуспешно.

    5. Можно использовать *SCADA, что сейчас и делается, но это ядерный удар по шайке воробьёв - датчиков всего несколько десятков.

    Хотелось бы найти открытую реализацию библеотеки или модуля modbus, которая бы работала с OWEN. Есть странное ощущение, что почти все перечисленные реализации могут работать, но не с любыми устройствами на modbus - для чего-то же их написали люди.

  7. #7
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,225

    По умолчанию

    jamod.jar работает как с СОМ-портами, так и с ТСР и примеры есть достаточно дружественны для начинающих

  8. #8

    По умолчанию

    С libmodbus вроде бы чё-то получилось. Нет нормального описания функций и их назначения, всё по наитию ... и гуглу :-).

    По крайней мере выдаёт почти то же самое, что и modpoll (запускаются не одновременно, поэтому младжий регистр отличается)

    антиэталонный код:

    ---------------<cut>----------------
    #include [stdio.h] // треугольные скобки считаются тегами
    #include [modbus.h] // и фильтруются форумом
    #include [errno.h]

    int main () {

    int i;
    modbus_t *mb;
    uint16_t tab_reg[32];

    // Inicialization!
    for (i = 0 ; i < 32 ; i++) { tab_reg[i] = 0; }

    mb = modbus_new_rtu("/dev/ttyS0", 38400, 'N', 8, 1);

    if (mb == NULL) {
    fprintf(stderr, "Unable to allocate libmodbus context\n");
    return -1;
    }

    // set address
    modbus_set_slave(mb, 71);

    if (modbus_connect(mb) == -1) {
    fprintf(stderr, "Connection failed: %s\n", modbus_strerror(errno));
    modbus_free(mb);
    return -1;
    }

    /* Read registers from the address */
    modbus_read_registers(mb, 287, 3, tab_reg);

    for (i = 0 ; i < 32 ; i++) {
    if (tab_reg[i] != 0) {
    printf ("i = %d %X \n", i, tab_reg[i]);
    }
    }

    modbus_close(mb);
    modbus_free(mb);
    } //main
    ---------------<cut>----------------

    Потом gcc test.c `pkg-config --libs --cflags libmodbus`
    и потом:

    C]# ./a.out ; /root/src/modbus/modpol/linux/modpoll -m rtu -a 71 -r 288 -c 3 -t 3:hex -1 -b 38400 -p none /dev/ttyS0
    i = 0 F007
    i = 1 4754
    i = 2 A300

    modpoll - FieldTalk(tm) Modbus(R) Polling Utility
    Copyright (c) 2002-2006 FOCUS Software Engineering Pty Ltd
    Visit http://www.modbusdriver.com for Modbus libraries and tools.

    Protocol configuration: Modbus RTU
    Slave configuration...: Address/Id = 71, start reference = 288, count = 3
    Communication.........: /dev/ttyS0, 38400, 8, 1none
    Data type.............: 16-bit register (hex), input register table

    Polling slave ...
    [288]: 0xF007
    [289]: 0x4754
    [290]: 0xA300

    Первые два регистра совпадают всегда, третий - редко, наверное из-за неодновременности снятий показаний отличается. Ещё непонятно. почему регистр 288 в libmodbus стал 287. Наверное надо считать с нуля как программисты :-).

  9. #9

    По умолчанию

    Теперь новая проблема: как из регистров и их значений

    [288]: 0xF007
    [289]: 0x4754

    получить 54512.027344 ? Что-то никак не получается. Я не знаю, где какой endian и как "соединять" регистры. Вопрос наверное уже 1000 раз на форуме задавался, но всё же: как получить с девайса те же данные, которые выдаёт программа калибровки ? Ярык программирования С, ОС linux.

    Ну и второй вопрос: в процессе юстировки прибор запоминает значения корректировки или нужно записывать значения корректировки и использовать их в софте ?

  10. #10

    По умолчанию

    float a;
    char *from;
    char *to;
    to=&a;
    to[1]=from[0];
    // ну и т д согласно модбас
    Часто задаваемые вопросы по кодесис
    1) Почему программа не работает - Следует выполнить "Онлайн ->Старт"
    2) Где скачать CoDeSys, таргеты, прошивки, библиотеки - http://www.owen.ru/catalog/codesys_v3/opisanie

Страница 1 из 2 12 ПоследняяПоследняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •