Tia portal word to real

  1. Обязательно представиться на русском языке кириллицей (заполнить поле «Имя»).
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему — вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома — бан без предупреждения.
  5. Рекламу и частные объявления «куплю/продам/есть халтура» мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать — читать здесь и здесь.

RoninX

здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 08 авг 2018, 21:27
Имя: Павел
Страна: Россия
город/регион: Москва
Благодарил (а): 3 раза

Склеить два Word и получить Real

Сообщение

RoninX » 08 авг 2018, 21:46

Здравствуйте!

Измеритель выдает значение влажности в формате Real IEEE754 двумя Word. Связь с измерителем по интерфейсу RS485 Modbus RTU. Контроллер S7-1200. Как в TIA portal преобразовать эти два регистра WORD в REAL? (CD AB). На контроллерах Овен задача решается путем создания типа FLoat в списке регистров Модбас и контроллер сам преобразовывает два регистра в Реал. Как данная задача решается в tia portal v4.2?

pkl58

не первый раз у нас
не первый раз у нас
Сообщения: 347
Зарегистрирован: 19 мар 2012, 20:04
Имя: Павел
Страна: Россия
Благодарил (а): 5 раз
Поблагодарили: 43 раза

Склеить два Word и получить Real

Сообщение

pkl58 » 09 авг 2018, 12:41

Как у Сименса не знаю. Но в общем случае есть команды преобразования целых чисел в вещественные. Возможно потребуется поменять местами исходные WORD.

NewOrdered

осмотрелся
осмотрелся
Сообщения: 153
Зарегистрирован: 24 янв 2018, 11:18
Имя: Антон
Страна: Россия
город/регион: Калининград
Благодарил (а): 25 раз
Поблагодарили: 25 раз

Склеить два Word и получить Real

Сообщение

NewOrdered » 09 авг 2018, 13:49

RoninX писал(а): ↑08 авг 2018, 21:46
Здравствуйте!

Измеритель выдает значение влажности в формате Real IEEE754 двумя Word. Связь с измерителем по интерфейсу RS485 Modbus RTU. Контроллер S7-1200. Как в TIA portal преобразовать эти два регистра WORD в REAL? (CD AB). На контроллерах Овен задача решается путем создания типа FLoat в списке регистров Модбас и контроллер сам преобразовывает два регистра в Реал. Как данная задача решается в tia portal v4.2?

Определите область памяти длиной 4 байта как REAL. В первые два байта загрузите 1 слово, во вторые — второе слово. Далее работайте с вашим значением в формате REAL.

RoninX

здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 08 авг 2018, 21:27
Имя: Павел
Страна: Россия
город/регион: Москва
Благодарил (а): 3 раза

Склеить два Word и получить Real

Сообщение

RoninX » 14 авг 2018, 10:30

NewOrdered писал(а): ↑09 авг 2018, 13:49
Определите область памяти длиной 4 байта как REAL. В первые два байта загрузите 1 слово, во вторые — второе слово. Далее работайте с вашим значением в формате REAL.

Добрый день! Получилось, спасибо!

djonm

новенький
новенький
Сообщения: 1
Зарегистрирован: 07 фев 2018, 15:04
Имя: Евгений
город/регион: Ростов

Склеить два Word и получить Real

Сообщение

djonm » 22 авг 2018, 13:53

RoninX писал(а): ↑14 авг 2018, 10:30
Добрый день! Получилось, спасибо!

У меня похожая задача и что то не фига не получается. По modbus читаю значение измеренного напряжения float32 (real). MB_Master читает в переменную REAL, но значение получаются совсем левые. Может надо читать Word- дами а потом переставлять биты и конвертировать в REAL?

Аватара пользователя

petr2off

эксперт
эксперт
Сообщения: 1356
Зарегистрирован: 06 янв 2016, 19:45
Имя: Петров В.Л.
Страна: Россия
город/регион: Красноярск
Благодарил (а): 56 раз
Поблагодарили: 138 раз

Склеить два Word и получить Real

Сообщение

petr2off » 22 авг 2018, 16:33

Какая разница как читать, Вы уже считали 4 байта. К этой области памяти можно обратится как 4-х байтовому полю, как к 2 16-ти битовым словам и как к 4 байтовым адресам. А еще добавляя точку можно и к битам обратится. Как вариант поменяйте слова местами. Очень часто при чтении Modbas 16 разрядные слова не в том порядке принимаются.

RoninX

здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 08 авг 2018, 21:27
Имя: Павел
Страна: Россия
город/регион: Москва
Благодарил (а): 3 раза

Склеить два Word и получить Real

Сообщение

RoninX » 24 дек 2018, 14:44

[/quote] У меня похожая задача и что то не фига не получается. По modbus читаю значение измеренного напряжения float32 (real). MB_Master читает в переменную REAL, но значение получаются совсем левые. Может надо читать Word- дами а потом переставлять биты и конвертировать в REAL?
[/quote]

Попробуйте применить функцию SWAP

Serg_G

здесь недавно
здесь недавно
Сообщения: 59
Зарегистрирован: 04 авг 2018, 07:02
Имя: Сергей
Благодарил (а): 8 раз
Поблагодарили: 2 раза

Склеить два Word и получить Real

Сообщение

Serg_G » 21 янв 2019, 18:45

Попробуйте так. В классике это работало. Только надо правильно выбрать байты из слова.

У вас нет необходимых прав для просмотра вложений в этом сообщении.

Вернуться в «Simatic TIA Portal»


Перейти

  • Работа форума
  • База знаний (Knowledge Exchange)
  • ↳   Eplan Electric P8
  • ↳   Общий F.A.Q.
  • ↳   Общие вопросы
  • ↳   Новости
  • ↳   Ошибки
  • ↳   Проект
  • ↳   Изделия
  • ↳   Устройства
  • ↳   Соединения
  • ↳   Кабели
  • ↳   Клеммы
  • ↳   ПЛК
  • ↳   Компоновка 2D
  • ↳   Макросы
  • ↳   Eplan API
  • ↳   Сценарии (Только готовые решения)
  • ↳   Внешняя обработка
  • ↳   ProPanel
  • ↳   Инструкции ProPanel (Только готовые решения)
  • ↳   Прочие направления Eplan
  • ↳   FieldSys (Топология)
  • ↳   Preplanning
  • ↳   Harness proD
  • ↳   EEC One
  • ↳   Advantech
  • ↳   F.A.Q., Инструкции
  • ↳   Allen Bradley
  • ↳   Общие вопросы
  • ↳   ПЛК
  • ↳   Операторские панели
  • ↳   B&R Automation
  • ↳   F.A.Q.
  • ↳   Danfoss
  • ↳   DEIF A/S
  • ↳   Общие вопросы
  • ↳   UNI-LINE
  • ↳   MULTI-LINE
  • ↳   MULTI-LINE 300
  • ↳   Emerson
  • ↳   Общие вопросы
  • ↳   КИП и регуляторы
  • ↳   DeltaV
  • ↳   ОВЕН
  • ↳   Прософт-Системы
  • ↳   Общие вопросы
  • ↳   ПЛК REGUL
  • ↳   Schneider Electric
  • ↳   Общие вопросы
  • ↳   ПЛК
  • ↳   Панели оператора
  • ↳   SCADA
  • ↳   Электротехника
  • ↳   Приводная техника
  • ↳   SIEMENS
  • ↳   Общие вопросы
  • ↳   LOGO!
  • ↳   ПЛК SIMATIC (S7-200, S7-1200, S7-300, S7-400, S7-1500, ET200)
  • ↳   Simatic Step7
  • ↳   Simatic TIA Portal
  • ↳   Simatic PCS 7
  • ↳   Операторские панели
  • ↳   WinCC
  • ↳   Приводная техника (Sinamics, Micromaster, Masterdrive, Simoreg, Simotics)
  • ↳   SmartGen
  • ↳   Общие вопросы
  • ↳   Промышленные (береговые) контроллеры
  • ↳   Морские контроллеры и устройства
  • ↳   WEINTEK (операторские панели)
  • ↳   F.A.Q., Инструкции
  • ↳   Архив
  • ↳   Микроконтроллеры и электроника
  • ↳   Arduino
  • ↳   Raspberry
  • ↳   Другие микроконтроллеры
  • ↳   Электроника
  • Общие вопросы АСУТП
  • ↳   Общие вопросы
  • ↳   Вопросы от студентов
  • ↳   Литература
  • ↳   Новости и отчётность
  • ↳   Нормативы, ГОСТы, стандарты
  • ↳   Информационная безопасность
  • ↳   Проектирование и САПР
  • ↳   Системная интеграция
  • ↳   Разбор полетов
  • ↳   Работа
  • ↳   Заготовки для базы знаний
  • ↳   Производство и технология
  • ↳   MES — Системы автоматизации управления производством
  • ↳   Метрология, КИП и датчики
  • ↳   Исполнительные устройства, регуляторы
  • ↳   Средний уровень автоматизации (управляющий)
  • ↳   Алгоритмы
  • ↳   Операторские панели
  • ↳   Верхний уровень автоматизации (отображение)
  • ↳   GE iFix
  • ↳   Wonderware Intouch
  • ↳   MasterScada
  • ↳   SCADA+
  • ↳   Альфа платформа
  • ↳   Интерфейсы, протоколы, связь
  • ↳   Радиосвязь
  • ↳   Полезное ПО
  • ↳   Электротехника, энергетика и электропривод
  • ↳   Генераторы, электростанции и силовые агрегаты
  • ↳   Теплотехника
  • ↳   Подбор аналогов
  • F.A.Q. (краткая выжимка из некоторых сообщений форума)
  • ↳   Документация (вариант 1)
  • ↳   Документация (вариант 2)
  • ↳   Электротехника и электроэнергетика
  • ↳   F.A.Q. по программируемым логическим контроллерам (PLC)
  • ↳   Обсуждение F.A.Q. по PLC
  • ↳   F.A.Q. по выбору PLC
  • ↳   F.A.Q. по аппаратной части PLC
  • ↳   F.A.Q. по языкам программирования
  • ↳   F.A.Q. по структуре программ
  • ↳   F.A.Q. по взаимодействию PLC с HMI
  • О жизни
  • ↳   Для дома, для семьи
  • ↳   Комната смеха
  • ↳   Электродвижение

Ivydy

Дилетант
Сообщения: 18
Зарегистрирован: 13 фев 2018, 16:17

Перестановка местами WORD в REAL

Здравствуйте. Имею следующее. TIA Portal V15, S7-1200 с коммуникационным модулем CM1241 (MASTER).
По RS485 общаюсь с датчиком виброскорости(SLAVE). С датчика получаю ряд данных в виде массива REAL, но проблема, что видятся они в неадекватном виде. Я так понимаю, что нужно поменять местами WORD в REAL, то есть AB CD —> CD AB. Функции SWAP не подходят, они переделывают по другому. Как можно это сделать ? Заранее спасибо.


Михайло

Администратор
Сообщения: 4073
Зарегистрирован: 19 сен 2012, 19:16

Re: Перестановка местами WORD в REAL

Сообщение

Михайло » 09 июл 2019, 20:51

Создаем функцию FC, у нее в разделе Input создаем переменную in типа Real, в разделе Output — переменную out типа Real, в разделе Temp — переменные t типа DWord, ab, cd типа Word. Пишем на языке LAD или FBD.
1. MOVE из in в t.
2. MOVE из t.w0 в ab.
3. MOVE из t.w1 в cd.
4. MOVE из ab в t.w1.
5. MOVE из cd в t.w0.
6. MOVE из t в out.

Используем функцию многократно.


Old
January 16th, 2022, 12:45 AM

 
#6

Lifetime Supporting Member

United States

drbitboy is online now

 

drbitboy's Avatar

 

Join Date: Dec 2019

Location: Rochester, NY

Posts: 6,510

@LD and @Lare have it:


Python:

>>> import struct

>>> struct.unpack('>5f',struct.pack('>10H' ,0x4280,0x4fcb ,0x420d,0x6776 ,0x4213,0xa2e8, 0x0000,0x0000, 0xc087,0x80ea))
(64.15584564208984, 35.351036071777344, 36.909088134765625, 0.0, -4.2344865798950195)

>>> [hex(v) for v in struct.unpack('>5I',struct.pack('>10H' ,0x4280,0x4fcb ,0x420d,0x6776 ,0x4213,0xa2e8, 0x0000,0x0000, 0xc087,0x80ea))]
['0x42804fcb', '0x420d6776', '0x4213a2e8', '0x0', '0xc08780ea']

I have no idea where OP is getting the data for their floating point values in [AlgInput], it is almost certainly not from the Words in [InputRegister]


>>> [hex(v) for v in struct.unpack('>4I',struct.pack('>4f',-689.4691,-5573.278,-252997.5,-9999.9))]
['0xc42c5e06', '0xc5ae2a39', '0xc8771160', '0xc61c3f9a']

There may be an issue with how the data are physically laid out in the Struct with the 22 reals. Isn’t there an «optimized» option for data blocks?

__________________
_
Brian T. Carcich
i) Take care of the bits, and the bytes will take care of themselves.
ii) There is no software problem that cannot be solved with another layer of indirection.
iii) Measurement is hard.
iv) I solemnly swear that I am up to no good
v) I probably have the highest ratio of forum posts to actual applications in the field (∞).
vi) Hakuna matata.
vii) Bookkeeping.

 

Reply With Quote

binary numbers BOOL bool 1bit
(S7-1500
opt:
1 byte) S7-300/400,
S7-1200,
S7-1500 FALSE or TRUE
BOOL#0 or BOOL#1
BOOL#FALSE or BOOL#TRUE 16 BOOL → WORD and BYTE
WORD → 16 BOOL
BYTE → 8 BOOL BYTE byte 8 bit S7-300/400,
S7-1200,
S7-1500 8 bit bit pattern,
Dec: 0..255, Hex: 00..FF 16 BOOL → WORD und BYTE
BYTE → 8 BOOL
DT → WORD/BYTE WORD word 16 bit S7-300/400,
S7-1200,
S7-1500 16 bit bit pattern 16 BOOL → WORD and BYTE
WORD → 16 BOOL
STRING → DB REGS
DB REGS → STRING
DT → WORD/BYTE
WORD → REAL
REAL → WORD DWORD double word 32 bit S7-300/400,
S7-1200,
S7-1500 32 bit bit pattern LWORD long word 64 bit S7-1200,
S7-1500 64 bit bit pattern Integers
SINT short integer 8 bit S7-1200,
S7-1500 Dec: -128..127, Hex: 0..7F INT integer 16 bit S7-300/400,
S7-1200,
S7-1500 Dec: -32768..32767,
Hex: 0..7FFF DINT double integer 32 bit S7-300/400,
S7-1200,
S7-1500 Dec: -2147483648..+2147483647,
Hex: 0..#7FFFFFFF USINT unsigned
short integer 8 bit S7-1200,
S7-1500 Dec: 0..255, Hex: 00..FF UINT unsigned
integer 16 bit S7-1200,
S7-1500 Dec: 0..65535, Hex: 0000..FFFF UDINT unsigned
double integer 32 bit S7-1200,
S7-1500 Dec: 0..4294967295,
Hex: 00000000..FFFFFFFF LINT long integer 64 bit S7-1500 Dec: -9223372036854775808..
+9223372036854775807,
Hex: 0000000000000000..
7FFFFFFFFFFFFFFF ULINT unsigned
long integer 64 bit S7-1500 Dec: 0..18446744073709551615,
Hex: 0000000000000000..
FFFFFFFFFFFFFFFF floating point numbers
REAL real 32 bit S7-300/400,
S7-1200,
S7-1500 -3.402823e+38..-1.175 495e-38 and
+1.175 495e-38..+3.402823e+38 WORD → REAL
REAL → WORD LREAL long real 64 bit S7-1200,
S7-1500 -1.7976931348623158e+308
..-2.2250738585072014e-308 and
+2.2250738585072014e-308
..+1.7976931348623158e+308 S5 Time
S5TIME S5 time 16 bit S7-300/400,
S7-1500 S5T#0H_0M_0S_0MS..
S5T#2H_46M_30S_0MS S7 Time
TIME time 32 bit S7-300/400,
S7-1200,
S7-1500 T#-24d20h31m23s648ms..
T#+24d20h31m23s647ms LTIME long time 64 bit S7-1500 LT#-106751d23h47m
16s854ms775us808ns..
LT#+106751d23h47m
16s854ms775us807ns Characters
CHAR character 8 bit S7-300/400,
S7-1200,
S7-1500 ASCII character set WCHAR word char 16 bit S7-1200,
S7-1500 16 bit Unicode STRING string Long
+ 2 byte S7-300/400,
S7-1200,
S7-1500 0 to 254 characters STRING → DB REGS
DB REGS → STRING
STRING → REAL/LINT
DT → STRING WSTRING word string Long
+ 2 word S7-1200,
S7-1500 0 to 16382 characters Date types
DATE date 16 bit S7-300/400,
S7-1200,
S7-1500 D#1990-01-01..D#2168-12-31 TOD time_of_day 32 bit S7-300/400,
S7-1200,
S7-1500 TOD#00:00:00.000..
TOD#23:59:59.999 LTOD long
time_of_day 64 bit S7-1500 LTOD#00:00:00.000000000 ..
LTOD#23:59:59.999999999 DT date_and_time 64 bit S7-300/400,
S7-1500 Min.:
DT#1990-01-01-0:0:0
Max.:
DT#2089-12-31-23:59:59.999 DT → WORD/BYTE
DT → STRING LDT long
date_and_time 64 bit S7-1500 Min.:
LDT#1970-01-01-0:0:0.000000000, 16#0
Max.:
LDT#2262-04-11-23:47:16.854775807,
16#7FFF_FFFF_FFFF_FFFF DTL date time long 96 bit S7-1200,
S7-1500 Min.:
DTL#1970-01-01-00:00:00.0
Max.:
DTL#2554-12-31-23:59:59.999999999 Pointer POINTER pointer 48 bit S7-300/400,
S7-1500 — ANY any type 80 bit S7-300/400,
S7-1500 — VARIANT variant — S7-1200,
S7-1500 example:
P#M100.0 BYTE 10
P#DB1.DBX0.0 BYTE 10

0 / 0 / 0

Регистрация: 27.03.2013

Сообщений: 47

1

24.02.2019, 18:20. Показов 7704. Ответов 2


Студворк — интернет-сервис помощи студентам

Помогите с решением вопроса по изменению данных тега с типом данных word.

Требуется преобразовать теги по битово в слово. После написания программы получился результат. Но если изменить значение тега с истины на лож или на оборот значение слова не меняется.

Подскажите как осуществляется хранение данных с типом данных word, и как сделать что бы данные изменялись в реальном времени.

Использую зык программирование LAD



0



467 / 231 / 72

Регистрация: 25.05.2012

Сообщений: 1,012

Записей в блоге: 1

25.02.2019, 14:14

2

denis0387, ну так покажите, где у вас проблема, чуть больше конкретики: код или картинка



0



3 / 2 / 1

Регистрация: 20.11.2019

Сообщений: 4

22.11.2019, 11:24

3

Вам необходимо обращаться с абсолютной адресацией к битам слова, ссылка на оф. форум: https://support.industry.sieme… 0&lc=en-WW
Только стоит помнить, что если вы используете эти int или word переменные в HMI то необходимо переворачивать старший и младший байты в слове — это обусловлено архитектурой языков программирования SIMATIC и высокоуровневых языков программирования.



0



Понравилась статья? Поделить с друзьями:
  • Three column in word
  • Threaded comment excel как исправить
  • Thousand word watch online
  • Thought word and action
  • Thought to be true word