Что такое user data types, и как его едят ??????
-
- Posts: 202
- Joined: Wed Mar 19, 2008 1:12 pm
- Location: Ukraine
Что такое user data types, и как его едят ??????
Собственно вопрос в теме, обясните на пальцах плз
-
- Site Admin
- Posts: 1122
- Joined: Wed Sep 06, 2006 12:03 pm
- Location: CIS
Re: Что такое user data types, и как его едят ??????
Ну так в документации Сименса и так на пальцах объяснено:
Пользовательские типы данных (User Data Types)
Пользовательские типы данных – это специальные структуры данных (комбинации компонентов любых типов).
Типы UDT обладают глобальным действием; то есть, они описываются один раз и доступны для использования во всех блоках (FC, FB, OB).
Ну т.е. например, UDT - структура, состоящая из трех целых чисел и т.п.
Пользовательские типы данных (User Data Types)
Пользовательские типы данных – это специальные структуры данных (комбинации компонентов любых типов).
Типы UDT обладают глобальным действием; то есть, они описываются один раз и доступны для использования во всех блоках (FC, FB, OB).
Ну т.е. например, UDT - структура, состоящая из трех целых чисел и т.п.
-
- Posts: 202
- Joined: Wed Mar 19, 2008 1:12 pm
- Location: Ukraine
Re: Что такое user data types, и как его едят ??????
Это в доках Сименса я прочитал, а вот осмыслить не могу, что да как........
-
- Site Admin
- Posts: 1122
- Joined: Wed Sep 06, 2006 12:03 pm
- Location: CIS
Re: Что такое user data types, и как его едят ??????
Ну создаешь свой собственный тип данных, состоящий из простых (базовых) типов данных, и дальше используешь его в программе, как и любой друг тип данных.
Например так:
Например так:
-
- Posts: 202
- Joined: Wed Mar 19, 2008 1:12 pm
- Location: Ukraine
-
- Posts: 501
- Joined: Tue Jun 27, 2006 5:52 am
- Location: Russia
Re: Что такое user data types, и как его едят ??????
если на пальцах ), то вся твоя таблица UDT1501 и есть пользовательский тип данных - одна переменная, просто сложная.
Она у тебя еще и из структурных типов данных состоит, в которых нужный тебе бит.
Т.е. ты можешь написать например FC или FB c одной входной переменной с типом данных UDT, а внутри функции работать хоть со структурным типом, хоть с битом, как тебе удобней.
Вызов будет:
Соответственно, внутри FC1 придется обратится к нужному биту" длинным адресом"
Это нужно когда требуется большое кол-во одинаковых массивов разнотипных данных.
Вот они у тебя в DB и объявлены (по 30 байт). Т.е. ты можешь обратиться к ним:
Она у тебя еще и из структурных типов данных состоит, в которых нужный тебе бит.
Т.е. ты можешь написать например FC или FB c одной входной переменной с типом данных UDT, а внутри функции работать хоть со структурным типом, хоть с битом, как тебе удобней.
Вызов будет:
Code: Select all
CALL FC1
INPUT:=UDT1501
Code: Select all
А #INPUT.Status.Zal
= #INPUT.Sterowanie.rez1
Вот они у тебя в DB и объявлены (по 30 байт). Т.е. ты можешь обратиться к ним:
Code: Select all
A DB1501.P01RM.Status.Zal
= DB1501.P02RM.Status.Zal
-
- Posts: 202
- Joined: Wed Mar 19, 2008 1:12 pm
- Location: Ukraine
Re: Что такое user data types, и как его едят ??????
Спасибо вроде понятно, ток надо попробовать...
-
- Posts: 501
- Joined: Tue Jun 27, 2006 5:52 am
- Location: Russia
Re: Что такое user data types, и как его едят ??????
Это называется структурное программирование.
Т.е., как пример, в части приводимого примера ранее, в FC1 ты завел одну переменную UDT. Внутри FC1 ты работаешь с переменными "Status" и "Sterowanie", которые подаешь на входа/выхода следующих блоков, а внутри последних уже работаешь с низовой структурой - элементарными типами данных. Налицо резкое сокращение кол-во тегов в случае применения повторяющихся участков кода (однотипного оборудования). Еще как пример - представь какие возможности для динамического обращения через косвенную адресацию.
Т.е., как пример, в части приводимого примера ранее, в FC1 ты завел одну переменную UDT. Внутри FC1 ты работаешь с переменными "Status" и "Sterowanie", которые подаешь на входа/выхода следующих блоков, а внутри последних уже работаешь с низовой структурой - элементарными типами данных. Налицо резкое сокращение кол-во тегов в случае применения повторяющихся участков кода (однотипного оборудования). Еще как пример - представь какие возможности для динамического обращения через косвенную адресацию.