PDA

Просмотр полной версии : ПЛК100 как получить по 485 число типа INT



Владимир1967
14.12.2019, 22:50
Надо получить по 485 число типа INT. Из доступных элементов использую модуль входного регистра но данные типа word. А как получить Int?

capzap
14.12.2019, 23:10
если очень сильно хочется можно поробовать WORD_TO_INT, но это не точно

Владимир1967
14.12.2019, 23:14
что то я не нашел такого преобразования. Мне кажется что надо просто вычесть 32768

Владимир1967
15.12.2019, 08:05
Что чему присвоить? Word 16 битовый и Int 16 битовый. Присвоить одно другому просто нельзя. Вы бы объяснили для чайника что нужно сделать.

petera
15.12.2019, 10:29
Что чему присвоить? Word 16 битовый и Int 16 битовый. Присвоить одно другому просто нельзя. Вы бы объяснили для чайника что нужно сделать.

Это почему нельзя?
Я всегда так делаю
46185

Отрицательные числа в Int 16 представлены в дополнительном коде, в WORD это будет, например, 65300, а в Int как -236
46186

А представление положительных совпадают
46184

Владимир1967
15.12.2019, 11:20
устройство передает данные в формате INT одним 16 битным регистром. Я могу считать только в формате Word. А как сделать обратное преобразование? Попробовал так как указано на скрине. По идее 0 в принимаемых данных (Word) должен преобразоваться в -32768 в формате INT. У меня так не получилось. Ноль получился нулем. Наверное надо как то опять разложить все по битам и собрать в формате INT ?

capzap
15.12.2019, 11:24
По идее ... Наверное надо как то опять разложить все по битам и собрать в формате INT ?
по подробнее как это из 16битного числа при условии что все разряды равно нулю, получить любое число отличное от нуля?

smk1635
16.12.2019, 15:35
устройство передает данные в формате INT одним 16 битным регистром. Я могу считать только в формате Word. А как сделать обратное преобразование?

Да ни как. Codesys прекрасно справляется с преобразованием сам. Считали переменую в формате WORD. Присвоили её значение в программе новой переменой INT. 46207