Monday, November 2, 2015

Kiến trúc Client/Server trong WinCC - Hai project multiuser kết nối với nhau

Bài này giới thiệu cơ bản về kiến trúc Client/Server trong WinCC và cách cấu hình một hệ thống mẫu sử dụng hai server kết nối với nhau.

Kiến trúc Client/Server trong WinCC

WinCC hỗ trợ ba kiểu project là single user, multi user và client.

  • Single user: Là project chạy trên một máy tính duy nhất, nó không thể kết nối với các project khác và các project khác cũng không thể kết nối với nó. Trong danh sách computer của nó chỉ có một máy tính và đó là máy tính mà nó chạy trên đó, tên của máy tính này phải trùng với tên máy tính vật lý.
  • Multi user: Là project có thể được sử dụng bởi nhiều máy tính trong cùng mạng LAN, project đặt trên một máy và các project khác dạng client hoặc multiuser khác trong cùng mạng LAN có thể sử dụng các tài nguyên của nó. Bản thân nó cũng có thể sử dụng tài nguyên của các project khác kiểu multiuser như một client.
  • Client: Project kiểu này chỉ có thể sử dụng tài nguyên của các project kiểu multiuser khác trong cùng mạng LAN, có thể cấu hình một vài thứ như graphic/internal tag/... trong nó, bản thân nó không thể kết nối trực tiếp với các hệ thống tự động. 
Với hai kiểu project multiuser và client như trên, ta có thể xây dựng các cấu trúc Client/Server khác nhau trong mạng LAN như một client kết nối với nhiều server, nhiều client kết nối với một server, 2 server vừa kết nối với hệ thống tự động vừa kết nối với nhau, ....

Sau đây ta sẽ cấu hình cho hệ thống như sau:
  • Hai máy tính: "TAT01CLC-PC" và "TAT01CLC-LT".
  • Trên mỗi máy tính tạo một project WinCC kiểu multiuser với tên lần lượt là "server1" và "server2".
  • Ta sẽ cấu hình để trên server1 hiển thị tên của server2 và ngược lại.
Yêu cầu

WinCC Server đã được cài đặt.

Chuẩn bị
  • Đảm bảo hai máy tính kết nối với nhau qua một mạng LAN.
  • Trên mỗi máy tính tạo một thư mục mà bạn dự định tạo project WinCC trong đó với tên là "wincc projects" (thư mục của tôi là "blogspot"). Share thư mục này với quyền cao nhất (Read/Write).
  • Tạo project WinCC kiểu multiuser cho "TAT01CLC-PC" (server1) và "TAT01CLC-LT" (server2). 

Cấu hình server data

Trong mục này ta cấu hình để một project trong máy tính này có thể sử dụng tài nguyên của project trong máy kia. Ta làm theo các bước sau:
  • Tạo dữ liệu server cho server1, server2. Right click trên "Server data" -> Create... -> hiển thị hộp thoại "Packages Prperties", click OK để tạo dữ liệu server. 
  • Sau khi tạo dữ liệu server cho server1, một thư mục với tên "TAT01CLC-PC" được tạo ra trong thư mục project server1. Bạn truy cập vào thư mục này và vào thư mục "Packages" sẽ thấy một file "server1_TAT01CLC-PC.pck". Tương tự như vậy, một thư mục "TAT01CLC-LT" được tạo ra trong thư mục của project server2 và một file "server2_TAT01CLC-LT.pck". Các file .pck này chứa tất cả các thông tin server được dùng để các client sử dụng, ta sẽ sử dụng file này trong bước sau.
  • Load dữ liệu server1 trong server2 và ngược lại: Right click trên "Server data" -> Loading.... hiển thị hộp thoại mở file -> chọn file "server2_TAT01CLC-LT.pck" chứa trong thư mục [project\TAT01CLC-LT\Packages\] trên máy "TAT01CLc-LT" như mô tả ở trên. Sau khi load xong, ta sẽ có thể truy cập các tài nguyên của server2 trên server1. 

  • Thêm máy tính "TAT01CLC-LT" vào danh sách computer của project server1 và ngược lại: Right click trên "Computer" -> New Computer... -> hiển thị hộp thoại "Computer properties". Nhập tên máy tính "TAT01CLC-LT" rồi click OK. Điều này đảm bảo rằng máy "TAT01CLC-LT" được quyền sử dụng tài nguyên của server1.


Cấu hình graphic
  • Trong server1 tạo một picture "main.pdl".
  • Cấu hình "main.pdl" như hình sau, chú ý IOFiled phải chọn format hiển thị là String. 
  • Liên kết tag cho IOFiled để hiển thị tên server2: Chọn tag "@ServerName" của server2 trên server1 như hình sau. Như ta thấy hình dưới, ta có thể truy cập các tag có trong server2 từ server1.  
  • Làm tương tự cho server2.
Runtime 

Bây giờ ta có thể chạy runtime để test, ta chỉ cần chạy runtime cho server1 và server2, kết quả thu được từ server như hình dưới







Saturday, October 31, 2015

Link tài liệu cấu hình Client/Server trong WinCC

Đây là tài liệu gốc bằng tiếng Anh của Siemens mô tả chi tiết về các cấu trúc Client/Server của WinCC V7 và cách cấu hình chúng. Anh em nào cần làm về mảng này thì xem thử nhé.

http://www.mediafire.com/view/c92n6hch9hc5e23/WinCCInformationSystemConfiguration_en-US.pdf


Thursday, October 29, 2015

Simatic EKB 2014_09_13 crack cho các phần mềm của Siemens

Link download Simatic EKB 2014_09_13 crack cho các phần mềm của Siemens.

http://www.mediafire.com/download/xonkk019yszc6zr/Sim_EKB_Install_2014_09_13.zip

Xuất dữ liệu quá trình ra file csv để mở trong excel sử dụng C-Script trong WinCC

Bài này trình bày chi tiết cách dùng C-Script để xuất dữ liệu quá trình ra file .csv để mở trong excel. Đây là vấn đề được nhiều người quan tâm và có rất nhiều ứng dụng. Ở đây tôi chỉ trình bày làm sao để cập nhật giá trị quá trình và ghi nó ra file .csv, các bạn có thể dùng đoạn code đó để tùy biến trong ứng dụng của mình như tạo action để cập nhật theo chu kỳ hoặc theo sự kiện.

Bài toán đặt ra là ta có hai tag giá trị quá trình và một nút lệnh "Update CSV". Khi ta click nút lệnh, ta sẽ đọc các giá trị này rồi ghi ra file .csv định sẵn, ta ghi vào cuối file, không xóa các dữ liệu có sẵn, tức là ghi ở chế độ append.

Chuẩn bị

Ta sẽ tạo giao diện như hình:



  • Tạo project WinCC 
  • Tạo hai tag với thông số như bảng sau
Tên
Kiểu dữ liệu
si32Value
Signed 32-bit value
fValue
Floating-point number 32-bit IEEE 754
  • Tạo nút lệnh và hai IOFiled như hình. 
  • Gán text của nút lệnh là "Update CSV". Khi ta click nút này sẽ cập nhật dữ liệu mới vào cuối file csv. 
  • Liên kết tag cho một IOFiled là tag "si32Value". Ta dùng IOField để thay đổi giá trị của tag "si32Value". 
  • Liên kết tag cho IOFiled còn lại là tag "fValue". Ta dùng IOField để thay đổi giá trị của tag "fValue". 
Đến đây ta đã chuẩn bị xong những thành phần cần thiết. Bây giờ ta sẽ tạo mã trong sự kiện "Mouse Click" của nút lệnh "Update CSV".

Tạo mã

Cập nhật file csv gồm các bước sau:

  • Mở file, nếu lỗi thì không làm gì cả. Nếu mở file thành công thì làm các bước sau. 
  • Đọc các giá trị quá trình. 
  • Ghi các giá trị quá trình vào dòng cuối file trong định dạng ([si32Value],[fValue]) 
Sau đây là mã trong C-Script. Ở đây tôi dùng đường dẫn file nằm trong ổ D, bạn chỉ cần tạo thư mục chứa file .csv, không cần phải tạo file csv. Nếu chạy trong Windows7 thì chú ý là phải dùng thư mục được quyền tạo và chỉnh sửa file, nếu không hàm mở file sẽ báo lỗi.

Các bạn có thể tham khảo các hàm dùng cho file như fopen, fprintf, fclose trên mạng nhé.


/*
Script ghi du lieu vao cuoi file. cac gia tri cach nhau boi dau ','
Dinh dang: [si32Value],[fValue]
*/

// Duong dan file csv, nguoi dung co the thay doi no theo y minh
#define CSV_FILE_PATH "D:/csv/export_wincc.csv"

// Khai bao bien
FILE* file = NULL;
int si32Value = 0;
float fValue = 0.0f;

// Mo file va ghi du lieu vao cuoi file. Neu file khong ton tai -> tao file
file = fopen(CSV_FILE_PATH, "a");
if(file == NULL) // Neu khong the mo file -> khong lam gi ca
return;

// doc du lieu tu cac tag
si32Value = GetTagSDWord("si32Value");
fValue = GetTagFloat("fValue");

// Ghi du lieu vao dong cuoi file
fprintf(file, "%d,%f\n", si32Value, fValue);

// Dong file
fclose(file);


Các bạn chỉ cần paste đoạn mã này vào C-Script của sự kiện "Mouse Click" của nút "Update CSV" là xong.

Đến đây ta đã hoàn tất các công việc, bây giờ bạn quay trở lại WinCC Explorer rồi active WinCC runtime để test nhé. Nhớ là phải kích hoạt "Global Script Runtime" cho WinCC Runtime nhé. Các bạn có thể tham khảo cách kích hoạt 
"Global Script Runtime" và tạo Global Action ở link dưới.


http://step7control.blogspot.com/2015/10/tao-chuyen-ong-dung-c-script-va-timer.html

Sau đây là dữ liệu của file mà tôi đã test.




Các bài liên quan:


Wednesday, October 28, 2015

Tài liệu bài tập lập trình PLC dùng S7-300

Đây là tài liệu bài tập lập trình PLC S7-300 dùng ngôn ngữ LAD của tác giá Nguyễn Xuân Công.

Hy vọng sẽ giúp ích cho những bạn mới học lập trình PLC.

http://data.biitbook.com/Bai-Tap-PLC_phan-1.pdf

http://www.mediafire.com/view/yly4jb9uyif22g5/tai_lieu_s7300.pdf

Tạo chuyển động dùng C-Script và Timer trong WinCC

Trong bài này, ta sẽ tạo chuyển động cho một hình tròn chuyển động tịnh tiến từ điểm đầu đến điểm cuối. Yêu cầu bài toán là tạo một picture, trong picture có hai nút nhấn "Start" và "Stop" và một hình tròn. Khi bấm nút "Start" thì hình tròn được đưa về vị trí ban đầu và bắt đầu chuyển động, khi bấm nút "Stop" thì dừng.

Chuẩn bị:

  • Trước hết ta tạo một project "example".
  • Trong project tạo một tag nội kiểu "Binary Tag" với tên là "bRun", gán giá trị khởi tạo cho nó là FALSE.
  • Tiếp theo ta tạo 1 picture "main", trong picture main ta thêm các đối tượng với các thuộc tính như trong bảng sau.

Name
Global Shadow
Global Color Scheme
Position X
Position Y
Width
Height
btnStart
Yes
Yes
30
30


btnStop
Yes
Yes
160
30


circle
No
No
30
100
40
40


Tạo chuyển động

Để tạo chuyển động cho circle, ta sẽ gán giá trị cho thuộc tính "Position X" và "Position Y" của circle để thay đổi vị trí của circle. Trong WinCC, ta có thể liên tục xác lập vị trí của circle bằng cách dùng timer với action, sau mỗi chu kỳ của timer, ta xác lập lại vị trí của circle bằng cách viết mã trong action.

Tạo một action trong C-Script và gán nó với một timer


  • Trong view bên trái của WinCC Explorer, right click trên "Global Script -> Open C Editor" để mở Global Script C.
  • Trong Global Script C ở view bên trái right click "Actions -> New" để tạo một action.


  • Click biểu tượng trên thanh toolbar để mở hộp thoại "Properties", chọn tab "Trigger".
  • Click chọn "Timer -> Cyclic" rồi click "Add" để mở hộp thoại "Add Trigger".
  • Chọn kiểu Event là "Standard Cycle", Trigger name là "tmr250", Cycle là "250 ms".
                                      

  • Click OK trên các hộp thoại để hoàn tất việc tạo timer cho action.
Đến đây ta đã gán timer 250 ms cho action này, action này sẽ chạy sau mỗi 250 ms.

Tạo mã cho action

Bây giờ chúng ta sẽ tạo mã cho action để nó xác lập lại vị trí cho circle sau mỗi chu kỳ của timer 250 ms. Các bạn copy đoạn code dưới đây rồi paste vào trình soạn thảo C-Script của WinCC.


#include "apdefap.h"
#define PIC_NAME "main"
#define CIRCLE_NAME "circle"
#define TAG_RUN "bRun"
int gscAction( void )
{
int iStepX = 5;
int iStepY = 5;
int iMaxX = 200;
int x, y;
BOOL bRun;
bRun = GetTagBit(TAG_RUN);
if(!bRun) // Neu khong chay -> khong lam gi ca
return 0;
x = GetLeft(PIC_NAME, CIRCLE_NAME); // Lấy tọa độ X của circle
y = GetTop(PIC_NAME, CIRCLE_NAME); // Lấy tọa độ Y của circle
if( x < iMaxX ){
x += iStepX; // Tịnh tiến theo phương X
y += iStepY; // Tịnh tiến theo phương Y
// Kiểm tra nếu đã đạt tới điểm cuối thì dừng
if( x >= iMaxX ){
x = iMaxX;
}
SetLeft(PIC_NAME, CIRCLE_NAME, x); // Xác lập tọa độ X mới
SetTop(PIC_NAME, CIRCLE_NAME, y); // Xác lập tọa độ Y mới
}
return 0;
}

Sau khi tạo mã xong, bạn click trên biểu tượng để compile action, sau đó lưu lại với tên "rotate_circle.pas". Đến đây ta đã xong phần tạo chuyển động cho circle. Bây giờ ta tạo event cho hai nút "Start" và Stop". Ta chỉ cần SET bit "bRun" khi nhấn nút "Start" và RESET nó khi nhấn nút "Stop", ta cũng phải cần xác lập lại vị trí ban đầu cho circle khi nhấn nút "Start".

Tạo event cho button "Start"
Trong Graphic Designer, click chọn nút "Start" -> click biểu tượng để mở hộp thoại "Object Properties" -> chọn tab "Events" -> chọn "Mouse" ở view bên trái -> chọn "Mouse Click" ở view bên phải -> right click -> "C-Action..." -> Mở hộp thoại "Edit Action". 


Trong "Edit Action" bạn tạo mã như sau

#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#define PIC_NAME "main"
#define CIRCLE_NAME "circle"
SetLeft(PIC_NAME, CIRCLE_NAME, 30); // Xác lập tọa độ X cua diem dau
SetTop(PIC_NAME, CIRCLE_NAME, 100); // Xác lập tọa độ Y cua diem dau
SetTagBit("bRun", TRUE);
}

Click trên biểu tượng để compile rồi click OK để đóng hộp thoại. 

Tạo event cho button "Stop"

Làm tương tự như nút "Start".
Tạo mã như bên dưới


#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
SetTagBit("bRun", FALSE);
}

Đến đây ta đã xong tất cả các bước, bây giờ ta có thể chạy WinCC Runtime để xem thành quả.

Chạy WinCC Runtime

Do ta dùng Global Action C-Script nên ta phải kích hoạt "Global Script Runtime" cho WinCC Runtime. Ta làm theo các bước sau.
Trong WinCC Explorer, click chọn "Computer" ở view bên trái -> chọn máy tính của bạn ở view bên phải ->double click để mở hộp thoại "Computer properties" -> chọn tab "Starup"
Tick chọn vào mục "Global Script Runtime" trong hộp danh sách
Click OK để đóng hộp thoại.




Cuối cùng bạn quay trở lại WinCC Explorer và Activate WinCC Runtime, bạn hãy thử click nút "Start" và "Stop" để xem hiệu ứng nhé.


Các bài liên quan:

Tuesday, October 27, 2015

Link Download STEP7 PROFESSIONAL 2010 SR4

Link download
https://mega.nz/#F!y0AARKZS!LQTWs_vyM_F9UQeX-ZAZyA

The SR4 of STEP 7 Professional 2010 now includes the following updates of the components:

  • STEP 7 V5.5 incl. SP4
  • S7-PLCSIM V5.4 incl. SP5 incl. Hotfix 2
  • S7-SCL V5.3 incl. SP6 incl. Hotfix 2
  • S7-GRAPH V5.3 incl. SP7

Supported operating systems:
  • MS Windows XP Professional SP2 or SP3
  • MS Windows Server 2003 R2 SP2 standard edition as workstation
  • MS Windows 7 32 Bit Ultimate, Professional and Enterprise (Standard installation), with or without SP. However, the Windows XP mode under Windows 7 is not released
  • MS Windows 7 64 Bit Ultimate, Professional and Enterprise with or without SP
  • MS Windows Server 2008 R2 64 Bit, with or without SP

Protect/Unprotect các block (S7-300, S7-400 FB/FC) trong Step 7 Manager

Bài này giúp các bạn biết về thuộc tính KNOW_HOW_PROTECT của các khối S7-300/400 trong Step 7 manager và sử dụng công cụ s7canopener để có thể gán hoặc xóa thuộc tính này cho các blocks.

Step 7 Manager hỗ trợ build các block tự động từ các file source dưới dạng text, hai ngôn ngữ được hỗ trợ là STL và SCL. Bạn có thể soạn thảo chương trình cho một hoặc nhiều block trong một file source. Sau khi soạn thảo xong bạn compile thì Step 7 Manager tạo ra các block tương ứng dưới dạng STL, cuối cùng bạn download các block này xuống PLC.

Khi compile, bạn có thể xác định mã STL của các block được tạo tự động có được bảo vệ hay không, nếu được bảo vệ thì bạn không thể mở block STL này ra để xem, bạn chỉ có thể thay đổi mã của file STL này bằng cách thay đổi mã của file source  và compile lại.
Để xác định các khối STL được bảo vệ, bạn thêm dòng dưới vào mã của khối đó trong file source. Nếu bạn không thêm dòng này thì mặc định là không được bảo vệ.

                               KNOW_HOW_PROTECT

Như vậy nếu trong trường hợp bạn không có file source thì bạn không thể mở hoặc chỉnh sửa các block được bảo vệ. Dưới dây mình giới thiệu một công cụ cho phép SET/RESET thuộc tính KNOW_HOW_PROTECT này một cách nhanh chóng.

Phần mềm s7canopener cho phép mở một dự án Step 7 Manager, hiển thị các block có trong đó và bạn có thể thay đổi thuộc tính KNOW_HOW_PROTECT một cách dễ dàng. Các bạn có thể download phần mềm theo link dưới.

http://www.mediafire.com/download/tm1xipkf076kqjk/s7canopener.zip

Sau đây tôi hướng dẫn các bạn sử dụng phần mềm. Bạn không cần phải cài phần mềm, sau khi download và giải nén bạn sẽ có thư mục chứa phần mềm, bạn vào đó chạy file "s7canopener.exe". Giao diện nó như hình dưới.


Bạn mở một dự án Step 7 Manager thì nó sẽ hiển thị tất cả các thư mục blocks có trong dự án đó ở view phía trên. Khi bạn click chọn một thư mục blocks nào đó, phần mềm sẽ hiển thị  mỗi thư mục blocks có bao nhiêu block gồm OB, FB, FC, DB ở view phía dưới.

Để thay đổi thuộc tính cho một hoặc nhiều block, trước tiên bạn chọn các block mà bạn muốn thay đổi ở view phía dưới. Sau khi chọn xong, bạn click nút "Unprotect" để set thuộc tính KNOW_HOW_PROTECT bằng FALSE có nghĩa là các block này có thể được mở để xem, ngược lại bạn click nút "Protect".

Chú ý: Các bạn nên backup một bản của dự án Step 7 Manager trước khi thực hiện các thay đổi với phần mềm s7canopener.






Monday, October 26, 2015

Link download phần mềm WinCC Flexible 2008 SP3

Đây là link download trực tiếp từ Siemens, phải có tài khoản mới download được nhé.

https://support.industry.siemens.com/cs/document/100777999/simatic-wincc-flexible-2008-trial-download?dti=0&lc=en-WW

TIA Portal

Các bạn vào mục này, rồi post câu hỏi về TIA Portal trong phần nhận xét ở dưới nhé.
Cám ơn.

Bộ phần mềm TIA Portal V13 SP1 và WinCC V7.3 SE

Phần mềm TIA Portal V13 SP1:

https://support.industry.siemens.com/cs/document/105825934/service-pack-1-for-simatic-step-7-v13-incl.-plcsim-(tia-portal)?dti=0&lc=en-WW

Phần mềm WinCC V7.3 SE:

WinCC V7.3 SE.7z.001 https://mega.co.nz/#!xlhW3DgY!qcp-qNL6AJctHbwf_aLZcWXxCRli1lcNFBO86opK22w
WinCC V7.3 SE.7z.002 https://mega.co.nz/#!0wAhGBTI!RAH8ij5aCHPVH07_HFf59NbE7YFeJnD1eroQH2HElhg
WinCC V7.3 SE.7z.003 https://mega.co.nz/#!otgm2QwA!qgd5PFg67ga1j-AkwezLwwKciRc8o6-87LPdhOY7AAk
WinCC V7.3 SE.7z.004 https://mega.co.nz/#!U9ww0KiQ!13j9-WEkbwnThGBTozoX3OSiFyn34RR1WGh9mayrVSo
WinCC V7.3 SE.7z.005 https://mega.co.nz/#!RsRUzZID!1figLg3qHz537tWnv0TYh6rgB0YdO5cFiqwU1pVaQIY
WinCC V7.3 SE.7z.006 https://mega.co.nz/#!VsYFjCZQ!j1bpblcEea8dbZy-4WpZlqIccNZJWahfW19f3CgArmY
WinCC V7.3 SE.7z.007 https://mega.co.nz/#!19pSiAbT!5i1ggh8ykkfdZS-LXkbURFMsrgY_X5VZ-yhtCDABydY
WinCC V7.3 SE.7z.008 https://mega.co.nz/#!p8Q1EA6K!KffZMSeR78Ipr0M3eYclZ_r7GwdyIPS0PpLu2y8BXR8
WinCC V7.3 SE.7z.009 https://mega.co.nz/#!ctBh2ZLI!Se347356u1ACjDZ8gxIJUsyHhNZ6MaIwqBKC7Z2mPn4
WinCC V7.3 SE.7z.010 https://mega.co.nz/#!8gxUQZzK!bY43vfZUByXhb15ZFO5jm2r1I1ZoB-8O44xK7FFf8ng
WinCC V7.3 SE.7z.011 https://mega.co.nz/#!1oZWmZjK!yKRElIRQXvF5KFTSaZegn3_e-vKDiZbmcptkGynIbXY


Thursday, February 27, 2014

Hỏi - Đáp: Simatic Net

Các bạn vào mục này, rồi post câu hỏi về Simatic Net trong phần nhận xét ở dưới nhé.
Cám ơn

Cấu hình OPC Server trong Simatic Net


Phần này hướng dẫn các bạn cấu hình 1 OPC Server trên một PC Station. Cấu hình hệ thống như sau:
  • Một trạm PC Station
  • Một PLC S7-300 CPU315-2PN/DP
  • PC kết nối với S7-300 qua TCP/IP

Saturday, February 22, 2014

Ví Dụ Mẫu S7-300 - Mô Phỏng Trên WinCC


Sau đây ta sẽ tạo một project mẫu WinCC để kết nối với PLCSIM mô phỏng chương trình của project “example”.

Yêu cầu: Tạo mới hoặc mở một project WinCC