Просмотр полной версии : Максимальное значение локальной и сетевой переменной
Добрый день! Столкнулся с такой проблемой: есть локальная целочисленная переменная которая увеличивается от счетчика, затем она записывается в сетевую переменную и передается в OwenCloud, так вот проблема в том что переменная достигает значения 65535 примерно и сбрасывается, как сделать счет до большего значения?
МихаилГл
02.03.2026, 11:08
Как вариант сделать вторую переменную, которая будет считать количество максимальных переходов первой
ОЛ оперирует 32-х битными беззнаковыми переменными. Чтобы ее кинуть в сеть, надо ее раздробить на две 16-ричные (примеры были) и кидать в сеть как 32-х битную (2 регистра)
65535 даже не примерно, а точнее некуда :)
1-й вариант
88330
2-й вариант (макросы из менеджера компонентов)
88331
Ну, и, третий вариант, до кучи
function_block CTN32_
var_input
U, D, R : bool;
N : udint;
end_var
var_output
Lo, Hi : udint;
end_var
var
ctn : SYS.CTN;
end_var
ctn(U:=U, D:=D, R:=R, N:=N);
Lo := ctn.Q mod 65536;
Hi := ctn.Q / 65536;
end_function_block
З.Ы. Представленные варианты не запоминают значение при потери питания
Спасибо, пытаюсь использовать второй вариант с макросом, получилось у меня младший и старший регистр, а как их оба указать в параметрах в owen cloud, создаю параметр формат данных указываю как uint32 но в адресе регистра только один могу указать, как мне там представить младший и старший регистр?
Спасибо, пытаюсь использовать второй вариант с макросом, получилось у меня младший и старший регистр, а как их оба указать в параметрах в owen cloud, создаю параметр формат данных указываю как uint32 но в адресе регистра только один могу указать, как мне там представить младший и старший регистр?
Формат uint32 уже подразумевает 2 регистра. Но, в настройках облака надо глянуть кто у нас первым должен идти - младший или старший регистр и, соответственно либо на ПРке сделать или в облаке настроить
Но я макросом разбиваю udint на 2 регистра uint, получаю 2 сетевых переменных и отправляю их уже в сеть, а uint32 подразумевает 2 регистра, а как мне показать что эти 2 сетевых переменных мл. регистр и стар. регистр
Но я макросом разбиваю udint на 2 регистра uint, получаю 2 сетевых переменных и отправляю их уже в сеть, а uint32 подразумевает 2 регистра, а как мне показать что эти 2 сетевых переменных мл. регистр и стар. регистр
Для 32 разрядных данных указывается адрес меньшего (по номеру) регистра
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot