Спасибо что не прошли мимо. Прикладываю скрины настроек. плк_1.JPG
Спасибо что не прошли мимо. Прикладываю скрины настроек. плк_1.JPG
плк.JPG Вот ещё сразу всё не прикрипилосьпр 103.JPG
Ну и где у вас 32 битная переменная? У вас все 16 битные и передаются они через 1 регистр.
32 битная переменная занимает 2 регистра.
И только в ПЛК вы неявно преобразуете WORD в DWORD. Толку от этого никакого, вы должны 32 битную переменную передавать и принимать.
Читайте про типы данных, их соответствие, верхний предел и преобразования типов, всё есть в справках.
Последний раз редактировалось kondor3000; 01.06.2022 в 13:36.
Уважаемый kondor умом понимаю что должен передать 32 бит и принять, но никак не пойму как это сделать. Лоджик сам ведь раздаёт регистры, удалил переменные создал новые в этот раз выдал двумя регистрами, сам не понял как, удалил создал новые всё. Но до конца не уверен что правильно. И смущает что в ПЛК считывает только registor input он же WORD? Посмотри пожалуйста...плк.JPGпр 103.JPG
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Прошу прощения но вроде с CoDeSys связано. Больше не буду. Пойду в ПР поищу.
Забейте в ПР, одну переменную в 2 регистра, надо сделать со смещением. 1 Передача 323 битного числа.jpg
register input он же WORD, значит надо использовать не его, а где DWORD написано))) 1 DWORD.jpg
Последний раз редактировалось kondor3000; 02.06.2022 в 08:39.
Какая разница - 32 или 16- битный счетчик в ПР ? Если 32-бита, вопрос в только в том - ответит ли ПР (не знаю) если запросить только младшее слово у 32-х битного значения и не опрашивать реже цикла заполнения этого младшего слова (это надо умудрится)
не боись, где-то в плк :
Всё. Для 16-ти битного на ПР тоже самоеКод:_cnt : все равно что 16-ти битное где-то в области обмена ... var cnt_ : word; нужный_счетчик : dword; end_var ---- нужный_счетчик := (нужный_счетчик + dword_to_word(cnt_ - _cnt)) mod 5_000_001; //по заявкам телезрителей cnt_ := _cnt;
Последний раз редактировалось Валенок; 01.06.2022 в 14:58.
Вам надо 32 битное число разобрать на старший и младший регистр и передать, здесь подобная тема https://owen.ru/forum/showthread.php?t=34198&page=2
В настройках UMD (Универсал модбас девайс) возможно придётся поменять последнюю настройку на Native или поменять местами младший и старший регистры.
А принимать уже как DWORD.
Проверить передачу с ПР можно хоть Owen OPC Server, ставится за 2 минуты https://owen.ru/product/new_opc_server
ЗЫ: Выше выложил скрины.
Последний раз редактировалось kondor3000; 02.06.2022 в 15:51.