Просмотр полной версии : Проблема приема данных в спк107 с датчика
KuristinaK
12.03.2021, 22:01
Здравствуйте.
У меня есть передатчик(arduino uno), который постоянно шлет значения. Просто значения, в какой-то последовательности. В спк необходимо принять эти значения. Насколько я поняла, необходимо открыть порт rs-232 (он в com 5) и начать чтение значений. Что я делаю: открываю порт (open), ставлю его в режим чтения(read) и жду строку (попробовала добавить через таймер Ton и зациклить - этапы circle и wait)(дальше идет закрытие порта). Но строка не приходит, она просто нулевая.
Подскажите, пожалуйста, в чем может быть проблема?
Ниже прикрепила саму программу.
P.S. было сделано на основе документации "V3.5. Реализация нестандартных протоколов"
Евгений Кислов
13.03.2021, 08:30
Добрый день.
Посмотрите пример:
https://owen.ru/forum/showthread.php?t=28167&p=351298&viewfull=1#post351298
А не лучше на Arduino сделать Modbus Slave ?
KuristinaK
13.03.2021, 13:34
Спасибо.
Но у меня возникает проблема с библиотекой SysMem.
Как ее исправить?
Евгений Кислов
13.03.2021, 13:36
Спасибо.
Но у меня возникает проблема с библиотекой SysMem.
Как ее исправить?
Пример создан в CODESYS V3.5 SP14 Patch 3, ваш проект - в V3.5 SP11 Patch 5.
Проще всего вам будет скопировать код из примера в свой проект и продолжить работать в нем.
KuristinaK
13.03.2021, 13:45
Поняла.
(Может быть, для этого необходимо уже открыть новую тему, но.. )
Как тут быть?
Евгений Кислов
13.03.2021, 13:48
Какая у вас версия прошивки контроллера? (посмотреть можно в сервисном меню или конфигураторе)
Какая версия таргет-файла сейчас в проекте? (в CODESYS: узел Device, вкладка Информация; лучше выложить в виде скриншота)
KuristinaK
13.03.2021, 13:59
(Раньше проекты работали)
Версия прошивки: 1.1.0611.1056
(Таргет-файл во вложениях)
Евгений Кислов
13.03.2021, 14:17
У вас версия таргет-файла должна быть 3.5.11.57.
ПКМ на Device - Обновить устройство - выберите версию 3.5.11.57
KuristinaK
13.03.2021, 15:13
Заработало :D
Но.. При открытии порта Com.Read все равно ничего не читается (и выбивает ошибку в com.read xError часто).
Чисто на вскидку, могут ли не читаться данные, если не совпадают уровни напряжения? Например, тогда придется ставит преобразователь уровней?
Евгений Кислов
13.03.2021, 15:17
Но.. При открытии порта Com.Read все равно ничего не читается (и выбивает ошибку в com.read xError часто).
Это происходит:
- в вашем коде?
- в коде из примера?
- в коде из примера, который вы отредактировали?
Какое значение имеет выход eError при xError = TRUE?
Чисто на вскидку, могут ли не читаться данные, если не совпадают уровни напряжения? Например, тогда придется ставит преобразователь уровней?
Безусловно - если на стороне Arduino у вас не RS-232, а TTL, то работать это не будет.
Но xError при этом всё равно появляться не должно было бы.
KuristinaK
13.03.2021, 15:56
1) В коде из примера, который был отредактирован - единственное, что изменила, это убрала посылку сообщения мастеру.
И нет, больше не выдает ошибку (перезагрузила проект) :D
2) Тогда.. понятно, почему не получалось) (в понедельник всё исправят)
Спасибо
KuristinaK
13.03.2021, 19:08
А возможно ли принять данные, если подключить ардуин и спк через usb? (usb b - usb a)
Евгений Кислов
13.03.2021, 19:35
А возможно ли принять данные, если подключить ардуин и спк через usb? (usb b - usb a)
Если на стороне СПК вы собираетесь использовать USB B - то нельзя.
Если USB A - то это возможно в последней прошивке с помощью библиотеки CmpOwenUsbHid (соответственно, Arduino должен будет работать в режиме USB HID устройства).
у меня глупый вопрос, на Arduino Uno есть RS485? или вы используете преобразователь ?
KuristinaK
14.03.2021, 13:00
Соединяю Arduino и адаптер от спк1хх через Rx Tx и GND
KuristinaK
14.03.2021, 13:03
если на стороне Arduino у вас не RS-232, а TTL, то работать это не будет.
Я соединяю ардуино и адаптер от спк 1хх проводами Rx Tx GND. Этого разве не достаточно?
Евгений Кислов
14.03.2021, 13:20
Я соединяю ардуино и адаптер от спк 1хх проводами Rx Tx GND. Этого разве не достаточно?
Этого было бы достаточно, если бы на обоих концах проводов был один и тот же физический интерфейс.
Гугл по запросу "arduino ttl rs-232" предоставит сотни обсуждений с вопросами, аналогичными вашему.
http://arduino.ru/forum/apparatnye-voprosy/rs-232-na-anrduino-uno
KuristinaK недостаточно, разные уровни. Вам нужен преобразователь RS485-TTL с авто определением передачи (есть которыми надо управлять со стороны Arduino, не нарвитесь). Или же RS232-TTL так же с авто определением передачи.
KuristinaK
16.03.2021, 01:04
Спасибо большое) Получаю данные)
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot