PDA

Просмотр полной версии : ПЛК304+ТРМ202



Антон12345
17.01.2012, 15:47
Доброе всем время суток. Начал осваивать CDS 3 и столкнулся с первыми проблемами. МВ110 удалось подключить, а вот ТРМ (опрос по Modbus) не поддается. Удалось добиться обмена, а вот как работать с буфером так и не пойму. Может кто ткнет пальцем. Пример приложу заодно.

Евгений Сергеевич
18.01.2012, 13:27
Рекомендую ознакомится с вот этим http://www.owen.ru/catalog/19944443 особенно с 5 пунктом.
библиотека открытая и Вы можете взять готовый блок подправить адреса регистров и опрашивать ТРМ202.

Тема работы с портом напрямую обсуждалась здесь: http://www.owen.ru/forum/showthread.php?t=10009 (http://www.owen.ru/forum/showthread.php?t=10009)

Евгений Сергеевич
18.01.2012, 14:07
так же у ТРМ202 особенность настроек: там используется 2 стопбита!!! будьте внимательны.

Антон12345
19.01.2012, 14:25
Спасибо за ответ! Буду пробовать.

Антон12345
24.01.2012, 14:00
С булевыми переменными нет проблем, но к сожалению суть работы с буфером осталась не ясна. И не вполне понятно, почему уважаемые разработчики CDS3 все, что выполнялось за кулисами привычной всем конфигурации в CDS2, повесили на плечи пользователей CDS3. На мой взгляд то, как там работает порт, является несколько лишнем для меня. Мне всего лишь нужно правильно подключить и настроить необходимое для конкретной задачи оборудование.

Yury Evgenev
15.05.2013, 23:32
Здравствуйте!
Позволю себе поднять тему.
Начинаю осваивать ПЛК304.

Помогите разобраться:
Решаю следующую задачу:
Опрос ТРМ200 с ПЛК304 используя протокол OWEN.
Написал простенькую функцию получения данных, но при компилировании кучу ошибок выдал.
Ранее писал опрос через модбас. Порт инициализировал той же функцией ComConn - всё компилировалось без ошибок и работало нормально.

http://i46.fastpic.ru/thumb/2013/0515/fb/547770f01328d35bd0e9e1fccd6a6dfb.jpeg (http://fastpic.ru/view/46/2013/0515/547770f01328d35bd0e9e1fccd6a6dfb.gif.html)
http://i47.fastpic.ru/thumb/2013/0515/12/a9c6ebf21e489928499c27b3910a1312.jpeg (http://fastpic.ru/view/47/2013/0515/a9c6ebf21e489928499c27b3910a1312.gif.html)
А вот код CommCon:


(*Функциональный блок инициализации ком порта, запускается один раз*)
FUNCTION_BLOCK ComConn
VAR_INPUT
(*разрешение на работу*) enable:BOOL;
(*номер порта на ПЛК, для 485 на 304м это номер 2*) PortNum: COM_PORTS:=2;
(*скорость, по умолчанию 115200*) PortBaudrate:COM_Baudrate:=115200;
(*четность 0- нет 1-нечет 2-чет, по умолчанию 0-нет*) PortParity:COM_Parity:=0 ;
(*стопбит 1-1бит, 2-1.5бита, 3-2бита, по умолчанию1-1бит*) PortStopBits:COM_StopBits:=1 ;
(*размер посылки, кажется, по умолчанию 8 бит*) PortByteSize:BYTE:=8;
END_VAR
VAR_OUTPUT
(*идентификатор открытого порта, если ошибка то все F*) Handle:SysCom.RTS_IEC_HANDLE;
(*флаг завершения операции*) Done:BOOL:=FALSE;
(*код ошибки*) ErrCode:SysCom.RTS_IEC_RESULT;
END_VAR

VAR
settings:SysCom.COM_Settings;
settings2:SysCom.COM_SettingsEx;
res:SysCom.RTS_IEC_RESULT;

rtrig:R_TRIG;
trig:rs;

END_VAR
(*---------------------------------------------------------------*)
rtrig(clk:=(Enable AND NOT done));
trig(set:=rtrig.Q,RESET1:=FALSE);
IF trig.Q1 THEN

Settings.sPort:=PortNum; (*номер COM-порта*)
Settings.ulBaudrate:=PortBaudrate; (*скорость*)
Settings.byParity:=PortParity;
Settings.ulTimeout:=0;
Settings.byStopBits:=PortStopBits;
Settings.ulBufferSize:=0;

settings2.byByteSize:=PortByteSize;


(*settings2.bBinary := TRUE; //полный набор параметров для открытия ком порта в принцепе не обязательно
settings2.bDtrControl := FALSE; // поэтому можно закоментировать обратно
settings2.bRtsControl := FALSE;
settings2.bOutxCtsFlow := FALSE;
settings2.bOutxDsrFlow := FALSE;
settings2.bDsrSensitivity := FALSE;*)


handle:=SysCom.SysComOpen2( ADR(Settings),ADR(Settings2),ADR(ErrCode));// непосредственно открытие порта
(*res:=SysComGetSettings(handle, ADR(Settings),ADR(Settings2));
res:=SysComSetSettings(handle, ADR(Settings),ADR(Settings2));*)



(*Если COM-порт открыт, то переходим к приему и передачи данных *)
IF (handle <> 16#FFFFFFFF ) THEN //если условие не выполняется то порт занят
done:=TRUE;
trig(RESET1:=true);
ELSE
done:=FALSE;
END_IF
END_IF

Искал библиотеки SisLibCom, ComService - нету.

Подскажите куда ткнуться? Где я не прав?

Буду очень благодарен всем ответившим!

Yury Evgenev
08.08.2013, 12:25
Всё ещё мучаюсь с подключением прибора ТРМ200 по протоколу ОВЕН (По МОДБАС не работает прибор) к ПЛК304.
Попробовал реализовать пример из документации на библиотеку OwenNET - не получилось. Закопался в ошибках компиляции.
Использую среду CS3HF1
Есть ли у кого-нибудь рабочий код для примера?
Поделитесь, пожалуйста.

capzap
08.08.2013, 14:34
Всё ещё мучаюсь с подключением прибора ТРМ200 по протоколу ОВЕН (По МОДБАС не работает прибор) к ПЛК304.
Попробовал реализовать пример из документации на библиотеку OwenNET - не получилось. Закопался в ошибках компиляции.
Использую среду CS3HF1
Есть ли у кого-нибудь рабочий код для примера?
Поделитесь, пожалуйста.спросили бы, стоит ли у кого нибудь еще HF1 :)

Yury Evgenev
08.08.2013, 15:17
спросили бы, стоит ли у кого нибудь еще HF1 :)
Да я какие на сайте выложены были в тех и работаю:) Можно не ставить Hot Fix 1? Или все уже в 3.5 версиях сидят?

Всё таки возвращаясь к теме: как работать в ПЛК304 с протоколом ОВЕН?

Yury Evgenev
22.08.2013, 19:53
Попробовал ещё раз реализовать пример работы по протоколу ОВЕН из руководства к библиотеке OwenNET. Где добыть библиотеку SysLibCOM? где то на форуме говорили, что она уже встроена в среду, но я её найти не смог.
Выручайте - как же всё таки считать температуру с ТРМ200. По модбас он работать не может?