Передать переменные "А" и "f1" получилось с первого раза, но у меня f1 занимает 4 номер регистра, который в панели относится к системным. Непонятно как поменять номер регистра с 4 на 300 в библиотеке на ПЛК, где конкретно прописывать.
Передать переменные "А" и "f1" получилось с первого раза, но у меня f1 занимает 4 номер регистра, который в панели относится к системным. Непонятно как поменять номер регистра с 4 на 300 в библиотеке на ПЛК, где конкретно прописывать.
А если подумать? Там же на русском подписано даже.
Вы же выделили на скрине начальный адрес 4, следующая строка кол-во записываемых регистров 4 , из них,
два на 32 битное целочисленное типа DINT ( или DWORD или UDINT с адресом 4) и два на REAL, адрес 6.
Сравните как разбирается на байты целочисленное и как REAL и подумайте, как например передать несколько целочисленных и несколько REAL.
И как расставить байты, для правильной передачи чисел.
Последний раз редактировалось kondor3000; 25.04.2024 в 07:56.
Ну уже лучше)) а теперь замените f2 и f3 на массив f2:ARRAY [0..9] OF REAL; и сможете записать сразу 10 переменных REAL. Регистров будет уже 20.
Упаковку можно сделать компактней, каждая строка 1 REAL, напримерАналогично можно прочитать Массив любых переменных, если они идут подряд.Код:ptr_f2:=ADR(f2); buffer[1] := ptr_f2^; ptr_f2:=ptr_f2+1; buffer[0] := ptr_f2^; ptr_f2:=ptr_f2+1; buffer[3] := ptr_f2^; ptr_f2:=ptr_f2+1; buffer[2] := ptr_f2^; ptr_f2:=ptr_f2+1; buffer[5] := ptr_f2^; ptr_f2:=ptr_f2+1; buffer[4] := ptr_f2^; ptr_f2:=ptr_f2+1; buffer[7] := ptr_f2^; ptr_f2:=ptr_f2+1; buffer[6] := ptr_f2^;
Последний раз редактировалось kondor3000; 12.05.2024 в 16:30.
А что не понятно то? Есть начальный адрес массива ADR(f2), а дальше адрес каждого следующего байта +1. В буфере Байты и Регистры все подряд, [0] [1] [2] [3].
Каждый байт надо поставить в правильном порядке ( для панели [1] [0] [3] [2]), например, если переставить [1] и [0] , то поменяются местами байты,
а если поменять [1] [0] с [3] [2], то поменяются местами регистры. Попробуйте и получите вместо 50.80, что-то типа 2.345e-25.
Для разных модулей и панелей порядок может быть разный, но для Овена чаще всего такой.
Последний раз редактировалось kondor3000; 15.05.2024 в 18:17.
Я про код.Код:ptr_f2:=ADR(f2); buffer[1] := ptr_f2^; ptr_f2:=ptr_f2+1; buffer[0] := ptr_f2^; ptr_f2:=ptr_f2+1; buffer[3] := ptr_f2^; ptr_f2:=ptr_f2+1; buffer[2] := ptr_f2^; ptr_f2:=ptr_f2+1; buffer[5] := ptr_f2^; ptr_f2:=ptr_f2+1; buffer[4] := ptr_f2^; ptr_f2:=ptr_f2+1; buffer[7] := ptr_f2^; ptr_f2:=ptr_f2+1; buffer[6] := ptr_f2^;
Например почему буфферы идут не [0] [1] [2] [3] , а [1] [0] [3] [2]?
Или, что значит запись ptr_f2^?
А, что теперь осталось, чтобы получать данные с ТРМ и передавать в него же с hmi через плк63 через интерфейс?
Последний раз редактировалось kondor3000; 15.05.2024 в 19:03.