PDA

Просмотр полной версии : Непонятная ошибка чтения параметра rEAd ТРМ148



msagent
20.04.2017, 15:13
Здравствуйте. СПК110+ТРМ148. Протокол овен. Читаю с помощью owenlib. Прицепленны термопары на первые 2 входа. Owen_get_Real читает их, а потом затык. Что делать?

Кусок кода :

TRM1_GetReal_1 //Опрос текущих температур
(
Enable:=COM_SERVICE_COM2.Ready,
Addr:=16+iChannel,
AddrLen:=8,
Name:='rEAd',
Index:=16#FFFF,
RealType:=FLOAT32T,
ComHandle:=COM_SERVICE_COM2.handle,
TimeOut:=T#50MS,
Complete=> ,
Value=> ,
wTime=> ,
Error=>
);
// [3.0.2] если ФБ чтения завершил работу...
IF TRM1_GetReal_1.Complete THEN
// ...и ошибки отсутствуют, то забираем считанное значение
IF TRM1_GetReal_1.Error=0 THEN
CH[iChannel]:=TRM1_GetReal_1.Value;
counter2:=counter2+1;

END_IF
// завершаемработублока
TRM1_GetReal_1(Enable:=FALSE);
// переходим к следующему шагу
iChannel:=iChannel+1;
IF iChannel>7 THEN iChannel:=0; iStep:=1; END_IF
END_IF


т.е. TRM1_GetReal_1.Complete зависает в состояние FALSE и программа встает. а ошибка TRM1_GetReal_1.Error пишет 64768 (0xFD00). Что это за ошибка?. И как понять, что это действительно обрыв термопары??

Могу ли я завершить принудительно работу блока TRM1_GetReal_1(Enable:=FALSE) и перейти к опросу следующего канала не дожидаясь TRM1_GetReal_1.Complete ???

Евгений Кислов
20.04.2017, 15:38
Здравствуйте. СПК110+ТРМ148. Протокол овен. Читаю с помощью owenlib. Прицепленны термопары на первые 2 входа. Owen_get_Real читает их, а потом затык. Что делать?

Кусок кода :

<...>
// [3.0.2] если ФБ чтения завершил работу...
IF TRM1_GetReal_1.Complete THEN
// ...и ошибки отсутствуют, то забираем считанное значение
IF TRM1_GetReal_1.Error=0 THEN
CH[iChannel]:=TRM1_GetReal_1.Value;
counter2:=counter2+1;

END_IF
// завершаемработублока
TRM1_GetReal_1(Enable:=FALSE);



т.е. TRM1_GetReal_1.Complete зависает в состояние FALSE и программа встает. а ошибка TRM1_GetReal_1.Error пишет 64768 (0xFD00). Что это за ошибка?. И как понять, что это действительно обрыв термопары??

Могу ли я завершить принудительно работу блока TRM1_GetReal_1(Enable:=FALSE) и перейти к опросу следующего канала не дожидаясь TRM1_GetReal_1.Complete ???

Вам надо завершение работы блока делать только по флагу Complete (т.е. внести это внутрь условия iF). См. пример:
http://ftp.owen.ru/index.html/CoDeSys3/11_Documentation/01_SPK/SPK_TRM212owen_v.1.1.pdf

msagent
20.04.2017, 17:50
Все бы хорошо, но флаг Complete не случается. Поэтому и работа ФБ не завершается. Цитата из вашей ссылки (листинг в конце документа):

IF
TRM212_GetReal.Complete
THEN
// ...и ошибки отсутствуют, то забираем считанное значение
IF
TRM212_GetReal.Error=0
THEN
TRM212_PV1:=TRM212_GetReal.Value;
END_IF
//
завершаем
работу
блока
TRM212_GetReal(Enable:=FALSE);
// переходим к следующему шагу
iStep:=1;
END_ IF

Евгений Кислов
20.04.2017, 18:14
А если ограничиться считыванием только первых двух входов - все работает нормально?

msagent
20.04.2017, 18:51
да.
Вначале поставил одну термопару на первый канал. контроллер затыкался на чтение второго канала.
Потом поставил вторую термопару. Контроллер стал затыкаться на третьем канале.
Это по протоколу овен.
По модбасу все читает. Но не дает читать текущую уставку (с применением графика коррекции - своего рода программный задатчик реализует)

Евгений Кислов
20.04.2017, 18:59
Я посмотрел исходники библиотеки - вы правы, флаг Complete не ставится, если в канале ошибка.

Соответственно, надо делать как-то так:



IF TRM212_GetReal.Complete OR TRM212_GetReal.Error<>0 THEN

// забираем значение и код ошибки

TRM212_GetReal(Enable:=FALSE);

iStep:=... // переходим к следующему шагу

END_IF



Документацию поправим в ближайшем будущем.

msagent
20.04.2017, 20:15
Тогда что обозначает ошибка *TRM1_GetReal_1.Error пишет 64768 (0xFD00)?

msagent
20.04.2017, 20:18
Ну и в догонку тогда вопрос. Как запустить/остановить работу объекта в ТРМ148 по сети? Параметров я таких не нашел в описании.

Евгений Кислов
20.04.2017, 21:00
Тогда что обозначает ошибка *TRM1_GetReal_1.Error пишет 64768 (0xFD00)?

Обрыв датчика, насколько я помню.

kon48
21.04.2017, 03:50
Ну и в догонку тогда вопрос. Как запустить/остановить работу объекта в ТРМ148 по сети?
Для электрических печей сопротивления можно выполнить изменением УСТАВКИ. Включение - УСТАВКА рабочая по технологии.
Выключение - УСТАВКА ниже температуры помещения.
С уважением

msagent
21.04.2017, 05:51
Нет тут вопрос интереснее. У каждого объекта ТРМ148 есть три режима:
1. СТОП
2. РАБОТА
3. ОШИБКА

и на каждую свои уставки температуры или мощности.
Вот мне как раз и надо по сети менять режимы работы (СТОП <-> РАБОТА).

аскар
21.04.2017, 13:28
из конфигуратора трм148 режим стоп/работа изменяется, т.е. дистанционно процесс можно запустить/остановить30745
30744 , а в описании параметров в графе "изменить" "нет"

msagent
21.04.2017, 14:01
Спасибо вам большое.