PDA

Просмотр полной версии : Кратковременный обрыв термометра после прошивки



Сергей_М
16.09.2011, 13:46
Привет.
Связался я с прошивками …
Контроллер ПЛК 150 – 220 – И – L. Наклейка на «камне» 3 31.10.08 v 2.05.7

PLCInfo
PLC model MODEL PLC 150
Binary VERSION 2.05.7
Need Target version 2.05
Compiled: 17:05:53 May 30 2008
MAC 6A:77:00:20:40:5A
IP 10.0.6.10
GATE 10.0.6.1
MASK 255.255.255.0
PIC upper version is 07
Licence limited to 360 bytes
Current DAC
PIC lower version is 0a

Выкачал файл калибровки calib.inc. (стёр - на другом контроллере). Прошил по указаниям программы. Залил обратно calib.inc.

PLCInfo
PLC model MODEL PLC 150
Binary VERSION 2.10.9
Need Target version 2.10
Compiled: 11:36:43 Oct 8 2009
MAC 6A:77:00:20:40:5A
IP 10.0.0.64
GATE 10.0.0.1
MASK 255.255.255.0
PIC upper version is 07
Licence limited to 360 bytes
Current DAC
PIC lower version is 0a

Теперь собственно проблема. Программа включения печек по температуре.

PROGRAM pechi
VAR
te: REAL :=1000;
END_VAR
---------------
IF PowPLK THEN
IF term > 15 THEN pec1 := 0; pec2 := 0;
ELSIF term > 11 THEN pec2 := 0;
ELSIF term < 5 THEN pec1 := 1; pec2 := 1; te:=term;
ELSIF term < 9 THEN pec1 := 1;
END_IF
END_IF

Выходы pec1 – третий, pec2 – четвёртый. Вход term – четвёртый RTD sensor r428_50, температуру 21 градус показывает правильно.

В task configuration создал задачу с циклическим вызовом pechi - 5 секунд. PLC_PRG – пустая - одна лишь точка с запятой. Выполнил create boot project.
Включение после длительного перерыва питания приводит к включению pec1 и pec2 и выключению их через пять секунд. Это понятно – в переменной te ловится значение -2.751917е+038 – как при обрыве датчика. В следующем вызове – в term правильные 21 и pec1 и pec2 отключаются.
То же происходит если нажать Сброс на ПЛК или Reset (original) -> download.
Reset и Reset (cold) – не приводят к проблеме.
То же происходит в прошивке v.2.14.0_plc150.exe
В заводской прошивке эта программа работает нормально.
Что с этим делать? (Конечно, я могу поставить задержку времени)

lara197a
16.09.2011, 13:55
У Вас не совсем верно поставлена задача ПЛК
К примеру при пуске Т>11 реc2=0, а рес1? Останется в непонятном состоянии предъидущего запуска.
Задайте при пуске состояние печей.
и конкретнее опишите включение и выключение
К примеру при пуске Т=10, что будет делать контроллер-ничего. А печи примут любое состояние.

Сергей_М
16.09.2011, 14:18
Да это - тестовый проектик из кусочка программы. Да и выходы к старту будут находится в "безопасном состоянии", который = 0.
Проблема в том, что в первом проходе термометр - сильно минус, включаются печки и заполняется переменная te (которая и была вставлена для ловли этого минуса). При втором - темометр нормальный - 21 градус - печки выключаются.
На завдской прошивке - 2.05.7 этого не было.

lara197a
16.09.2011, 14:40
После запуска реле встанут из безопасного состояние в последнее предъидущее. а для стабилизации значения термопары поставьте задержку, как и писали. цикл плк и цикл опроса цапой входов разнится в разы.

Сергей_М
16.09.2011, 15:01
Переписал программу вот так
PROGRAM PLC_PRG
VAR
te: REAL :=1000;
END_VAR

------------------------
IF PowPLK THEN

IF pec1 THEN
IF term > 15 THEN pec1 := 0; END_IF
ELSIF term < 11 THEN pec1 := 1;
END_IF

IF pec2 THEN
IF term > 9 THEN pec2 := 0; END_IF
ELSIF term < 5 THEN pec2 := 1; te := term;
END_IF

END_IF

Создана в task configuration - NewTask -> Programm Call -> PLC_PRG();
Cyclic, время цикла 10 секунд.
Create boot project. Выключил, 5 минут, включил. Контроллер - beep, мигнул лампочками, одновременно с загоранием лампочки Работа включились pec1 и pec2 и через 10 секунд погасли.
Датчик - не термопара, RTD sensor R428_50, ДТС125-50М.
Под отладчиком в переменной te имеем -2.688987е+038, термометр term = 21.1231. Увы.

lara197a
16.09.2011, 16:54
Немного не так
указывайте состояние точнее
>15
1,2-выкл
>11
1вкл,2выкл
<5
1выкл,2выкл...
END_IF два раза писать не нужно.
добавьте эту функцию в плк-прг. пусть вызывает каждый цикл.

Сергей_М
19.09.2011, 15:10
Код не имеет значения, оставил как в #5. Убрал вызов PLC_PRG из task configuration. Добавил в конец, с объявлением DWORD cu :=0:

IF te = term THEN cu := cu+1; END_IF

При старте pe1 и pe2 светят ~ 3 секунды. te: -2.688967e+038, cu: 6936
Получается, датчик температуры находится в обрыве 6936 циклов ПЛК.
Может кто из техподдержки что ни будь скажет, ведь на старой прошивке этой проблемы нет.

Александр Приходько
20.09.2011, 10:29
Конечно скажем. Такая проблема была, сейчас ее вроде устранили. Прошивайте 2.14.0. Или поставьте таймер с задержкой на 5-10 секунд.

Сергей_М
20.09.2011, 11:44
Спасибо. Задержку уже поставил. Прошить 2.14.0 попробую.