TÓM TẮT LUẬN VĂN Trong quá trình triển khai một dự án tự động hóa, các kỹ sư phải đối mặt với các vấn đề: giảm thiểu thời gian phát triển, tối ưu hóa nhân sự thực hiện, tăng tính linh ho
Vấn đề đặt ra
Trong quá trình phát triển một hệ thống điều khiển tự động hóa, các kỹ sư phải trải qua các quy trình như sau:
Hình 1.1: Quy trình thực hiện dự án Trong suốt quy trình đó, có nhiều vấn đề cần đối mặt: giảm thiểu về thời gian phát triển, chất lượng và tính linh hoạt cao hơn Đặc biệt là yêu cầu về khả năng sử dụng lại của chương trình lập trình nhằm tối ưu hóa nhân lực và chi phí
Nhận thấy rằng, các giai đoạn 2, 3 và 4 gây mất nhiều thời gian và đòi hỏi sự chính xác cao Chính vì vậy, việc phát triển một phần mềm để thực hiện các bước này là cần thiết
Hình 1.2: Quy trình thực hiện dự án rút gọn
GVHD: TS TRƯƠNG ĐÌNH CHÂU 2 Với ưu thế này, sau khi nhận thông tin về hệ thống, kỹ sư có thể bắt tay vào lập trình cho hệ thống mà vẫn đảm bảo các thiết bị được khai báo đầy đủ và chính xác Điều này giúp tiết kiệm thời gian và chi phí
Bên cạnh đó, việc lập trình một thiết bị phụ thuộc nhiều vào bộ điều khiển mà hệ thống đang sử dụng Ứng với mỗi bộ điều khiển PLC của các hãng khác nhau sẽ có một phần mềm phát triển khác nhau
Siemens: TIA Portal, Step 7, WinCC
Mitsubishi: GX Works 2, GX Developer
Các phần mềm này được phát triển bởi những hãng khác nhau nhưng ngôn ngữ lập trình trong các khối block đều dựa trên tiêu chuẩn IEC61131-3: LAD, FBD, STL… Một vấn đề gặp phải với IEC61131-3 là chưa có định dạng chuẩn cho các đối tượng trong công cụ lập trình PLC Điều này dẫn đến các phần mềm này chưa tương thích được với nhau, đòi hỏi phải có thư viện riêng tương ứng
Chính vì lý do đó, gần đây, tổ chức PLCOpen đã nghiên cứu và định nghĩa một định dạng mới dựa trên XML cho các đối tượng PLC theo tiêu chuẩn IEC61131-3 Định dạng mới này cho phép các đối tượng thuộc các chương trình khác nhau quy về một định dạng duy nhất Từ đó có thể chỉ cần 1 thư viện duy nhất và các đối tượng có thể chuyển đổi qua lại giữa các phần mềm dễ dàng.
Giới thiệu đề tài
Chính vì các vấn đề đặt ra, tôi đã lựa chọn đề tài “Phát triển công cụ tích hợp BKSI (Bach Khoa’s Smart Integration) trên nền tảng C# và AutomationML” để chuẩn hóa các quy trình và tái sử dụng ở các dự án khác nhau Đồng thời giảm thiểu tối đa công sức và thời gian khi thực hiện một dự án tự động hóa
Bên cạnh đó, như đã đề cập phần đầu, mỗi hệ thống điều khiển sẽ do nhà sản xuất quy định phương thức lập trình và chương trình lập trình khác nhau Chính
GVHD: TS TRƯƠNG ĐÌNH CHÂU 3 vì vậy, để tăng khả năng linh hoạt có thể áp dụng toàn bộ hệ thống khác nhau, tôi đã quy về chuẩn ngôn ngữ lập trình chung hiện đang được các nhà sản xuất hàng đầu ủng hộ và sẽ là xu hướng trong thời đại công nghiệp 4.0 đó là chuẩn XML
OB, FB, FC, DB, Tags
Hình 1.3: Vai trò của BKSI và cấu trúc hệ thống Như vậy những lợi ích mà phần mềm BKSI có thể đem lại:
Tái sử dụng dễ dàng
Tăng lợi ích kinh tế do giảm thiểu chi phí và thời gian
Các tính năng chính của phần mềm BKSI
Thành lập danh sách IO list các thiết bị dùng cho hệ thống
Từ danh sách thiết bị, tạo ra file Tags list import vào chương trình lập trình
Tạo tự động các block trong chương trình lập trình để điều khiển các thiết bị tương ứng theo cấu trúc XML của AutomationML và PLCOpen
GVHD: TS TRƯƠNG ĐÌNH CHÂU 4
IO List trình phê duyệt
Tags List khai báo thiết bị
XML điều khiển thiết bị Chương trình tích hợp Bach Khoa Smart Integration
GVHD: TS TRƯƠNG ĐÌNH CHÂU 5
Hình 1.4: Sơ đồ tính năng của phần mềm BKSI Thêm vào đó, thông tin được lưu trữ dưới dạng xml sẽ như các đối tượng độc lập, không phụ thuộc vào phần mềm riêng biệt để đọc các nội dung block.
Mục tiêu và nhiệm vụ
Định dạng các đối tượng trong PLC thành một chuẩn xml duy nhất
Tạo công cụ tích hợp có thể tương tác với phần mềm lập trình PLC vừa rút ngắn thời gian thực hiện dự án, vừa để áp dụng việc chuẩn hóa này Để đạt được các mục tiêu này cần thực hiện các công việc sau:
Sử dụng kiến thức từ môn học tự động hóa công nghiệp, mạng công nghiệp, Scada, PLC Để hiểu được cấu trúc, quy trình của một dự án PLC
Nghiên cứu và tìm hiểu thư viện TIA Openness để vận dụng các tính năng mà thư viện này hỗ trợ
Nghiên cứu và tìm hiểu cách chuyển đổi một đối tượng PLC thành định dạng xml theo cấu trúc quy định của AutomationML và PLCOpen
Tìm hiểu cách tạo ra các đối tượng trong chương trình lập trình PLC theo một file xml sẵn có
Phát triển phần mềm dựa trên nền tảng C# để tạo thành một công cụ duy nhất
Sau khi hoàn thành đề tài, rút ra một số kết luận về những thuận lợi và bất lợi của đề tài, những phần cần được nâng cấp hoặc sửa đổi để tối ưu hóa
GVHD: TS TRƯƠNG ĐÌNH CHÂU 6
Tổng quan hệ thống
Bộ điều khiển - PLC
PLC (programable logic controler) là thiết bị điều khiển logic lập trình được, hay thiết bị logic khả trình cho phép thưc hiện linh hoạt các thuật toán điều khiển logic thông qua một ngôn ngữ lập trình
Hiện tại trên thị trường có nhiều dòng PLC như: Siemens, Mitsubishi, Schneider, Omron Trong đó dòng PLC Siemens hiện nay đang được sử dụng rộng rãi do dễ sử dụng, giá thành cạnh tranh nhưng vẫn đầy đủ các tính năng
Hiện tại Siemens gồm các dòng PLC cơ bản sau: S7-200, S7-300, S7-400, S7- 1200, S7-1500 Trong đó có hai dòng mới nhất đó là S7-1200 và S7-1500
PLC S7-1200 PLC S7 1200 có thể sử dụng một cách độc lập hoặc trong cấu trúc được phân phối Thiết kế nhỏ gọn, thuận tiện cho việc lắp đặt, lập trình và vận hành Tích hợp sẵn I/O đầu vào và đầu ra dưới dạng tín hiệu digital và analog, có khả năng mở rộng số lượng I/O Công suất lớn, được tích hợp các công nghệ như đếm, đo lường, điều khiển vòng kín, điều khiển chuyển động Tích hợp sẫn Web Sever với tiêu chuẩn và đặc thù người dùng web…
GVHD: TS TRƯƠNG ĐÌNH CHÂU 7 PLC S7 1200 gồm các dòng cơ bản sau: CPU 1211C, CPU 1212C, CPU 1214C, CPU 1215C, CPU 1217C
- Truyền thông qua PtP (Point to Point): với chuẩn vật lý của RS-232 và RS-485
- Truyền thông qua mạng ProfileBus
- Truyền thông qua mạng Ethernet
- Ngoài ra có thể kết hợp với các module truyền thông qua mạng GSM/ GPRS trong mạng điện thoại di động
PLC S7-1500 PLC S7 1500 là dòng PLC được phát triển để có thể thay thế cho PLC S7 400
Kích thước nhỏ gọn, CPU có tốc độ tính toán xử lý cao Đặc biệt có tích hợp tính năng motion control để điều khiển tốc độ, vị trí hỗ trọ cho encoder, tích hợp web sever với các tùy chọn để tạo ra các trang web do người dùng định nghĩa
Hình 2.2: Thiết bị PLC S7-1500 Một số dòng PLC S7 1500: CPU 1511-1PN, CPU 1513-1PN, CPU 1515-2PN, CPU 1516-3PN/DP, CPU 1517-3PN/DP, CPU 1518-4PN/DP
GVHD: TS TRƯƠNG ĐÌNH CHÂU 8 - Truyền thông qua PtP (Point to Point): với chuẩn vật lý của RS-232 và RS-485
- Truyền thông qua mạng ProfileBus
- Truyền thông qua mạng Ethernet
- Ngoài ra có thể kết hợp với các module truyền thông qua mạng GSM/ GPRS trong mạng điện thoại di động.
Thiết bị và tín hiệu điều khiển
Các thiết bị trường có mục đích thực hiện các lệnh cũng như trả tín hiệu hồi tiếp về bộ điều khiển trung tâm (PLC) Mục đích các thiết bị này là có thể điều khiển chuyển động, đo lưu lượng, nhận biết sự kiện (nút nhấn),…
Bộ điều khiển truyền lệnh hoặc nhận thông tin từ các thiết bị này thông qua các ngõ vào/ra (I/O) được tích hợp Vì vậy, ứng với mỗi thiết bị sẽ có số lượng và các kiểu vào/ra khác nhau
On/Off Command Feedback Open
Hình 2.3: Khối thiết bị valve bướm
On/Off command: tín hiệu cho phép đóng, mở valve
Local Mode: Chế độ mở bằng nút nhấn tại local
Feedback Open/Close: tín hiệu trả về bộ điều khiển cho biết trạng thái của valve
Feedback Error: Tín hiệu trả về khi valve bị lỗi
GVHD: TS TRƯƠNG ĐÌNH CHÂU 9 Thiết bị đo mức:
Hình 2 4: Khối thiết bị Analog Input
Set point: tín hiệu cài đặt ngưỡng cho phép
Level Feedback: tín hiệu trả về bộ điều khiển cho biết mức đo được
Alarm: Tín hiệu trả về khi mức vượt ngưỡng cho phép
Run/Stop command Feedback RUN
Hình 2 5: Khối thiết bị động cơ
Run/Stop command: tín hiệu cho phép bật, tắt động cơ
Local Mode: chế độ chạy Local của động cơ
Speed: Tín hiệu cài đặt tốc độ của động cơ
Feedback RUN/STOP: tín hiệu trả về bộ điều khiển cho biết trạng thái của động cơ
TRIP: Tín hiệu trả về khi động cơ bị lỗi.
Hồ sơ thiết kế hệ thống
Một hệ thống điều khiển luôn có một tài liệu thiết kế chứa thông tin về hệ thống được gọi là tài liệu IO List IO list chứa danh sách các thiết bị điều khiển, cung cấp đầy đủ ngõ vào (Input) và ngõ ra (Output) của hệ thống Do đó, chỉ những Tag nào có kết nối vật lý đến hệ thống điều khiển mới xuất hiện trên danh sách IO List
Khi có nhiều hơn một hệ thống điều khiển trong một nhà máy (hệ PCS và SIS), danh sách I / O phải chỉ rõ những hệ thống điều khiển nào mà thiết bị được kết nối
Một tài liệu I/O list có thể được trình bày theo nhiều kiểu khác nhau Tuy nhiên một bản hoàn chỉnh đều phải chứa những thông tin cơ bản sau:
Tag number: Tên nhãn gắn trên đường dây kết nối
Type of Instrument: mô tả loại thiết bị là valve, motor, sensor…
Description: mô tả chi tiết thiết bị
I/O Type: Loại ngõ vào/ra: digital, analog…
I/O address: Địa chỉ của I/O trên thiết bị điều khiển
Range of setpoint: giới hạn đối với tín hiệu analog
Khi triển khai một dự án, IO List là tài liệu rất quan trọng, giúp cho các nhà tích hợp hình dung được kích thước của hệ thống, từ đó lựa chọn bộ điều khiển cho phù hợp Ngoài ra, sau khi hệ thống đã được xây dựng nên, tài liệu IO List lúc này như là một cơ sở để chủ đầu tư và nhà tích hợp kiểm tra số lượng cũng như sự hoạt động của các thiết bị phần cứng có chính xác hay không
Có 2 loại tài liệu IO List:
IO List document: dùng để phê duyệt, comissionning
TagList: dùng để Import vào chương trình lập trình hệ thống
Hai tài liệu này cần phải chính xác và thống nhất với nhau Nếu hệ thống thiếu hoặc sai một tín hiệu thì sẽ dẫn đến không hoạt động được Vì vậy khi thực hiện
GVHD: TS TRƯƠNG ĐÌNH CHÂU 11 trong thực tế, các kỹ sư phải tốn thời gian khá lớn và phải check cẩn thận khi thực hiện 2 tài liệu này
Hình 2.6: Mẫu tài liệu IO List
AutomationML, nền tảng của công nghiệp 4.0
AutomationML là một hiệp hội công nghiệp được thành lập vào 2006 và được đăng ký vào năm 2009 Xuất phát từ ý tưởng của công ty lắp ráp ô tô Daimler, Automation ML được phát triển và giới thiệu lần đầu tiên vào tháng 10 năm 2006 với sự có mặt của các công ty ABB, KUKA, Rockwell Automation, Siemens, NetAllied và các trường đại học Lúc này, Automation ML được xem như là một định dạng trung gian của “nhà máy kỹ thuật số” (Digital Factory)
Ngay từ những lúc đầu thành lập, Automation ML xác định mục tiêu không phải phát minh ra một định dạng dữ liệu mới Thay vào đó, các kiểu dữ liệu sẵn có nên kết hợp lại với nhau, thúc đẩy sự phát triển
GVHD: TS TRƯƠNG ĐÌNH CHÂU 12 Chính vì lý do đó, mục tiêu của hiệp hội Automation ML là xúc tiến và phát triển Automation ML để chuẩn hóa việc trao đổi dữ liệu trong quy trình kỹ thuật của các hệ thống sản xuất
Khái niệm Automation ML (Automation Markup Language) được phát triển dựa trên tiêu chí mở (open) và trung lập (neutral), dựa trên nền tảng xml và được chuẩn hóa theo tiêu chuẩn quốc tế Chính vì vậy, dữ liệu được trích xuất và truyền dữ liệu một cách hiệu quả và không mất mát nào, đây chính là chìa khóa cho sự thành công của Automation ML
AutomaitonML có khả năng mô tả các thuộc tính khác nhau của đối tượng, thông qua kết hợp các tiêu chuẩn khác nhau:
Cấu trúc liên kết: dựa trên CAEX (IEC 62424) Bao gồm thuộc tính và mối quan hệ các thành phần trong cấu trúc phân cấp
Hình học: dựa trên COLLADA của tập đoàn Khronos Mô tả thuộc tính đồ họa và thông tin 3D
Truyền động: dựa trên COLLADA Mô tả sự kết nối và phụ thuộc của các đối tượng trong quá trình chuyển động
Ngôn ngữ lập trình: dựa trên PLCOpen XML Mô tả chuỗi các bước và kết nối của I/O
GVHD: TS TRƯƠNG ĐÌNH CHÂU 13
Hình 2.7: Các khả năng mô tả của Automation ML Trong triển lãm tự động hóa Hannover được tổ chức tại Đức vào tháng 10/2017 với chủ đề: “Công nghiệp 4.0”, AutomationML đã được giới thiệu rộng rãi và nhận được sự ủng hộ rất lớn của các công ty Tự động hóa Công ty Festo đã phát biểu như sau: “Ngôn ngữ mô tả chuẩn hóa AutomationML (AML) là một yếu tố quan trọng đối với ngành công nghiệp 4.0 Nó cho phép các quy trình kỹ thuật được thực hiện bởi nhà cung cấp chéo và giúp triển khai hiệu quả hơn.” Để minh chứng cho tầm nhìn cũng như lợi ích của AutomationML, tạp chí PackageEurope đã bắt đầu bài viết của mình như sau: ”AutomationML cho thấy được một bước tiến cực kỳ quan trọng trong cách phối hợp các thiết bị trong việc thiết kế, cài đặt và bảo trì Các công ty thiết kế, nhà tích hợp và người dùng cuối sẽ được hưởng lợi thông qua việc thực hiện dự án một cách xuyên suốt khi triển khai hệ thống nhằm giảm chi phí và rút ngắn thời gian đưa sản phẩm vào hoạt động Khả năng đảm bảo luồng thông tin liền mạch giữa các hệ thống khác
GVHD: TS TRƯƠNG ĐÌNH CHÂU 14 nhau cũng là một yếu tố quan trọng trong việc chuyển đổi trên hành trình công nghiệp 4.0 ” 1
Hiện tại, Mitsubishi Electric là nhà cung cấp giải pháp tự động hóa đầu tiên đã triển khai giao diện AutomationML với các công cụ ECAD trong sản phẩm thương mại
Bên cạnh đó, để nắm bắt kịp xu thế, EPLAN cũng đã kết hợp với Siemens cho ra mắt công cụ chuyển đổi thông tin giữa 2 phần mềm EPLAN E8 và TIA Portal dựa trên nền tảng ngôn ngữ AutomationML
Hình 2.8: Trao đổi thông tin giữa EPLAN và TIA Portal Hiện nay, nếu OPC UA được xem như là phương thức truyền thông nền tảng cho công nghiệp 4.0 thì AutomationML sẽ thực hiện việc chuyển hóa cấu trúc đối tượng thành định dạng chuẩn cho ngành công nghiệp này Hai chuẩn này kết hợp lại sẽ mô tả đối tượng một cách toàn diện nhất
1 https://packagingeurope.com/mitsubishi-electric-has-automation-on-the-move-at-drives-con/
GVHD: TS TRƯƠNG ĐÌNH CHÂU 15
Hình 2.9: Sự kết hợp giữa OPC UA và Automation ML
OPC UA: Cho biết trạng thái đối tượng đang hoạt động như thế nào
AutomationML: Cho biết nội dung tạo thành đối tượng
Trong đề tài này, phần mềm BKSI sẽ vận dụng khả năng mô tả ngôn ngữ lập trình Logic của AutomationML để tích hợp vào, giúp tạo ra các đối tượng lập trình một cách tự động và chuẩn xác
Hình 2.10: Sơ đồ một đối tượng Automation ML mẫu
Totally Integrate Application (TIA) Portal
TIA portal là ứng dụng tích hợp hệ thống trong tự động hóa được Siemens phát triển từ năm 1996 Sự khác biệt mang tính đột phá của TIA Portal chính là : Tất cả trong một (All in one) Một hệ thống tự động bao gồm các bộ phận khác nhau cấu thành nên Từ bộ điều khiển PLC, biến tần cho tới HMI Thay vì phải lập trình từng thành phần riêng lẽ thì TIA Portal cho phép kỹ sư có thể phát triển hệ thống thông qua một nền tảng lập trình duy nhất Vì chính ưu thế này nên nếu một thành phần thay đổi thì các thành phần khác có liên quan cũng sẽ được cập nhật theo tức thời
Hình 2.11: Kiến trúc phần mềm TIA Portal Với những ưu điểm đó, trong đề tài này tôi sẽ dùng TIA Portal để làm phần mềm quản lý tổng thể các đối tượng sau khi khai báo và khởi tạo Tuy nhiên, TIA Portal là một phần mềm đóng, chưa cho phép các nhà phát triển phần mềm độc lập khác can thiệp vào các đối tượng bên trong TIA
GVHD: TS TRƯƠNG ĐÌNH CHÂU 17
Hình 2.12: Các thành phần cơ bản trong TIA Portal Các thành phần cơ bản trong TIA Portal:
SIMATIC STEP7 Professional và SIMATIC STEP7 PLCSIM: dùng để lập trình và mô phỏng PLC S7-1200, S7-1500, S7-300, S7-400
SIMATIC WinCC Professional: Lập trình giao diện HMI, SCADA và IPC
SIMATIC Start Driver: Cấu hình biến tần Siemens.
TIA Openness
Siemens lần đầu tiên giới thiệu và áp dụng phần mở rộng TIA Openness trong phiên bản TIA Portal V12 Thư viện này giúp các kỹ sư có thể phát triển phần mềm riêng truy cập và trích xuất dữ liệu từ TIA Portal một cách dễ dàng
Phần mềm tự phát triển Dữ liệu đầu vào
Thông tin thiết bị/IO
Hình 2.13: Vai trò của TIA Openness
GVHD: TS TRƯƠNG ĐÌNH CHÂU 18 TIA Openness được phát triển dựa trên cấu trúc AutomationML Chính vì vậy, dữ liệu đầu vào và đầu ra được định dạng kiểu text và có cấu trúc của một file xml
Hình 2.14 Đầu vào của TIA Openness TIA Portal Openness sẽ đóng vai trò cung cấp các thư viện chuẩn (DLL) Người sử dụng có thể tạo các phần mềm dựa trên các nền tảng C#, VB.Net vv… để sử dụng các chức năng truy cập vào TIA Portal
Những chức năng mà TIA Openness hỗ trợ:
Chỉnh sửa project sẵn có
Xóa đối tượng trong Project
Đọc dữ liệu trong Project
Nhập/ trích xuất đối tượng từ các chương trình bên ngoài
Cứ sau mỗi phiên bản được phát hành thì Siemens lại nâng cấp cho Openness một tính năng mới Đến phiên bản TIA Portal V14, TIA Openness đã được tích hợp sẵn trong bộ DVD cài đặt của Siemens Điều đó cho thấy mức độ cần thiết và hữu ích của TIA Openness
GVHD: TS TRƯƠNG ĐÌNH CHÂU 19
Yêu cầu của chương trình
Trong đề tài này tôi xây dựng giao diện người dùng trên nền phần mềm Visual Studio 2015, lập trình dùng ngôn ngữ lập trình C# Đây là ngôn ngữ lập trình mạnh, hỗ trợ đầy đủ thư việc và chạy được trên đa số hệ điều hành Ở chương trình phát triển hệ thống, tôi chọn hệ sinh thái TIA Portal của Siemens để ứng dụng vì các yếu tố sau:
Sự thông dụng PLC Siemens trong những ngành công nghiệp hiện nay (như thực phẩm đồ uống, dầu khí, nước cấp nước thải, hóa chất…)
Kiến thức của bản thân về tự động hóa của Siemens khá chuyên sâu
Siemens đã xây dựng thư viện cho phép phần mềm tích hợp bên ngoài có thể giao tiếp với hệ thống của họ
Khi thực hiện dự án với phần mềm BKSI sẽ gồm 2 giai đoạn chính:
Giai đoạn 1: Tạo hồ sơ thiết kế hệ thống:
- Khai báo Area - Tạo thiết bị - Tạo I/O - Tạo địa chỉ cho I/O
Hình 3.1: Giai đoạn phát triển 1
Giai đoạn 2: Xuất file báo cáo và dữ liệu cho phần mềm lập trình
GVHD: TS TRƯƠNG ĐÌNH CHÂU 20
- Lấy thông tin thiết bị trong hệ thống
Hình 3.2: Giai đoạn phát triển 2 - Bước 1: chương trình sẽ đọc thông tin các thiết bị trong Data SQL
- Bước 2: Chương trình xuất ra file báo cáo với định dạng theo tiêu chuẩn IO Report
- Bước 3: Chương trình xuất ra file xml theo cấu trúc AutomationML để chuyển dữ liệu vào TIA portal và kèm theo danh sách IO List của hệ thống.
Xây dựng cấu trúc dữ liệu
SQLite là hệ thống cơ sở dữ liệu quan hệ nhỏ gọn, hoàn chỉnh, có thể cài đặt bên trong các trình ứng dụng khác SQLite được Richard Hipp phát triển dưới dạng thư viện bằng ngôn ngữ lập trình C
Hình 3.3: Database SQLite SQLite có các ưu điểm sau:
Tin cậy: các hoạt động transaction (chuyển giao) nội trong cơ sở dữ liệu được thực hiện trọn vẹn, không gây lỗi khi xảy ra sự cố phần cứng
Tuân theo chuẩn SQL92 (chỉ có một vài đặc điểm không hỗ trợ)
GVHD: TS TRƯƠNG ĐÌNH CHÂU 21
Không cần cài đặt cấu hình
Kích thước chương trình gọn nhẹ, với cấu hình đầy đủ chỉ không đầy 300 kB
Thực hiện các thao tác đơn giản nhanh hơn các hệ thống cơ sở dữ liệu khách/chủ khác
Không cần phần mềm phụ trợ
Phần mềm tự do với mã nguồn mở, được chú thích rõ ràng Về mặt tính năng, SQLite hoàn toàn tương tự Microsoft SQL Server nhưng gọn nhẹ và đơn giản hơn SQLite không yêu cầu người dùng phải cài đặt trước Tất cả dữ liệu sẽ được gói gọn thành một file hoàn chỉnh Chính vì vậy, đề tài này sẽ sử dụng SQLite làm cơ sở dữ liệu chính
Trong cơ sở dữ liệu, chúng ta sẽ tạo ra 3 bảng chính như sau:
Tbl_DeviceList: chứa thông tin thiết bị
Tbl_IOList: chứa thông tin IO
TBL_StaticList: chứa thông tin các tag static
Cấu trúc bảng tbl_DeviceList như sau: tbl_DeviceList
Hình 3.4: Cấu trúc bảng tbl_DeviceList Parrent ID dùng để quản lý và phân cấp các thiết bị
Nếu đối tượng là Area thì ParrentID = 0 Nếu đối tượng là thiết bị thì ParrentID sẽ là ID của Area tương ứng
GVHD: TS TRƯƠNG ĐÌNH CHÂU 22 Cấu trúc của tbl_IOList: tbl_IOList
Hình 3.5: Cấu trúc bảng tbl_IOList Trong đó Device và Area của IO sẽ lấy từ bảng tbl_DeviceList
Bảng tbl_StaticList có cấu trúc tương tự như bảng tbl_IOList
Trong C#, dùng đoạn code sau để tạo Database: string sql = "CREATE TABLE IF NOT EXISTS tbl_DeviceList ([id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, [ParentID] INTEGER, Name nvarchar(50), Type nvarchar(10), Qtt INTEGER, SuffiX varchar(30))"; createConection();
SQLiteCommand command = new SQLiteCommand(sql, _con); command.ExecuteNonQuery(); closeConnection();
Chương trình sẽ kiểm tra trong SQLite, nếu bảng chưa được tạo thì sẽ tạo ra các bảng tương ứng.
Xây dựng giao diện
Để tạo tính chuyên nghiệp, giao diện phần mềm được chia thành 2 phần chính:
Hình 3.6: Giao diện chính của chương trình Tại thanh menu Dashboard trên trang chủ, sẽ có 4 nút nhấn tương ứng 4 trang màn hình chức năng Riêng nút nhấn số 5 là nút nhấn phụ dùng cho màn hình Dashboard
GVHD: TS TRƯƠNG ĐÌNH CHÂU 24
Nút nhấn số 1: Màn hình Dashboard, hiển thị thống kê tổng quát trong hệ thống
Nút nhấn số 2: Màn hình Quản lý thiết bị, cung cấp công cụ khai báo và quản lý các thiết bị trong hệ thống
Nút nhấn số 3: Màn hình xuất file báo cáo theo form chuẩn
Nút nhấn số 4: Màn hình xuất file dữ liệu xml
Nút nhấn số 5: Refresh dữ liệu cho Dashboard
Trong từng màn hình sẽ có thanh menu Ribbon riêng phục vụ cho thao tác với màn hình đó Khi gọi màn hình, thanh menu này sẽ được tích hợp vào thanh menu chính thành một tab riêng Đoạn code tích hợp menu ribbon: parentForm.Ribbon.MergeRibbon(this.ribbonControl1); parentForm.Ribbon.ColorScheme = XtraBars.Ribbon.RibbonControlColorScheme DarkBlue ;
Xây dựng tính năng tạo và quản lý thiết bị
Trong chương trình, cửa sổ quản lý thiết bị được kích hoạt thông qua nút nhấn trên thanh ribbon:
Hình 3.8: Biểu tượng chức năng quản lý thiết bị Xây dựng giao diện gồm các phần sau:
GVHD: TS TRƯƠNG ĐÌNH CHÂU 25
Hình 3.9: Các phần chính của cửa sổ quản lý thiết bị 1 Công cụ tạo và modify thiết bị
2 Danh sách các thiết bị có trong dự án
3 Thông tin Tag đang chọn 4 Thông tin static tag của thiết bị
5 Hiển thị chi tiết thiết bị
Tạo cửa sổ khai báo Area
Hình 3 10: Cửa sổ khai báo khu vực Khi nhấn OK, đoạn lệnh sau sẽ được thực hiện và tạo ra 1 Area mới:
GVHD: TS TRƯƠNG ĐÌNH CHÂU 26 strInsert = string.Format("INSERT INTO tbl_DeviceList(ParentID, Name, Type, Qtt, Suffix) VALUES('{0}','{1}','{2}','{3}','{4}')", 0, tb_AreaName.Text, "", 1, "");
TreeNode node = treeView1.Nodes[0].Nodes.Add(tb_AreaName.Text); treeView1.SelectedNode = node; sqlite.SendCommand(strInsert);
Tạo cửa sổ New Device dùng để khai báo thiết bị
Hình 3.11: Cửa sổ khai báo thiết bị mới Trong đó Device Type sẽ hiển thị các template thiết bị:
Hình 3.12: Tempalte các thiết bị Mục Area sẽ cho biết thiết bị được chọn ở khu vực nào:
GVHD: TS TRƯƠNG ĐÌNH CHÂU 27
Hình 3.13: Chọn khu vực chứa thiết bị Ở mục tiếp theo, có 2 lựa chọn khi khai báo thiết bị:
Single Define: khai báo 1 thiết bị
Multi Define: khai báo nhiều thiết bị cùng lúc
Hình 3.14: Lựa chọn kiểu khai báo Nếu hệ thống có nhiều thiết bị giống nhau, thay vì tạo từng thiết bị thì người dùng sẽ chọn Multi define để chương trình tự nhân bản các thiết bị, giúp việc khai báo được nhanh chóng
Trong chế độ Multi Define, hệ thống sẽ tự động điền thứ tự “_1, _2…” vào phía sau tên thiết bị nhưng vẫn đảm bảo không có tên thiết bị nào bị trùng
Người dùng có thể tùy ý tăng hoặc giảm số lượng IO trong thiết bị Tuy nhiên, các thiết bị được tạo dựa vào template chuẩn, vì vậy phải đảm bảo có tối thiểu số lượng IO yêu cầu:
Hình 3.15: Khai báo số lượng IO của thiết bị Phụ lục: Code tạo thiết bị mới
GVHD: TS TRƯƠNG ĐÌNH CHÂU 28 Sau khi tạo ra thiết bị, các tag trong thiết bị có thể được chỉnh sửa thông qua cửa sổ khi nhấn đúp vào tag:
Hình 3.16: Cửa sổ chỉnh sửa Tag Trong đó mục Address có 2 lựa chọn:
Assigned Ở chế độ Assign auto, chương trình sẽ tự động tạo địa chỉ cho Tag theo thứ tự tăng dần Trong trường hợp tín hiệu đã được đấu nối từ trước (hệ thống hiện hữu) và người dùng không muốn địa chỉ của tag này bị thay đổi thì sẽ chọn Assigned và điền địa chỉ hiện hữu của tag vào ô kế bên
Dựa trên từng thiết bị khác nhau, chúng ta thấy rằng mỗi thiết bị sẽ có lượng I/O khác nhau Tuy nhiên, các IO này đều chung quy về các dạng chính:
Digital Input: Tín hiệu sử dụng 1 bit ngõ vào Giá trị đọc về mức 0 hoặc 1 tương ứng 0 hoặc 24VDC
Digital Output: Tín hiệu sử dụng 1 bit ngõ ra Khi xuất tín hiệu sẽ có mức 0 hoặc 1 tương ứng 0 hoặc 24VDC
Analog Input: Tín hiệu ngõ vào tương tự, sử dụng 1 word ngõ vào Khi đọc giá trị trả về, sẽ có 2 dạng tín hiệu là 0-10V hoặc 4-20mA
GVHD: TS TRƯƠNG ĐÌNH CHÂU 29
Analog Output: Tín hiệu ngõ ra tương tự, sử dụng 1 word ngõ ra Khi xuất giá trị, sẽ có 2 dạng tín hiệu là 0-10V hoặc 4-20mA
Mỗi tín hiệu sẽ có một địa chỉ riêng biệt không trùng nhau Chính vì vậy, phần mềm phải sắp đặt các tín hiệu IO sao cho hợp lý
Trong chương trình, địa chỉ IO được tạo ra thông qua nút nhấn Assing Address
Hình 3.17: Nút nhấn tạo địa chỉ IO Ở mục địa chỉ bắt đầu của Ix.0, Qx.0, IWx, QWx ta sẽ nhập thông số tương ứng với cấu hình trong PLC:
Hình 3.18: Cấu hình địa chỉ trong PLC Chương trình sẽ tự động tăng địa chỉ IO và gán vào Tag Tuy nhiên trước khi gán, chương trình sẽ kiểm tra địa chỉ này đã được khai báo “Assigned” hay chưa để tránh trùng lặp Đối với các IO đã có địa chỉ vật lý (thông qua lựa chọn Assigned) thì sẽ được gắn một cờ kiểu boolean trong SQLite để chương trình loại trừ địa chỉ bị trùng và bỏ qua gán địa chỉ IO cho Tag này
GVHD: TS TRƯƠNG ĐÌNH CHÂU 30 Đọc dữ thông tin Tag SQL
Kiểm tra trùng địa chỉ?
Kiểm tra trùng địa chỉ?
Kiểm tra trùng địa chỉ?
Kiểm tra trùng địa chỉ? Đ Đ Đ Đ
Hình 3.19: Quy trình tạo địa chỉ cho Tag IO Phụ lục: 7.3 Code tạo địa chỉ IO.
Xây dựng tính năng xuất file hồ sơ hệ thống
File hồ sơ hệ thống là tài liệu trực quan không thể thiếu trong quá trình triển khai dự án Mục đích dùng làm hồ sơ để các bên lưu trữ và dùng khi testing hệ thống
Trong Visual Studio, chúng ta tạo ra mẫu Report chuẩn với các phần chính:
Page Header: Nội dung mỗi đầu trang
GVHD: TS TRƯƠNG ĐÌNH CHÂU 31
Group Header: Nội dung sẽ gộp nhóm
Detail: Chi tiết thông tin nội dung bản report
Page Footer: Nội dung mỗi cuối trang
Trong đó phần Header phải có các nội dung cơ bản sau:
Hình 3.20: Header của mẫu báo cáo Để tăng tính chuyên nghiệp, chương trình cho phép người dùng có thể tùy chỉnh logo khách hàng và nhà cung cấp vào trong file report thông qua mục “REPORT LOGO”
Hình 3.21: Mục chọn logo cho báo cáo Có 2 loại report được cung cấp trong Category:
GVHD: TS TRƯƠNG ĐÌNH CHÂU 32
Device report: bản báo cáo các thiết bị kèm số lượng IO tương ứng có trong dự án
IO Report: bản báo cáo danh sách Input, Output trong dự án
Hình 3.22: Lựa chọn loại báo cáo Tùy người dùng muốn xuất báo cáo nào thì sẽ chọn loại tương ứng Ở mục Option, 2 ô Title và Project name dùng để nhập tiêu đề của bản báo cáo và tên dự án sẽ đính kèm vào bản báo cáo
Hình 3.23: Chỉnh sửa tiêu đề báo cáo Sau khi cài đặt lựa chọn cho Report, người dùng nhấn vào “SHOW REPORT”, đoạn lệnh trích xuất report sẽ được thực hiện
Hình 3 24: Nút nhấn tạo báo cáo Sau đó, chương trình sẽ truy xuất dữ liệu và đưa vào phần group và detail
GVHD: TS TRƯƠNG ĐÌNH CHÂU 33
Hình 3.25: Thiết kế nội dung file báo cáo Ở mục Detail, lập trình cho hệ thống lấy dữ liệu từ dataset điền vào các cell theo thứ tự trong Report: this.Cell1.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { new DevExpress.XtraReports.UI.XRBinding("Text", null, "Device")});
Sau đó, các IO cần được nhóm lại theo từng khu vực Vì vậy, thêm vào chương trình đoạn code để group dữ liệu theo trường mong muốn: this.xrLabel2.DataBindings.Add("Text", null, "Area");
GroupHeader1.GroupFields.Add(new GroupField("Area"));
Dữ liệu đã được tạo ra, tuy nhiên còn rời rạc Vì vậy, chúng ta thêm đoạn code sau để sắp xếp dữ liệu theo tên thiết bị,:
GroupField sortField = new GroupField("Device"); sortField.SortOrder = XRColumnSortOrder.Ascending; this.Detail.SortFields.Add(sortField);
Kết quả sau khi hoàn thành:
GVHD: TS TRƯƠNG ĐÌNH CHÂU 34
Hình 3.26: Nội dung báo cáo sau khi xuất Phụ lục: Code tạo IO List Report
Tương tự, chúng ta tạo mẫu báo cáo tổng số lượng IO trong dự án
Hình 3.27: Mẫu báo cáo tổng số lượng IO đã dùng
GVHD: TS TRƯƠNG ĐÌNH CHÂU 35 Mẫu báo cáo thiết bị đã tạo trong dự án:
Hình 3.28: mẫu báo cáo danh sách thiết bị Với sự hỗ trợ của thư viện DevExpress, chúng ta sẽ có thanh công cụ chuyên nghiệp dùng để xem file báo cáo như là: phóng to/thu nhỏ, in ấn, xem nhiều trang trên 1 màn hình…
Kết nối với chương trình TIA Portal
Cài đặt TIA Openness
TIA Openness được Siemens cung cấp như là công cụ để các chương trình bên ngoài có thể truy cập vào chương trình TIA Portal Gói công cụ này được tích hợp sẵn trong bộ DVD cài đặt TIA Portal, hoặc có thể download trực tiếp tại trang Web của Siemens Đối với phiên bản V15, TIA Openness được Siemens tích hợp vào bộ cài mặc định của TIA Portal
GVHD: TS TRƯƠNG ĐÌNH CHÂU 36
Hình 3.30: Cài đặt TIA Openness Đối với phiên bản TIA Portal V14 trở về trước, bộ cài đặt TIA Openness được tích hợp trong DVD 2 ở thư mục support Hoặc có thể download trực tiếp tại trang web của Siemens
TIA Openness được xây dựng trên nền tảng NET Framework 4.6.1 dưới dạng thư viện DLL Vì vậy, chương trình yêu cầu máy tính phải được cài bộ NET Framework 4.6.1 và ứng dụng tích hợp phải được lập trình bằng Microsoft Visual Studio 2015 trở lên
Sau khi cài đặt hoàn chỉnh, file thư viện sẽ được lưu tại đường dẫn:
“C:\Program Files\Siemens\Automation\Portal V15\PublicAPI\V15”
Hình 3.31: Thư viện của TIA Openness File thư viện này sẽ được đưa vào thư mục Reference của project C# để sử dụng trong chương trình
GVHD: TS TRƯƠNG ĐÌNH CHÂU 37
Hình 3.32: Add file thư viện vào C#
Kết thúc cài đặt TIA Portal Openness, máy tính sẽ tự động tạo ra user group
"Siemens TIA Openness" Khi ứng dụng kết nối với TIA Portal thông qua TIA Openness thì chương trình TIA Portal sẽ kiểm tra user có thuộc nhóm này hay không trước khi cho phép tạo kết nối với chương trình TIA Portal
Hình 3.33: User Group của TIA Openness Vì vậy, người dùng cần phải thêm user vào nhóm “Siemens TIA Openness” trước khi có thể sử dụng chương trình.
Kết nối với chương trình TIA Portal
GVHD: TS TRƯƠNG ĐÌNH CHÂU 38
Hình 3.34: Sơ đồ kết nối thông qua thư viện TIA Openness Các bước khi thực hiện:
Lấy phiên bản (Instance) TiaPortal đang chạy Using Siemens.Engineering;
Truy cập process đang chạy
Truy cập Project đang mở
Hình 3.35: Quy trình truy cập vào TIA Portal Ở đầu chương trình, khai báo thư viện Siemens Engineering: using Siemens.Engineering;
GVHD: TS TRƯƠNG ĐÌNH CHÂU 39 Trong thư viện Engineering, Siemens cung cấp các phương thức cũng như các kiểu đối tượng để người dùng có thể truy cập Trong đó có phương thức GetProccesses sẽ trả về một mảng chứa các ứng dụng TIA Portal đang chạy
Trong chương trình C#, dùng đoạn mã foreach để truy cập tuần tự các process này: foreach (var process in TiaPortal.GetProcesses()) {
//hiển thị process cho người dùng lựa chọn }
Nếu nhiều process Tia Portal đang chạy thì chương trình sẽ yêu cầu người dùng chọn process cần kết nối
Khi process được chọn, bảng thông báo sẽ hiện ra yêu cầu quyền truy cập để cho phép TIA Openness kết nối với TIA Portal:
Hình 3.36: Cửa sổ cho phép truy cập vào TIA Portal
GVHD: TS TRƯƠNG ĐÌNH CHÂU 40 Có các lựa chọn như sau:
“Yes”: Cho phép truy cập vào TIA Portal
"Yes to all": cho phép truy cập và thêm vào key registry whitelist trong TIA portal, chương trình sẽ không hỏi lại vào lần sau
“No”: không cho phép truy cập vào TIA Portal
Trong lớp Process, Siemens cung cấp phương thức Attach để lấy phiên bản TIA Portal đang chạy
Trong chương trình C#, tạo đối tượng kiểu TIA Portal thông qua phương thức Attach như đoạn code sau:
Cuối cùng, sau khi đã có Instance TIA Portal đang chạy, ta dùng phương thức TiaPortal.Project trong lớp TIA Poral để lấy thông tin về project đang mở trong chương trình TIA Portal này
Như vậy, ứng dụng C# đã có thể truy cập vào project đang chạy trong chương trình TIA Portal.
Đọc thông tin trong TIA Portal
var splitPath = _tiaPortalProject.Path.ToString().Split('\\');
GVHD: TS TRƯƠNG ĐÌNH CHÂU 41 Đường dẫn của project được chia thành mảng với các phần tử được phân cách bởi dấu “\” Như vậy, tên project sẽ là phần tử cuối cùng trong mảng
Các phương thức làm việc với phần cứng và phần mềm trong TIA Portal được cung cấp trong 2 thư viện: “Siemens.Engineering.HW” và “Siemens
Trình tự đọc thông tin các đối tượng trong project:
Lấy danh sách đối tượng trong thiết bị Using Siemens.Engineering;
Using Siemens.Engineering.HW Lấy thông tin phần cứng
Using Siemens.Engineering.SW Lấy thông tin phần mềm
Thêm vào danh sách phần cứng trong thiết bị
Lấy danh sách phần mềm trong thiết bị
Device.DeviceItems.Software Lấy danh sách thiết bị đang có trong TIA
Item kiểu OB? Item kiểu FC? Item kiểu FB? Item kiểu DB?
Hình 3.37: Quy trình đọc các đối tượng trong TIA Portal Đoạn code xét kiểu đối tượng trong project: private static void Xet_Duyet_Blocks(PlcSoftware plcsoftware) {
PlcSystemBlockGroup sbSystemGroup = plcsoftware.BlockGroup.SystemBlockGroups[0]; foreach (PlcSystemBlockGroup group in sbSystemGroup.Groups)
GVHD: TS TRƯƠNG ĐÌNH CHÂU 42
{ foreach (PlcBlock block in group.Blocks) {
//lệnh cần thực hiện với block }
Sau khi truy cập đến từng block, chúng ta sẽ lập trình thêm đoạn code để tạo icon tương ứng đối với từng loại block: if ((((IEngineeringObject)item).ToString()) == "Siemens.Engineering.SW.Blocks.OB") { sub.ImageIndex = 6; sub.SelectedImageIndex = 6; } else if ((((IEngineeringObject)item).ToString()) ==
"Siemens.Engineering.SW.Blocks.FB") { sub.ImageIndex = 7; sub.SelectedImageIndex = 7; } else if ((((IEngineeringObject)item).ToString()) ==
"Siemens.Engineering.SW.Blocks.FC") { sub.ImageIndex = 8; sub.SelectedImageIndex = 8; } else if ((((IEngineeringObject)item).ToString()) ==
"Siemens.Engineering.SW.Blocks.InstanceDB") { sub.ImageIndex = 10; sub.SelectedImageIndex = 10; }
Kết quả sau khi đọc project:
Hình 3.38: Kết quả hiển thị sau khi đọc project TIA Openness cho phép mở project có sẵn theo đường dẫn bằng phương thức Project.Open(“đường dẫn”)
Project project =tiaPortal.Projects.Open(new FileInfo(@"D:\Project_1\Project_1.apXX"));
Xây dựng tính năng xuất Tag List để import vào TIA Portal
Xuất TagList định dạng XLSX
Mỗi hệ thống lập trình sẽ có một kiểu định dạng khác nhau, nhưng chung quy đều dựa trên cấu trúc file csv hoặc xlsx với các thông số cơ bản:
Trong đề tài này sẽ áp dụng trên phần mềm TIA Portal Chính vì vậy file csv sau khi xuất ra sẽ theo quy ước của Siemens
Hình 3.39: Nút nhấn xuất tag dạng file xlsx Chương trình sẽ đọc dữ liệu danh sách Tag từ SQL, sau đó đoạn lệnh sau sẽ tạo ra các dòng dữ liệu trong file xlsx: r = (COMExcel.Range)exSheet.get_Range("A" + IndexRow, "J" + IndexRow);
GVHD: TS TRƯƠNG ĐÌNH CHÂU 44 objData = gan_IOdata(IOName, "Tag Table", DataType, IOAddress, DeviceName + " - " + IOComment, "True", "True", "True", "", ""); r.Value2 = objData;
Cuối cùng ta được kết quả sau:
Hình 3.40: Nội dung file xlsx sau khi xuất Sau đó, trong chương trình TIA Portal, chúng ta chọn Import để đưa Tag này vào chương trình TIA:
Hình 3.41: Nút nhấn Import tag trong TIA Portal Cửa sổ hiện ra, chúng ta trỏ đến file xlsx vừa tạo:
Hình 3.42: Cửa sổ chọn file tag xlsx
GVHD: TS TRƯƠNG ĐÌNH CHÂU 45 Kết quả danh sách tag được tạo ra:
Xuất TagList theo cấu trúc AutomationML
Một file xml chứa danh sách Tag có cấu trúc như sau:
Smart Integrated Automation BKSI - Author: Trong Nhan
Hình 3.44: Cấu trúc file xml chứa danh sách tag Trong đó, Automation ML quy định cấu trúc của một thẻ Tagname phải có những thông tin bắt buộc như: kiểu dữ liệu, địa chỉ, và tên biến Thứ tự các thông số này có thể sắp xếp tùy ý và phải chứa trong cặp thẻ < AttributeList >
GVHD: TS TRƯƠNG ĐÌNH CHÂU 46
AO_AO_Value
Để ghi chú cho Tag, ta phải dùng cặp thẻ Do comment thuộc kiểu chữ viết, không phải dòng lệnh Vì vậy với cặp thẻ này, ta có thể thêm văn bản tùy ý để ghi chú cho Tag
Sau đó, tùy thuộc vào số lượng của Tag trong hệ thống, chúng ta sẽ sắp xếp các cặp thẻ thành một file xml hoàn chỉnh.
Xây dựng tính năng xuất file dữ liệu xml dựa trên Automation ML
Cấu trúc một file XML chuẩn
Một file XML gồm 3 phần chính:
Document Info: Thông tin của file xml Thông tin này không phải là thông tin của khối block
DataBlock: Nội dung của khối block
Khối dữ liệu Block trong file xml bắt buộc có 2 thành phần chính như sau:
GVHD: TS TRƯƠNG ĐÌNH CHÂU 47
Đơn vị biên dịch - Compile unit Giao diện của khối block bao gồm nhiều thành phần (section) khác nhau: Input, Output, InOut và các biến nội…
Một đơn vị biên dịch có thể được xem như là một Network trong lập trình PLC
Tùy thuộc vào ngôn ngữ lập trình LAD, FBD, SCL… mà đơn vị biên dịch sẽ có cấu trúc khác nhau
Trong một đơn vị biên dịch sẽ có cấu trúc sau:
Common Phần Access sẽ khai báo các đối tượng mà đoạn lệnh sẽ truy cập Bao gồm:
Biến nội, tag ngoại hoặc các hằng số
Gọi FB, FC hoặc các lệnh (công tắc, cuộn coil, lệnh so sánh, move…)
DBs for calls Phần Common sẽ chứa các đoạn lệnh, ghi chú bao gồm:
Lệnh : nối dây (Wire), gọi block (Call)…
Từ khóa (SCL): IF, THEN, ELSE…
Ví dụ đoạn lệnh LAD:
Hình 3.45: Đoạn lệnh LAD Khi đó:
Tag: TRIP, Flag_run, Speed_SP, Q_Speed
Lệnh: tiếp điểm thường đóng, tiếp điểm thường mở, lệnh MOVE
GVHD: TS TRƯƠNG ĐÌNH CHÂU 48 Phần Common bao gồm:
Lệnh nối dây giữa các phần tử
Cấu trúc một khối XML:
Smart Integrated Automation BKSI - Author: Trong Nhan
Khai báo nội dung Block
Hình 3.46: Cấu trúc một khối dưới dạng xml Trong đó, SW.Block.Type sẽ có các dạng chính như sau:
GVHD: TS TRƯƠNG ĐÌNH CHÂU 49 Tùy thuộc vào kiểu block mà người dùng muốn tạo thì sẽ thay thế Type bằng dòng lệnh tương ứng
Trong file xml, mỗi đối tượng sẽ có một UID (Unique Identifier) nhất định và duy nhất UID này có giá trị từ 21-2147483647
Các đoạn lệnh trong xml được liên kết với nhau thông qua UID này Vì vậy chương trình cần kiểm tra UID tránh bị trùng hợp.
Mô tả ngôn ngữ LAD/FBD dưới dạng XML
Trong cấu trúc file xml mô tả ngôn ngữ LAD/FBD, phần common sẽ chứa các lệnh nối dây, lệnh gọi khối…
Các phần khác được giữ nguyên như cấu trúc mặc định
Cấu trúc một khối lập trình bằng ngôn ngữ LAD/FBD:
Smart Integrated Automation BKSI - Author: Trong Nhan
Khai báo nội dung Block
Thông tin khối Block - Tác giả.
Hình 3.47: Cấu trúc khối xml mô tả ngôn ngữ LAD/FBD
GVHD: TS TRƯƠNG ĐÌNH CHÂU 50 Mỗi đoạn lệnh trong chương trình được nối kết với nhau qua cặp thẻ
Kết nối các phần tử
Định danh cho phần tử
Hình 3.48: Ví dụ đoạn lệnh LAD Ta sẽ dùng cặp thẻ để nối tiếp điểm 21 với cuộn coil 22:
Tuy nhiên, chương trình sẽ không hiểu tiếp điểm 21 sẽ liên kết tới phần tử nào
Vì vậy chúng ta thêm đoạn lệnh định danh cho tiếp điểm và cuộn coil:
//23 là Uid của Tag: ON
//24 là Uid của Tag: Q_CMD
Cuối cùng ta được kết quả:
Hình 3.49: Đoạn lệnh LAD sau khi được định danh
GVHD: TS TRƯƠNG ĐÌNH CHÂU 51 Minh họa dưới đây cho thấy sự chuyển đổi giữa cấu trúc xml và ngôn ngữ lập trình LAD
Mô tả ngôn ngữ SCL dưới dạng XML
Cấu trúc các thẻ XML tương đương dựa trên loại câu lệnh SCL Định dạng này hỗ trợ các câu lệnh SCL trong các khối viết bằng ngôn ngữ SCL hoặc khối viết bằng LAD / FBD nhưng có network viết bằng lệnh SCL
Các câu lệnh SCL được phân loại là các thành phần văn bản, toán hạng, biểu thức, điều khiển, v.v
File XML của ngôn ngữ SCL có cấu trúc dựa trên cấu trúc file XML chuẩn Trong đó, phần common sẽ chứa các thành phần cơ bản sau:
GVHD: TS TRƯƠNG ĐÌNH CHÂU 52
Access: Truy cập vào Tag, FB, FC, OB, DB, hằng số…
Token: Mô tả các lệnh được sử dụng trong SCL
NewLine: Mô tả một dòng mới trong SCL
Blank: Mô tả khoảng trắng trong SCL
LineComment: Mô tả ghi chú trong SCL
Smart Integrated Automation BKSI - Author: Trong Nhan
Khai báo nội dung Block
Hình 3.52 Cấu trúc file xml mô tả ngôn ngữ SCL Các câu lệnh khối SCL với các thẻ và thuộc tính XML tương ứng được đưa ra dưới đây
Cặp thẻ có định dạng như sau:
< Access Scope="Kiểu cần truy cập" UId="Uid của thẻ Access này">
GVHD: TS TRƯƠNG ĐÌNH CHÂU 53 Ví dụ:
Truy cập vào khối DB:
Khối block có tham số:
GVHD: TS TRƯƠNG ĐÌNH CHÂU 54
Các lệnh truy cập tuyệt đối được biểu thị bằng thẻ trong XML Lưu ý ký tự % không được thể hiện trong file XML:
để khai báo các lệnh hoặc ký tự đặc biệt trong SCL nhằm phân biệt với kiểu text hoặc tên tag/block thông thường
Token có cấu trúc như sau:
IF, THEN, ELSE
Dùng thẻ để mô tả dòng mới trong SCL:
Trong đó, tham số Num sẽ cho TIA biết cần tạo bao nhiêu dòng mới
Dùng thẻ để mô tả khoảng trắng trong SCL:
Trong đó, tham số Num sẽ cho TIA biết cần tạo bao nhiêu khaorng trắng
Nếu không có tham số Num, chương trình sẽ tự mặc định là 1
Ví dụ : Lệnh While Do trong SCL:
WHILE #a