Связь с модулями ADAM-4000 по протоколу DCON возможно в codesys 3.5 реализовать?
Вид для печати
Связь с модулями ADAM-4000 по протоколу DCON возможно в codesys 3.5 реализовать?
Ручками через SysLibCom можно.
Доброго времени суток! Подскажите если кто знает ,как заполучить "dig_fltr" из библиотеки pid_regulators в CDS3.5?
Добрый вечер!
Не могу разобраться с бибкой modbus master, есть моменты, которые я не понимаю. В описании к библиотеке написано следующее: "в PLC Configuration должны быть подключены библиотеки SisLibCom, Modbus, ComService.", но я CDS 3.5 нет библиотеки SisLibCom, а есть SysCom. Я решил, что это опечатка и добавил SysCom.
Соответственно
у меня изменилось наКод:Settings:COMSETTINGS;(* настройки последовательного порта *)
com_num: PORTS:=0; (*0 - RS-485, 1 - RS-232*)
и в программе:Код:Settings :COM_Settings; (* настройки последовательного порта *)
com_num :COM_Ports:=SYS_COMPORT2; (*SYS_COMPORT2 - COM1/RS-485, SYS_COMPORT3 - COM2/RS-232*)
Изменилось наКод:IF port_opened=0 THEN
Settings.Port:=com_num; (*номер COM-порта*)
Settings.dwBaudRate:=115200; (*скорость*)
Settings.byParity:=0;
Settings.dwTimeout:=0;
Settings.byStopBits:=0;
Settings.dwBufferSize:=0;
Settings.dwScan:=0;
END_IF
COM_SERVICE1(Enable:=(port_opened=0) , Settings:=Settings , Task:=OPEN_TSK );
(*Если COM-порт открыт, то переходим к приему и передачи данных *)
IF COM_SERVICE1.ready THEN
port_opened:=2;
END_IF
Затем я начинаю пытаться опрашивать устройство:Код:IF port_opened=0 THEN
Settings.sPort:=com_num; (*номер COM-порта*)
Settings.ulBaudrate:=SYS_BR_115200; (*скорость*)
Settings.byParity:=SYS_NOPARITY;
Settings.ulTimeout:=SYS_NOWAIT;
Settings.byStopBits:=SYS_ONESTOPBIT;
Settings.ulBufferSize:=0;
END_IF
com_serv(Enable:=(port_opened=0) , Settings:=Settings , Task:=OPEN_TSK );
(*Если COM-порт открыт, то переходим к приему и передачи данных *)
IF com_serv.ready THEN
port_opened:=2;
END_IF
При этом ByteCnt всегда равен 17, но size_br равен 4 и in_bits равен одному и тому же числу, сколько бы регистров я не опрашивал, хоть 1, хоть 5,10. С учётом того, что постоянно проскакивает ошибка err=255, я делаю вывод, что связи нет и пробую COM_Ports равным SYS_COMPORT1, SYS_COMPORT3, SYS_COMPORT4. Но результат в итоге один и тот же. Что я делаю не так?Код:IF port_opened=2 THEN (*Удачно проинициализировали*)
blink_read_pr(in:= port_opened=2, t_on:= T#500MS, t_off:= T#10MS, out=> );
get2_modbus(
Enable:= (blink_read_pr.out AND err=0),
Mode:= MB_ASCII,
DevAddr:= 1,
FirstAddr:= 512,
Quantity:= 46,
ComHandle:= Settings.sPort,
TimeOut:= TimeOut,
Buffer:= buffer,
Complete=> cmpl,
Exception=> err,
ByteCnt=> DataSize);
(*если установлен признак завершения операции, то *)
IF cmpl THEN
// IF err=0 THEN (*Если нет ошибок, то получаем данные из буфера типа INT*)
pPR200rd:=ADR(buffer);
buf_pr_rd:= pPR200rd^; //:=buf_pr_rd;
size_br:=SIZEOF(pPR200rd);
in_bits:=pPR200rd^.pr_bits;
in_pr_comm_test:=pPR200rd^.pr_comm_test;
END_IF
END_IF
P.S. забыл добавить, что через конфигурацию данные получаю, т.е. связь между устройствами есть.
В общем получилось наладить связь благодаря примеру из этого поста http://www.owen.ru/forum/showthread....l=1#post143771. RV9WFJ спасибо за работающий пример.
Остались некоторые непонятные мне моменты:
1. Не могу прочитать более 12 регистров (с любым таймаутом), причем, что характерно через конфигурацию тоже. С чем это может быть связано?
2. ByteCnt прыгает со значений 24 в 29. Откуда берутся 3 лишних байта?
У овна некоторые модули такие как МУ110-8И не поддерживают передачу большого кол-ва регистров за раз. Если они есть то обновлять их прошивку. Если их нет копать в другом месте, у меня 24 регистра за раз качает как сейчас помню.
У меня ПР200, задам вопрос в соответствующей ветке
Здравствуйте! Подскажите пожалуйста: устанавливаю Codesys SP6 Patch4 на двух разных машинах. На одной после установки библиотек все нормально а на второй у большинства библиотек выдаются ошибки, что они не установлены в системе
Вложение 22005
Пробовал переустанавливать библиотеки и Codesys, но результат данные процедуры не дали
Скажите пожалуйста, с чем это может быть связано и как решить этот вопрос? Спасибо!