Показано с 1 по 10 из 60

Тема: Объединение 1С с промышленным оборудованием.

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #37

    По умолчанию

    Примерно так выглядит процедура подсчета контрольной суммы для Modbus-пакета:
    Код:
    Public Function Modbus_CRC(ByVal Data As String) As Long
        Dim iByte, iBit As Integer
        
        Modbus_CRC = &HFFFF&
        For iByte = 1 To Len(Data)
            Modbus_CRC = Modbus_CRC Xor Asc(Mid(Data, iByte, 1))
            For iBit = 0 To 7
                If Modbus_CRC Mod 2 > 0 Then
                    Modbus_CRC = Modbus_CRC \ 2
                    Modbus_CRC = Modbus_CRC Xor &HA001&
                Else
                    Modbus_CRC = Modbus_CRC \ 2
                End If
            Next
        Next
    End Function
    а так выглядит функция формирования, отправки и приема:
    Код:
    Public Function Modbus_Query(ByVal Device As Integer, ByVal cmd As Integer, ByVal Addr As Long, ByVal Count As Long, Optional Value As String) As Boolean
        Dim mCRC As Long
        Dim mQuery As String
        
        mQuery = Chr(Device)                                     
        mQuery = mQuery + Chr(cmd)                             
        mQuery = mQuery + Chr(Int(Addr / 8)) + Chr(Addr Mod 256)   
        mQuery = mQuery + Chr(Int(Count / 8)) + Chr(Count Mod 256) 
        mQuery = mQuery + Value
        mCRC = Modbus_CRC(mQuery)
        mQuery = mQuery + Chr(Int(mCRC / 256)) + Chr(mCRC Mod 256)
    
        Modbus_Query = Query(mQuery)
        
        If Modbus_Query And ErrCode = 0 Then
            If Len(Packet) < 2 Then
                ErrCode = -1: Exit Function
            End If
            If Modbus_CRC(Mid(Packet, 1, Len(Packet) - 2)) <> Modbus_readWord(Len(Packet) - 1) Then
                ErrCode = -2: Exit Function
            End If
        
            If readByte(2) > 127 Then
                ErrCode = readByte(3): Exit Function
            End If
        End If
    End Function
    И главное помните: "Дорогу осилит идущий."
    Последний раз редактировалось EFrol; 06.11.2024 в 17:08.

Похожие темы

  1. Прогрессивно - ленивое управление оборудованием
    от ВладОвен в разделе Помощь Разработчикам
    Ответов: 8
    Последнее сообщение: 27.02.2023, 09:40
  2. Управление оборудованием сигналом 0-10 V
    от al.pasat в разделе Подбор Оборудования
    Ответов: 5
    Последнее сообщение: 15.10.2020, 12:56
  3. Помогите с оборудованием!
    от Dimon ingener в разделе Подбор Оборудования
    Ответов: 34
    Последнее сообщение: 24.01.2017, 09:36
  4. Удаленное управление оборудованием
    от Anton_Minsk в разделе Сетевые технологии
    Ответов: 10
    Последнее сообщение: 19.02.2016, 20:07
  5. Помогите с оборудованием
    от Krutogor в разделе Подбор Оборудования
    Ответов: 9
    Последнее сообщение: 08.09.2013, 21:38

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •