PDA

Просмотр полной версии : ПЛК100 глюк при записи переменной modbus



PavelGO
20.06.2013, 11:03
Наблюдается странное:
На модбас слейв пишу с ПК переменные - 6байт - строка.
В то же время в глобал ретайн есть массив tel_nums:ARRAY[1..5] OF STRING(12);
Вот при записи в модбас регистров 14-16 'Ngvs2 ' почему то в tel_nums[5] попадает 'vs2'. Остальной tel_nums остаётся целым.
Пока что телефонных номеров меньше пяти, но что то напрягает это пересечение.
Подскажите где засада может быть?

capzap
20.06.2013, 15:04
Без проекта подсказать? Вы смеётесь

PavelGO
20.06.2013, 15:54
9044
при исполнении writeparams это происходит.

capzap
20.06.2013, 17:04
как считаете, если у массива нет нулевого индекса и Вы присваиваете переменной, отвечающей за индекс, нуль, то куда пишет функция свои данные? Видимо по тому адресу где Вы наблюдаете их.

И как дополнение: попробуйте в функции добавить в var переменную
ptStr : POINTER TO STRING(6);
и в код добавте
ptStr:=ADR(buf1);p[param].sms_name:=ptStr^;в место
p[param].sms_name:=BiteArr6ToStr(buf1,buf2,buf3,buf4,buf5, buf6);

PavelGO
20.06.2013, 17:16
Спасибо. С указателем проще. Буду осваивать.

Валенок
22.06.2013, 11:09
Тока, опять же, не забываем :
У вас - sms_name:STRING(5);
А предложено - ptStr : POINTER TO STRING(6);
Ничего страшного, только priority накроется медным тазом в какой-то момент