This is topic Mitsubishi FX3u + TraceMode 6.07 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/000874.html

Posted by Anatoly S. (Участник № / Member № 4459) on :
 
Подключение ПЛК Mitsubishi MELSEC FX3U к SCADA TRACE MODE
http://www.adastra.ru/products/drivers/melsec_fx3u/

Открываю этот пример, меняю адрес регистра, IP адрес, порт на свои значения, сохраняю для профайлера, запускаю профайлер.
Нажимаю запуск, профайлер вылетает. В логе записано только START и всё, даже STOP нету.
В чём может причина?
В примере ничего не говорилось про то, как должен быть настроен контроллер FX3u. Поддерживает ли TraceMode протокол UDP или связь с контроллером осуществляется на базе TCP/IP?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Протокол обмена от производителя, который используется для этого драйвера, ориентирован на TCP.
У драйвера по этому протоколу добавлены новые функции, в связи с чем несколько расширился формат записи параметров в строке "Дполнителько" соответствующего "Источника".
После <IP-адрес>:<порт> надо поставить "точку с запятой" - ";".
Контроллер должен предоставлять информацию по выбраннму Вами регистру.
 
Posted by Anatoly S. (Участник № / Member № 4459) on :
 
А какие новые функции добавлены???
Я пытаюсь считать с контроллера FX3u число типа FLOAT допустим 27,4, а TRACEMODE считывает число 13107. То есть старшее и младшее слова меняются местами. Как можно нормально считать FLOAT?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Поскольку вещественные числа в контроллерах Mitsubishi, как правило, хранятся в D-регистрах как {вещественное число} * 10, то Вам необходимо связать описатель Источника данных в адресном пространстве контроллера с каналом класса FLOAT и внутри этого канала выполнить необходимую обработку - в нашем случае использовать множитель 0.1
 
Posted by Anatoly S. (Участник № / Member № 4459) on :
 
Данный совет не помог моей проблеме, в итоге вместо 27,4 я получил число 1310,7. Уважаемая тех.поддержка, пожалуйста, помогите. Я Вам отправил письмо на hotline3@adastra.ru - прочтите, пожалуйста.
Продублирую здесь вопрос:
Не могли бы вы, пожалуйста, ответить на такие вопросы:

1. При считывании по протоколу Melsec числа типа FLOAT из области памяти D ПЛК Mitsubishi FX3u, в TRACEMODE получаем число с неправильной последовательностью байт, а именно старшее и младшее слова поменяны местами (27,4 (0x333341DB) считывается как 13107 (0x41DB3333)). Как изменить порядок считывания байт?

2. Как в среде TRACEMODE организовать передачу считанных данных по одному протоколу (например, Melsec) передать дальше по другому протоколу (например, МЭК 104). То есть я настроил отдельно считывание по MELSEC, настроил отправку пакетов по МЭК 104, как организовать связь между считываемыми и отправляемыми данными (может быть в "программе" что-то навроде "a_IEC = a_MC;" или еще где-то, у меня ощущение, что это должно делаться гораздо проще)?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. Если в памяти контроллера в двух (четырех) регистрах типа D формируется вещественное число, то и считывать в ПК нужно оба (четыре) этих регистра в самом простом варианте в два (четыре)канала класса HEX16 и с помощью программы "собирать" из них вещественное число с последующей записью в канал класса FLOAT. Под "сборкой" понимается формирование мантиссы, порядка и знаков мантиссы и порядка вещественного числа. Более сложный вариант предполагает выполнение группого запроса с помощью канала CALL ChGrReq с получением содержимого регистров на его аргументах, "сборку" вещественных чисел программой и помещение результатов в каналы FLOAT. А вообще, лучше оперировать в контроллере целочисленными значениями и, зная вес разрядов, собирать их на ПК как было предложено в предыдущем ответе.
2. Ощущение на этот раз не подвело, канал CALL с типом вызова Move.
 
Posted by Anatoly S. (Участник № / Member № 4459) on :
 
Спасибо большое за ответ и совет. К сожалению, нам не представляется возможности изменить тип параметров с Float на Int, т.к. программа уже готова и отлажена в контроллере и менять типы переменных у большого количества параметров не желательно.

Формат хранения в памяти контроллера стандартный, 4хбайтовый. Читаю FLOAT из одного регистра D70.
Я так понимаю, что FLOAT TM6 также 4хбайтовый.

Насколько я знаю в протоколе MODBUS можно изменять последовательность байт (0,1,2,3 или 1,0,3,2 и т.д.). Меня интересует возможно ли это сделать для протокола Melsec или это получается недоработка TM6 в том, что числа типа Float считываются неправильно?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Ваша проект сделан так, что в канал считывается содержимое одного д в у х б а й т о в о г о регистра D70. То что в PLC возможно хранение вещественного числа в двух смежных D-регистрах каналу TRACE MODE не известно. Кстати, в документации melsec отсутствует прямое указание на "стандартный 4-х байтовый" формат хранения....
Для протокола Modbus не существует "стандартного" представления вещественного числа, но поскольку данный протокол весьма распространен и его применяют множество разработчиков, подчас довольно своеобразно трактующие представление вещественных чисел, то и отмеченная Вами возможность имеется в нашей системе.
 
Posted by Anatoly S. (Участник № / Member № 4459) on :
 
Спасибо большое за разъяснение, теперь как-то всё встало на свои места (что касаемо регистров).
Вы уже ответили в общих чертах каким образом считывать FLOAT, который хранится в двух регистрах D:

quote:

нужно оба (четыре) этих регистра в самом простом варианте в два (четыре)канала класса HEX16 и с помощью программы "собирать" из них вещественное число с последующей записью в канал класса FLOAT. Под "сборкой" понимается формирование мантиссы, порядка и знаков мантиссы и порядка вещественного числа. Более сложный вариант предполагает выполнение группого запроса с помощью канала CALL ChGrReq с получением содержимого регистров на его аргументах, "сборку" вещественных чисел программой и помещение результатов в каналы FLOAT. А вообще, лучше оперировать в контроллере целочисленными значениями и, зная вес разрядов, собирать их на ПК как было предложено в предыдущем ответе.

А какой формат хранения REAL у TraceMode? По стандарту IEEE754 как Single? То есть 23 бита мантисса, 8 бит экспонента со смещением от 127, 1 знаковый бит? Если можете, пожалуйста, дайте пример по "склейке" двух каналов hex16 во FLOAT или хотя бы ссылку, где можно прочитать подробное описание языка Техно ST.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Формат хранения вещественного числа в TRACE MODE выполняется по IEEE 754-1985. Примером таким не располагаем, но подобная программа, на наш взгляд, может с успехом разрабатываться как на ST, так и на FBD. Подробное описание языков представлено во встроенной в систему разработки документации.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2