1) есть ли какие-нибудь методы с оным в линуксе?
2) если есть, то как?
3) если овен подключить через MOXA, то можно ли получить данные по реалком порту, или же по TCP/IP ?
есть ли какие-нибудь наработки или мануалы по данной тематике?
1) есть ли какие-нибудь методы с оным в линуксе?
2) если есть, то как?
3) если овен подключить через MOXA, то можно ли получить данные по реалком порту, или же по TCP/IP ?
есть ли какие-нибудь наработки или мануалы по данной тематике?
1) Работа по протоколу ОВЕН в Линукс ничем не отличается от форточек.
2) в соответствии с протоколом
3) почему бы и нет?
примеры на перле можете продемонстрировать?
так как интересует именно перл.
1) есть ли какие-нибудь методы с оным в линуксе?
C онным методы работы есть, особенно если написать
ОННЫЙ = ПЛК/ТРМ/СИ/РМ/... модификация ....
хотя бы для чего прибор нужен
Линукс = сервер, дескотоп, модификация ...
вообще на вскидку большинство приборов овен поддерживает модбас протокол. для него можно нагуглить кучу всего
Часто задаваемые вопросы по кодесис
1) Почему программа не работает - Следует выполнить "Онлайн ->Старт"
2) Где скачать CoDeSys, таргеты, прошивки, библиотеки - http://www.owen.ru/catalog/codesys_v3/opisanie
В целом задача такая: есть MOXA NPort 5150 которая создаёт RealCOM порт, с которым можно работать и снимать данные в моём случае с мв110-8ас.
Задача состоит лишь в том, чтобы собрать данные с овена, по заданному адресу.
Принципиальной разницы нет по ком порту это сделать или же по TCP/IP...
Последний раз редактировалось miko; 03.03.2011 в 13:23.
Ну вот у нас с топикстартером чё-то не получается нагуглить ничего юзабельного.
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 - для чего-то же их написали люди.
jamod.jar работает как с СОМ-портами, так и с ТСР и примеры есть достаточно дружественны для начинающих
С 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. Наверное надо считать с нуля как программисты :-).
Теперь новая проблема: как из регистров и их значений
[288]: 0xF007
[289]: 0x4754
получить 54512.027344 ? Что-то никак не получается. Я не знаю, где какой endian и как "соединять" регистры. Вопрос наверное уже 1000 раз на форуме задавался, но всё же: как получить с девайса те же данные, которые выдаёт программа калибровки ? Ярык программирования С, ОС linux.
Ну и второй вопрос: в процессе юстировки прибор запоминает значения корректировки или нужно записывать значения корректировки и использовать их в софте ?
float a;
char *from;
char *to;
to=&a;
to[1]=from[0];
// ну и т д согласно модбас
Часто задаваемые вопросы по кодесис
1) Почему программа не работает - Следует выполнить "Онлайн ->Старт"
2) Где скачать CoDeSys, таргеты, прошивки, библиотеки - http://www.owen.ru/catalog/codesys_v3/opisanie