Форум 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 » Драйверы / Device Drivers » Газовый корректор ЕК270 и TM6

   
Автор / Author Тема / Topic: Газовый корректор ЕК270 и TM6
shagrat
Junior Member / Новичок
Участник № / Member № 5888


Icon 1 отправлено / posted      Профиль для / Profile for shagrat           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Доброго времени суток!
Столкнулся с проблемой. Помогите пожалуйста разобраться.
Имеется газовый корректор ЕК270 и Trace Mode 6.08
Нашел много документации на этот корректор (пруфы):
Раз
Два
Три

Но из всего этого я так и не понял как осуществить считывание показаний. Их всего-то нужно 2, текущий расход газа и суммарный расход.
Для считывания этих параметров же нужно знать modbus адрес, а как этот адрес получить тоже мне не совсем понятно.

Вроде нашел такую информацию.
В руководстве, для того чтобы считать "Остаточный срок службы элементов питания", приведено следующее:
code:
TX: 01 03 00 00 00 01 84 0A
RX: 01 03 02 00 49 79 B2

У меня же получается по другому:
code:
TX: 01 03 00 01 00 01 D5 CA
RX: 01 03 02 B0 20 CC 5C

Смущает меня наличие второй пары 00 01 в запросе...
Сообщения / Posts 7 | Из / 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 
1. Ваша ошибка состоит в неправильном задании адреса переменной.
В приведенной Вами документации указано:
"Сообщение запроса специфицирует начальный регистр и количество регистров для
чтения. Регистры адресуются начина с 0: регистры 1-16 адресуются как 0-15."
В приведенном примере параметр запрашивается по 0-му адресу, а в Вашем варианте - по 1-му.
Задайте в "Источнике" настройку "Канал"=0.

2. В качестве "текущего расхода", видимо, Вам нужно выбрать "Рабочий расход" или "Стандартный расход". Для считывания надо использовать функции Rout_Float(3) (или Rin_Float(4) - в документации нет точных указаний) и каналы FLOAT. При чтении, возможно, надо будет использовать для настройки файл modbus.set (см. Справочную систему Trace Mode 6).

3. В качестве "суммарного расхода", видимо, Вам нужно выбрать "Рабочий объем" или "Стандартный объем". Считывать с помощью функции Rout_Word(3) (или Rin_Word(4)) придется раздельно десятичную часть (1 регистр) и целую часть (2 регистра).
Для чтения десятичной части Вам потребуется 1 HEX16-канал.
Чтение целой части лучше организовать в 2 UINT-аргумента канала CALL.ChGroupReq, привязанного к соответствующему Modbus-источнику (см. описание канала CALL.ChGroupReq).
Затем в соответствии с предлагаемым в документации на прибор алгоритмом программно преобразовывать считанные данные в результирующую величину.

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


Icon 1 отправлено / posted      Профиль для / Profile for shagrat           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Вроде бы что-то начинает получаться.

1. Точно, не заметил [Улыбка / Smile] Спасибо

2. Следующий вопрос. Я запрашиваю данные:
code:
[19:04:05.503] INIT: Read Holding Registers (code $03) [ID: 3]
[19:04:05.515] TX: 01 03 01 50 00 02 C5 E6
[19:04:05.824] RX: 01 03 04 3F 7B AD 19 3B 64
[19:04:05.835] DONE: Read Holding Registers (code $03) [ID: 3]
[19:04:05.845] SUCCESS: Normal response
[19:04:05.856] 2 holding registers were processed.
[19:04:05.867] Value of holding register 336 is 16251
[19:04:05.875] Value of holding register 337 is 44313

Нужное мне значение, это 3F 7B AD 19, имеется формула для пересчета: http://cs403220.userapi.com/v403220860/4313/KfNotb-HYc0.jpg
Как мне из полученного числа получить знак, экспоненту и мантиссу для этой формулы? Или если использовать float система сама всё преобразует?
PS Вопрос снят, использование Rout_Float(3) решает эту проблему

3. Сделал, значения приходят. Программно получилось отобразить необходимое число. Но! Число в счетчике занимает 2 регистра.
Считываем целую часть:
code:
[12:09:50.669] INIT: Read Holding Registers (code $03) [ID: 10]
[12:09:50.678] TX: 01 03 01 F7 00 02 74 05
[12:09:50.730] RX: 01 03 04 00 00 00 01 3B F3
[12:09:50.736] DONE: Read Holding Registers (code $03) [ID: 10]
[12:09:50.746] SUCCESS: Normal response
[12:09:50.757] 2 holding registers were processed.
[12:09:50.768] Value of holding register 503 is 0
[12:09:50.779] Value of holding register 504 is 1

Соответственно в канале CALL.ChGroupReq это ARG_000 и ARG_001. ARG_000 это "RX: 01 03 04 00 00 00 01 3B F3" а ARG_001 это "RX: 01 03 04 00 00 00 01 3B F3"
Создал программу такого содержания:
code:
PROGRAM
VAR_INPUT Канал_2_R : REAL; END_VAR
VAR_INPUT CALL_3_ARG_000 : DINT; END_VAR
VAR_OUTPUT ARG_000 : REAL; END_VAR
VAR_INPUT CALL_3_ARG_001 : DINT; END_VAR

ARG_000 = Канал_2_R/10000 + CALL_3_ARG_001;

END_PROGRAM

Переменная CALL_3_ARG_001 привязана к аргументу ARG_001 канала CALL.ChGroupReq. Но ведь целая часть это два аргумента. Как мне их объединить в одно число?
Сообщения / Posts 7 | Из / 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 
Если в CALL_3_ARG_001 содержится старший регистр целой част:

PROGRAM VAR_INPUT Канал_2_R : REAL; END_VAR VAR_INPUT CALL_3_ARG_000 : DINT; END_VAR VAR_OUTPUT ARG_000 : REAL; END_VAR VAR_INPUT CALL_3_ARG_001 : DINT; END_VAR

ARG_000 = Канал_2_R/10000 + CALL_3_ARG_001*(2**16) + CALL_3_ARG_000;


END_PROGRAM

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


Icon 1 отправлено / posted      Профиль для / Profile for shagrat           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Спасибо. Сейчас попробую.
Поясните пожалуйста что означают эти арифметические действия?
CALL_3_ARG_001*(2**16) + CALL_3_ARG_000

Сообщения / Posts 7 | Из / 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 
Если число записывается 2 регистрами, то старший регистр имеет вес младшего разряда 2**16=65536.
Поэтому для получения значения 4-байтового целого числа мы старший регистр умножаем на 65536.

Если старшая часть слова передается в регистре CALL_3_ARG_000, то формула должна выглядеть так:
ARG_000 = Канал_2_R/10000 + CALL_3_ARG_000*(2**16) + CALL_3_ARG_001;

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


Icon 1 отправлено / posted      Профиль для / Profile for shagrat           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
А, это степень двойки) Я к ^ привык...
С этим всё понятно. Спасибо!

Сообщения / Posts 7 | Из / 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