Форум TRACE MODE: техническая поддержка Послать новую тему / Post New Topic  Послать ответ / Post A Reply
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 6 » TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version » DWORD -> Word и обратно

   
Автор / Author Тема / Topic: DWORD -> Word и обратно
Victor_m
Junior Member / Новичок
Участник № / Member № 9501


Icon 1 отправлено / posted      Профиль для / Profile for Victor_m           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Доброго времени суток. Начинаю остаивать Trace Mode 6.10 (бесплатная версия). Столкнулся с небольшими трудностями с записью 4 байтового значения в ОВЕН СИ30. Возник ряд вопросов относительно ТM и ее работы с DWORD.

1) Возможна ли обработка и отображение на ГЭ считываемого 4 байтового значения в формате UDINT без принудительной склейки двух слов в DWORD с помощью программных решений?
2) Каким образом отправить в счетчик СИ30 четырех байтовое значение или опять необходимо какие-то программные манипуляции? С чтением и записью двухбайтовых значений проблем нет. По отдельности слова засылаются, СИ30 их суммирует и выдает правильное значение. А вот отправить все байты одной посылкой пока не получатся. Пробовал разные варианты с каналом HEX32 и т.д. Как я понимаю, проблема состоит в разделении DWORD в 2xWord.Спасибо за ответ.

Сообщения / Posts 5 | Из / From: РФ  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте.
Актуальная версия Trace Mode 6 - 6.10.2

Вы работаете с ОВЕН СИ30 по ModBus RTU?

В стандарте ModBus нет понятия 4-х байтовое значение или DWORD.

Так же в описании к СИ30 в параметрах, у которых указан размер "Unsigned long (4 байта)" зафиксированы два modbus-адреса.
Т.е., это непосредственно СИ30 читает два регистра и интерпретирует их как одно 4-х байтовое значение.
Запись необходимо производить групповой записью в оба регистра.

Сообщения / Posts 17109 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Victor_m
Junior Member / Новичок
Участник № / Member № 9501


Icon 1 отправлено / posted      Профиль для / Profile for Victor_m           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Да, протокол связи Modbus RTU.
Я знаю, что Modbus не поддерживает передачу 4х байтовые значения. В это и суть вопроса...
Я хочу передать значение DEC 999999 в CИ30. Создаю элемент Значение аргумента, привязываю его к каналу HEX32 тип данный UDINT и соответственно, упираюсь в то, что я не могу передать это значение непосредственно в СИ30, т.к. функция 3,4,10 Modbus не поддерживает передачу 4х байт данных. Т.е. мне нужно предварительно разделить DWORD на 2хWord... Поэтому, передача двух слов не представляется возможным, потому, что они даже не сформированы ТМ.

Сообщения / Posts 5 | Из / From: РФ  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Victor_m
Junior Member / Новичок
Участник № / Member № 9501


Icon 1 отправлено / posted      Профиль для / Profile for Victor_m           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Соответственно,групповая запись предполагает наличие несколько слов, которые будут записаны друг за другом. В моем случае, ТМ формирует DWORD, которое записать указанным Вам способом нельзя.
Сообщения / Posts 5 | Из / From: РФ  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Victor_m
Junior Member / Новичок
Участник № / Member № 9501


Icon 1 отправлено / posted      Профиль для / Profile for Victor_m           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Но я выход нашел, по средством функций DHL и HLD. Я преобразую входные 4 байта в DWORD, а выходные 4 байта в два Word. Но, это действительно неудобство, потому как налагают дополнительные элементы для преобразования значения...

Ещё один интересный вопрос. Можно ли на одном элементе Значение аргумента производить отображение значения и его ввод? Опять забегая на перёд, мне удалось вывести в панели МРВ соответствующее значение. Но к сожалению, отображение происхотид с привязков к Реальному значениею, а ввод к Входному. Объединить не получилось. Может Вы подскажите, что я делаю не так.

Сообщения / Posts 5 | Из / From: РФ  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Victor_m
Junior Member / Новичок
Участник № / Member № 9501


Icon 1 отправлено / posted      Профиль для / Profile for Victor_m           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Прошу прощения, но за выходные накопились ещё вопросы, которые мягко говоря ставят меня в недоумение. На фото показан результат преобразования с Float в UINT. В каждом из примеров результаты разные. Что это такое?
 -
 -

Сообщения / Posts 5 | Из / From: РФ  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
quote:
Отправитель / Originally posted by Victor_m:
Т.е. мне нужно предварительно разделить DWORD на 2хWord... Поэтому, передача двух слов не представляется возможным, потому, что они даже не сформированы ТМ.

Верно. DWORD (он же 32 битный DINT или UDINT) необходимо разделить на два WORD'а (он же 16битный INT или UINT).

Указанные типы данных поддерживаются в ТМ6. Что бы Разделить один DINT/UDINT на два INT/UINT используйте в FBD-блоках блок HLD

Сообщения / Posts 17109 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
quote:
Отправитель / Originally posted by Victor_m:
Но я выход нашел, по средством функций DHL и HLD. Я преобразую входные 4 байта в DWORD, а выходные 4 байта в два Word. Но, это действительно неудобство, потому как налагают дополнительные элементы для преобразования значения...

Как мы обсудили в начале топика - В стандарте ModBus нет понятия 4-х байтовое значение или DWORD.


quote:
Отправитель / Originally posted by Victor_m:


Ещё один интересный вопрос. Можно ли на одном элементе Значение аргумента производить отображение значения и его ввод? Опять забегая на перёд, мне удалось вывести в панели МРВ соответствующее значение. Но к сожалению, отображение происхотид с привязков к Реальному значениею, а ввод к Входному. Объединить не получилось. Может Вы подскажите, что я делаю не так.

Этот вопрос не относится к тематике данного топика.
Создайте отдельный топик и подробно изложите решаемую задачу.

Сообщения / Posts 17109 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
quote:
Отправитель / Originally posted by Victor_m:
На фото показан результат преобразования с Float в UINT. В каждом из примеров результаты разные. Что это такое?

Вы пытаетесь вещественное число разложить на два целочисленных без преобразования.

Для начала над входным аргументом (вещественный) проведите всю мат.обработку и передайте в выходной аргумент программы (он типа inout, целочисленный).

Затем целочисленный аргумент (inout) обработайте блоком HLD.

Сообщения / Posts 17109 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

Quick Reply
Сообщение / Message:

HTML код не разрешен. / HTML is not enabled.
UBB код разрешен. / UBB Code is enabled.

Значки Graemlins / Instant Graemlins
   


Послать новую тему / Post New Topic  Послать ответ / Post A Reply Закрыть тему / Close Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2