PDA

Просмотр полной версии : Проблема с записью нескольких регистров



Денис_NTS
04.05.2011, 16:20
Проблема с записью нескольких регистров. Работаю по протоколу ModBus tcp плк - слэйв ,моя "софтина" мастер. С чтением всё ОК, и с записью , но 0х06 функцией ,а вот когда пытаюсь писать 0х10 , то вместо "0" получаю на контроллере получаю всякую ерунду. Помогите подскажите в чем причина может быть.

IVM
04.05.2011, 17:42
Если не секрет - на чем написана Ваша "софтина".

Денис_NTS
04.05.2011, 19:12
MS Visual С++

Gans
04.05.2011, 19:29
Воспользуйтесь снифером и посмотрите/выложите сам процесс записи. Уверен, что после этого вопросы отпадут сами собой.
P. S. Протокол ModBus не сложный, а модификация ТСР еще проще.

Денис_NTS
05.05.2011, 11:16
Про переворот байтов мне знакомо, но я "0" пишу в один регистр
BYTE * b.....
b[7] = 16;//MODBUSWRITEFUNC; //Function
b[9] = 16;//outputIndex; //Starting Address Lo
b[8] = 0;//outputIndex<<8; //Starting Address Hi
b[11]= 1;//newoutcnt; //Quantity Registers Lo
b[10]= 0;//newoutcnt<<8; //Quantity Registers Hi
b[12] = 2; //Bytes Count
//данные на запись
//......
//......
b[13] = 0;
b[14] = 0;

получаю в регистре 771(т.е. по "3" в каждом байте),при изменении значения на запись ничего не меняется... а если я пишу 6 функцией всё отлично работает без всяких переворотов и прочей ерунды

Денис_NTS
06.05.2011, 11:38
Спасибо ...Попробуем разобраться как эта штуковина работает...

Денис_NTS
06.05.2011, 11:53
Всё работает на симуляторе ....:confused:
Вопрос : "Почему не работает на ПЛК?"

Денис_NTS
06.05.2011, 12:17
Может для Овна какая-то хитрость есть ? в регистры вообще ничего не пишется... именно 16 функцией.

Денис_NTS
11.05.2011, 10:55
0x10 или в десятичной - 16;а про запись по одному регистру - если их(регистров) 2-3 тогда можно ,а если их 100 - стремно . Это 100 запросов!!!но Preset Multiple Reg не работает!!!Кто поможет неужели у всех работает ПЛК 100.