Помогите разобраться с преобразованием переменных

Ответить
Kat
Сообщения: 6
Зарегистрирован: 24 авг 2022, 16:56

Помогите разобраться с преобразованием переменных

Сообщение Kat »

Здравствуйте, начал освоение продуктов Delta c контроллера SS2. Заранее извиняюсь за глупый вопрос, но мне нужно понять, как преобразовать DWORD в WORD. Суть в том, что в программе нужно подсчитывать количество импульсов с счетчика, затем делить его через DIV32 на 100 и полученное значение уже будет умещаться в один регистр, затем отправлять по RS485 на панель оператора.

Павел51
Сообщения: 535
Зарегистрирован: 27 дек 2013, 18:01

Re: Помогите разобраться с преобразованием переменных

Сообщение Павел51 »

А в счетчике какое максимальное число может быть?

bayk
Сообщения: 887
Зарегистрирован: 30 май 2015, 21:20

Re: Помогите разобраться с преобразованием переменных

Сообщение bayk »

счётчики есть разные. смотрите описание памяти контроллера. есть и 16 и 32 битные счётчики и высокоскоростные и аппаратные и программные.

Kat
Сообщения: 6
Зарегистрирован: 24 авг 2022, 16:56

Re: Помогите разобраться с преобразованием переменных

Сообщение Kat »

Высокоскоростной счетчик будет считать где то до 500000 поэтому он на 32бит. Соответсвенно делю его значения тоже 32битной функцией получаю значения умещающееся в 16 бит но на выходе переменная 32битная как её сделать 16 битной?

Павел51
Сообщения: 535
Зарегистрирован: 27 дек 2013, 18:01

Re: Помогите разобраться с преобразованием переменных

Сообщение Павел51 »

Почитали мануал внимательно? По моему. плохо почитали. Результат после 32 битного деления должен записаться в четыре 16 битных ячейки, для этого вы должны их назначить для записи результата, иначе функция не будет работать, а необходимый вам результат забирать из второй по счету из четырех ячеек, если он не будет превышать 16 бит. Другого пути нет.

el-mech
Сообщения: 32
Зарегистрирован: 09 сен 2015, 16:53

Re: Помогите разобраться с преобразованием переменных

Сообщение el-mech »

Павел51 писал(а):
25 авг 2022, 11:18
а необходимый вам результат забирать из второй по счету из четырех ячеек, если он не будет превышать 16 бит
Точно из второй? Не из первой?

Павел51
Сообщения: 535
Зарегистрирован: 27 дек 2013, 18:01

Re: Помогите разобраться с преобразованием переменных

Сообщение Павел51 »

Посмотрите в обеих ячейках(первой и второй) что записывает, как раз и попрактикуетесь.

Kat
Сообщения: 6
Зарегистрирован: 24 авг 2022, 16:56

Re: Помогите разобраться с преобразованием переменных

Сообщение Kat »

Спасибо, попробую, к компу пока не подойти:)

Kat
Сообщения: 6
Зарегистрирован: 24 авг 2022, 16:56

Re: Помогите разобраться с преобразованием переменных

Сообщение Kat »

Спасибо за помощь, выбрал переменнyю D5 для записи значения 32битного значения, получается под это ушло 4 последовательных адреса D5,D6,D7,D8. Нужное мне 16 битное значение от 0 до 65535 нашел в D5.
Теперь разыскиваю функцию контроля изменения числа, чтобы при изменении значения она давала импульс на 1 цикл.

and909
Сообщения: 858
Зарегистрирован: 28 май 2013, 13:20

Re: Помогите разобраться с преобразованием переменных

Сообщение and909 »

функцию контроля изменения числа
В конце программы сохраняете число D1 в переменную D2, в начале программы (чтобы проверка происходила в следующем цикле) сравниваете D1 и D2, если не равно (в теле программы переменная D1 изменилась), то взводите флаг.

Ответить