Programmeeritavad kontrollerid
Euroopa struktuurfondide logo
Siemens LOGO! viide Automatiseerimise viide Mehhatroonikaseadmete viide Pneumoautomaatika viide
Joonis
Joonis

Ülesanne: Andmete saatmine PLC-st arvutisse kasutedes RS-485

Juhtpaneeli kirjeldus

Juhtpaneelil on 3 nuppu (S1 - Start, S2 - Stop, S4 - Reset), üks võtmega lüliti (S3 - Auto/Man) ja 4 indikaatortuld (H1, H2, H3, H4).

Ülesande püstitus:

  1. Koostada PLC programm, mis START nupu vajutusel saadaks ühekordselt PLC-st arvutisse stringi: "Tere! see on test.", RS-485 protokolli vahendusel, kasutades arvuti järjestikporti ja kontrolleri vastavat kommunikatsioonimoodulit.

    Järgneval nupuvajutusel peab olema saatmine korratav.

    Andmeside boodikiirus peab olema 9600, kasutades ühte stopp-bitti ning mitte kasutama paari-bitte. Ühe märgi pikkus peab olema 8 bitti.

  2. Teha füüsiline ühendus arvuti ja PLC vahel.
  3. Testida, et loodud lahendus töötab nõuetekohaselt.

Eeldused

  1. Vabalt programmeeritav tööstuskontroller (näiteks S7-1200 CPU 1214C)
  2. RS-485 Kommunikatsioonimoodul (näiteks CM 1241 (RS422/485)) või kontrollerile sisseehitatud RS-485 liides.
  3. Arvuti
  4. RS-485 kaart või RS-485 >< USB adapter arvutile (Näiteks Digitus DA-70157 või FTDI USB-COM485-PLUS1)
  5. Järjestikpordi terminali tarkvara (Näiteks MS Windowsile: PuTTY, RealTerm, HyperTerminal ; UNIX laadsetele süsteemidele: Minicom, CuteCom)
  6. Kaabel PLC ja arvuti ühendamiseks või vahendid selle tegemiseks (D-SUB 9 F ja D-SUB 9 M pistikud ja keerupaariga kaabel)

Lahenduse näide (Riistvara)

Seadmete vaheline ühendus
RS-485 ühendusskeem

CM 1241 RS422/RS485 pesa
Pin number Nimetus Kirjeldus
1 GND Loogika ja kommunikatsiooni maa
2 TxD+ RS422 TxD B (saatmine +)
3 TxD+ RS485 Data B (Saatmine ja vastuvõtt +) või RS422 RxD B (Vastuvõtt +)
4 RTS Palve saatmiseks (Request to send), TTL tasemega väljund
5 GND Loogika ja kommunikatsiooni maa
6 PWR +5V toiteväljund, läbi 100Ω takisti
7 N/A
8 TXD- RS485 Data A (Saatmine ja vastuvõtt -) või RS422 RxD A (Vastuvõtt -)
9 TXD- RS-422 TxD A (saatmine -)

Digitus Digitus DA-70157 pistik
Pin number Nimetus Kirjeldus
1 DATA A Vastuvõtt ja saatmine -
2 DATA B Vastuvõtt ja saatmine +
3 N/A
4 N/A
5 GND Loogika ja kommunikatsiooni maa
6 PWR +5V toiteväljund
7 N/A
8 N/A
9 N/A

Märkus: Kui kasutusel on mõni teine USB<>RS-485 adapter või RS-485 kaart, siis tuleb selle ühendusviis järele vaadata selle dokumentatsioonist.

Lahenduse näide (Tarkvara, PC)

Järjestikpordi numbri leidmine

Et teada saada RS-485 pordi numbrit, võib USB adapterite puhul avada Windowsi Device Manager-i ning seejärel ühendada RS-485 ><USB adapteri arvuti USB pordiga, misjärel ilmub Device Manager-i alla uus seade, mille taga on kirjas pordi number.

Pordinumber jagatakse Windowsi poolt, seadme ühendamisel, viimati olnud seadistuse järgi või antakse järgmine teadaolev vaba pordinumber. Pordinumbrit on võimalik hiljem käsitsi muuta.

[joonis]

Järjestikpordi terminali seadistus

[joonis] [joonis]

Lahenduse näide (Tarkvara, PLC)

Kommunikatsioonimooduli seadistus

  1. Tuleb veenduda, et RS-485 toega kommunikatsioonimoodul (Näiteks CM 1241 RS422/485) on projekti lisatud.
  2. Kommunikatsioonimoodulil tuleb valida õige töörežiim RS-485 põhise võrgu jaoks:
    [Pilt: Kommunikatsioonimooduli töörežiimi valimine]
  3. Tuleb järgi vaadata kommunikatsioonimooduli süsteemikonstandist aadress, mille abil selle poole programmiliselt pöörduda saab:
    [Pilt: Kommunikatsioonimooduli süsteemikonstandi leidmine]

Sümbolite nimekiri

Nimi Andmetüüp Aadress Kommentaar
start_btn BOOL %I8.0 Surunupp S1
frontmem_start_btn BOOL %M0.0 Tõusva frondi tuvastuse mälubitt

Andmeplokk: PORT_CFG_DB [DB1]

Automaatselt genereeritud

Andmeplokk: SEND_CFG_DB [DB2]

Automaatselt genereeritud

Andmeplokk: SEND_PTP_DB [DB3]

Automaatselt genereeritud

Andmeplokk: com_serial [DB4]

Nimi Andmetüüp Algne väärtus Kommentaar
buffer string 'Tere! See on test.' PC-sse saadetav string
step USInt 0 Sammu loend

Programm: Main [OB1]

Nimi Andmetüüp Kommentaar
serial_port word Serial port name/address

SCL (TIA V13.1)
// Define which serial port we use:
#serial_port := "Local~CM_1241_(RS422_485)_1";

// Port configuration:
"PORT_CFG_DB"("PORT":=#serial_port, // Serial port name/address
        PROTOCOL:=0, // 0: Point-to-point communication protocol
        BAUD:=6, // 6: Port baud rate: 9600
        PARITY:=1, // 1: No parity
        DATABITS:=1, // 1: 8 bits per character
        STOPBITS:=1, // 1: 1 stop bit
        FLOWCTRL:=1, // 1: No flow control
        WAITTIME:=2000 // Wait time for XON or CTS after transmission start
        );

// Send procedure configuration:
"SEND_CFG_DB"("PORT":=#serial_port,
        RTSONDLY:=0, // The time that should elapse after activating RTS until the start of transmission.
        RTSOFFDLY:=0, // Time that should elapse after the end of transmission until deactivation of RTS.
        BREAK:=12, // Specifies the bit times for a break, which are sent at the start of the message.
        IDLELINE:=12 // Specifies the bit times for idle line after the break at the start of the message.
        );

// Sending:
"SEND_PTP_DB"("PORT":=#serial_port,
        BUFFER:="com_serial".buffer, // Send buffer
        LENGTH:=INT_TO_UINT(LEN("com_serial".buffer)) // Buffer length
        );

CASE "com_serial".step OF
  0:
    "PORT_CFG_DB".REQ := 1;
    "com_serial".step := 1;
  1:
    IF "PORT_CFG_DB".DONE THEN
      "PORT_CFG_DB".REQ := 0;
      "SEND_CFG_DB".REQ := 1;
      "com_serial".step := 2;
    END_IF;
  2:
    IF "SEND_CFG_DB".DONE THEN
      "SEND_CFG_DB".REQ := 0;
      "com_serial".step := 3;
    END_IF;
  3:
    IF "start_btn" AND NOT "frontmem_start_btn" THEN
      "SEND_PTP_DB".REQ := 1;
      "com_serial".step := 4;
    END_IF;
  4:
    IF "SEND_PTP_DB".DONE THEN
      "SEND_PTP_DB".REQ := 0;
      "com_serial".step := 3;
    END_IF;
END_CASE;

// Store start button state for rising front detection:
"frontmem_start_btn" := "start_btn";
Creative Commons Licence
"Programmeeritavad kontrollerid" is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License .