Segnetics

Вернуться   Segnetics > Форум Segnetics > Вопросы о программировании

Вопросы о программировании Вопросы, касающиеся программирования на FBD

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.12.2019, 17:41   #1
_vit_
Новичок
 
Регистрация: Sep 2019
Сообщения: 26
Благодарил(а): 8 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Описание типа данных

Добрый день!!! Подскажите как описать регистр если он Long integer.
_vit_ вне форума   Ответить с цитированием
Старый 06.12.2019, 18:31   #2
Ilya J.
Сотрудник Сегнетикс
 
Аватара для Ilya J.
 
Регистрация: Mar 2016
Адрес: SPb
Сообщения: 4 302
Благодарил(а): 0 раз(а)
Поблагодарили: 254 раз(а) в 250 сообщениях
По умолчанию Ответ: Описание типа данных

Цитата
Сообщение от _vit_ Посмотреть сообщение
Добрый день!!! Подскажите как описать регистр если он Long integer.
Что?


__________________
Если ничто другое не помогает, прочтите, наконец, инструкцию
Ilya J. сейчас на форуме   Ответить с цитированием
Старый 06.12.2019, 20:52   #3
_vit_
Новичок
 
Регистрация: Sep 2019
Сообщения: 26
Благодарил(а): 8 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Описание типа данных

Цитата:
Сообщение от Ilya J. Посмотреть сообщение
Что?
Есть контроллер SMH2010 к нему подключено "некое" устройство с которого нудно вытащить параметр и он имеет данный тип.
_vit_ вне форума   Ответить с цитированием
Старый 06.12.2019, 21:33   #4
New
Senior Member
 
Регистрация: May 2009
Сообщения: 1 034
Благодарил(а): 9 раз(а)
Поблагодарили: 22 раз(а) в 22 сообщениях
По умолчанию Ответ: Описание типа данных

Цитата
Сообщение от _vit_ Посмотреть сообщение
нудно вытащить
Прям оговорка в тему. Вы б толком описали, что за переменная вам нужна.


__________________
RTFM
New вне форума   Ответить с цитированием
Старый 07.12.2019, 04:45   #5
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 022
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Описание типа данных

Цитата
Сообщение от _vit_ Посмотреть сообщение
Есть контроллер SMH2010 к нему подключено "некое" устройство с которого нудно вытащить параметр и он имеет данный тип.
long int в 16-разрядной системе - это 4 байта. В 32-разрядной - это 8 байтов. В 64-разрядной - это 16 байтов.

Регистр в модбасе всегда состоит из 2 байтов. Ни из одного, не из трёх. А всегда из двух.

По этому вас и переспрашивают, что ничерта не понятно, то конкретно вам нужно


PS. Переспрашивающие ещё наверняка надеются, что вы хоть одним глазком, но всё же глянули справку. Т.к. я уверен на 99%, что на свой вопрос вы сможете ответить самостоятельно, банально открыв лоджик, создав в нём на порту устройство и попытавшись добавить хотя бы одну переменную. Там настолько всё на поверхности, что прям ваще.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 07.12.2019, 23:27   #6
ailcat
Senior Member
 
Аватара для ailcat
 
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили: 2 раз(а) в 2 сообщениях
По умолчанию Ответ: Описание типа данных

Цитата
Сообщение от _vit_ Посмотреть сообщение
"некое" устройство, с которого нужно вытащить параметр и он имеет данный тип.
Здесь, конечно, всё проще, чем пугают уважаемые сотрудники Segnetics - но уточнение от вас все же потребуется.
Дело в том, что термин LongInteger является пережитком языка программирования Pascal, поддержанным в Borland С и Turbo Assembler - и в этих языках он эквивалентен стандартному типу Long (32 бит, 4 байта), изначально поддерживаемому сегнетиксовскими контроллерами.
Но (ох уже это "но"!) майкрософт при переходе на 64-битные системы, вместо ввода нового названия для возникшего типа данных (64 бита, 8 байт) - по непонятным причинам решил использовать для него отмиравшее название, означавшее совсем другое...

Так что вам поневоле придется узнать, 32-битная или 64-битная переменная у вас отдается под таким типом.
Лайфхак: если это несерийное или самодельное устройство, созданное в эпоху 16-32-битных систем (то есть разработанное больше 10-12 лет назад) - просто используйте тип Long, только через макрос (борландовский IntegerLong отличается от интеловско-майкрософтовского Long порядком хранения байтов в памяти - макрос это исправляет)
ailcat вне форума   Ответить с цитированием
Старый 26.02.2020, 21:26   #7
_vit_
Новичок
 
Регистрация: Sep 2019
Сообщения: 26
Благодарил(а): 8 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Описание типа данных

Если честно я не могу понять как это сделать и может ли вообще это значение считать SMH2010. Вот это значение в документации на устройство.
Миниатюры
Нажмите на картинку для увеличения

Название:  Снимок.JPG
Просмотров: 101
Размер:  29.9 Кбайт  
_vit_ вне форума   Ответить с цитированием
Старый 26.02.2020, 21:57   #8
младшой
Senior Member
 
Регистрация: May 2010
Адрес: Москва
Сообщения: 857
Благодарил(а): 4 раз(а)
Поблагодарили: 85 раз(а) в 66 сообщениях
По умолчанию Ответ: Описание типа данных

С первого взгляда может.
Миниатюры
Нажмите на картинку для увеличения

Название:  2020-02-26_20-54-55.png
Просмотров: 119
Размер:  18.1 Кбайт  
младшой вне форума   Ответить с цитированием
Старый 27.02.2020, 12:26   #9
Ilya J.
Сотрудник Сегнетикс
 
Аватара для Ilya J.
 
Регистрация: Mar 2016
Адрес: SPb
Сообщения: 4 302
Благодарил(а): 0 раз(а)
Поблагодарили: 254 раз(а) в 250 сообщениях
По умолчанию Ответ: Описание типа данных

Цитата
Сообщение от _vit_ Посмотреть сообщение
Если честно я не могу понять как это сделать и может ли вообще это значение считать SMH2010. Вот это значение в документации на устройство.
Попробуйте по примеру Младшого.

Как добавить карту переменных устройства в проект понимаете?


__________________
Если ничто другое не помогает, прочтите, наконец, инструкцию
Ilya J. сейчас на форуме   Ответить с цитированием
Старый 28.02.2020, 20:01   #10
_vit_
Новичок
 
Регистрация: Sep 2019
Сообщения: 26
Благодарил(а): 8 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Описание типа данных

Цитата:
Сообщение от Ilya J. Посмотреть сообщение
Попробуйте по примеру Младшого.

Как добавить карту переменных устройства в проект понимаете?
Да конечно знаю,я может еще лузер но не совсем , вот что получается если создать такую переменную, выходит такое число хотя в устройстве внесено другое (123456), если поставить тип переменой integer и если значение будет до 6 символов то оно выводится корректно.
Изображения
 
_vit_ вне форума   Ответить с цитированием
Старый 28.02.2020, 20:19   #11
Ilya J.
Сотрудник Сегнетикс
 
Аватара для Ilya J.
 
Регистрация: Mar 2016
Адрес: SPb
Сообщения: 4 302
Благодарил(а): 0 раз(а)
Поблагодарили: 254 раз(а) в 250 сообщениях
По умолчанию Ответ: Описание типа данных

Цитата
Сообщение от _vit_ Посмотреть сообщение
Да конечно знаю,я может еще лузер но не совсем , вот что получается если создать такую переменную, выходит такое число хотя в устройстве внесено другое (123456), если поставить тип переменой integer и если значение будет до 6 символов то оно выводится корректно.
А зачем считывать серийный номер?)


__________________
Если ничто другое не помогает, прочтите, наконец, инструкцию
Ilya J. сейчас на форуме   Ответить с цитированием
Старый 28.02.2020, 20:23   #12
младшой
Senior Member
 
Регистрация: May 2010
Адрес: Москва
Сообщения: 857
Благодарил(а): 4 раз(а)
Поблагодарили: 85 раз(а) в 66 сообщениях
По умолчанию Ответ: Описание типа данных

Вы уверены, что пока на устройстве было 123456, контроллер считывал 16515072? Я что-то не усматриваю связи между этими числами.

Но так то можно поэкспериментировать со смещением адреса и/или порядком младших и старших слов.
младшой вне форума   Ответить с цитированием
Старый 28.02.2020, 20:29   #13
_vit_
Новичок
 
Регистрация: Sep 2019
Сообщения: 26
Благодарил(а): 8 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Описание типа данных

Цитата:
Сообщение от Ilya J. Посмотреть сообщение
А зачем считывать серийный номер?)
Что бы вывести его на дисплей, т.к что бы его посмотреть приходится подключаться к устройству через ПК, его можно вывести будет в систему ТМ, для контроля за подобными устройствами их учету.


Добавлено через 2 минуты


Цитата
Сообщение от младшой Посмотреть сообщение
Вы уверены, что пока на устройстве было 123456, контроллер считывал 16515072? Я что-то не усматриваю связи между этими числами.

Но так то можно поэкспериментировать со смещением адреса и/или порядком младших и старших слов.
Там внесено именно это число т.к я сам его внес , вот и я не усмотрел связи между этими числами
_vit_ вне форума   Ответить с цитированием
Старый 01.03.2020, 16:50   #14
voltel
Senior Member
 
Регистрация: Aug 2018
Адрес: Екатеринбург
Сообщения: 106
Благодарил(а): 0 раз(а)
Поблагодарили: 1 раз в 1 сообщении
По умолчанию Ответ: Описание типа данных

Цитата
Сообщение от _vit_ Посмотреть сообщение

Добавлено через 2 минуты
Там внесено именно это число т.к я сам его внес , вот и я не усмотрел связи между этими числами
Попробуйте макрос из базы знаний, который порядок байт меняет. У меня было такое, если лонг читать и не та последовательность байт, то число кардинально отличается. У меня должно было приходить 126, а приходило 9 с чем то миллионов или 900 с чем то тысяч, точно не помню. Поменял байты местами пришло 126.
voltel вне форума   Ответить с цитированием
Благодарность от:
Старый 02.03.2020, 19:23   #15
_vit_
Новичок
 
Регистрация: Sep 2019
Сообщения: 26
Благодарил(а): 8 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Описание типа данных

Цитата
Сообщение от voltel Посмотреть сообщение
Попробуйте макрос из базы знаний, который порядок байт меняет. У меня было такое, если лонг читать и не та последовательность байт, то число кардинально отличается. У меня должно было приходить 126, а приходило 9 с чем то миллионов или 900 с чем то тысяч, точно не помню. Поменял байты местами пришло 126.
А не подскажите как называется или может есть сам макрос, а то сейчас будет целая проблема его еще найти
_vit_ вне форума   Ответить с цитированием
Старый 02.03.2020, 19:34   #16
Ilya J.
Сотрудник Сегнетикс
 
Аватара для Ilya J.
 
Регистрация: Mar 2016
Адрес: SPb
Сообщения: 4 302
Благодарил(а): 0 раз(а)
Поблагодарили: 254 раз(а) в 250 сообщениях
По умолчанию Ответ: Описание типа данных

Цитата
Сообщение от _vit_ Посмотреть сообщение
А не подскажите как называется или может есть сам макрос, а то сейчас будет целая проблема его еще найти
Главная страница форума - База знаний - библиотека макросов - библиотечка разработчика https://forum.segnetics.com/showthread.php?t=736


__________________
Если ничто другое не помогает, прочтите, наконец, инструкцию
Ilya J. сейчас на форуме   Ответить с цитированием
Старый 03.03.2020, 00:07   #17
младшой
Senior Member
 
Регистрация: May 2010
Адрес: Москва
Сообщения: 857
Благодарил(а): 4 раз(а)
Поблагодарили: 85 раз(а) в 66 сообщениях
По умолчанию Ответ: Описание типа данных

Как бы 16515072 в двоичном виде 0000000011111100 0000000000000000
123456 в двоичном виде 0000000000000001 1110001001000000

0000000011111100 0000000000000000
0000000000000001 1110001001000000

я что-то не вижу, как надо переставить слова или байты, чтобы из одного получилось другое
младшой вне форума   Ответить с цитированием
Старый 03.03.2020, 07:47   #18
Pushin
Senior Member
 
Аватара для Pushin
 
Регистрация: Nov 2017
Адрес: Новосибирск
Сообщения: 196
Благодарил(а): 15 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Описание типа данных

Цитата
Сообщение от младшой Посмотреть сообщение
Как бы 16515072 в двоичном виде 0000000011111100 0000000000000000
123456 в двоичном виде 0000000000000001 1110001001000000

0000000011111100 0000000000000000
0000000000000001 1110001001000000

я что-то не вижу, как надо переставить слова или байты, чтобы из одного получилось другое
Можно попробовать другие значения вбить и выписать их эквивалент в лоджике. Сделать таких экспериментов пять. Может удастся закономерность увидеть?
Pushin вне форума   Ответить с цитированием
Старый 04.03.2020, 07:03   #19
СВМ
Senior Member
 
Регистрация: Jan 2012
Адрес: Саратов
Сообщения: 179
Благодарил(а): 1 раз(а)
Поблагодарили: 3 раз(а) в 3 сообщениях
По умолчанию Ответ: Описание типа данных

Цитата
Сообщение от _vit_ Посмотреть сообщение
А не подскажите как называется или может есть сам макрос, а то сейчас будет целая проблема его еще найти
Попробуйте:
Вложения
Тип файла: msl Byteswapper_int_long.msl (30.6 Кбайт, 40 просмотров)
СВМ вне форума   Ответить с цитированием
Благодарность от:
Старый 04.03.2020, 20:28   #20
_vit_
Новичок
 
Регистрация: Sep 2019
Сообщения: 26
Благодарил(а): 8 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Описание типа данных

Цитата
Сообщение от СВМ Посмотреть сообщение
Попробуйте:
В кратце, быстро потестировал но результат есть, добавил в карту две переменные с типом integer как в карте регистров modbus на устройство, на выходе то число что я в него внес 123456,
Миниатюры
Нажмите на картинку для увеличения

Название:  Снимок.JPG
Просмотров: 68
Размер:  19.1 Кбайт   Нажмите на картинку для увеличения

Название:  1.JPG
Просмотров: 42
Размер:  33.6 Кбайт  
_vit_ вне форума   Ответить с цитированием
Старый 12.03.2020, 20:15   #21
_vit_
Новичок
 
Регистрация: Sep 2019
Сообщения: 26
Благодарил(а): 8 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Описание типа данных

Цитата
Сообщение от СВМ Посмотреть сообщение
Попробуйте:
А такой тип можно как то описать?
Миниатюры
Нажмите на картинку для увеличения

Название:  Снимок.JPG
Просмотров: 64
Размер:  34.8 Кбайт  
_vit_ вне форума   Ответить с цитированием
Старый 12.03.2020, 21:15   #22
New
Senior Member
 
Регистрация: May 2009
Сообщения: 1 034
Благодарил(а): 9 раз(а)
Поблагодарили: 22 раз(а) в 22 сообщениях
По умолчанию Ответ: Описание типа данных

Цитата
Сообщение от _vit_ Посмотреть сообщение
А такой тип можно как то описать?
real


__________________
RTFM
New вне форума   Ответить с цитированием
Старый 13.03.2020, 18:15   #23
_vit_
Новичок
 
Регистрация: Sep 2019
Сообщения: 26
Благодарил(а): 8 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Описание типа данных

Цитата
Сообщение от New Посмотреть сообщение
real
Не все так просто я не настолько глуп не что не выводит переменная с таким типом.
_vit_ вне форума   Ответить с цитированием
Старый 13.03.2020, 18:23   #24
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 022
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Описание типа данных

Цитата
Сообщение от _vit_ Посмотреть сообщение
Не все так просто я не настолько глуп не что не выводит переменная с таким типом.
За глупость вашу не скажу, но таки с наблюдательностью проблемы имеются

https://forum.segnetics.com/showthread.php?t=461


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Благодарность от:
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
"Стандартная" программа управления вентиляцией. Выбор типа датчика DiJo Вопросы о программировании 20 23.03.2023 18:52
Получение данных на контроллер через COM stepan Связь с внешним миром 31 11.03.2020 17:03
Pixel as slave, с сохранением данных в EEPROM uzzzer Вопросы о Pixel 10 23.08.2018 16:42
Получение данных от Pixel по Modbus ngs Связь с внешним миром 5 30.08.2016 15:04
Как изменить формат данных Modbus в 2Gi на 8N1? AlekSir Связь с внешним миром 29 23.04.2013 09:42


Часовой пояс GMT +4, время: 12:52.


Версия vBulletin: 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2023