Правильная структура данных pyasn1 для образцов значений IEC 61850 Тип SavPDU?Python

Программы на Python
Anonymous
Правильная структура данных pyasn1 для образцов значений IEC 61850 Тип SavPDU?

Сообщение Anonymous »

Я новичок в использовании pyasn1 и пытаюсь преобразовать тип SEQUENCE в модель класса Python, следуя опубликованной в Беркли документации для программиста PyASN1
Раздел IEC 61850-9-2 8.5.2 Таблица 14 Кодировка для SavPdu определяется как

Код: Выделить всё

    SavPdu ::= SEQUENCE {
noASDU   [0] IMPLICIT INTEGER (1..65535),
security [1] ANY OPTIONAL,
asdu     [2] IMPLICIT SEQUENCE OF ASDU
}

ASDU ::= SEQUENCE {
svID        [0] IMPLICIT VisibleString,
datset      [1] IMPLICIT VisibleString OPTIONAL,
smpCnt      [2] IMPLICIT OCTET STRING (SIZE(2)),
confRev     [3] IMPLICIT OCTET STRING (SIZE(4)),
refrTm      [4] IMPLICIT UtcTime OPTIONAL,
smpSynch    [5] IMPLICIT OCTET STRING (SIZE(1)),
smpRate     [6] IMPLICIT OCTET STRING (SIZE(2)) OPTIONAL,
sample      [7] IMPLICIT OCTET STRING (SIZE(n)),
smpMod      [8] IMPLICIT OCTET STRING (SIZE(2)) OPTIONAL
}
Это моя первая попытка создать класс Python описанной выше модели:

Код: Выделить всё

from pyasn1.type import constraint, namedtype, tag, univ

class SavPdu(univ.Sequence):
componentType = namedtype.NamedTypes(
namedtype.NamedType('noASDU', univ.Integer().subtype(suptypeSpec = constraint.ValueRangeConstraint(1,65535)).tagSet.tagImplicitly(tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
namedtype.NamedType('security', univ.Any),
namedtype.NamedType('asdu', univ.Sequence(ASDU).tagSet.tagImplicitly(tag.tagClassContext, tag.tagFormatSimple, 2))
)
где ASDU — это еще один класс Python, определенный в другом месте файла.
Правильно ли я определяю свой класс на основе модели и библиотеки?

Подробнее здесь: https://stackoverflow.com/questions/787 ... avpdu-type

Вернуться в «Python»