PDA

Просмотр полной версии : Считывать\посылать посылки через порт rs232



Максим_Фалалеев
25.09.2008, 02:56
Объясните пожалуйста как можно считывать\посылать посылки через порт rs232 контроллера PLC154 в формате ASCII (если возможно)

powerind
30.09.2008, 20:02
Да, мне тоже интересен этот вопрос, только в плане считывания и пересылке шестнацетеричных посылок по RS-485 му.

Ельцов Андрей
02.10.2008, 09:33
Есть небольшой примерчик по применению библиотеки UNM посмотрите, там не очень сложно.
В PLC-configuration необходимо добавить universal network device.

powerind
02.10.2008, 11:42
Спасибо, попробую..

vojt
04.10.2008, 21:35
Меня также интересует даный вопрос.
Если возможно, дайте более подробное описание примера UNM.test.

powerind
05.10.2008, 11:45
Сейчас пытался разобраться в SysLibCOM, встал в тупик и возвращаюсь к UNM.
При выборе скорости подключения в Module Parameters в PLC Configuration Communication Speed равен 11 520 вместо 115 200. Это у всех или только у меня? Какая скорость стоит на самом деле?

powerind
05.10.2008, 14:04
А на самом деле, нормальная опечатка, 115 200 на самом деле, всё коннектится на этой скорости норм.
--------------------------
Подключаюсь по Modbus RTU с ПЛК-150 на МВА8, входы дискретные, на входе добавляю в PLC Configuration OWEN_MVA8, вижу:
Command (0xff - Start) : BYTE
Cicle time measuring on input 1
> : WORD, рассчитаный адрес %IW9.1.0.0
Value in input 1
> : REAL, ри подключении в скобочках пишет "1", значит контакты разомкнуты. Замыкаю контакт 1 - пишет "2", всё как в инструкции МВА8. Теперь пытаюсь испольщовать этот REAL, в моём случае рассчитаный адрес %ID9.1.1.0, считываю -1065353216, пытаюсь преобразовать REAL_TO_IT, получаю "0"

powerind
05.10.2008, 15:05
Код моей программы:
PROGRAM PLC_PRG
VAR
ValueIn1:INT;
a:BOOL;
b:BOOL;
c:BOOL;
In1:WORD;
END_VAR

IF %QB9.1.0 <> 16#FF
THEN %QB9.1.0 := 16#FF;
END_IF
ValueIn1:=REAL_TO_INT(%ID9.1.1.0);
CASE ValueIn1 OF
1: b:=FALSE; c:=FALSE;
2: b:=TRUE; c:=FALSE;
3: b:=FALSE; c:=TRUE;
4: b:=TRUE; c:=TRUE;
END_CASE
a:=b OR c;
%QX1.0:=a;

Малышев Олег
06.10.2008, 07:53
Вообще неплохо бы использовать FB decode_float из pid_regulators.lib

Николаев Андрей
06.10.2008, 08:42
Скорость действительно 115200, просто не допечатался последний 0.
В большинстве приборов, часности МВА8 данные нельзя проверить с помощью Decode Float, так как в посылке не содержится данных об ошибке датчика.
А вот при использовании протокола ОВЕН такие данные в посылке содержатся.

powerind
06.10.2008, 10:22
Действительно, смотрю число из %ID9.1.1.0, вижу:
1 1065353216
2 1073741824
3 1077936128
4 1082130432
При отключении датчика - остается 1, то есть 1065353216, код об ошибке не вижу.
Вопрос: Будет ли эта таблица (выше) верна при любых условиях, и как лучше перевести эти числа в INT для исользования в структуре CASE?
Другой вопрос: вы говорите, не содержится код ошибки, то есть его действительно нельзя считать из МВА? Или, это делается иначе? Третий вопрос: Это "недороботка реализации Modbus в МВА, или ограничение реализации CoDeSys в ПЛК? Можно ли полноценно использовать другие расширители DI и другие устройства подключеные по Modbus?
Пока что, буду исользовать Prot=ОВЕН..

powerind
06.10.2008, 11:16
Нашел ветку Примеры программ и полезности (http://www.owen.ru/forum/showthread.php?t=551), а в ней описание подключения по Modbus и Owen МВА к ПЛК. Ничего полезного не нашел. По модбасу я подключался точно так же (новое для меня было тольк оописание подключения на базе универсального слэйва). Подключился по ОВЕНу, виже те же самые REAL и WORD, которые мне ничего нового не дают. Так же, нашел библиотеку с ФБ для чтения дискретных датчиков MVA_decod.rar (http://www.owen.ru/forum/attachment.php?attachmentid=468&d=1208327865), которой на входе нужен WORD сигнала сдатчика и WORD ошибки, которые я получить ниоткуда не могу. REAL_TO_WORD от сигнала с датчика возвращает в любом случае "0", а ошибку что по модбас, что по овен, я не получаю вовсе.

Филоненко Владислав
06.10.2008, 11:24
Для ОВЕН мастера на ПЛК код ошибке содержится с канале last error. ЧИТАЙТЕ ДОКУМЕНТАЦИЮ!

Николаев Андрей
07.10.2008, 10:29
Это не недоработка, а стандарт ModBus.
Если Вы еще раз обратитесь к документации по МВА (в частности к описанию обмена), то увидите, что для каждого канала измерения есть несколько регистров. Один из которых статус измерения. Опрашивая данный регистр Вы можете анализировать состояние входа.

powerind
07.10.2008, 23:51
Да, спасибо, я уже разобрался с этим моментом, и как я понял это регистр Статус измерения входа (код нестандартной ситуации), который нужно брать по Регистру, с адресом 2, 8, 14 и т.д., только при отключении датчика (дискретный вход) он у меня, этот регистр, ничего ноого не выдает почему-то..

Филоненко Владислав
08.10.2008, 17:54
А что Вы там бы хотели увидеть в этом случае?

powerind
08.10.2008, 18:09
При подключении к компьютеру, будь то OPM или OPC, безошибочно определяется ситуация, когда либо датчик отключен (контакта нет, либо подключено неправильный резистор (не в диапозхне от 6 до 10 кажется Ом.. ). При подключении же к ПЛК, я не вижу эту ошибку. Какое значение должно быть в этом регистре? Смотрим..
----------------------------------------------
Для протокола ОВЕН: значение в посылке
Для протокола ModBus: значение в регистре статуса

ОВЕН Modbus Характер нестандартной ситуации

Пере
дает
ся р
езул 0х0000 Измерение успешно
ьтат
изме
рения

0xF0 0xF000 Значение заведомо неверно
0хF6 0хF006 Данные не готовы
0xF7 0xF007 Датчик отключен
0xF8 0xF008 Велика температура свободных концов ТП
0xF9 0xF009 Мала температура свободных концов ТП
0xFA 0xF00A Измеренное значение слишком велико
0xFB 0xF00B Измеренное значение слишком мало
0xFC 0xF00C Короткое замыкание датчика
0xFD 0xF00D Обрыв датчика
0xFE 0xF00E Отсутствие связи с АЦП
0xFF 0xF00F Некорректный калибровочный коэффициент

----------------------------------------------------
Кажется, так.
0xF007 Датчик отключен
Наверное, это - мой случай. Я получаю 0x0000.
----------------------------------------------------
Всё, получил кажется.. Осталось только интерпретировать.
Спасибо всем кто участвовал : ) Получил F00D = обрыв датчика.