Вход на форум 
В начало e-Mail

Форум

Ресурсы Rockwell

Product Directory

Essential Components

Literature Library

Knowledge Base

Electronic News&Magazines

Блог

Encompass Program

Product Certification

  
Smart Solutions VDT :: Просмотр темы - чтение MODBUS данных MSG инструкцией в ML 1100
 FAQFAQ   ПоискПоиск   ГруппыГруппы   ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

чтение MODBUS данных MSG инструкцией в ML 1100

 
Начать новую тему   Ответить на тему    Список форумов Smart Solutions VDT -> Программные средства систем автоматизации
Предыдущая тема :: Следующая тема  
Автор Сообщение
b503
Новичок
Новичок


Зарегистрирован: Jun 07, 2008
Сообщения: 1
Рейтинг: +0/-0

СообщениеДобавлено: Сб 07 Июн, 2008 13:55:48    Заголовок сообщения: чтение MODBUS данных MSG инструкцией в ML 1100 Ответить с цитатой

Здравствуйте! Имеется стороннее устройство, данные с него выходят по MODBUS RTU. Решил данные собирать контроллером, т.к. железо понадежней будет софта.
Контроллер есть микро лоджик 1100.
0-вой порт сконфигурировал по модбас.
С помощью MSG инструкции читаю INTEGER данные.
В кач-ве источника пока использую софт (MODBUS SLAVE)- он в указанный порт шлет пакеты.
но вот при попытке прочитать FLOAT значения ничего не выходит, в моих ячейках флоат как были 0, так и есть,
В настройках:
size inelement 1, Data 32 (для интежер дата-16)
в чем может быть проблема? С модбасом почти не работал.
Может софт не выдает флоат значения.
Думал вытащить 2 интежер ячейки и с помощью функции COP (как я делал в SLC) из нескольких интежер получать 1 флоат, но в Mикролоджиках в функции COP файлы sourse и dest должны быть одного типа.

Неужели на микролоджике не получиться собрать данные? на SLC это на порядок будет дороже.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
oldDad
Site Admin
Site Admin


Зарегистрирован: May 05, 2005
Сообщения: 2773
Рейтинг: +89/-5

СообщениеДобавлено: Пн 09 Июн, 2008 5:32:19    Заголовок сообщения: Ответить с цитатой

Примите по ModBus два 16-битных слова. Попробуйте с помощью CPW скопировать два значения типа integer (16 бит) в два отдельных длинных 32-битных регистра.
Затем сдвиньте с помощью Bit Shift Left «верхнее» слово, занимающее 16 младших бит верхнего 32-битного регистра, влево. Они окажутся в верхней части регистра.
Затем с помощью маски, которая предохранит верхние 16 бит от перезаписи, добавьте из второго слова 16 младших бит. Возможно, получится то, что Вы хотите.

Потом можно с помощью CPW скопировать полученный реконструированный результат куда-нибудь во float. Только не забудьте указать длину 2.

Цитата:
Может софт не выдает флоат значения.
Может и не выдаёт.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Smart Solutions VDT -> Программные средства систем автоматизации Часовой пояс: GMT + 1
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах

Powered by phpBB © 2001, 2005 phpBB Group
Яндекс цитирования

Smart Solutions VDT GmbH | Friedrich-List-Allee 38, D-41844 Wegberg-Wildenrath, Germany
Tel.: +49 2432 933 57 83 | e-Mail: office@vdt-solutions.de
Все товарные знаки и торговые марки являются собственностью их владельцев.
При использовании материалов сайта ссылка на данный сайт обязательна.
Открытие страницы: 0.132 секунды
/n