Thư viện MQTT client cho S7 1200, S7 1500

mqtt s7
80 / 100

MQTT là 1 giao thức hoạt động theo cơ chế publish và subscribe ở lớp TCP/IP. MQTT truyền giữ liệu theo cơ chế message, ở môi trường mạng không ổn định cơ chề này vẫn hoạt động đáng tin cậy, không làm rơi lạc dữ liệu. MQTT client là một giải pháp IoT mạnh mẽ khi bạn muốn thu thập lưu trữ dữ liệu từ PLC S7 1200/ 1500 qua internet realtime, rẻ tiền. Server hỗ trợ MQTT hiện có rất nhiều, điển hình là AWS cloud servers.

MQTT Broker khá phổ biến hiện nay, nhiều broker Free cho bạn tha hồ test, ví dụ: https://www.emqx.com/en/mqtt/public-mqtt5-broker.

MQTT Broker có thể cài cùng server web của bạn như Mosquitto.. hoặc bạn thuê 1 Broker độc lập của AWS (Amazone), Azure (microsoft), HiveMQ, MQ… sau có thiết kế web server của bạn như 1 mqtt client để giao tiếp với các client khác qua Broker đó.

1-Ưu điểm của MQTT:

  • Giao thức đóng gói dữ liệu nhẹ
  • Ngốn ít băng thông mạng
  • Tự động reconnect và gửi lại message nếu bị mất kết nối
  • Độ tin cậy mức Qos
  • Tùy chọn mã hóa tin nhận bằng SSL/TLS
  • Xác thực bằng user và password

2-Yêu cầu:

  • S7 1500 CPU Firmware 2.2 trở lên. S7 1200 firmware 4.3 trở lên
  • Module thì có thể dùng: CP1243-1 firmware 3.2 trở lên. CP1243-7 LTE firmware 3.2 trở lên
  • Phần mềm: Tia V15.1 trở lên
  • Phần Server lưu ý hỗ trợ MQTT broker, nếu muốn mã hóa thông tin có thể chọn với SSL/TLS.
  • PLC sẻ kết nối tới MQTT broker qua IP tĩnh hoặc domain name (QDA-Qualified Domain Name)

S7-1500: Firmware >= v2.2 and TIA v15.1 or higher.

S7-1200: Firmware >= v4.3 and TIA v16 or higher.

CP 1243-1: Firmware >= v3.2 and TIA v16 or higher.

CP 1243-7 LTE: Firmware >= v3.2 and TIA v16 or higher.

3-Các kiệu Data Type kèm:

3.1- LMQTT_typeTcpConnParamData: cấu hình kết nối với MQTT Broker

Với S7 1500:

Thông số Data Type Diễn giải
useQdn BOOL True- nếu kết nối qua Domain Name
hwIdentifier HW_ANY HW ID của PROFINET CPU
connectionID CONN_OUC ID của TCP connection
qdnAdressBroker String [254] URL của MQTT broker, kết thúc bằng ký tự (“.”). ví dụ khi bạn cài broker trên máy tính thì trỏ tới qua dns là ip máy ví dụ: ‘192.168.0.10.’, hoặc dns: ‘broker.emqx.io.’
ipAdressBroker Array [0..3]of USInt IP address của MQTT broker, ví dụ. 192.168.0.10
ipAdressBroker[0] = 192
ipAdressBroker[1] = 168
ipAdressBroker[2] = 0
ipAdressBroker[3] = 10
localPort UINT Local port number của CPU PLC
mqttPort UINT Remote port của MQTT broker, ví dụ với dns: ‘broker.emqx.io.’ bạn có thể test ngay kết nối TCp qua port 1883 khi không dùng TLS
activateSecureConn BOOL True nếu chọn kết nối với bảo mật TLS
validateSubjectAlternateName
OfServer
BOOL cài true nếu activateSecureConn = true
idTlsServerCertificate UDINT ID của chứng chỉ X.509 V3 (thường là chứng chỉ CA)
để xác thực máy chủ TLS. Chỉ dùng khi activateSecureConn = true
idTlsOwnCertificate UDINT ID của chứng chỉ X.509 V3 của riêng bạn để xác nhận đối với máy chủ TLS. Chỉ dùng khi activateSecureConn = true

Với S7 1200:

Thông số Data Type Diễn giải
hwIdentifier HW_ANY HW ID của PROFINET CPU
connectionID CONN_OUC ID của TCP connection
ipAdressBroker Array [0..3]of USInt IP address của MQTT broker, ví dụ. 192.168.0.10
ipAdressBroker[0] = 192
ipAdressBroker[1] = 168
ipAdressBroker[2] = 0
ipAdressBroker[3] = 10
localPort UINT Local port number của CPU PLC
mqttPort UINT Remote port của MQTT broker
     
     
activateSecureConn BOOL True nếu chọn kết nối với bảo mật TLS
validateSubjectAlternateName
OfServer
BOOL cài true nếu activateSecureConn = true
idTlsServerCertificate UDINT ID của chứng chỉ X.509 V3 (thường là chứng chỉ CA)
để xác thực máy chủ TLS. Chỉ dùng khi activateSecureConn = true
idTlsOwnCertificate UDINT ID của chứng chỉ X.509 V3 của riêng bạn để xác nhận đối với máy chủ TLS. Chỉ dùng khi activateSecureConn = true

3.2- Data type “LMQTT_typeParamData”: định nghĩa giao tiếp với MQTT Broker

Parameters Data type Giải thích
connectFlag LMQTT_typeConnectFlags – cleanSession (bool): true cho phép xóa data phiên trước đó
will (bool): Active tính năng “Last Will and Testament”, nếu set fale thì các tính năng sau cũng fale: “willQoS_1”, “willQoS_2”, “willRetain”. Tính năng này kích hoạt thì các willtopic phải có để nó gọi ra.
– willQoS1 (bool): true nếu QoS lưu cấp 1
– willQoS2 (bool): true nếu QoS lưu cấp 2
– willRetain (bool): true nếu dữ liệu đã lưu và chưa gửi
password: true nếu cài MQTT broker yêu cầu password đăng nhập từ PLC
username: true nếu cài MQTT broker yêu cầu username đăng nhập từ PLC
     
keepAlive UInt Khoảng thời gian của hàm KeepAlive tính theo
giây để duy trì kết nối. Nếu tham số keepAlive=0, các chức năng KeepAlive bị hủy kích hoạt.
clientIdentifier String [23] Tên cho client, tên này được MQTT Broker nhận dạng khi kết nối thiết lập, chỉ cho phép ký tự Hoa, thường và số.
willTopic String [100] Topic for the last, liên quan cờ willconnectFlag được set true
willMessage String [100] Message for the
last, liên quan cờ willconnectFlag được set true
userName String [100] username , liên quan cờ usernameconnectFlag được set true
password String [200] password , liên quan cờ usernameconnectFlag được set true

3.3- LMQTT_typePublishData: cấu trúc data gửi tới MQTT Broker

Parameters Data type Meaning
publishMessage BOOL Set True để truyền dữ liệu cho MQTT Broker, nếu truyển thành công thì Out ra báo “done” và tự reset publishMessage
publishTopic WString [250] Tên của Topic, kích thước có thể định nghĩa ở MAX_SENDBUFFER và MAX_PUBLISH_MESSAGE trong FB
publishMessageData STEP 7 V15.1
WString [1500]• STEP 7 V16
WString [800]
Nội dung data gửi đi, kích thước có thể định nghĩa ở MAX_SENDBUFFER và MAX_PUBLISH_MESSAGE trong FB
publishQoS Int Định nghĩa các thức truyền QoS
– “0” for QoS level 0
– “1” for QoS level 1
– “2” for QoS level 2
publishRetainFlag BOOL True nếu set lưu Dữ liệu trên MQTT Broker

3.4- LMQTT_typeSubscribeData: cấu trúc quản lý nhận data từ MQTT Broker

Parameters Data type Giải thích
subscribeToTopic Bool True để cho phép nhận data từ subscriptionTopic MQTT Broker
unsubscribeFromTopic Bool True để từ chối nhận data từ subscriptionTopic MQTT Broker
subscriptionTopic WString [250] Tên của Topic từ MQTT Broker
subscriptionQoS Int Định nghĩa cấp độ QoS
– “0” for QoS level 0
– “1” for QoS level 1

3.5- LMQTT_typeSubscriptionData: cấu trúc data nhận được từ MQTT Broker

Parameters Data type Diễn giải
newMessageReceived BOOL True nếu PLC đã nhận được data xong
messageInvalid BOOL Lỗi data nhận do: Internal buffer của FB “LMQTT_Client” quá nhỏ, receivingTopic hay receivedMessageData quá nhỏ
receivingTopic WString [400] Tên của subscribed topic nhận được
receivedMessageData WString [2400] Toàn bộ dữ liệu data nhận được

4. Add thư viện:

Lôi thư viện ra và sử dụng:

 

4. Code chương trình PLC:

  • enable (bool): true- connect to MQTT broker, false- disconnect
  • publishData: nếu kết nối thành công thì dữ liệu được publish theo cấu trúc LMQTT_typePublishData
  • subscribeToTopic: nếu kết nối tới MQTT broker tồn tại thì dữ liệu sẻ được nhận vào subscriptionMessage khai báo trong cấu trúc data LMQTT_typeSubscribeData
  • tcpConnParam: cấu hình để thiết lập kết nối thông qua TCP, đóng gói theo cấu trúc data LMQTT_typeTcpConnParamData
  • mqttParam: cầu hình thiết lập kết nối MQTT với MQTT Broker, đóng gói theo cấu trúc LMQTT_typeParamData

Host MQTT Broker thì bạn có thể thuê rất nhìu nhà cung cấp dịch vụ trên mạng cung ứng giải pháp này, điển hình là Amazon với AWS IoT support for MQTT.

Các bạn cũng có thể cài đặt và test với MQTT Mosquitto và giám sát qua MQTT Explorer 

5- Tải về

TẢI VỀ TRỌN BỘ: thự viện MQTT S7 Tia V15.1, thự viện MQTT S7 Tia V16, Project mẫu MQTT với Tia V15.1, Project mẫu MQTT với Tia V16, Hướng dẫn chi tiết pdf

DOWNLOAD NOW S7 MQTT FULL DEMO PROJECT TIA V15.1 VÀ TIA V16

DOWNLOAD THƯ VIỆN VỚI TIA V17

Các thư viện có của Tia V15.1 hay V16 đều có thể upgrade thi Add thư viện nhé

Nhiu đây chưa đủ mà bạn còn phải ngâm cứu, tìm hiểu sâu hơn để hoàn thiện 1 dự án IoT thực chiến nhé, nếu cảm thấy hữu ích xin cho 1 comment và like fanpage nhé.

Tìm hiều thêm về MQTT:

MQTT và khái niệm cơ bản

2 thoughts on “Thư viện MQTT client cho S7 1200, S7 1500

  1. Long says:

    Mình sử dụng PLC S7-1200 1211C firmware 4.4 , router wifi để lên PLC kết nối tới mạng . Mình đã làm với cloud AWS , Azure nhưng không thành công , không kết nối được tới cloud . Mình chỉ làm được kết nối với server local là Node-red Aedes . Giờ mình muốn làm với cloud pubic thì như thế nào ạ ?

Leave a Reply

Your email address will not be published. Required fields are marked *

Exit mobile version