"x_где_то_в_слейве" Эта переменная у вас принадлежит области %IW ? (А записывать значения 6/16 функцией можно только в %IW)Цитата:
x_где_то_в_слейве := x;
Если да, то это не сработает.
Вид для печати
"x_где_то_в_слейве" Эта переменная у вас принадлежит области %IW ? (А записывать значения 6/16 функцией можно только в %IW)Цитата:
x_где_то_в_слейве := x;
Если да, то это не сработает.
Какой бредовый тут слейв в отличие от кдс-2
меняем
x_где_то_в_слейве := x
на
sysmemcpy(adr(x_где_то_в_слейве),adr(x),sizeof(x)) ; //или как там она с копированием
или
Код:program пихаем
var_in
оттуды : тип;
end_var
var_in_out
cюды : тип;
end_if
---------
сюды := оттуды;
---------
------------------
var retain
x : тип;
end;
var
init : bool;
end;
------------------
if not init then
init := true;
пихаем(сюды := x_где_то_в_слейве; оттуды := x);
end_if
x := x_где_то_в_слейве;
Вложение 23182
Вложение 23183
Что то как то не получается :(
почему с sysmemcpy - х.з., под рукой кдс3 нету, видимо либ-ка не подключилась
pihaem - это не функция, при вызове поля нужны
Код:пихаем(сюды := x_где_то_в_слейве; оттуды := x);
Вложение 23185
Ну тогда так.
а никак через вменяемое имя без % ?
PS
Ну вот, если забросить эти дурацкие at% все и работает. Кажется ))
Вложение 23200
Всё таки не работает!
Вываливает предупреждение.
Хоть и в онлайне показывает что в соотнесённой переменной для %IW0 значение 123, но в реальности там 0 !!!
в программе переменная а:
VAR_GLOBAL RETAIN
a: ARRAY[0..9] OF WORD;
END_VAR
Вложение 23201
Так тоже не работает.
В общем похоже это тупиковое направление решения задачи.
Нашёл я решение своей проблеммы!!!
Стандартная библиотека IoDrvModbusTCPSlave - полнейшее @#$%^&*
Нужно использовать другую библиотеку: ModbusTCPSlave - там всё ок!!!
Вложение 23202
Вложение 23203
А Вы говорили тупиковое. А делов-то - прокладки левые.
И почему в п#35 - "шина не запущена" ?
PS
Все новое .. просто см. п#24 от amn