Просмотр полной версии : Непонятная ошибка чтения параметра rEAd ТРМ148
Здравствуйте. СПК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
Все бы хорошо, но флаг 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
А если ограничиться считыванием только первых двух входов - все работает нормально?
да.
Вначале поставил одну термопару на первый канал. контроллер затыкался на чтение второго канала.
Потом поставил вторую термопару. Контроллер стал затыкаться на третьем канале.
Это по протоколу овен.
По модбасу все читает. Но не дает читать текущую уставку (с применением графика коррекции - своего рода программный задатчик реализует)
Евгений Кислов
20.04.2017, 18:59
Я посмотрел исходники библиотеки - вы правы, флаг Complete не ставится, если в канале ошибка.
Соответственно, надо делать как-то так:
IF TRM212_GetReal.Complete OR TRM212_GetReal.Error<>0 THEN
// забираем значение и код ошибки
TRM212_GetReal(Enable:=FALSE);
iStep:=... // переходим к следующему шагу
END_IF
Документацию поправим в ближайшем будущем.
Тогда что обозначает ошибка *TRM1_GetReal_1.Error пишет 64768 (0xFD00)?
Ну и в догонку тогда вопрос. Как запустить/остановить работу объекта в ТРМ148 по сети? Параметров я таких не нашел в описании.
Евгений Кислов
20.04.2017, 21:00
Тогда что обозначает ошибка *TRM1_GetReal_1.Error пишет 64768 (0xFD00)?
Обрыв датчика, насколько я помню.
Ну и в догонку тогда вопрос. Как запустить/остановить работу объекта в ТРМ148 по сети?
Для электрических печей сопротивления можно выполнить изменением УСТАВКИ. Включение - УСТАВКА рабочая по технологии.
Выключение - УСТАВКА ниже температуры помещения.
С уважением
Нет тут вопрос интереснее. У каждого объекта ТРМ148 есть три режима:
1. СТОП
2. РАБОТА
3. ОШИБКА
и на каждую свои уставки температуры или мощности.
Вот мне как раз и надо по сети менять режимы работы (СТОП <-> РАБОТА).
из конфигуратора трм148 режим стоп/работа изменяется, т.е. дистанционно процесс можно запустить/остановить30745
30744 , а в описании параметров в графе "изменить" "нет"
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot