Раздел 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
}
Код: Выделить всё
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))
)
Правильно ли я определяю свой класс на основе модели и библиотеки?
Подробнее здесь: https://stackoverflow.com/questions/787 ... avpdu-type