PDA

Просмотр полной версии : Библиотека OwenNet.lib



!nferno
10.04.2009, 09:30
Наблюдается непонятное поведение FB "OwenPoolMaster".
Конфигурация ПЛК150+МВА8
При попытке чтения каналов МВА8 с помощью библиотеки OwenNet.lib имеем ситуацию, показанную на прикрепленном рисунке.
С чем это связано? Неправильное использование библиотеки или её баг?

Филоненко Владислав
10.04.2009, 10:42
Код в студию!

!nferno
10.04.2009, 10:59
Дело не в коде(по сути и кода то никакого нет).
Связано с настройками МВА8. Если вход МВА8 отключен в конфигураторе, то имеем на канале "мусор" (результат опроса предыдущего канала). Не смертельно конечно, но неприятно.

!nferno
13.04.2009, 10:52
Как с помощью библиотеки считать с прибора строковые параметры, например, 'dev' или 'ver'?
Как с помощью библиотеки выставить команду 'APLY' для смены параметров сети?

Филоненко Владислав
14.04.2009, 11:28
Дело не в коде(по сути и кода то никакого нет).
Связано с настройками МВА8. Если вход МВА8 отключен в конфигураторе, то имеем на канале "мусор" (результат опроса предыдущего канала). Не смертельно конечно, но неприятно.

Вам надо анализировать код ошибки и если данные ликвидны, только тогда их использовать.
Видите на Вашем рисунке параметр complete==FALSE?
Это значит, что транзация не завершилась.
Иначе смотрите на поле Error и используйте результат, только если Error==0.

pt200
19.09.2010, 12:11
Хочу получать данные с ТРМов. ПЛК63


VAR
Settings:COMSETTINGS; (* настройки последовательного порта *)
COM_SERVICE1: COM_SERVICE;
OWPool : OwenPoolMaster;

ww: int16;

ScanParams: ARRAY[0..3] OF OwenPool :=
( every := T#1s, IsRead := TRUE, EncodeType := OW_FL24, Addr := 30, AddrLen := A8BIT, Name := 'PV', Index := 16#FFFF, TimeOut := T#100ms),
( every := T#1s, IsRead := TRUE, EncodeType := OW_FL24, Addr := 31, AddrLen := A8BIT, Name := 'PV', Index := 16#FFFF, TimeOut := T#100ms),
( every := T#5s, IsRead := TRUE, EncodeType := OW_FL24, Addr := 30, AddrLen := A8BIT, Name := 'SP', Index := 16#FFFF, TimeOut := T#100ms),
( every := T#5s, IsRead := TRUE, EncodeType := OW_FL24, Addr := 31, AddrLen := A8BIT, Name := 'SP', Index := 16#FFFF, TimeOut := T#100ms);
END_VAR


(*Если COM-порт открыт, то переходим к приему и передачи данных *)
IF( NOT COM_SERVICE1.ready)THEN
(*Устанавливаем настройки COM-порта*)
Settings.Port:= 0; (*COM0 – RS485, COM1 – RS232, COM2 – ?? ???., COM3 - ?? ???., COM4 – RS232-Debug*)
Settings.dwBaudRate:=115200; (*скорость*)
Settings.byParity:=0;
Settings.dwTimeout:=0;
Settings.byStopBits:=0;
Settings.dwBufferSize:=0;
Settings.dwScan:=0;

COM_SERVICE1(Enable:= TRUE, Settings:=Settings , Task:=OPEN_TSK );
RETURN;
END_IF
(************************************************* ************************************************** *******************************************)
OWPool(
ENABLE := TRUE,
Count := ( SIZEOF( ScanParams)/SIZEOF( ScanParams[ 0])),
Pool := ADR(ScanParams[ 0]),
IsListen := FALSE,
ComHandle := Settings.Port);
IF( ScanParams[ 0].Complete)THEN
tank2.Temperature( ENABLE := TRUE, _val := REAL_TO_INT( ScanParams[ 0].ValReal));
ww:=ScanParams[ 0].error;
END_IF;

Получаю ошибки по таймауту.
ТРМ настроил вроде правильно, вкрайнем случае RS моргают, правда чегото значительно реже 1 раза в секунду.
МСД-100 сидящей на этой же шине в режиме шпиона( адр = 30, хеш = B8DF, индекс = 255), очень редко показывает( промаргивает) правильную температуру, в остальное время Ошибка(1)

P.S. Почему такое разнообразие( тут имена параметров и какойто индекс(16bit), в МСД-100 какойто хеш и какойто индекс(8 bit)да еще и формат регистра F24 не наблюдается :confused: :eek: )

pt200
20.09.2010, 14:15
обновил прошивку и таргет плк63 до 2.11, те же яйца, только вид сбоку.

2 овен: может посоветуете чегонить, время идет проект стоит.

Филоненко Владислав
20.09.2010, 16:24
для начала приведите лог снифера на порту и сам проект, чтобы можно было понять что происходит.

pt200
20.09.2010, 16:35
для начала приведите лог снифера на порту и сам проект, чтобы можно было понять что происходит.
переименовать в cip.pro и все.
а с логом щас подумаю( непростая задача или можно както средствами CоDeSys лог снять?).


// оба ТРМ включенны
000001 17:51:34.875 23 48 55 48 47 52 4F 54 56 4E 51 4F 50 0D 23 48 #HUHGROTVNQOP.#H
000002 17:51:34.906 55 47 4A 52 4F 54 56 4B 48 52 47 51 56 4F 50 54 UGJROTVKHRGQVOPT
000003 17:51:34.906 54 0D T.
000004 17:51:35.968 23 48 56 48 47 52 4F 54 56 4B 47 4E 4E 0D 23 48 #HVHGROTVKGNN.#H
000005 17:51:35.968 56 47 4A 52 4F 54 56 4B 48 52 4A 50 47 4F 54 50 VGJROTVKHRJPGOTP
000006 17:51:35.968 4A 0D J.
000007 17:51:37.046 23 48 55 48 47 52 4F 54 56 4E 51 4F 50 0D 23 48 #HUHGROTVNQOP.#H
000008 17:51:37.062 55 47 4A 52 4F 54 56 4B 48 52 47 54 53 4E 56 4E UGJROTVKHRGTSNVN
000009 17:51:37.062 47 0D G.
000010 17:51:38.125 23 48 56 48 47 52 4F 54 56 4B 47 4E 4E 0D 23 48 #HVHGROTVKGNN.#H
000011 17:51:38.125 56 47 4A 52 4F 54 56 4B 48 52 4A 50 47 4F 54 50 VGJROTVKHRJPGOTP
000012 17:51:38.125 4A 0D J.
000013 17:51:39.218 23 48 55 48 47 50 48 47 4E 4B 48 47 50 0D 23 48 #HUHGPHGNKHGP.#H
000014 17:51:39.218 55 47 4A 47 49 4A 4A 4A 48 50 48 47 4E 53 53 48 UGJGIJJJHPHGNSSH
000015 17:51:39.218 4A 0D J.
000016 17:51:40.281 23 48 56 48 47 50 48 47 4E 4E 52 56 4E 0D 23 48 #HVHGPHGNNRVN.#H
000017 17:51:40.296 56 47 4A 47 49 4A 4A 4A 48 50 48 47 4E 51 56 54 VGJGIJJJHPHGNQVT
000018 17:51:40.296 47 0D G.
000019 17:51:41.359 23 48 55 48 47 52 4F 54 56 4E 51 4F 50 0D 23 48 #HUHGROTVNQOP.#H
000020 17:51:41.390 55 47 4A 52 4F 54 56 4B 48 52 47 54 53 4E 56 4E UGJROTVKHRGTSNVN
000021 17:51:41.390 47 0D G.
000022 17:51:42.437 23 48 56 48 47 52 4F 54 56 4B 47 4E 4E 0D 23 48 #HVHGROTVKGNN.#H
000023 17:51:42.453 56 47 4A 52 4F 54 56 4B 48 52 4A 4D 49 4D 47 4C VGJROTVKHRJMIMGL
000024 17:51:42.453 4D 0D M.
000025 17:51:43.546 23 48 55 48 47 52 4F 54 56 4E 51 4F 50 0D 23 48 #HUHGROTVNQOP.#H
000026 17:51:43.546 55 47 4A 52 4F 54 56 4B 48 52 47 54 53 4E 56 4E UGJROTVKHRGTSNVN
000027 17:51:43.546 47 0D G.


// 31 ТРМ отключен
000001 18:22:44.234 23 48 56 48 47 52 4F 54 56 4B 47 4E 4E 0D 23 48 #HVHGROTVKGNN.#H
000002 18:22:44.328 55 48 47 52 4F 54 56 4E 51 4F 50 0D 23 48 55 47 UHGROTVNQOP.#HUG
000003 18:22:44.359 4A 52 4F 54 56 4B 48 52 48 50 48 51 47 47 49 0D JROTVKHRHPHQGGI.
000004 18:22:45.406 23 48 56 48 47 52 4F 54 56 4B 47 4E 4E 0D 23 48 #HVHGROTVKGNN.#H
000005 18:22:45.500 55 48 47 50 48 47 4E 4B 48 47 50 0D 23 48 55 47 UHGPHGNKHGP.#HUG
000006 18:22:45.531 4A 47 49 4A 4A 4A 48 50 48 47 4E 53 53 48 4A 0D JGIJJJHPHGNSSHJ.
000007 18:22:46.578 23 48 56 48 47 50 48 47 4E 4E 52 56 4E 0D 23 48 #HVHGPHGNNRVN.#H
000008 18:22:46.671 55 48 47 52 4F 54 56 4E 51 4F 50 0D 23 48 55 47 UHGROTVNQOP.#HUG
000009 18:22:46.687 4A 52 4F 54 56 4B 48 52 48 50 48 51 47 47 49 0D JROTVKHRHPHQGGI.
000010 18:22:47.750 23 48 56 48 47 52 4F 54 56 4B 47 4E 4E 0D 23 48 #HVHGROTVKGNN.#H
000011 18:22:47.843 55 48 47 52 4F 54 56 4E 51 4F 50 0D 23 48 55 47 UHGROTVNQOP.#HUG
000012 18:22:47.859 4A 52 4F 54 56 4B 48 52 48 50 48 51 47 47 49 0D JROTVKHRHPHQGGI.
000013 18:22:48.921 23 48 56 48 47 52 4F 54 56 4B 47 4E 4E 0D 23 48 #HVHGROTVKGNN.#H
000014 18:22:49.015 55 48 47 52 4F 54 56 4E 51 4F 50 0D 23 48 55 47 UHGROTVNQOP.#HUG
000015 18:22:49.031 4A 52 4F 54 56 4B 48 52 48 50 48 51 47 47 49 0D JROTVKHRHPHQGGI.
000016 18:22:50.093 23 48 56 48 47 52 4F 54 56 4B 47 4E 4E 0D 23 48 #HVHGROTVKGNN.#H
000017 18:22:50.187 55 48 47 52 4F 54 56 4E 51 4F 50 0D 23 48 55 47 UHGROTVNQOP.#HUG
000018 18:22:50.203 4A 52 4F 54 56 4B 48 52 48 4B 53 4D 56 47 52 0D JROTVKHRHKSMVGR.


Неясно почему посылается 1 запрос в секунду, хотя по настройкам минимум 2 должен посылать????????????

Кстати у вас даже в доках примеры для, наверное, старых либов "RealType:=FLOAT24 , (*тип параметра, значение которого
считываем*)". Потомучто в тех что идут на диске типа FLOAT24 нет, есть OW_FL24

Филоненко Владислав
20.09.2010, 18:59
Ow_fl24 - наверное расшифровывается как Owen Float24. код завтра посмотрю

pt200
21.09.2010, 14:25
Ага сам нешел.
оказывается если поставить MinCycleLenght побольше( чтобы системе жилось полегче). Нифига не работает.
Если поставить 1 то и порт сразу открывается и опрос пошел правильный.

Я в очередной раз в шоке.

Филоненко Владислав
21.09.2010, 14:55
ну так ясно же, что при периоде вызова задачи 30 мс и таймауте 50 мс таймаут наступит всегда, т.к. мастеру нужно как минимум 2 вызова для обработки, а это 60 мс. 60>50, т.е. таймаут.

pt200
21.09.2010, 15:01
Во время экспериментов я таймаут 100мс ставил и 1секунду. НЕ РАБОТАЛО.

т.е. если MinCycleLenght = 30, то нифига не работает с разумными таймаутами( и даже не очень). О как!

pt200
21.09.2010, 15:14
о еще вопросик. как при необходимости расширять пул.
т.е. иногда( не переодически) будет возникать необходимость отправить кому то какие то значения.

Филоненко Владислав
21.09.2010, 20:20
добавите в конец массива новый элемент и временно увеличите размер массива в функции опроса.
или вставите опрос индивидуально

pt200
21.09.2010, 20:32
добавите в конец массива новый элемент и временно увеличите размер массива в функции опроса.
или вставите опрос индивидуально

т.е. параметр Count можно менять на ходу, абсолютно ни с чем не синхронизируя и функция при этом будет работать как надо?

P.S. И про перемычечку расскажите что нибудь полезное http://www.owen.ru/forum/showthread.php?p=46608#post46608

pt200
21.09.2010, 22:14
Огромное количество ошибок связи. Больше половины из них 39е( CRC), остальные 65535( TimeOut). При незначительном увеличении нагрузки на ПЛК, количество ошибок значительно увеличивается.

В сети ПЛК63 + 2х ТРМ201 + МСД-100( соединенны паровозиком)

P.S. Два резистора по 100 Ом на концах стоят. Но тут и так линия метр от силы. Помех от силовых приборов нету.К сожалению нет осцилла, чтобы глянуть что там творится. Хотя если количество ошибок зависит от нагрузки проца, то дело наверное не в проводах :confused:

Походу дела теряет байты.

pt200
22.09.2010, 12:32
Снизил скорость до 9600, все отлично стало( всмысле ошибок нет)
Кстати на такой скорости и функция стала работать правильно, т.е. не меняет значения ValReal во всех каналах одновременно.

Но хотелось бы скорости и ясности в данном вопросе, всего и побольше.

Филоненко Владислав
22.09.2010, 14:18
надо смотреть что на линии происходит

Малышев Олег
22.09.2010, 14:30
почитал переписку - очередной раз в шоке(с). а не многовато ли мастеров на шине - должен быть один. рекомендую режим прослушивания линии. как это сделать даже не знаю

pt200
22.09.2010, 15:20
Мастер один: ПЛКашка
МСД шпионит
ну а ТРМы с рождения мастерить не умеют

И при чем здесь линия если загрузка проца на количество ошибков влияет?
А еще и ValReal во всех каналах обновляться начинают одновременно на скорости 115200, а на 9600 все нормально( до проводов даже не дотрагивался).

Малышев Олег
23.09.2010, 08:30
попробуйте поставить таймаут на каждую переменную 500мс вместо 100.

pt200
23.09.2010, 12:52
Так делать можно( на горячую подменять пул и его размер), если нельзя, то как правильно?


CASE( PoolType)OF
0:
OWPool(
ENABLE := TRUE,
Count := 5,(*( SIZEOF( ScanParams)/SIZEOF( ScanParams[ 0])),*)
Pool := ADR( ScanParams[ 0]),
IsListen := FALSE,
ComHandle := Settings.Port);

8..14:
OWPool(
ENABLE := TRUE,
Count := 3,
Pool := ADR( ScanParams[ 5]),
IsListen := FALSE,
ComHandle := Settings.Port);
IF( ScanParams[ 5].Complete)THEN PoolType := PoolType OR 1;END_IF
IF( ScanParams[ 6].Complete)THEN PoolType := PoolType OR 2;END_IF
IF( ScanParams[ 7].Complete)THEN PoolType := PoolType OR 4;END_IF
RETURN;

15:
OWPool(
ENABLE := TRUE,
Count := 1,
Pool := ADR( ScanParams[ 8]),
IsListen := FALSE,
ComHandle := Settings.Port);
IF( ScanParams[ 8].Complete)THEN PoolType := 0;END_IF
RETURN;

ELSE
task_Main_ERROR( info := 'óïñ...task_Comm_RS_485_1');
RETURN;

END_CASE;