всем привет подскажите как в тиа портале 16 занулить n количество битов начиная с бита х например я хочу занулить 50 битов начиная с бита 21 тоесть присвоить false битам с 21 по 71 это не структура и не массив поэтому через fill_blk не получилось
всем привет подскажите как в тиа портале 16 занулить n количество битов начиная с бита х например я хочу занулить 50 битов начиная с бита 21 тоесть присвоить false битам с 21 по 71 это не структура и не массив поэтому через fill_blk не получилось
Здравствуйте, есть специалисты по ДГУ? Почему производители выносят отдельным блоком контроллер оборотов ? Встречал одни... Читать далее
Всем салам алейкум, Samsung s9+ греется вот эта микруха, поменял ее но ничего не изменилось , подскажите пожалуйста куда... Читать далее
Ребят, добрый день, вопрос. Кто то разбирался с темой почему диспы на S сериях тухнут? Целая коробка таких, щас note 20 ultra... Читать далее
Переключение всех фаз на защитное РЕ рубильником I-0-II хороший ход, когда нужно безопасно работать на линии, и недорогое... Читать далее
С играми может быть много чудес Помню, когда вышел дум 3 все жаловалиь, что тормозит, а я в него играл на старом железе и... Читать далее
В мене він читає більшість автівок, не читає Джилі і жиги. А популярні марки читає всі. В бюджетному сегменті це гарна штука... Читать далее
Комментарии: 46
Kirill
Оператором move? На входе пишешь mw нужное, а выход слово в котором байты занулить
Egor
ну через move тоже пишет что только для массивов как я понимаю
Kirill
А что у вас тэги красным подчёркнуты мб грамматика?
Dyakonenkora
Логическое умножение?
Egor
ну такое себе решение каждый тег писать
Dyakonenkora
Ты что обнулять то собрался. 50 булей?
Egor
да допустим с адреса 20 по адрес 70 нужно занулить конкретно эти булы неужели великий тиа портал не может себе такое позволить
Evgeniy
С порталом не работаю, но как вариант через указатель, если он там есть
Dyakonenkora
В cds есть функция mem_fill. Мож в портале тоже что-то такого есть Ну да. Или указатель
Gabrrr
Биты то в чем находятся. Авто ты говоришь не структура, не массив, а что тогда?
Egor
просто в блоке данных db21
Gabrrr
И там отдельные будевые переменные? Скрин
Dyakonenkora
Это не биты а були
Rustem
По адресам пройтись и занулить в цикле начиная со стартового адреса на столько-то битов? Не знаю как в семене, возможно есть операции с адресами переменных, указателями... Перебирая адрес +1 дать нули туда. Либо есть аналог функции sysmemset.
Egor
вроде нельзя в тиа так делать адресация P#DB1.DBX0.0 bool 1 это указатель на бул с адресом 0.0 в дб1 и нельзя вместо точного адреса указать for счетчик
Kirill
Напиши на LAD должно сработать
Egor
а почему на scl не пашет а на lad запашет?)
Kirill
Ну у тебя теги красные
Egor
так там написано почему они красные потому что это не массив
Kirill
Да попробуй на ладе мувами, должно получиться
Egor
ну конечно получится если конретному тегу мувом 0 присвоить тогда получается если мне нужно 50 тегов занулить то это 50 мувов? классный код получается
Kirill
Мув 16 битов зануляет, а не 1
Kirill
Или 32 если MD Или reset bit на каждый
Aleksandr
Вы можете создать переменную word с нужным адресом, присвоить 0 не биту, а word.
Bogdan
Temp := 0; For i:= 0 to 7 do For k:= 0 to 7 do If temp <50 then %Db*.dbx[i.k]:= 0; Temp := temp +1; Else Exit; End_if End_for End_for Вместо * номер своей ДБ. Как то так должно работать - Сименс поддерживает косвенную адресацию. Почитай мануал/хелп на тему косвенной адресации, если не взлетит, возможно где то напутал с синтаксисом
Egor
Ваше решение имеет место быть, но опять таки выглядит как то костыльно, ну и сходу не завелась, протещу завтра уже где косяк ну я все равно думал можно как то одной строчкой сделать так сказать) все равно спасибо что помогли
Bogdan
Возможно, в квадратных скобках должна быть запятая
Egor
все равно ругается "Tag '%DB21.dbx' is not declared" "
Bogdan
А какой контроллер то? Эта адресация вроде на 300/400 сериях работает. На 1200/1500 через поке надо делать
Yuriy
Dbx - обращение к биту, что-то в формате не то, да и компилятор у вас ругается
Bogdan
да, как я и думал - напутал с синтаксисом) в таком виде должна быть запись)
Egor
Спасибо) Реально работает) Теперь буду знать
Bogdan
с помощью косвенной адресации можно много прикольных вещей делать для общих случаев) в вашем случае (частном, разовом, когда статичны начало и конец выборки), наверное, проще будет написать что то типа такого:
Egor
Да, получилось но на 300) 1200 ругается все равно видел человек выше писал что 1200 не поддерживает и надо через poke_blk
Aleksandr
%DB23.DBD0 := 0; Подставить свою дб и стартовую позицию. Обнулит 32 буля.
Egor
а если надо 20?
Bogdan
16 + 4)
Egor
ну можно и так) да)
Bogdan
Все верно, 1200й не поддерживает поинтеры и там косвенная адресация памяти через поке реализуется Но вот эта запись должна работать и на 1200ке по идее
Egor
и она работает да
Rustem
ForI и forK не должны быть [ ].[ ].
Aleksandr
Да я уже выше написал, как одной строчкой сделать.