Usb to 485 linux

Работаем со старым промышленным софтом под linux или как подружить wine и RS-485

В свете недавних указов президента посыпались вопросы от заказчиков, а есть ли %конфигуратор устройства не поддерживаемый цать лет, разработчики которого уволились или сбежали из России% под linux?

В следствие чего была из синей ленты, остатков бубна и обрывочных знаний по linux данная инструкция.

Надеюсь она пригодится коллегам, занимающимся наладкой и эксплуатацией АСУ ТП

Не забываем, что мы должны использовать отечественное ПО, в следствие чего дистрибутив будет Astra Linux SE 1.7.1 ОРЕЛ

Предполагается, что система установлена и подключена к интернету.

В качестве СОМ-порта использовался MOXA Uport 1150, перед настройкой необходимо подключить MOXA Uport к USB-порту ПК. При использовании другого устройства его необходимо настроить в соответствии с поставляемым мануалом.

Установка Wine

Основная инструкция (актуальная) тут.

нас интересует «Установка Wine версии 7.3 в Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)»

1. Скачать пакет Wine 7.3 отсюда и пакет ia32-libs отсюда.

2. Открыть терминал Fly и ввести команды по порядку:

sudo apt install ia32-libs

sudo apt install libc6-i386

sudo dpkg -i ~/Загрузки/ia32-libs_20220330+1.7se_amd64.deb

# Имя текущей версии пакета, со временем она может быть изменена.

sudo dpkg -i ~/Загрузки/wine_7.3-0-astra-se17_amd64.deb

# Имя текущей версии пакета, со временем она может быть изменена.

sudo apt install ca-certificates libmspack0 cabextract

sudo mv winetricks /usr/bin

# для быстрого запуска из консоли

Рабочая директория WINE будет находится по адресу /opt/wine-7.3/bin/

Установка драйвера MOXA Uport 1150

Драйвер под конкретную версию ядра нужно качать с оф сайта

посмотреть версию ядра можно командой в терминале uname -r

На текущий момент это 5.10, скачать драйвер v.5.1.

1. Открываем терминал fly и вводим последовательно команды:

sudo apt install make linux-headers setserial autotools-dev

sudo cp /home/user/Загрузки/moxa-uport-1100-series-linux-kernel-5.x-driver-v5.1 moxa-uport-1100-series-linux-kernel-5.x-driver-v5.1

sudo tar xvfz moxa-uport-1100-series-linux-kernel-5.x-driver-v5.1.tgz

# Если во время выполнения команды «make install» возникает ошибка, то выполняем

# «sudo apt install —reinstall linux-headers-$(uname -r)» и повторно выполняем «make install»;

2. Переводим Uport в режим 485 2W с помощью команды в терминале: setserial /dev/ttyUSB0 port 1

номер порта можно посмотреть командой sudo ls /dev/ttyU*

Настройка WINE для работы с СОМ-портами и ПО

С помощью файлового менеджера (проводника) идем в /opt/wine-7.3/bin/ и запускаем regedit

В разделе реестра [HKEY_LOCAL_MACHINE\Software\Wine\Ports] создаем СТРОКОВУЮ переменную:

Запускаем winecfg и меняем версию windows на Windows XP или windows 2003:

Применяем и закрываем Winecfg.

Далее создаем символическую ссылку на нужный нам СОМ-порт:

sudo ln -s /dev/ttyUSB0 ~/.wine/dosdevices/com1
Если com1 уже существует, можно удалить его и заново создать ссылку:

sudo rm ~/.wine/dosdevices/com1
sudo ln -s /dev/ttyUSB0 ~/.wine/dosdevices/com1

Читайте также:  Linux kernel boot message

Чтобы не менять права на СОМ-порт, необходимо добавить текущего пользователя в dialout командой:
sudo adduser dialout
затем ВЫЙТИ из системы и зайти заново.

Скачиваем ПО в любую папку в домашней директории и запускаем из менеджера файлов (проводника) двойным щелчком. в списке выбора приложений жмем на другая. и выбираем wine из /opt/wine-7.3/bin/:

Чтобы в следующий раз exe формат открывался через WINE можно установить его по умолчанию:

Далее можно пользоваться необходимым ПО.

Всё это прогрызание кактуса выполнялось для запуска определенных видов промышленного ПО и каждое работало по своему

Сканер устройств по com порту — при открытии будет спрашивать о замене sys файлов — ответить нет.

Может долго искать или падать с ошибками — просто перезапустить. Если будет находить приборы на других СОМ-портах или долго виснуть, то лучше удалить все символические ссылки на СОМ-порты кроме нужного:

sudo rm ~/.wine/dosdevices/comN
где N — номер лишнего СОМ-порта.

Конфигуратор оборудования — может падать с ошибками — просто перезапустить.
В целом 3 из 5 программ отработали без замечаний.

Автора данной статьи можно пинать ногами, обзывать ламером не умеющим в linux, но предлагать как нужно было сделать проще и быстрее.

Источник

Thread: FTDI on Linux for USB to RS-485 comm

mihai5 is offlineFirst Cup of Ubuntu

FTDI on Linux for USB to RS-485 comm

I am fairly new to Linux and am running Ubuntu 14.04. I am trying to use a USB to RS-485 converter: http://www.iocrest.com/en/product_details431.html
I followed the instructions on installing the driver: http://www.ftdichip.com/Support/Docu. r_Linux%20.pdf

But how do I actually configure the RS-485 settings and send/receive data?

You help is really appreciated.

blm-ubunet is offlineQuad Shot of Ubuntu

Re: FTDI on Linux for USB to RS-485 comm

Add your «user» to the «dialout» group.
The common FTDI & Parallax devices have kernel support.

Remove/plugin the USB adaptor.
run «dmesg»
or

dmesg | grep -i 'tty\|USB' > logging.txt

Config baud rate etc:
setserial
stty -F /dev/ttyUSB0 19200
could have to change permissions

Note: ttyUSB0 could be different number.

  • Site Areas
  • Settings
  • Private Messages
  • Subscriptions
  • Who’s Online
  • Search Forums
  • Forums Home
  • Forums
  • The Ubuntu Forum Community
    1. Ubuntu Official Flavours Support
      1. New to Ubuntu
      2. General Help
      3. Installation & Upgrades
      4. Hardware
      5. Desktop Environments
      6. Networking & Wireless
      7. Multimedia Software
    2. Ubuntu Specialised Support
      1. Ubuntu Development Version
      2. Security
      3. Virtualisation
      4. Ubuntu Servers, Cloud and Juju
        1. Server Platforms
        2. Ubuntu Cloud and Juju
      5. Gaming & Leisure
        1. Emulators
      6. Wine
      7. Development & Programming
        1. Packaging and Compiling Programs
        2. Development CD/DVD Image Testing
        3. Ubuntu Application Development
        4. Ubuntu Dev Link Forum
        5. Programming Talk
        6. Repositories & Backports
          1. Ubuntu Backports
            1. Bug Reports / Support
      8. System76 Support
      9. Apple Hardware Users
    3. Ubuntu Community Discussions
      1. Ubuntu, Linux and OS Chat
        1. Recurring Discussions
        2. Full Circle Magazine
      2. The Cafe
        1. Cafe Games
      3. Market
      4. Mobile Technology Discussions (CLOSED)
      5. Announcements & News
      6. Weekly Newsletter
      7. Membership Applications
      8. The Fridge Discussions
      9. Forum Council Agenda
      10. Forum Feedback & Help
        1. Request a LoCo forum
      11. Resolution Centre
    4. Other Discussion and Support
      1. Other OS Support and Projects
        1. Other Operating Systems
          1. Ubuntu/Debian BASED
          2. Debian
          3. MINT
          4. Arch and derivatives
          5. Fedora/RedHat and derivatives
          6. Mandriva/Mageia
          7. Slackware and derivatives
          8. openSUSE and SUSE Linux Enterprise
          9. Mac OSX
          10. PCLinuxOS
          11. Gentoo and derivatives
          12. Windows
          13. BSD
          14. Any Other OS
      2. Assistive Technology & Accessibility
      3. Art & Design
      4. Education & Science
      5. Documentation and Community Wiki Discussions
      6. Tutorials
        1. Outdated Tutorials & Tips
      7. Ubuntu Women
      8. Ubuntu LoCo Team Forums
        1. Americas LoCo Teams
          1. Argentina Team
            1. Software
            2. Hardware
            3. Comunidad
          2. Arizona Team — US
          3. Arkansas Team — US
          4. Brazil Team
          5. California Team — US
          6. Canada Team
          7. Centroamerica Team
          8. Chile Team
            1. Comunidad
            2. Hardware
            3. Software
            4. Instalaci�n y Actualizaci�n
          9. Colombia Team — Colombia
          10. Georgia Team — US
          11. Illinois Team
          12. Indiana — US
          13. Kentucky Team — US
          14. Maine Team — US
          15. Minnesota Team — US
          16. Mississippi Team — US
          17. Nebraska Team — US
          18. New Mexico Team — US
          19. New York — US
          20. North Carolina Team — US
          21. Ohio Team — US
          22. Oklahoma Team — US
          23. Oregon Team — US
          24. Pennsylvania Team — US
          25. Peru Team
          26. Texas Team — US
          27. Uruguay Team
          28. Utah Team — US
          29. Virginia Team — US
          30. West Virginia Team — US
        2. Asia and Oceania LoCo Teams
          1. Australia Team
          2. Bangladesh Team
          3. Hong Kong Team
          4. Myanmar Team
          5. Philippine Team
          6. Singapore Team
        3. Europe, Middle East, and African (EMEA) LoCo Teams
          1. Albania Team
          2. Catalan Team
          3. Portugal Team
          4. Egypt Team
          5. Georgia Team
          6. Ireland Team — Ireland
          7. Kenyan Team — Kenya
          8. Kurdish Team — Kurdistan
          9. Lebanon Team
          10. Morocco Team
          11. Saudi Arabia Team
          12. Sudan Team
          13. Tunisia Team
        4. Other Forums & Teams
        5. LoCo Archive
          1. Afghanistan Team
          2. Alabama Team — US
          3. Alaska Team — US
          4. Algerian Team
          5. Andhra Pradesh Team — India
          6. Austria Team
          7. Bangalore Team
          8. Bolivia Team
          9. Cameroon Team
          10. Colorado Team — US
          11. Connecticut Team
          12. Costa Rica Team
          13. Delhi Team
          14. Ecuador Team
          15. El Salvador Team
          16. Florida Team — US
          17. Galician LoCo Team
          18. Greek team
          19. Hawaii Team — US
          20. Honduras Team
          21. Idaho Team — US
          22. Iowa Team — US
          23. Jordan Team
          24. Kansas Team — US
          25. Libya Team
          26. Louisiana Team — US
          27. Maryland Team — US
          28. Massachusetts Team
          29. Michigan Team — US
          30. Missouri Team — US
          31. Montana Team — US
          32. Namibia Team
          33. Nevada Team — US
          34. New Hampshire Team — US
          35. New Jersey Team — US
          36. Northeastern Team — US
          37. Panama Team
          38. Paraguay Team
          39. Qatar Team
          40. Quebec Team
          41. Rhode Island Team — US
          42. Senegal Team
          43. South Carolina Team — US
          44. South Dakota Team — US
          45. Switzerland Team
          46. Tamil Team — India
          47. Tennessee Team — US
          48. Trinidad & Tobago Team
          49. Uganda Team
          50. United Kingdom Team
          51. US LoCo Teams
          52. Venezuela Team
          53. Wales Team
          54. Washington DC Team — US
          55. Washington State Team — US
          56. Wisconsin Team
          57. Yemen Team
          58. Za Team — South Africa
          59. Zimbabwe Team
Читайте также:  Linux run script from script

Bookmarks

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Источник

USB to RS485 converter on Linux [closed]

Questions on the use of electronic devices are off-topic as this site is intended specifically for questions on electronics design.

enter image description here

I have a USB to RS485 converter: It has a CH341 chip, that is all I know about it. When I plug it in, I can see that it is bound to port ttyUSB0. I want to be able to send and receive bytes from PC (Ubuntu) to a STM32 board. The board side is not a problem, but rather the PC side. Does someone have experience with such a device? Do I write the bytes that I want to send onto this serial port and the magic will happen, or does it have some special protocol, config bytes or command bytes or such? The datasheet is basically 1 page with literally no information in it. I am not familiar with serial port programming under Linux, but it will be fun to learn it. I just wanted to know whether I have to pay attention to anything special before I start working on this home project. Any information, code snippet or just advice or experience is very welcome 🙂

\$\begingroup\$ This device is broken by design. RS-485 to PC requires 3 signals: Tx/Rx-, Tx/Rx+ (sometimes called A and B) and signal ground. But you only have 2 signals so it won’t work. Either you need to buy a new converter which wasn’t designed by quacks (recommended), or you need to go chase down a ground somewhere else on your PC and connect that one to the target separately. \$\endgroup\$

Читайте также:  Linux and windows programming

1 Answer 1

Linux supports this IC natively and the ch341 module is probably loading correctly since you see the /dev/ttyUSB0 entry created. I had to manually upgrade this driver a few years ago, but recent kernels should have a decent version.

At the Linux programming level (C or Python, for example) you don’t handle configuration by writing/reading directly to the device, since the driver does that. You open the device file, configure it with ioctl system calls referencing the file descriptor and communicates using the regular write and read functions.

Applications will see the device as a regular serial port, so, the old Serial Programming HOWTO is a good place to start. Miniterm is also a good reference as well as man 3 termios for a full description of functions and arguments.

Going another level up, Python makes it easier: e. g. here and here.

Edit: moving my comment here to explain more clearly

You should be concerned with your application not being able to receive all data sent from the STM32 reliably. There is buffering in the IC itself but if your process is scheduled out for too long, you may loose bytes. You can change the process priority, limit the rate you send data from STM32, but if you really need a robust communication, you should add that flow control to your protocol.

For the command/response structure you mentioned, with small responses, it should work even without the delay at the STM32 side. If the higher level flow control is too complex, and it is acceptable to only detect that the received data is incomplete, you may just add sequence numbers, timestamps or even integrity checks.

Источник

Оцените статью
Adblock
detector