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

Тема: СПК+Термостат по RS485

  1. #1

    Question СПК+Термостат по RS485

    Добрый день, господа формучане!

    На базе СПК110 было решено управлять лабораторным термостатом фирмы Termex из славного города Томск по RS485 интерфейсу. Так уж получилось, что данный термостат по модбасу разговаривать не хочет и не может. Покурив мануал к данному термостату, было выяснено следующее:
    1. В случае подключения термостата к интерфейсу RS485 следует соблюдать настройки: паритет - нет, бодрейт - 9600, стоп-бит - 1;
    2. Запрос представляет собой строку ASCII символов, начинающуюся символом ':' и заканчивающуюся символом возврата каретки (код 13) или любым другим с кодом символа менее 13. Ответ передается той же строкой.
    3. Запрос передается в виде: ':160228-M ALM.STATUS RD' (по крайней мере, на данный запрос термостат должен отвечать.

    Подключивши А и В контакты на RS485 интерфейсах, была написана простенькая программка с использованием библиотек SysCom и ComSerice, посылающая в порт этот запрос:

    Код:
    PROGRAM PLC_PRG
    VAR
    		Settings: ComSerice.COM_Settings;
    		SettingsEx: ComSerice.COM_SettingsEx;
    		COM_SERVICE1: COM_SERVICE;
    		SendBuffer : STRING;
    		receivedData: ARRAY[0..99] OF STRING;
    		readBuffer: ARRAY[0..99] OF STRING;
    		sendByte: UDINT;
    		readByte: UDINT;
    		i:INT;
    		y:BYTE:=0;
    		Z:BYTE;
    END_VAR
    VAR RETAIN
    	readTimeout: INT:=100;
    	readByteNumber: INT:=50;
    END_VAR
    
    SendBuffer:= ':160228-M ALM.STATUS RD';
    y:= INT_TO_BYTE(LEN(SendBuffer))+1; //Здесь добавили один символ, чтобы посылался "0" - как код символа менее 13
    Settings.sPort:=3;
    Settings.ulBaudrate:=9600;
    Settings.byParity:=0; 
    Settings.ulTimeout:=0;
    Settings.byStopBits:=1;
    Settings.ulBufferSize:=y;
    SettingsEx.byByteSize:=y;
    COM_SERVICE1(Enable:=TRUE, Settings:=Settings , sets_ex:=Setting****Task:=OPEN_TSK);
    sendByte:=ComSerice.SysComWrite(COM_SERVICE1.handle,ADR(sendBuffer),y,5000,0);
    readByte:=ComSerice.SysComRead(COM_SERVICE1.handle,ADR(readBuffer[0]),readByteNumber,readTimeout,0);
     	//readByteNumber - число байт ожидаемых функцией. 
    	//readTimeout - время ожидания данных, по истечении которого, не дождавшись readByteNumber байт,
    	//функция возвратит в readBuffer всё, что получила
     	IF readByte>0 THEN																					 
    		i:=0;
    		WHILE readByte>0 DO
    			receivedData[i]:=readBuffer[i];
    			readByte:=readByte-1;
    			i:=i+1;
    		END_WHILE
    	END_IF

    После заливки в СПК данной программы, стало понятно, что термостат глух к нашим мольбам и в ответ на все наши старания ничего не посылает в ответ(
    В свою очередь, вместо термостата по линии 485 подключали АС4 и считывали, что же посылает наш СПК в порт с помощью монитора порта. СПК, вроде бы, посылает то, что надо... Подскажите, пожалуйста, что можно сделать с нашими руками, желательно, без советов, куда их засунуть) Что мы делаем не так, и что необходимо исправить?

  2. #2
    Пользователь
    Регистрация
    09.10.2014
    Адрес
    Киров
    Сообщений
    735

    По умолчанию

    Подключите ваш термостат к ПК и через гипертерминал пошлите в него упомянутый вами запрос - :160228-M ALM.STATUS RD
    Если ответит, тогда уже свою программу копайте.
    Фраза -"вроде бы посылает то, что надо .." малоинформативна )
    Сравните строку запроса, наблюдаемую в мониторе порта с требуемым, если есть разница, копайте программу.

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

    По умолчанию

    тут кажется массив строк объявлять вовсе не нужно, а то ни чего кроме как откуда руки растут не скажешь
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  4. #4

    По умолчанию

    Цитата Сообщение от SA104 Посмотреть сообщение
    Подключите ваш термостат к ПК и через гипертерминал пошлите в него упомянутый вами запрос - :160228-M ALM.STATUS RD
    Если ответит, тогда уже свою программу копайте.
    Фраза -"вроде бы посылает то, что надо .." малоинформативна )
    Сравните строку запроса, наблюдаемую в мониторе порта с требуемым, если есть разница, копайте программу.
    Подключил через АС4 к компу, на запрос молчит( звонил в Томск, говорят, что "мы уже много лет поставляем эти термостаты, всё хорошо". У этого термостата есть ещё и юсб порт. При подключении его к компу, определяется как HID-устройство. Через программу автора ПО термостата пишу данный запрос в этот ЮСБ, термостат радостно отвечает. А вот через RS485 молчит(
    Разобрал, там на вывод 485 стоит микросхема:ADM485 - маломощный передатчик сигнала по 485. Непонятно, что дальше делать: объект стоит

  5. #5

    По умолчанию

    Цитата Сообщение от SA104 Посмотреть сообщение
    Фраза -"вроде бы посылает то, что надо .." малоинформативна )
    Посылает то, что надо)

  6. #6
    Пользователь
    Регистрация
    09.10.2014
    Адрес
    Киров
    Сообщений
    735

    По умолчанию

    Цитата Сообщение от ChemDevil Посмотреть сообщение
    Посылает то, что надо)
    Тогда пошлите это же самое через терминал, если ваш термостат не ответит, ваша программа не при чем.

  7. #7
    Пользователь
    Регистрация
    09.10.2014
    Адрес
    Киров
    Сообщений
    735

    По умолчанию

    Цитата Сообщение от ChemDevil Посмотреть сообщение
    Подключил через АС4 к компу, на запрос молчит( звонил в Томск, говорят, что "мы уже много лет поставляем эти термостаты, всё хорошо". У этого термостата есть ещё и юсб порт. При подключении его к компу, определяется как HID-устройство. Через программу автора ПО термостата пишу данный запрос в этот ЮСБ, термостат радостно отвечает. А вот через RS485 молчит(
    Разобрал, там на вывод 485 стоит микросхема:ADM485 - маломощный передатчик сигнала по 485. Непонятно, что дальше делать: объект стоит
    А осциллограмму не смотрели непосредственно на rs485, может там вообще тишина?

  8. #8

    По умолчанию

    Цитата Сообщение от SA104 Посмотреть сообщение
    А осциллограмму не смотрели непосредственно на rs485, может там вообще тишина?
    1. По терминалу посылали, термостат молчит. Просто до последнего не верили, что дело может быть в нём: всё-таки, Термекс достаточно известная компания на этом рынке...
    2. Осциллографа, к сожалению, у нас нет)

  9. #9
    Пользователь
    Регистрация
    09.10.2014
    Адрес
    Киров
    Сообщений
    735

    По умолчанию

    Цитата Сообщение от ChemDevil Посмотреть сообщение
    1. По терминалу посылали, термостат молчит. Просто до последнего не верили, что дело может быть в нём: всё-таки, Термекс достаточно известная компания на этом рынке...
    2. Осциллографа, к сожалению, у нас нет)
    Осциллограф-главный свидетель обвинения , пока у вас лишь косвенные улики, надежда есть )
    Что за адаптер использовали для проверки термостата из терминала?

  10. #10

    По умолчанию

    Цитата Сообщение от SA104 Посмотреть сообщение
    Осциллограф-главный свидетель обвинения , пока у вас лишь косвенные улики, надежда есть )
    Что за адаптер использовали для проверки термостата из терминала?
    Спасибо, Шерлок)
    Адаптер: ОВЕНовский АС4

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

Похожие темы

  1. СПК110 + термостат(RS-485)
    от barsik в разделе Помощь Разработчикам
    Ответов: 1
    Последнее сообщение: 05.07.2016, 07:31
  2. ТРМ 201 комнатный термостат
    от Боднар Олег Миколайович в разделе Подбор Оборудования
    Ответов: 24
    Последнее сообщение: 15.12.2015, 16:37
  3. Автоматизирую жидкостный термостат
    от Александр Васильевич в разделе Эксплуатация
    Ответов: 18
    Последнее сообщение: 25.04.2014, 13:35
  4. СИ-8 RS485
    от afsh в разделе Эксплуатация
    Ответов: 6
    Последнее сообщение: 04.04.2011, 13:45
  5. плк 110 + сп 270 + чп по Rs485
    от Wanted в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 21.04.2010, 11:06

Ваши права

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