Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2014, 18:07   #1
ZigZag
 
Регистрация: 24.03.2009
Сообщений: 3
По умолчанию Jamod. ModbusIOException: executing transaction failed

Всем привет.
Необходимо реализовать программу управления контроллером, поддерживающим Modbus TCP. В качестве контроллера использую эмулятор Modbus Slave, в качестве устройства управления выступает эмулятор Android. Вкратце все работает так: на экране кнопка, по нажатию на которую создается клиент, устанавливающий соединение с сервером(контроллером) в новом потоке.
Клиент:
Код:
class SampleClient extends Thread
{
    public SampleClient()
    {
	setDaemon(true);
	setPriority(NORM_PRIORITY);
	start();
    }
	
    public void run()
    {
        try
        {
	    TCPMasterConnection con = new TCPMasterConnection(InetAddress.getByName("10.0.2.2"));
	    con.setPort(502);
	    con.connect();
	    ReadInputDiscretesRequest request = new ReadInputDiscretesRequest(0, 1);
	    ModbusTCPTransaction trans = new ModbusTCPTransaction(con);
	    trans.setRequest(request);
	    trans.execute();
	    ReadInputDiscretesResponse response;
	    response = (ReadInputDiscretesResponse)trans.getResponse();
	    System.out.println(response.getDiscretes().toString());
        }
        catch(Exception e)
        {
            System.out.println("Connection error: "+e);
        }
    }
}
Установить соединение с контроллером удается(isConnected возвращает true), но при попытке транзакции получаю исключение ModbusIOException: executing transaction failed.

Не могу понять в чем может быть проблема. Надеюсь на Вашу помощь(лог в следующем посте).
ZigZag вне форума Ответить с цитированием
Старый 30.04.2014, 18:08   #2
ZigZag
 
Регистрация: 24.03.2009
Сообщений: 3
По умолчанию

LogCat:
Код:
04-30 14:07:42.899: W/System.err(623): java.net.SocketTimeoutException
04-30 14:07:42.899: W/System.err(623): 	at java.net.PlainSocketImpl.read(PlainSocketImpl.java:491)
04-30 14:07:42.899: W/System.err(623): 	at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)
04-30 14:07:42.908: W/System.err(623): 	at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240)
04-30 14:07:42.908: W/System.err(623): 	at java.io.InputStream.read(InputStream.java:163)
04-30 14:07:42.918: W/System.err(623): 	at java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:142)
04-30 14:07:42.918: W/System.err(623): 	at java.io.BufferedInputStream.read(BufferedInputStream.java:309)
04-30 14:07:42.918: W/System.err(623): 	at java.io.DataInputStream.read(DataInputStream.java:84)
04-30 14:07:42.918: W/System.err(623): 	at net.wimpi.modbus.io.ModbusTCPTransport.readResponse(ModbusTCPTransport.java:171)
04-30 14:07:42.928: W/System.err(623): 	at net.wimpi.modbus.io.ModbusTCPTransaction.execute(ModbusTCPTransaction.java:193)
04-30 14:07:42.928: W/System.err(623): 	at com.example.diplom.SampleClient.run(SampleClient.java:55)
04-30 14:07:45.940: W/System.err(623): java.net.SocketTimeoutException
04-30 14:07:45.958: W/System.err(623): 	at java.net.PlainSocketImpl.read(PlainSocketImpl.java:491)
04-30 14:07:45.998: W/System.err(623): 	at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)
04-30 14:07:45.998: W/System.err(623): 	at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240)
04-30 14:07:46.018: W/System.err(623): 	at java.io.InputStream.read(InputStream.java:163)
04-30 14:07:46.068: W/System.err(623): 	at java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:142)
04-30 14:07:46.078: W/System.err(623): 	at java.io.BufferedInputStream.read(BufferedInputStream.java:309)
04-30 14:07:46.115: W/System.err(623): 	at java.io.DataInputStream.read(DataInputStream.java:84)
04-30 14:07:46.138: W/System.err(623): 	at net.wimpi.modbus.io.ModbusTCPTransport.readResponse(ModbusTCPTransport.java:171)
04-30 14:07:46.149: W/System.err(623): 	at net.wimpi.modbus.io.ModbusTCPTransaction.execute(ModbusTCPTransaction.java:193)
04-30 14:07:46.168: W/System.err(623): 	at com.example.diplom.SampleClient.run(SampleClient.java:55)
04-30 14:07:49.169: W/System.err(623): java.net.SocketTimeoutException
04-30 14:07:49.178: W/System.err(623): 	at java.net.PlainSocketImpl.read(PlainSocketImpl.java:491)
04-30 14:07:49.199: W/System.err(623): 	at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)
04-30 14:07:49.230: W/System.err(623): 	at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240)
04-30 14:07:49.239: W/System.err(623): 	at java.io.InputStream.read(InputStream.java:163)
04-30 14:07:49.250: W/System.err(623): 	at java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:142)
04-30 14:07:49.278: W/System.err(623): 	at java.io.BufferedInputStream.read(BufferedInputStream.java:309)
04-30 14:07:49.278: W/System.err(623): 	at java.io.DataInputStream.read(DataInputStream.java:84)
04-30 14:07:49.288: W/System.err(623): 	at net.wimpi.modbus.io.ModbusTCPTransport.readResponse(ModbusTCPTransport.java:171)
04-30 14:07:49.318: W/System.err(623): 	at net.wimpi.modbus.io.ModbusTCPTransaction.execute(ModbusTCPTransaction.java:193)
04-30 14:07:49.318: W/System.err(623): 	at com.example.diplom.SampleClient.run(SampleClient.java:55)
04-30 14:07:52.349: W/System.err(623): java.net.SocketTimeoutException
04-30 14:07:52.388: W/System.err(623): 	at java.net.PlainSocketImpl.read(PlainSocketImpl.java:491)
04-30 14:07:52.408: W/System.err(623): 	at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)
04-30 14:07:52.408: W/System.err(623): 	at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240)
04-30 14:07:52.428: W/System.err(623): 	at java.io.InputStream.read(InputStream.java:163)
04-30 14:07:52.428: W/System.err(623): 	at java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:142)
04-30 14:07:52.499: W/System.err(623): 	at java.io.BufferedInputStream.read(BufferedInputStream.java:309)
04-30 14:07:52.499: W/System.err(623): 	at java.io.DataInputStream.read(DataInputStream.java:84)
04-30 14:07:52.499: W/System.err(623): 	at net.wimpi.modbus.io.ModbusTCPTransport.readResponse(ModbusTCPTransport.java:171)
04-30 14:07:52.499: W/System.err(623): 	at net.wimpi.modbus.io.ModbusTCPTransaction.execute(ModbusTCPTransaction.java:193)
04-30 14:07:52.508: W/System.err(623): 	at com.example.diplom.SampleClient.run(SampleClient.java:55)
04-30 14:07:52.508: I/System.out(623): Connection error: net.wimpi.modbus.ModbusIOException: Executing transaction failed (tried 3 times)
ZigZag вне форума Ответить с цитированием
Старый 25.05.2014, 17:21   #3
ZigZag
 
Регистрация: 24.03.2009
Сообщений: 3
По умолчанию

На случай если кому-нибудь нужно:
Проблема была в неправильном значении Slave ID в запросе. По умолчанию это значение равно 00, однако ID первого устройства равен 01. Некоторые эмуляторы работают и со значением 00. При необходимости, Slave ID можно изменить с помощью метода setUnitID(int) (в моем случае request.setUnitID(int)).
ZigZag вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Run-time error 1004: Method Range of object Global failed failed sa920 Microsoft Office Excel 8 01.07.2012 22:40
ошибка lock conflict on no wait transaction пауэрлифтинг БД в Delphi 1 28.05.2010 00:19
Ошибка Executing SQL directly; no cursor. в XП vario_rus SQL, базы данных 0 16.02.2010 10:40
Transaction zombikkk БД в Delphi 8 13.12.2009 22:00
Error executing cl.exe. что это? bullvinkle Помощь студентам 5 02.12.2008 01:39