• Modbus TCP

• Modbus TCP Server FB

• Modbus TCP Client FB


Modbus TCP

Modbus Protokolü sinyalleri seri ve ethernet üzerinden gönderebilmektedir. Seri üzerinden gönderilen sinyallerden byte şeklinde olana Modbus RTU denilmektedir. ASCII olarak gönderilen ise Modbus ASCII denir. Ethernet üzerinden gönderilene ise Modbus TCP denilmektedir.

Modbus protokolünde Master-Slave ilişkis iyer almaktadır. Modbus TCP’de Master olana Client, Slave olana ise Server denilmektedir. 

Şekil 1: Modbus RTU ve TCP veri dizisi


NJ/NX kontrolcülerimizde Ethernet/IP portu yer almaktadır. Bu prot ile Socket Service kullanılarak TCP ya da UDP/IP üzerinden istenilen paket başka cihaza gönderilebilir. Bu yüzden NJ/NX kontrolcülerimiz dahili olarka Modbus TCP desteklemiyor olsa da dökümanda anlatılan fonksiyon blokları ile modbus TCP haberleşme sağlanabilir. 

Şekil 2: NJ/NX Ethernet/IP portu özellikleri


Modbus TCP Server Fonksiyon Bloğu

MTCP_Server Fonksiyon Bloğu NJ ve NX kontrolcülere Modbus TCP server özelliği kazandırmak için geliştirilmiştir. Bu fonksiyon bloğu ile Modbus Client cihazları haberleştirilebilir. Fonksiyon Bloğunun görünümü şekil 3’teki gibidir. 

Şekil 3: MTCP_Server FB Görünümü


MTCP_Server Fonksiyon bloğu kullanıcılar tarafından geliştirilmiştir ve kullanılmadan önce sistemle test edilmelidir. Son kullanım esnasında karşılaşın bir problemden dolayı

Omron Türkiye sorumlu değildir. MTCP_Server fonksiyon bloğu aktif edildiğinde herhangi bri nodbus TCP client cihazından bağlantı beklemeye başlar. Bu yüzden Primary task yerine fonksiyonun bloğunun Periodic Task’a eklenmesi tavsiye edilir. Desteklediği Modbus Fonksiyonları aşağıdaki gibidir.

Şekil 4: MTCP_Server FB’nin desteklediği Fonksiyon kodları


MTCP_Server Fonksiyon bloklarında yer alan giriş ve çıkışların açıklamaları aşağıdaki gibidir.

Start:MTCP_Server fonksiyon bloğunun aktif olmasını sağlar ve Client cihazdan komut beklemeye başlar.

Registers: Modbus register alanı. Array [0..1024] of WORD

Coils: Modbus bobin alanı. Array [0..1024] of BOOL

Connected: Client cihaz Server’a bağlandığında aktif olur.

Error: Client cihaz bağlanamadığında ya da bir hata olduğunda aktif olur.

ErrorID: Hata oluştuğunda Modbus TCP hata kodlarını görüntülenir. Hata kodları ve açıklamaları şekil 5’te yer almaktadır.

TCP_Status: TCP/IP bağlantısının durumunu belirtir.

IP_Client:Bağlanan Client cihazının IP adresini verir.

Port_Client: Bağlanan Client cihazın Port bilgisini verir. 


Şekil 5: ErrorID hata kodları ve açıklamaları


Modbus TCP Client Fonksiyon Blokları

MTCP_client Fonksiyon Blokları NJ ve NX kontrolcülere Modbus TCP Client özelliği kazandırmak için geliştirilmiştir. Bu fonksiyon bloğu ile Modbus Server cihazlara bağlanabilir, Şekil 6’daki modbus fonksiyonları gerçekleştirilebilir. 

Şekil 6: Modbus TCP Client ile kullanılabilecek Modbus Fonksiyonları


MTCP_Client_Connect fonksiyon bloğu ile ilk olarak server cihazına bağlanılmalıdır. Bağlantı gerçekleştikten sonra Modbus fonksiyonları için hazırlanan Fonksiyon Bloklarından uygun olan kullanılır.

MTCP_Client_Connect fonksiyon bloğunun görünümü şekil 7’deki gibidir ve değişkenleri şu şekildedir; 


Şekil 7: MTCP_Client_Connect



MTCP_Client_FN01, MTCP_Client_FN02, MTCP_Client_FN03, MTCP_Client_ FN04, MTCP_Client_FN05, MTCP_Client_FN06, MTCP_Client_FN10 fonksiyon bloklarının değişkenleri ise şu şekildedir.

Fonksiyon bloklarında oluşan hatalar ErrorID değişkenine gelecek değer ile şekil 5’ten kontrol edilmelidir.

Ayrıca Fonksiyon blokları Modbus TCP gerçekleştirmek için soket servis ve ona bağlı fonksiyon blokları kullanmaktadır. Bu yüzden manual’de yer alan “Precaution in Using Socket Service” bölümü dikkate alınmalıdır.


Precautions in Using Socket Services

9-7-1 Precautions for UDP and TCP Socket Services

• Communications processing are sometimes delayed when multiple functions of the built-in Ether-Net/IP port are used simultaneously or due to the contents of the user program.

• Communications efficiency is sometimes reduced by high communications traffic on the network line.

• The close processing for a close request instruction discards all of the buffered send and receive datafor the socket. For example, send data from a send request instruction immediately before the closeprocessing is sometimes not sent.

• After a socket is open, the built-in EtherNet/IP port provides a receive buffer of 9,000 bytes per TCPsocket and 9,000 bytes per UDP socket to enable data to be received at any time. If the receive buffer is full, data received by that socket is discarded. Make sure that the user application always executes receive requests to prevent the internal buffer from becoming full. 9-7-2 Precautions for UDP Socket Services

• The destination IP address can be set to a broadcast address for a UDP socket to broadcast data toall nodes on the network. However, in this case, the maximum length of send data is 1,472 bytes.Data lengths broken into multiple fragments (1,473 bytes or more in UDP) cannot be sent.

• For UDP socket, controls to confirm the reliability of communications, such as the confirmation of send data, are not performed. To improve the reliability of communications when you use UDP sockets, make sure the user program confirms that data is sent and resends data when necessary. 9-7-3 Precautions for TCP Socket Services

• If the TCP socket is closed on the remote node without warning during communications (i.e., if theconnection is closed), the socket at the local node must also be closed. You can use the Read TCPSocket Status instruction (SktGetTCPstatus) to see if the connection is closed. Immediately close thesocket at the local node if the TCP socket at the remote node is closed.

• If the remote node’s TCP socket closes without warning, the data to send may remain in the buffer at the local node. The remaining data is discarded in the local node’s TCP close processing. The steps that are required in applications to avoid this include sending data from the sending node that permits closing and closing the socket only after checking the remote node.

• While open processing is performed for a TCP socket, a port that was closed first cannot be opened again for 60 seconds from the time the close processing is performed for the remote socket. However, this is not true if you specified 0 (automatic assignment by the Unit) as the port for the SktTCPConnect instruction.

• You can use Connect from another socket to open a connection to a socket that was opened with Accept. A connection is not opened if you try to use Connect from another socket to open a connection to a socket that was opened with Connect. Also, a connection is not opened if you attempt to use Accept from another socket to open a socket that was opened with Accept. Furthermore, you cannot use Connect from more than one other node to establish multiple connections with a single TCP socket that was opened with Accept on the built-in EtherNet/IP port.

• You can use the keep-alive function for TCP sockets at the built-in EtherNet/IP port. The keep alive function checks whether a connection is normally established when no data is sent or received for a certain period on the communications line where the connection was established. The built-in EtherNet/IP port responds to checks from othernodes even if keep alive is not specified.



İlgili Ürünleri Ziyaret Etmek İçin https://mekatronikelektrik.com/

Source : Link