This is topic DWORD -> Word и обратно in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/31/t/001793.html

Posted by Victor_m (Участник № / Member № 9501) on :
 
Доброго времени суток. Начинаю остаивать Trace Mode 6.10 (бесплатная версия). Столкнулся с небольшими трудностями с записью 4 байтового значения в ОВЕН СИ30. Возник ряд вопросов относительно ТM и ее работы с DWORD.

1) Возможна ли обработка и отображение на ГЭ считываемого 4 байтового значения в формате UDINT без принудительной склейки двух слов в DWORD с помощью программных решений?
2) Каким образом отправить в счетчик СИ30 четырех байтовое значение или опять необходимо какие-то программные манипуляции? С чтением и записью двухбайтовых значений проблем нет. По отдельности слова засылаются, СИ30 их суммирует и выдает правильное значение. А вот отправить все байты одной посылкой пока не получатся. Пробовал разные варианты с каналом HEX32 и т.д. Как я понимаю, проблема состоит в разделении DWORD в 2xWord.Спасибо за ответ.
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Здравствуйте.
Актуальная версия Trace Mode 6 - 6.10.2

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

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

Так же в описании к СИ30 в параметрах, у которых указан размер "Unsigned long (4 байта)" зафиксированы два modbus-адреса.
Т.е., это непосредственно СИ30 читает два регистра и интерпретирует их как одно 4-х байтовое значение.
Запись необходимо производить групповой записью в оба регистра.
 
Posted by Victor_m (Участник № / Member № 9501) on :
 
Да, протокол связи Modbus RTU.
Я знаю, что Modbus не поддерживает передачу 4х байтовые значения. В это и суть вопроса...
Я хочу передать значение DEC 999999 в CИ30. Создаю элемент Значение аргумента, привязываю его к каналу HEX32 тип данный UDINT и соответственно, упираюсь в то, что я не могу передать это значение непосредственно в СИ30, т.к. функция 3,4,10 Modbus не поддерживает передачу 4х байт данных. Т.е. мне нужно предварительно разделить DWORD на 2хWord... Поэтому, передача двух слов не представляется возможным, потому, что они даже не сформированы ТМ.
 
Posted by Victor_m (Участник № / Member № 9501) on :
 
Соответственно,групповая запись предполагает наличие несколько слов, которые будут записаны друг за другом. В моем случае, ТМ формирует DWORD, которое записать указанным Вам способом нельзя.
 
Posted by Victor_m (Участник № / Member № 9501) on :
 
Но я выход нашел, по средством функций DHL и HLD. Я преобразую входные 4 байта в DWORD, а выходные 4 байта в два Word. Но, это действительно неудобство, потому как налагают дополнительные элементы для преобразования значения...

Ещё один интересный вопрос. Можно ли на одном элементе Значение аргумента производить отображение значения и его ввод? Опять забегая на перёд, мне удалось вывести в панели МРВ соответствующее значение. Но к сожалению, отображение происхотид с привязков к Реальному значениею, а ввод к Входному. Объединить не получилось. Может Вы подскажите, что я делаю не так.
 
Posted by Victor_m (Участник № / Member № 9501) on :
 
Прошу прощения, но за выходные накопились ещё вопросы, которые мягко говоря ставят меня в недоумение. На фото показан результат преобразования с Float в UINT. В каждом из примеров результаты разные. Что это такое?
 -
 -
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
quote:
Отправитель / Originally posted by Victor_m:
Т.е. мне нужно предварительно разделить DWORD на 2хWord... Поэтому, передача двух слов не представляется возможным, потому, что они даже не сформированы ТМ.

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

Указанные типы данных поддерживаются в ТМ6. Что бы Разделить один DINT/UDINT на два INT/UINT используйте в FBD-блоках блок HLD
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
quote:
Отправитель / Originally posted by Victor_m:
Но я выход нашел, по средством функций DHL и HLD. Я преобразую входные 4 байта в DWORD, а выходные 4 байта в два Word. Но, это действительно неудобство, потому как налагают дополнительные элементы для преобразования значения...

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


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


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

Этот вопрос не относится к тематике данного топика.
Создайте отдельный топик и подробно изложите решаемую задачу.
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
quote:
Отправитель / Originally posted by Victor_m:
На фото показан результат преобразования с Float в UINT. В каждом из примеров результаты разные. Что это такое?

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

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

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


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2