PDA

Просмотр полной версии : CDS3 Modbus master-slave



Barboris
25.07.2012, 11:44
Подскажите, не могу понять, как правильно настроить в конфигурации модбас мастер и слейв ?

вот нашел на другом форуме пример, тут все понятно

http://www.prolog-plc.ru/st/img6/4_6.jpg

Но таким образом с модбаса приходят только WORD, а вот как сделать REAL (как было во 2й версии Real input module) ?

и 2й вопрос - если наоборот в кдс3 - слейв, то как будут считаться регистры модбаса?

http://i40.fastpic.ru/big/2012/0725/11/137d8447a3625490e33292c886b81d11.jpg

В данном примере предполагается использовать 1 ethernet порт как модбас-мастер (здесь 1 слейв MRU1), а другой как модбас-слейв (KSAU733), вот я забил несколько переменных.
Какая из них будет иметь адрес регистра №0 , №1 и т.д. ?

capzap
25.07.2012, 12:00
Но таким образом с модбаса приходят только WORD, а вот как сделать REAL (как было во 2й версии Real input module) ?

Там где подчеркнули оффсет, внизу стоит длинна, сделайте её равной двум и будет Вам счастье принять реал

Barboris
25.07.2012, 13:14
http://i42.fastpic.ru/big/2012/0725/6e/044ec3e1cece4b9f761d4d51e3782e6e.jpg

я тоже так подумал, но в результате получилось 2 WORDа.

http://i43.fastpic.ru/big/2012/0725/3e/50cd528018d5ac0bfbc4378b5a5fcc3e.jpg

capzap
25.07.2012, 13:24
ну и что, реал и состоит из двух вордов, что соответствует четырем байтам, в программе можно с помощью указателей получить реал

PS можно и так

foo1:WORD:=16914;
foo2:WORD:=26214;
bar:REAL;
ptFoo:POINTER TO DWORD;

ptFoo:=ADR(bar);
ptFoo^:=SHL(WORD_TO_DWORD(foo1),16) OR WORD_TO_DWORD(foo2);

Barboris
25.07.2012, 17:17
то есть кдс не позволяет сразу получать флоат без преобразований типов?

а по второму вопросу как быть?

capzap
25.07.2012, 17:23
в стандарте модбас есть понятие флаг и регистр, все типы строятся на основе этих видов данных
по второму вопросу так и не понял в чем смысл оного, удаленным мастером стучите на регистры по порядку и смотрите куда приходят значения таким образом методом тыка и вычислите адресацию :)

Barboris
18.10.2012, 16:43
еще один вопрос. Я правильно понимаю , что нумерация входных и выходных регистров независимая? Т.е. у меня может быть Holding register 0x0001 и Input register 0х0001 c одинаковыми адресами?
И не нужно делать никакого "выравнивания" - может начинаться не с 0 нумерация?