Показать сообщение отдельно
Старый 25.09.2012, 15:05   #1
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Разбор проблемы чтения input status панелью (решено)

Картинка номер один: "новая" карта памяти, неудачное чтение

Картинка номер два: "старая" карта памяти, удачное чтение

Теперь словами. Панель по какой-то причине не может или не умеет считывать нужное количество переменных. Она пытается прочитать то количество переменных, которое целиком помещается в одно слово. А одно слово - это 16 битовых переменных.

В итоге, вместо запроса на чтение трёх переменных она отправляет запрос на чтение 16 переменных. Т.к. в режиме "новой" карты объём памяти оптимизирован, то оставшиеся 13 переменных взять не от куда и поэтому контроллер отвечает флагом "общая ошибка".

В режиме же "старой" карты, в памяти контроллера безусловно выделяется буфер на 1024 переменные. В результате при запросе 16 переменных контроллер отдаёт требуемое количество вне зависимости, использована ли эта память в программе или нет.

Решение проблемы: нужно объявить в программе 16 переменных, пусть и не все из них будут использоваться. Рисунок три.
Изображения
Тип файла: png 1.png (36.2 Кбайт, 359 просмотров)
Тип файла: png 2.png (36.4 Кбайт, 311 просмотров)
Тип файла: png 3.PNG (25.0 Кбайт, 338 просмотров)


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием