Sửa chữa bảo dưỡng động cơ điện các loại

Cơ điện HUẾ HƯƠNG chuyên: - Quấn mới, sửa chữa động cơ điện, mô tơ điện các loại.... - Máy phát điện. - Nồi cơm điện, quạt điện.... - Nhận làm kích điện

Nhận làm mạch invert 12 ra 220V, mạch kích cá công suất theo yêu cầu

Công suất 1000W: Đánh bắt cá trên thuyền (sông, ao, hồ...).

Nhận lắp đặt tủ điện bảng điện

Sửa chữa thay thế lắp mới bảng điện tủ điện điều khiển động cơ

Bán Ronha kiểm tra roto

Ronha thiết bị không thể thiếu thợ điện cơ. Bán phân phối toàn quốc

Bán sách, sơ đồ quấn các loại động cơ, tài liệu

Sách kinh nghiệm ghi chép tất cả các sơ đồ động cơ, máy phát điện từ đơn giản đến phức tạp, sách được ghi từ số liệu thực tế, dữ liệu được scan lại

Chủ Nhật, 31 tháng 1, 2021

TIA Portal V13 - S7-1200 PLC & Matrikon OPC Server

 https://community.clujit.ro/pages/viewpage.action?pageId=7803163

https://community.clujit.ro/pages/viewpage.action?pageId=7803185

Trang này chứa thông tin về cách cấu hình Máy chủ Matrikon OPC cho Modbus TCP / IP, kết nối nó với PLC Siemens S7-1200 và đọc / ghi dữ liệu vào thanh ghi giữ PLC. Nó cũng chỉ ra cách xác định các mục hoặc thẻ trong Matrikon OPC Explorer để được đọc hoặc ghi.

Sử dụng Matrikon OPC Server cho Modbus, chúng ta sẽ:

  1. Thiết lập cấu hình trong Matrikon OPC Server để MOdbus kết nối với S7-1200 PLC 
  2. Liên kết nó với Matrikon OPC Explorer để đọc / ghi dữ liệu vào PLC S7-1200
  3. Thiết lập cấu hình để kết nối với Baxter Robot
  4. Trao đổi dữ liệu giữa S7-1200 PLC và Baxter qua Modbus TCP
  5. Liên kết nó với phần mềm MES hoặc MOM (ví dụ: Apriso, SIMATIC IT)

Điều kiện tiên quyết:

  1. Windows PC
  2. Máy chủ Matrikon OPC cho Modbus và Matrikon OPC Explorer 
  3. PLC S7-1200 với hướng dẫn này  TIA Portal V13 - S7-1200 PLC Modbus TCP Server & Modbus TCP Client đã hoàn thành hoặc cung cấp phần mềm ứng dụng được tải xuống PLC

Hướng dẫn từng bước một

  • Tải xuống cài đặt 

    1. Phương pháp 1
      1. Đăng ký trên trang web Matrikon
      2. Tải xuống Matrikon OPC Modbus Server và Matrikon OPC Explorer
    2. Phương pháp 2
      1. Tải xuống từ  đây
    3. Theo dõi trình cài đặt
  • Matrikon OPC Modbus Server :: Cấu hình

  1. Mở Máy chủ MatrikonOPC cho Modbus
  2. Thêm một nút máy chủ mới thuộc loại Modbus Ethernet PLC


Định cấu hình nút máy chủ mới như trong hình bên dưới

  1. Trong trường IP, chúng ta phải sử dụng IP của PLC
  2. Trong số cổng, chúng ta phải sử dụng cổng được cấu hình trong PLC
  3. Địa chỉ Modbus sẽ là ID phiên bản Modbus được cấu hình trong PLC
  4. Nhấn nút Tạo , bất kỳ thay đổi nào sẽ yêu cầu nút Áp dụng .
  • Matrikon OPC Explorer :: Cấu hình & Sử dụng

  1. Mở Matrikon OPC Explorer
  2. Được kết nối với Máy chủ Modbus OPC đã tạo trước đó
    1. Chọn máy chủ Matrikon.OPC.Modbus.x OPC trong menu con của Localhost.
    2. Nhấn nút Kết nối ở menu bên phải.
    3. Trạng thái kết nối sẽ thay đổi. 
      1. Đã kết nối: Có
      2. Trạng thái: Đang chạy
  3. Nhấn nút Thêm thẻ để xác định địa chỉ modbus cho các hoạt động đọc và / hoặc ghi
    1. Cửa sổ Mục nhập thẻ sẽ bật lên cho phép cấu hình thẻ:
    2. Chọn tên của Modbus OPC Server đã tạo trước đó: S7-1200
    3. Chọn chức năng Modbus hoặc dữ liệu sẽ được sử dụng: chúng tôi quan tâm đến các Đăng ký Giữ có địa chỉ 4xxxx
    4. Chỉ định địa chỉ chính xác: S7-1200.4: 1 là địa chỉ 40001
    5. Chọn loại dữ liệu phù hợp: word
    6. Xác định kiểu truy cập cho địa chỉ này: Đọc và Viết
    7. Thêm thẻ vào danh sách thẻ bằng cách nhấn vào mũi tên phải
    8. Nhấn nút OK
  4. Trong Matrikon OPC Explorer, chúng ta nên có một nhóm các thư mục thẻ
    1. Trong TIA Portal, chúng ta có thể quan sát thấy giá trị của Thanh ghi giữ có địa chỉ 40001 trong PLC là 0191 trong hệ thập lục phân có nghĩa là 401 trong hệ thập phân
    2. Trong TIA Portal, chúng ta có thể quan sát số lượng yêu cầu đọc / ghi trong các biến Done, có nghĩa là Modbus OPC Server đang đọc / ghi dữ liệu theo chu kỳ lên PLC
    3. Trong Matrikon OPC explorer, chúng ta có thể quan sát giá trị của thanh ghi giữ 40001 khi được đọc từ Máy chủ Modbus OPC, nơi đọc nó từ PLC S7-1200
    4. Trong Matrikon OPC explorer, chúng ta có thể quan sát chất lượng và dấu thời gian của dữ liệu đọc. (Chất lượng tốt có nghĩa là máy chủ OPC được kết nối thành công với PLC)
  5. Để ghi một giá trị từ Matrikon OPC Explorer vào PLC, hãy làm theo các bước:
    1. Đảm bảo rằng thẻ tương ứng được xác định
    • Trong thư mục Nhóm thẻ, nhấp chuột phải vào thẻ có giá trị mà bạn muốn sửa đổi và chọn tùy chọn: Ghi giá trị
    1. Một cửa sổ mới sẽ mở ra, chọn thẻ, kiểu dữ liệu của nó, chèn giá trị mới và nhấn nút Áp dụng.

Máy chủ Modbus Matrikon OPC :: Khả năng kết nối với Robot Baxter

Sẽ được bổ sung sau các bài kiểm tra thử nghiệm

Mô phỏng không thành công :: Không thể khởi chạy trình bao bọc ROS Modbus .

2017.01.20 Cập nhật: 

Thay vì chạy: 

$ rosrun modbus_wrapper modbus_client.py _ip: = "localhost" _port: = 1234 

như được trình bày trong  trình bao bọc ROS Modbus , lệnh sau sẽ được xem xét:

$ rosrun modbus modbus_client.py _ip: = "localhost" _port: = 1234

Sẽ được kiểm tra và xác nhận trong môi trường mô phỏng và phần này được cập nhật cho phù hợp

Robot S7-1200 & Baxter :: Trao đổi dữ liệu

Sẽ được bổ sung sau các bài kiểm tra thử nghiệm

Robot S7-1200 & Baxter :: Tích hợp với phần mềm MOM hoặc MES

Sẽ được bổ sung sau các bài kiểm tra thử nghiệm

  • TamasLaszlo Tofalvi - sẽ rất hữu ích nếu tôi có thể lấy hình ảnh của Apriso MOM (kit, v.v.)
  1. TIA Portal V13 - tải xuống và cài đặt
  2. TIA Portal V13 - S7-1200 PLC Modbus TCP Server & Modbus TCP Client

 

Thứ Bảy, 30 tháng 1, 2021

Siemens_Automation_License_Manager_V60_SP8

 https://drive.google.com/u/0/uc?id=1A92sQl4UxjCRljGHVLVvbr3_JH1WMtlM&export=download

pass www.qthang.net

OPC là 1 giao thức

 OPC là 1 giao thức cho phép kết nối các phần mềm SCADA tới các dòng PLC của các hãng khác nhau.Việc thực hiện kết nối này thông qua OPC Server,nó như 1 cầu nối trung gian giữa OPC Client và PLC.Do đó,thông thường,các OPC Server sẽ là 1 tập hợp gồm nhiều driver của các dòng PLC cho phép kết nối.Dữ liệu được truyền nhận từ PLC đến OPC Client,trong đó OPC Client có thể sử dụng các phần mềm SCADA(Wincc,Citect,RSView32,MC-Word,Labview...),HMI(Wincc Flexible,Vijeo Designer...) hay sử dụng Visual Basic hay có thể sử dụng chính OPC Client tích hợp trong phần mềm.


Việc truyền nhận thông qua OPC đã làm mềm dẻo hơn cho việc kết nối trong tự động hóa.Có thể liệt kê 1 số phần mềm OPC mạnh hiện nay như KepserverEX V5 hỗ trợ trên 160 dòng PLC,phần mềm TopServer,phần mềm OPCTechServer....Đây là những dòng phần mềm OPC hỗ trợ hầu hết các hãng PLC.

Tuy nhiên,mỗi hãng thông thường đều cho ra đời riêng 1 phần mềm OPC cho riêng mình.Siemens S7-200,S7-1200 có thể sử dụng PC Access(S7-1200 hạn chế chỉ truy xuất được DB1,khắc phục điều này bằng cách sử dụng KepserverEX).Siemens S7-300,S7-400 có thể sử dụng Simatic.Net OPC để kết nối.Ngoài ra,các dòng PLC Siemens hỗ trợ kết nối Ethernet có thể sử dụng OPC Matrikon .Schneider thì có OPC OFS(OPC Factory Server).Omron thì có CX-OPC Server...

Kết nối giữ OPC và PLC thông thường tối đa là 8 kết nối cùng 1 thời điểm,điều này chính xác cho kết nối giữa S7-200--PC Access VÀ 7-1200.Còn các dòng PLC khác thì nhờ các bác cho thêm thông tin vậy.

Cấu hình kết nối OPC với PLC,thông thường sẽ qua 4 giai đoạn,trước hết phải chọn Channel cho thiết bị,channel ở đây mình sẽ chọn dòng sản phẩm của hãng nào đó,sau đó cấu hình cho cổng truyền thông,diagnostics...Sau đó,mỗi channel có thể chọn nhiều thiết bị,ở đây ta có thể chọn chính xác thiết bị nào thuộc channel ở trên.Giai đoạn thứ 3 là tạo group tag cho dễ quản lí,sau đó tạo tag cho kết nối.Cuối cùng,để tesk kết nối ta có thể sử dụng tính năng test client tại mỗi OPC Server đều cung cấp.Đến đây,ta đã có thể kết nối OPC với PLC thành công.
OPC DA sinh ra để phục vụ trao đổi dữ liệu LOCAL (Tức là OPC Server và OPC Client cùng cài trên một máy). Nhưng thực tiễn thì rất nhiều mô hình lại áp dụng giao thức này trên Network (Tức là OPC Server và OPC Client cài trên 2 máy tính khác nhau). Dĩ nhiên, do bản chất sinh ra chỉ chạy LOCAL nên cũng có khá nhiều hạn chế. Bạn nào muốn dùng giao thức này trên Network thì cứ giải quyết được bài toán khai báo Service DCOM của Windows là xong.
OPC UA là giao thức hiện tại, giải quyết rất nhiều hạn chế mà OPC DA bó tay

LỖI TƯ DUY: GÓC NHÌN PHIẾN DIỆN

 LỖI TƯ DUY: GÓC NHÌN PHIẾN DIỆN

Trong quyển Factfulness (quyển sách được Bill Gates đánh giá là "phải đọc"), tác giả nói về lỗi tư duy "góc nhìn phiến diện" mà các chuyên gia hay mắc phải. Ông kể rằng, ông từng dự một buổi họp mặt lớn của các nhà khoa học ngành y (bao gồm cả những chuyên gia hàng đầu từng đạt giải Nobel). Nhưng khi được hỏi 1 câu trắc nghiệm về tỉ lệ tiêm chủng (đoán mò cũng có xác suất đúng ~33%) thì ngạc nhiên thay chỉ có 8% chuyên gia trả lời đúng và đến 92% chuyên gia trả lời sai.

Sốc? Vấn đề chỉ đơn giản là các chuyên gia này có thể rất giỏi trong ngành y nhưng tỷ lệ tiêm chủng lại một khía cạnh rất khác (dù thoạt nghe cũng có vẻ liên quan đến ngành y đó).

Tương tự như vậy, vào năm 1998, nhà kinh tế học lỗi lạc (giải Nobel Kinh tế) - Paul Krugman - từng cho rằng: “Đến khoảng năm 2005, tác động kinh tế của Internet cũng chẳng hơn gì máy fax”.

Sự thật sau đó ngược lại hoàn toàn: Trong giai đoạn 2007-2018, đóng góp của Internet vào kinh tế Mỹ tăng từ 439 tỷ đô lên 2100 tỷ đô — nhanh hơn 9 lần so với tốc độ tăng của cả nền kinh tế Mỹ trong cùng khoảng thời gian. Ngày hôm nay, Internet trở thành một phần không thể thiếu trong cuộc sống của hàng tỉ người, bao nhiêu người còn dùng máy fax?

Hiện tại, một số chuyên gia kinh tế bởi vì chỉ hiểu về kinh tế, nên thậm chí không phân biệt được thế nào là tiền ảo (lừa đảo) và thế nào là tiền mã hóa (cryptocurrency), chứ đừng nói là phân biệt giữa tiền mã hóa (cryptocurrency) và tài sản mã hóa (crypto asset). Tôi biết rằng hiện tại ở Việt Nam, có lẽ 95% dự án đầu tư liên quan (hoặc núp bóng crypto) là lừa đảo. Chính vì thế, tôi vẫn thường xuyên cập nhật các phân tích chi tiết và hướng dẫn học viên của mình cách tránh những dự án này. Nhưng tôi cũng không bao giờ vơ đũa cả nắm như các vị chuyên gia chưa tìm hiểu đủ kỹ và đủ sâu vấn đề.

Có bạn học viên đã từng hỏi tôi tại sao không tranh luận với các chuyên gia đó đến cùng. Tôi chỉ cười và trả lời: "Tôi may mắn tốt nghiệp 2 chuyên ngành là Công Nghệ và Kinh Tế ở một trường ĐH nằm trong TOP11 của thế giới, nên dễ tiếp cận crypto hơn những người chỉ học một chuyên ngành là kinh tế. Nhờ vậy, tôi biết đủ nhiều để biết mình chẳng biết gì nhiều cả. Thôi thì thay vì tranh luận qua lại mất thời gian thì dành thời gian học thêm. Lùi một bước để thấy, kiến thức như biển rộng, hiểu biết như trời cao."

Nếu bạn nào muốn đầu tư crypto một cách nghiêm túc thì cần phải học 3 thứ quan trọng mà nhà đầu tư nào cũng cần phải biết: (1) Quản trị rủi ro, (2) Quản lý vốn và (3) Tâm lý đầu tư.

Thỉnh thoảng cao hứng tôi có chia sẻ về một số kết quả đầu tư của mình nhưng tôi chưa bao giờ kêu gọi đầu tư vào bất kỳ loại crypto asset nào trên Facebook (cho dù là các dự án nghiêm túc). Tất cả học viên đã thực sự theo học lớp của tôi đều biết rõ tôi luôn nhắc nhở phải làm đúng 3 thứ trên để giảm thiểu rủi ro khi tham gia đầu tư vào lớp tài sản mới nổi như crypto và tăng cơ hội lợi nhuận.

Cuối cùng, blockchain (công nghệ nền tảng của crypto asset) sẽ là Internet hay cái máy fax thì chỉ có thời gian mới trả lời được. Nhưng là một nhà đầu tư chuyên nghiệp, tôi có một chiến lược cụ thể, bài bản từ đầu để sẵn sàng cho mọi tình huống.

Nếu bạn là người mới, trước khi bước chân vào việc đầu tư bất cứ thứ gì, thì hãy hiểu một sự thật không hề thay đổi. Đó là khi bạn không có kiến thức bạn sẽ bị dắt mũi dễ dàng ngay cả ở những kênh đầu tư truyền thống chứ đừng nói đến crypto. Thậm chí khi bạn không có kiến thức, gửi tiền vào ngân hàng cũng tiềm ẩn rủi ro. Cho nên, vấn đề không phải là một kênh đầu tư rủi ro đến mức nào, mà vấn đề nằm ở kiến thức và hiểu biết của mỗi người.

Hãy lùi một bước để thấy, kiến thức như biển rộng, hiểu biết như trời cao, còn ta thì nhỏ bé lắm.

Có thể là hình ảnh về ‎văn bản cho biết '‎progresswhen w facts rather than our inherent biases. BARACK DBAMA FACT Intra Academy ChrhPhyc Dirh Coo هtفا FUI TEN REASONS WE'R WRONG ABOUT WORLD- AND WHY THINGS ARE BETTER THAN YOU NESS Hans Rosling Ola Rosling Resling Rönnlund‎'‎

Bài viết rất hay này nói về triết lý trước giờ tôi sống và làm theo: "Lùi một bước, đất rộng trời cao".

 Bài viết rất hay này nói về triết lý trước giờ tôi sống và làm theo: "Lùi một bước, đất rộng trời cao".

_____

CHỚ THẤY NGƯỜI LÙI MÀ BẢO HỌ THUA

Một vị sư lên rừng lấy củi, trên đường về gặp một cậu bé đang chạy chơi đùa, hái hoa bắt bướm.

Vị sư đến gần, hỏi: “Trên tay con cầm gì thế?”.

Cậu bé láu cá đáp: “Con đố sư biết đó, nhưng nếu sư nói sai, sư phải mất cho con bó củi nhé?”.

Vị sư cười hiền: “Một con bướm đã chết đúng không?”.

Cậu bé cười phá lên: “Ha ha, sư đoán sai rồi, đúng là con bướm, nhưng nó còn sống, sư ạ!”.

Nói rồi, cậu mở hai lòng bàn tay, con bướm vội vã bay đi.

Vị sư ôn tồn bảo: “Vậy à, củi của con đây, con cầm về đi”.

Cậu bé hí hửng đem bó củi về khoe cha, cứ tưởng sẽ được cha khen, ai dè người cha nghiêm nghị: “Đem bó củi lên chùa trả rồi xin lỗi sư thầy ngay!”.

“Nhưng con thắng mà?”, cậu bé hậm hực.

“Nếu sư nói con bướm còn sống, con cũng bóp cho nó chết đúng không? Từ đầu, ông ấy đã định đem bó củi để đổi lấy một mạng sống rồi đó”, người cha ôn tồn giải thích.

Nghe vậy, cậu bé lặng lẽ cúi đầu. Hai cha con đem bó củi lên chùa, chắp tay xin lỗi vị sư. Vị sư chỉ khẽ mỉm cười, gật đầu.

_____

Trong cuộc sống, có những người tuy thân xác đã lớn, nhưng tư tưởng lại chỉ như cậu bé trong câu chuyện trước khi được cha chỉ ra cho tỏ tường. Lừa được của ai thứ gì, liền cảm thấy đắc ý, nghĩ rằng mình “khôn”, nhưng cái khôn ở đây là khôn lỏi, thật đáng chê. Những người ngạo mạn và hiếu thắng sẽ chỉ thấy được cái lợi cỏn con trước mắt, mà không biết được thật sự mình đã mất điều gì. Chính sự ngạo mạn, hiếu thắng và tư lợi ấy đã phong bế cơ hội học hỏi và trưởng thành của họ, tước đi của họ một trái tim thuần khiết và tâm hồn cao thượng.

Bởi vậy, chớ thấy người lùi bước mà bảo là họ thua, họ kém. Chẳng qua, họ không có tâm tranh đấu, họ có thể “Nhẫn”, có thể lùi một bước để thấy “đất rộng trời cao”. Điều ấy mới thật là đáng quý, vì nếu không có một ý chí kiên cường, không có sự tu dưỡng đạo đức, thì động chạm đến danh, đến lợi, liệu có thể nhấc chân bước lùi thật nhẹ nhàng chăng? Người ta cũng thường nói, thiện lương khó hơn là thông minh, bởi vì thông minh là thiên phú, còn thiện lương là một sự lựa chọn, quả đúng lắm thay!

KEPServerEx5

 http://www.mediafire.com/file/ri3lyu31xjwqi3n/KEPServerEx5.exe/file

Thứ Sáu, 29 tháng 1, 2021

Wincc Explorer - Server not available

 https://www.youtube.com/watch?v=OhkMb10BmYU 

KẾT NỐI PC VỚI PLC S7-1200 QUA OPC SEVER TRÊN GIAO DIỆN C# VÀ ỨNG DỤNG


CHƯƠNG 1: GIỚI THIỆU CHUNG VỀ PLC S7-1200 CỦA SIEMEN


Board tín hiệu là một dạng modul mở rộng tín hiệu vào/ra với số lượng tín hiệu ít, giúp tiết kiệm chi phí cho các ứng dụng yêu cầu mở rộng số lượng tín hiệu ít.

 Modul mở rộng tín hiệu vào,ra
Các modul mở rộng tín hiệu vào/ra được gắn trực tiếp vào phía bên phải của CPU.Với dải rộng các loại modul tín hiệu vào/ra số và analog, giúp linh hoạt trong sử dụng S7-1200. Tính đa dạng của cá modul tín hiệu vào/ra sẽ được tiếp tục phát triển.

 Modul truyền thông
Bên cạnh truyền thông Ethernet được tích hợp sẵn, CPU S7-1200 có thể mở rộng được 3 modul truyền thông khác nhau, giúp cho việc kết nối được linh hoạt hơn. Tại thời điểm giới thiệu S7-200 ra thị trường, có các modul RS232 và RS485, hỗ trợ các protocol truyền thông như modbus, USS…



CHƯƠNG 2: GIỚI THIỆU TIA PORTAL, PC ACCESS VÀ NGÔN NGỮ C# 
5

2.1 Phần mềm lập trình TIA PORTAL

Phần mềm dùng để lập trình cho S7-1200 là Step7 Basic. Step7 Basic hỗ trợ ba ngôn ngữ lập trình là FBD, LAD và SCL. Phần mềm này được tích hợp trong TIA Portal 11 của Siemens.

2.2 Phần mềm PC AccessPC Access

 Là phần mềm của Siemens dùng để truy xuất dữ liệu từ một số PLC của hãng. PC Access hoạt động thông qua OPC Server, vốn được chuẩn hóa bởi OPC Foundation.

PC Access cung cấp thư viện bổ sung cho Excel, Protool, VB nhằm kết nối PLC với PC từ các chương trình này.Hạn chế của PC Access trong việc tạo OPC sever cho S7-1200:PC Access được thiết kế chủ yếu dành cho dòng PLC S7-200, tuy nhiên có thể dùng được với PLC S7-1200, nhưng chỉ có các thẻ dữ liệu trong khối dữ liệu DB1 của S7- 1200 mới có thể được truy cập, nguyên nhân là do S7-200 chỉ có một khối dữ liệu.2.3 Ngôn ngữ lập trình C# và ứng dụngC# là một ngôn ngữ lập trình ứng dụng, ngôn ngữ biên dịch, ngôn ngữ đa năng được phát triển bởi hãng Microsoft, là một phần khởi đầu cho kế hoạch .NET. Microsoft phát triển C# dựa trên C, C++ và Java. C# được miêu tả là ngôn ngữ có được sự cân bằng giữa C++, Visual Basic, Delphi và Java…

Ưu điểm nổi trội so với các ngôn ngữ khác:
- C# là ngôn ngữ đơn giản, có ít từ khóa
- C# là ngôn ngữ hiện đại
- C# là ngôn ngữ hướng đối tượng, hướng module
- C# là ngôn ngữ mạnh mẽ và mềm dẻo



CHƯƠNG 3: TỔNG QUAN VỀ OPC SERVER 

3.1 OPC Server


- OPC dựa trên Microsoft Component Object Model (COM)
- OPC được viết tắt từ “OLE for Process Control”.
- OPC được điều hành bởi tổ chức độc lập: OPC Foundation (www.opcfoundation.org)
- OPC chuẩn hóa cách liên kết giữa các phần mềm trong ngành tự động công nghiệp.
- OPC Server là một ứng dụng hoạt động như một API (giao diện lập trình ứng dụng) hoặc là một bộ chuyển đổi giao thức.
- Một OPC Server sẽ kết nối với các thiết bị như PLC (Programable Logic Controller - bộ điều khiển lập trình được), DCS (Distributed control system - hệ điều khiển phân tán), RTU (Remote Terminal Unit), cơ sở dữ liệu…rồi chuyển đổi dữ liệu sang định dạng OPC chuẩn.

3.2 OPC Client

Những ứng dụng OPC (OPC Client) như HMI, bộ ghi dữ liệu, bảng biểu, vẽ đồ thị… có thể kết nối với OPC Server rồi đọc/ghi dữ liệu lên thiết bị.” Trong project này ta sẽ nghiên cứu cách kết nối C# với một OPC Server, như vậy C# sẽ là một OPC Client. OPC Server ở đây sẽ là Simatic S7-200 PC Access OPC Server 

  3.3 Một số thuật ngữ trong OPC


 OPC Object 
– một đối tượng được client tạo ra và dùng để kết nối đến OPC Server, đối tượng đã được định danh này – sau đó dùng để đọc và ghi dữ liệu đến PLC, DCS… thông qua OPC Server.


 OPC Item 

- một tag hay một biến dữ liệu được quản lý bởi OPC Server - tức là một biến dữ liệu trong một PLC.


 OPC Group

 - một nhóm OPC item được người dùng định nghĩa. Được tạo ra bởi các OPC client như là một cách thức quản lý một nhóm dữ liệu – một nhóm biến điều khiển trên một thiết bị.


 Collection
 - một nhóm các đối tượng có kiểu dữ liệu giống nhau.


3.4 Tạo kết nối giữa C# và OPC

Bước 1: Khai báo

private OpcServer TheSvr; Khởi tạo đối tượng OPCServer và OPCGroup, những đối tượng này xem như được mặc định

private OpcGroup TheGrp; với OPCServer cho một phiên làm việc mà client kết nối đến.
private S7200 PLC = new S7200(); Khai báo tên của PLC sử dụng trong chương
trình.

Bước 2: Kết nối OPC Sever

TheSvr = new OpcServer();         Tạo một đối tượng OPC Sever mới.
const string ServerProgID = "Program";Khai báo tên máy chủ để kết nối đến
“SeverProgID”.
TheSvr.Connect(ServerProgID);Kết nối sever với tên máy chủ đã khai
báo
Bước 3: Tạo OPC Group
TheGrp = TheSvr.AddGroup("abc", false, 187500);Thêm một Group mới vào
Group Collection
TheGrp.SetEnable(true);
TheGrp.Active = true;
Kích hoạt Group

Bước 4: Ghi/Đọc giá trị lên PLC 
PLC.write_PLC(TheGrp, "A", "B", "C");Ghi dữ liệu lên PLC
A – Địa chỉ/Biến PLC cần ghi dữ
liệu.
B – Giá trị cần ghi
C – Kiểu của biến/địa chỉ PLC
PLC.read_PLC_bool(TheGrp, "D");Đọc dữ liệu từ PLC (kiểu bool)
D – Địa chỉ/ biến PLC cần đọc dữ
liệu

CHƯƠNG 4: KẾT NỐI PLC S7-1200 VỚI C# QUA OPC SERVER TẠO BỞI PC
ACCESS

4.1 Thiết lập cấu hình cho PLC trên TIA PORTAL

Bước 1: Tạo một Project mới

Khởi động phần mềm TIA PORTAL V11 → Chọn 
“Creat new project” → Đặt tên và chọn nơi lưu trữ cho project → “Creat”

Bước 2: Thiết lập cấu hình cho PLC

Sau khi tạo được project mới ta có giao diện Portal view


   
Có thể chuyển giữa 2 chế độ xem “Project view” và “Portal view” bằng cách ấn vào 1 trong 2 vùng khoanh tròn trong trên. Chọn module và version của PLC hiện có, ví dụ ở trong project này “Configure a device” → “Add new device” → “PLC” → “SIMATIC S7-1200” → “CPU”→“CPU 1211C AC/DC/Rly” → “6ES7 211-1BD30-0XB0” → Version “v2.0”


Đặt lại tên cho PLC tại ô “Device name” chọn “Add” để thêm PLC vừa tạo vào project

Bước 3: Thiết lập địa chỉ IP cho PLC

Sau khi thêm PLC mới vào project ta có giao diện



Để phần mềm TIA PORTAL có thể kết nối với PLC ta cần thay đổi địa chỉ IP
trên PLC vừa tạo trùng với địa chỉ IP của PLC hiện có.

   Trên PLC vừa tạo ta chọn cổng Ethernet → Trong cửa sổ thuộc tính PLC được khoanh đỏ trong hình  ta chọn thẻ “Properties” → Trong thẻ “General” chọn
theo đường dẫn 
“PROFINET interface” → “Ethernet addresses”Trong mục “IP protocol” ta thay đổi “IP address”. Ví dụ ở đây PLC thật có địa
chỉ IP : 
192.168.0.1

Bước 4: Thay đổi địa chỉ IP của máy tính
   Cần thay đổi địa chỉ IP của máy tính có dạng 
192.168.0.xyz có dạng giống với
IP của PLC 
192.168.0.1 trong đó “xyz” phải khác IP của PLC.
Đối với Win 7 :
“Control Panel”

→“Network and Sharing

Center”

→“Change adapter settings”

→“Local Area Connection”

→“Internet Protocol Version 4

(TCP/IPv4)”

→“Properties”
→”Ok”
→”Ok”

Bước 5: Lập trình LAD cho PLC S7-1200

Trong cửa sổ “Project tree” chọn theo đường dẫn đến mục “Program blocks”.
Chọn 
“Main [OB1]” để mở giao diện lập
trình.


Bước 6: Tải chương trình xuống PLC
   Sau khi đã lập trình xong để nạp chương trình cho PLC:“Online” → “Download to device”Trong cửa sổ “Extended download to device” hiện ra, trong lựa chọn “PG/PC interface” ta chọn cổng Ethernet của máy tính → Đợi phần mềm tìm đến PLC được kết nối (tích vào “Show all accessible devices” nếu không tìm thấy PLC)
Sau khi đã kết nối được PLC → Chọn PLC và ấn nút 
“Load” → Tiếp tục làm
theo hướng dẫn cho đến khi 
“Finish” 

4.2 Tạo OPC Server trên PC Access  
 
Bước 2: Thêm PLC mới
   Chọn 
"Edit → New → PLC" một cửa sổ "PLC properties" hiện ra để thiết lập
thuộc tính.
Name: "S7-1200_PLC" (Đặt tên PLC)
IP Address: "192.168.0.1" (Địa chỉ IP của PLC)
TSAP Local: "10.00." (TSAP của PC Access)
TSAP Remote: "03.01." (TSAP của S7-1200 PLC)
 
 

Bước 3: Thêm các Item
Chọn 
"Edit → New → Item" cửa sổ “Item properties” hiện ra cho phép nhập các
thông số:
Tên của Item "Name:" input field.
Địa chỉ của thẻ "Address:" input field.
Chọn kiểu dữ liệu "Data Type:" input field



Bước 4: Lưu project“File → Save”  

Bước 5: Giám sát và chạy thử
Chọn các Item cần giám sát → Chọn nút 
"Add current items to test client" trên
thanh công cụ. Các Item được chọn sẽ được chuyển xuống của sổ 
“Test Client”  

Kết nối PLC S7-1200 với máy tính.
Sau đó để bắt đầu chạy thử chọn nút 
"Start Test Client" trên thanh công cụ. Nếu
cột 
“Quality” trong khung “Test Client” có giá trị là “Good” tức là quá trình kết nối
tới PLC thành công.
 

4.3 Tạo ứng dụng trên C# kết nối đến OPC Server
Bước 1: Tạo project mới“File” → “New” → “Project”


Trong cửa sổ “New project” chọn “Visual C#” → “Windows Froms Application” → Đặt tên và chọn nơi lưu cho project trong “Name” và “Location”→ “Ok” 

Để thuận tiện cho lập trình ta cho hiển thị các thanh công cụ “Tool box”,“Solution Explorer”“Properties” bằng cách vào “View” chọn đến thanh công cụ
cần hiển thị. Ta được giao diện như hình sau:
 


Bước 2: Thêm thư viện OPC Sever
Trong khung 
“Solution Explorer” → Click chuột trái vào “References” “Add Reference…  

Trong cửa sổ “Reference Manager” → Chọn “Browe…” → Thêm file thư việnSiemensOPCdotNETLib.dll → “Ok”  
“SiemensOPCdotNETLib.dll” là thư viện chứa các đối tượng, thuôc tính, các câu
lệnh, các hàm nhằm thực hiện kết nối đến OPC Sever.

Bước 3: Lập trình file khởi tạo OPC Server
Trong khung 
“Solution Explorer” → Click chuột trái vào tên project, ví dụ
“app_da_cn” → 
“Add” → “New item…”  

Trong của sổ “Add new item” → “Visual C# Item” → “Windows Form” → Đặt
tên cho Windows form mới → “Add” 

Chèn code tạo OPC Sever trong phần Phục lục 1 và lưu lạiChú ý: Trong dòng lệnh "MicroWin:2:192.168.0.1:1000:0301," thì địa chỉ (192.168.0.1) chính là địa chỉ PLC, vì vậy trong code cần sửa lại tất cả về địa chỉ PLC hiện có.
Bước 4: Lập trình ứng dụng
Tại cửa sổ 
“Form1.cs [Design]” ta có thể lấy các Button, Lable, TextBox, … từ thanh “Toolbox” để xây dựng giao diện theo yêu cầu.
Trong khung 
“Properties” ta chỉnh lại các thuộc tính và tên của các đối tượng sao cho hợp lý và dễ sử dụng.
Để lập trình các hành động cho đối tượng ta kích chuột trái vào Form → 
“View code”.
 Một số đối tượng và thuộc tính thường được sử dụng trong quá trình lập trình:  

CHƯƠNG 5: ỨNG DỤNG BỘ CHUYỂN ĐỔI NGUỒN ĐIỆN TỰ ĐỘNG
5.1 Mô tả công nghệ
Hộ tiêu thụ điện được cấp điện từ 2 nguồn, 1 là từ điện áp lưới, 2 là từ hệ thống
máy phát dự phòng.
Rơle RL báo điện áp lưới, tiếp điểm của nó được đưa vào PLC
Rơle RF báo điện áp từ máy phát điện, tiếp điểm của nó cũng được đưa vào PLC
Các thao tác vận hành, khởi động và đóng máy phát dự phòng được thực hiện như
sau:

 Khi mất điện áp lưới (UL=0):
Ấn nút Start → ON 1s, OFF 10s động cơ đề cho động cơ Diezen. Quá trình
này được lặp đi lặp lại 3 lần cho đến khi có điện áp từ máy phát (UF=1) thì
thôi. Trường hợp sau 3 lần thử khởi động máy phát không thành công thì hệ sẽ
dừng.

 Khi mất UL=0 và có UF=1 (đã khởi động được máy phát):
Chuyển sang cấp điện cho hộ tiêu thụ từ nguồn máy phát. Hay là CF ON 1s.
 Khi có lại UL=1 và đang có UF=1:
Đợi 2 phút để chắc chắn có điện lưới lại. Chuyển tải sang điện lưới CL ON 1s.
Sau đó dừng máy phát ON 1s.
5.2 Phân cổng vào ra  
5.3 Lưu đồ chương trình  

5.4 Giao diện chương trình ứng dụng  

5.5 Lựa chọn thiết bị
Hệ thống được thiết kế cấp điện cho một hộ gia đình nên nguồn cung cấp sẽ là điệnxoay chiều một pha và máy phát điện xoay chiều cùng có U=220V và f=50Hz. Contactor đảo chiều: được thiết kế cho một số ứng dụng cụ thể, thực chất về cấu tạo gồm 2 contactor thường ghép nối qua một thiết bị để chỉ có thể một trong hai Contactor ở trạng thái đóng.  
 Rơle trung gian: chức năng trung gian báo điện áp lưới, đóng cắt khởi động
động cơ đề.
 
Thông số kỹ thuật:
- Điện áp cuộn dây: 220/240VAC
- 8 chân, 2 cặp tiếp điểm
- Relay công suất loại nhỏ 3-5A
- Tiếp điểm chịu được điện áp tới 2000 VAC,

5.6 Sơ đồ nguyên lý

Nguyên lý:
Điện áp lưới và điện áp máy phát được phát hiện và đưa về PLC thông qua các tiếp điểm thường đóng của 2 rơle trung gian, do khi mất điện áp tiếp điểm thường mở của rơle sẽ đóng báo tín hiệu về PLC.
Đầu ra của PLC sẽ điều khiển hoạt động của contactor đảo chiều (chuyển mạch), ưu điểm của loại contactor này là chỉ có một trong hai nguồn điện đến được với hộ tiêu thụ, hạn chế sự cố khi cả hai nguộn cung cấp cho một tải.
 
5.7 Sơ đồ đấu dây
KẾT LUẬN


     Có nhiều cách khác nhau để có thể kết nối giữa PC và PLC, nhưng qua việc thực hiện. Nghiên cứu này ta đã hiểu được một cách cơ bản về việc thực hiện truyền nhận dữ liệu giữa PLC và PC. Thông qua việc tìm hiểu một giao thức cụ thể là OPC Sever và sử dụng ngôn ngữ C# để tạo giao diện giám sát trên PC.
    Qua đó cũng đi vào xây dựng một số ứng dụng cụ thể như hệ thống đèn giao thông hay bộ chuyển đổi nguồn tự động để áp dụng những nội dụng tìm hiểu được vào thực tiễn. Hai ứng dụng tuy đơn giản nhưng đã đầy đủ các bước cơ bản để tiến hành thiết kế một hệ thống giám sát điều khiển từ xa.
    Trong nghiên cứu này công cụ để tạo lên OPC sever là phần mềm PC Access, tuy nhiên còn rất nhiều phần mềm khác có thể tạo nên một OPC Sever, giúp trao đổi dữ liệu giữa PC và PLC. Cũng như vậy, còn nhiều cách khác nhau để giao tiếp giữa PC và PLC, vì vậy, việc tìm hiểu các giao thức này sẽ giúp tìm ra được ưu và nhược điểm của từng phương pháp. Đồng thời giúp quá trình thiết kế hệ thống giám sát sau này xác định được những phương pháp giao tiếp phù hợp với từng ứng dụng.

Code tạo kết nối giữa PC-Access với C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using OPC.Common;
using OPC.Data.Interface;
using OPC.Data;
public class S7200
{public void write_PLC(OpcGroup TheGrp, string Address, string Value, string Type)
{
string diachi = "MicroWin:2:192.168.1.23:1000:0301," + Address + "," + Type +",RW";OPCItemDef[] ItemDefs_ = new OPCItemDef[1];
OPCItemResult[] rItm_;
int[] HandlesSrv_ = new int[1];
int[] arrErr_ = new int[1];
object[] arrVal_ = new object[1];
ItemDefs_[0] = 
new OPCItemDef(diachi, true, 1234, VarEnum.VT_EMPTY);
TheGrp.AddItems(ItemDefs_, 
out rItm_);
if (rItm_ == nullreturn;
HandlesSrv_[0] = rItm_[0].HandleServer;
arrVal_[0] = Value;
TheGrp.SyncWrite(HandlesSrv_, arrVal_, 
out arrErr_);
}
public bool read_PLC_bool(OpcGroup TheGrp, string Address)
{
string diachi = "MicroWin:2:192.168.1.23:1000:0301," + Address + "," +"BOOL,RW";
OPCItemDef[] ItemDefs_ = new OPCItemDef[1];
OPCItemResult[] rItm_;
OPCItemState[] arrStat_ = null;
int[] HandlesSrv_ = new int[1];
int[] arrErr_ = new int[1];
object[] arrVal_ = new object[1];
ItemDefs_[0] = 
new OPCItemDef(diachi, true, 1234, VarEnum.VT_EMPTY);
TheGrp.AddItems(ItemDefs_, 
out rItm_);
HandlesSrv_[0] = rItm_[0].HandleServer;
TheGrp.SyncRead(
OPCDATASOURCE.OPC_DS_DEVICE, HandlesSrv_, out arrStat_);
return bool.Parse(arrStat_[0].DataValue.ToString());
}
public int read_word(OpcGroup TheGrp, string Address)
{
string diachi = "MicroWin:2:192.168.1.69:1000:0301," + Address + "," +"WORD,RW";
OPCItemDef[] ItemDefs_ = new OPCItemDef[1];
OPCItemResult[] rItm_;
OPCItemState[] arrStat_ = null;
int[] HandlesSrv_ = new int[1];
int[] arrErr_ = new int[1];
object[] arrVal_ = new object[1];
ItemDefs_[0] = 
new OPCItemDef(diachi, true, 1234, VarEnum.VT_EMPTY);
TheGrp.AddItems(ItemDefs_, 
out rItm_);
HandlesSrv_[0] = rItm_[0].HandleServer;
TheGrp.SyncRead(
OPCDATASOURCE.OPC_DS_DEVICE, HandlesSrv_, out arrStat_);
return int.Parse(arrStat_[0].DataValue.ToString());
}
public byte read_byte(OpcGroup TheGrp, string Address)
{
string diachi = "MicroWin:2:192.168.1.23:1000:0301," + Address + "," +"BYTE,RW";
OPCItemDef[] ItemDefs_ = new OPCItemDef[1];
OPCItemResult[] rItm_;
OPCItemState[] arrStat_ = null;
int[] HandlesSrv_ = new int[1];
int[] arrErr_ = new int[1];
object[] arrVal_ = new object[1];
ItemDefs_[0] = 
new OPCItemDef(diachi, true, 1234, VarEnum.VT_EMPTY);
30TheGrp.AddItems(ItemDefs_, out rItm_);
HandlesSrv_[0] = rItm_[0].HandleServer;
TheGrp.SyncRead(
OPCDATASOURCE.OPC_DS_DEVICE, HandlesSrv_, out arrStat_);return byte.Parse(arrStat_[0].DataValue.ToString());
}
public long read_dword(OpcGroup TheGrp, string Address)
{
string diachi = "MicroWin:2:192.168.1.23:1000:0301," + Address + "," +"DWORD,RW";
OPCItemDef[] ItemDefs_ = new OPCItemDef[1];
OPCItemResult[] rItm_;
OPCItemState[] arrStat_ = null;
int[] HandlesSrv_ = new int[1];
int[] arrErr_ = new int[1];
object[] arrVal_ = new object[1];
ItemDefs_[0] = 
new OPCItemDef(diachi, true, 1234, VarEnum.VT_EMPTY);
TheGrp.AddItems(ItemDefs_, 
out rItm_);
HandlesSrv_[0] = rItm_[0].HandleServer;
TheGrp.SyncRead(
OPCDATASOURCE.OPC_DS_DEVICE, HandlesSrv_, out arrStat_);return long.Parse(arrStat_[0].DataValue.ToString());
}
public float read_float(OpcGroup TheGrp, string Address)
{
string diachi = "MicroWin:2:192.168.1.23:1000:0301," + Address + "," +"DWORD,RW";
OPCItemDef[] ItemDefs_ = new OPCItemDef[1];
OPCItemResult[] rItm_;
OPCItemState[] arrStat_ = null;
int[] HandlesSrv_ = new int[1];
int[] arrErr_ = new int[1];
object[] arrVal_ = new object[1];
ItemDefs_[0] = 
new OPCItemDef(diachi, true, 1234, VarEnum.VT_EMPTY);
TheGrp.AddItems(ItemDefs_, 
out rItm_);
HandlesSrv_[0] = rItm_[0].HandleServer;
TheGrp.SyncRead(
OPCDATASOURCE.OPC_DS_DEVICE, HandlesSrv_, out arrStat_);return float.Parse(arrStat_[0].DataValue.ToString());
}