Нет, упоминаемый в описании вашей внешней компоненты ModbusTCP подразумевает использование интерфейса Ethernet
Вид для печати
Нужен тогда преобразователь протокола Modbus TCP - Modbus RTU, что будет несколько дороже простого преобразователя USB-RS485. Ну есть у USR-IOT по цене дешевле АС3(4)...
сомневаюсь, что тот компонент умеет Modbus RTU - over TCP.
По косвенным признакам (скриншотам по ссылке) похоже, что именно Modbus TCP. Вот только я ни фига не понял - а как там тип регистра задаётся? В формате адреса регистра?
Офигительно. Прямо планету Шелезяка напомнило. Яп очканул такое купить.Цитата:
Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
А Вам точно всё это добро нужно для диплома? НЯП, в дипломе нужно показать принципиальную возможность такого решения. Что мешает в 1С организовать опрос симулятора OPC-сервера? Концептуально ведь замена реального OPC с реальным датчиком(ами) на симулятор ничего не меняет. Вам ведь принцип нужно показать? Или нет? А так, то, что я предлагаю, вообще ни копейки не стоит. Только Ваше время и труд.
Меня очень смущает один интересный момент:
В РЭ на 2ТРМ0 (стоимостью 5280), сказано что:
Вложение 79874
Однако, если открыть OwenConfigurator:
Вложение 79875
то мы увидим, что для него, прибор подключенный через USB, как бы уже подключен через преобразователь USB-RS485.
И настройка (в т.ч. и оперативные параметры) доступны конфигуратору по ходу по протоколу ModbusRTU или ModbusASC.
Не думаю, что ОВЕН станет создавать отдельный протокол для работы с прибором по USB.
Если это так, то нам не нужен отдельно преобразователь USB-RS485.
В данном архиве находится исходный проект для VB6, который создает dll в виде внешней компоненты для 1С.
Эта компонента открывает COM-порт, который в свою очередь работал с IR-приемо-передатчиком для связи с ТСД (терминал сбора данных).
Если Вы с этим разберетесь и добавите туда процедуры обмена по протоколу ModbusRTU, считайте что диплом Вы защитили!!!
Надеюсь VB6 Вы найдете сами.
Примерно так выглядит процедура подсчета контрольной суммы для 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
Ну мы же все когда-то были такими же студентами?! Или кто-то сразу родился профессором?!
Поверьте. Еще год - полтора и они отправят нас на пенсию.:rolleyes:
Эти не отправят.
А те кто что то могут не идут в АСУТП.