Название: Сервер связи(использование функции ReadTimeArch) Отправлено: resident от 02.09.2010, 10:43:50 Здравствуйте.
При чтении одной архивной записи часового архива приборов ТСРВ-22, 23 вопросов не возникает. Но как я понимаю, есть возможность считывать сразу несколько записей. Чтение одной записи: mbcm.ReadTimeArch(2, 1, 1, 10, 7, 6, 3, 0, 0, GetStructureArchivalRecord) где GetStructureArchivalRecord функция которая возвращает структуру архивной записи прибора. Работает правильно. Третий аргумент функции отвечает (если я правильно понимаю) за количество записей. Выдержка из документации ArchCount – Количество записей. Я пробовал разные значения. Ответ один: mbcNotEnoughData = 16 Недостаточно данных. Собственно вопрос, как правильно записать аргументы функции которая должна вернуть многомерный массив данных. С Уважением "resident" Название: Re: Сервер связи(использование функции ReadTimeArch) Отправлено: Денис Пономарев от 03.09.2010, 12:14:33 В виду того, что в одном ModBus запросе не может быть больше 250 байт данных, то в случае длинных архивных записей (больше 125 байт каждая), получение записей от 2 и выше невозможно.
Название: Re: Сервер связи(использование функции ReadTimeArch) Отправлено: resident от 04.09.2010, 13:28:21 Спасибо. Очень жаль, придется читать по одной.
Название: Re: Сервер связи(использование функции ReadTimeArch) Отправлено: resident от 18.12.2010, 19:09:36 Скажите пожалуйста, правильно ли я делаю читая архивную запись суточного архива таким образом?
mbcm.ReadTimeArch(2, 1, 1, 10, 12, 1, 0, 0, 0, GetStructureArchivalRecord) Используя при этом структуру архивной записи такую же как и при чтении часового архива. но часы, минуты и секунды выставляя в 0? 'Функция котрая возвращает структуру архивной записи ТСРВ Friend Function GetStructureArchivalRecord() As Array Dim i As Integer 'Счетчик Dim StructArchRec(72) 'Структура архивной записи StructArchRec(0) = VzljotSrv.MBDataType.dtUnsignedDoubleWord StructArchRec(1) = VzljotSrv.MBDataType.dtSingle StructArchRec(2) = VzljotSrv.MBDataType.dtSingle StructArchRec(3) = VzljotSrv.MBDataType.dtSingle For i = 4 To 11 StructArchRec(i) = VzljotSrv.MBDataType.dtUnsignedDoubleWord Next i For i = 12 To 14 StructArchRec(i) = VzljotSrv.MBDataType.dtSingle Next i For i = 15 To 22 StructArchRec(i) = VzljotSrv.MBDataType.dtUnsignedDoubleWord Next i For i = 23 To 25 StructArchRec(i) = VzljotSrv.MBDataType.dtSingle Next i For i = 26 To 33 StructArchRec(i) = VzljotSrv.MBDataType.dtUnsignedDoubleWord Next i StructArchRec(34) = VzljotSrv.MBDataType.dtSingle For i = 35 To 36 StructArchRec(i) = VzljotSrv.MBDataType.dtSignedWord Next i StructArchRec(37) = VzljotSrv.MBDataType.dtUnsignedDoubleWord StructArchRec(38) = VzljotSrv.MBDataType.dtUnsignedWord StructArchRec(39) = VzljotSrv.MBDataType.dtSingle StructArchRec(40) = VzljotSrv.MBDataType.dtSignedWord StructArchRec(41) = VzljotSrv.MBDataType.dtSignedWord StructArchRec(42) = VzljotSrv.MBDataType.dtUnsignedDoubleWord StructArchRec(43) = VzljotSrv.MBDataType.dtUnsignedWord StructArchRec(44) = VzljotSrv.MBDataType.dtSingle StructArchRec(45) = VzljotSrv.MBDataType.dtSignedWord StructArchRec(46) = VzljotSrv.MBDataType.dtSignedWord StructArchRec(47) = VzljotSrv.MBDataType.dtUnsignedDoubleWord StructArchRec(48) = VzljotSrv.MBDataType.dtUnsignedWord StructArchRec(49) = VzljotSrv.MBDataType.dtSingle StructArchRec(50) = VzljotSrv.MBDataType.dtSignedWord StructArchRec(51) = VzljotSrv.MBDataType.dtSignedWord StructArchRec(52) = VzljotSrv.MBDataType.dtUnsignedDoubleWord StructArchRec(53) = VzljotSrv.MBDataType.dtUnsignedWord StructArchRec(54) = VzljotSrv.MBDataType.dtSingle StructArchRec(55) = VzljotSrv.MBDataType.dtSignedWord StructArchRec(56) = VzljotSrv.MBDataType.dtSignedWord StructArchRec(57) = VzljotSrv.MBDataType.dtUnsignedDoubleWord StructArchRec(58) = VzljotSrv.MBDataType.dtUnsignedWord StructArchRec(59) = VzljotSrv.MBDataType.dtSingle StructArchRec(60) = VzljotSrv.MBDataType.dtSignedWord StructArchRec(61) = VzljotSrv.MBDataType.dtSignedWord StructArchRec(62) = VzljotSrv.MBDataType.dtUnsignedDoubleWord StructArchRec(63) = VzljotSrv.MBDataType.dtUnsignedWord StructArchRec(64) = VzljotSrv.MBDataType.dtSingle StructArchRec(65) = VzljotSrv.MBDataType.dtSignedWord StructArchRec(66) = VzljotSrv.MBDataType.dtSignedWord StructArchRec(67) = VzljotSrv.MBDataType.dtUnsignedDoubleWord StructArchRec(68) = VzljotSrv.MBDataType.dtUnsignedWord StructArchRec(69) = VzljotSrv.MBDataType.dtSingle StructArchRec(70) = VzljotSrv.MBDataType.dtUnsignedDoubleWord StructArchRec(71) = VzljotSrv.MBDataType.dtUnsignedDoubleWord StructArchRec(72) = VzljotSrv.MBDataType.dtUnsignedDoubleWord Return StructArchRec End Function Дело в том что полученные данные полностью совпадают с часовой архивной записью на это время, и теряется смысл чтения суточных архивов. Пожалуйста подскажите что я делаю не так. P.S Года четыре назад господин BorisTheBlade мне выложил пример чтения архивов ТСРВ-20 на VB6. Но он подошел мне для чтения часовых архивов ТСРВ-22(23) вот собственно этот пример: Private Sub BtnTimeArchGet_Click() 'запрос на чтение индексного массива Dim b As Byte Dim i As Integer Dim l As Long Dim s As Single vari = Array(72) 'создание структуры данных архива (данная структура соответствует только прибору TSR - 020) ReDim vari(72) As Integer vari(0) = dtUnsignedDoubleWord vari(1) = dtSingle vari(2) = dtSingle vari(3) = dtSingle For i = 4 To 11 vari(i) = dtUnsignedDoubleWord Next i For i = 12 To 14 vari(i) = dtSingle Next i For i = 15 To 22 vari(i) = dtUnsignedDoubleWord Next i For i = 23 To 25 vari(i) = dtSingle Next i For i = 26 To 33 vari(i) = dtUnsignedDoubleWord Next i vari(34) = dtSingle For i = 35 To 36 vari(i) = dtSignedWord Next i vari(37) = dtUnsignedDoubleWord vari(38) = dtUnsignedWord vari(39) = dtSingle vari(40) = dtSignedWord vari(41) = dtSignedWord vari(42) = dtUnsignedDoubleWord vari(43) = dtUnsignedWord vari(44) = dtSingle vari(45) = dtSignedWord vari(46) = dtSignedWord vari(47) = dtUnsignedDoubleWord vari(48) = dtUnsignedWord vari(49) = dtSingle vari(50) = dtSignedWord vari(51) = dtSignedWord vari(52) = dtUnsignedDoubleWord vari(53) = dtUnsignedWord vari(54) = dtSingle vari(55) = dtSignedWord vari(56) = dtSignedWord vari(57) = dtUnsignedDoubleWord vari(58) = dtUnsignedWord vari(59) = dtSingle vari(60) = dtSignedWord vari(61) = dtSignedWord vari(62) = dtUnsignedDoubleWord vari(63) = dtUnsignedWord vari(64) = dtSingle vari(65) = dtSignedWord vari(66) = dtSignedWord vari(67) = dtUnsignedDoubleWord vari(68) = dtUnsignedWord vari(69) = dtSingle vari(70) = dtUnsignedDoubleWord vari(71) = dtUnsignedDoubleWord vari(72) = dtUnsignedDoubleWord If CbTypeArchTime.ListIndex = 0 Then ' чтение часового архива mbcm.ReadTimeArch 10, 1, 1, DateArch.Year - 2000, DateArch.Month, DateArch.Day, Val(TxHour.Text), 0, 0, vari End If If CbTypeArchTime.ListIndex = 1 Then ' чтение суточного архива mbcm.ReadTimeArch 10, 1, 1, DateArch.Year - 2000, DateArch.Month, DateArch.Day, 0, 0, 0, vari End If If CbTypeArchTime.ListIndex = 2 Then ' чтение месячного архива mbcm.ReadTimeArch 10, 2, 1, DateArch.Year - 2000, DateArch.Month, DateArch.Day, 0, 0, 0, vari End If End Sub Название: Re: Сервер связи(использование функции ReadTimeArch) Отправлено: resident от 23.12.2010, 11:42:52 Все, разобрался!
|