|
SMLogix Вопросы о работе в среде SMLogix и о FBD-программировании |
|
Опции темы | Поиск в этой теме |
15.03.2017, 10:37 | #1 |
Member
Регистрация: Jun 2012
Адрес: СПб
Сообщения: 77
Благодарил(а): 7 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
shl(32) (решено)
Подскажите, плиз, как сделать блок shl(32) по аналогии с shl(16). Нужно для замены pow с основанием 2.
|
15.03.2017, 11:11 | #2 |
Senior Member
Регистрация: Dec 2011
Сообщения: 762
Благодарил(а): 1 раз(а)
Поблагодарили:
11 раз(а) в 11 сообщениях
|
Ответ: shl(32)
1. Сначала с помощью reg32->bits разбиваете на биты
2. Потом с помощью bool->int формируете 2 int 3. Оба числа с помощью SHL(16) сдвигаете на нужное число разрядов 4. Число из младших разрядов, полученное в п.2 с помощью SHR(16) сдигаете на 16(15)-n, где n - нужное число разрядов. 5. Число полученное в п.4 и число из старших разрядов сдвинутое в п.3 с помощью OR (16) суммируете. 6. Число полученное в п.5 и исло из младших разрядов сдвинутое в п.2 с помощью reg16->bits разбиваете на биты 7. С помощью bool->long из этих бит формируете результат. Только логические операции. Но сдвигать не более 16(15) разрядов. Если надо больше, то разбить на 2 такие операции. __________________ Нет абсолютно бездарных людей. Каждый бездарен в своей области. |
15.03.2017, 11:37 | #3 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 157
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: shl(32)
Цитата:
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
16.03.2017, 11:43 | #4 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 157
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: shl(32)
Добавил в библиотечку шифты 32-хразрядные. Много потребляют, поэтому использовать по крайней необходимости на контроллерах ниже SMH-2Gi.
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
16.03.2017, 14:47 | #5 |
Member
Регистрация: Jun 2012
Адрес: СПб
Сообщения: 77
Благодарил(а): 7 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: shl(32) (решено)
В библиотечку это куда?
Что лучше shl(32) или pow для основания 2? |
16.03.2017, 15:46 | #6 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 157
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: shl(32) (решено)
Нужно сравнивать. Но shl(32) работает тем дольше, чем на больше нужно сдвинуть. Возможно, на 1-2 разряда и быстрее, чем pow будет. Может и на 3-4. Но на 20-30 разрядов точно медленнее.
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
16.03.2017, 18:53 | #7 |
Member
Регистрация: Jun 2012
Адрес: СПб
Сообщения: 77
Благодарил(а): 7 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: shl(32) (решено)
|