Nếu đây là lần đầu tiên đến với Điện Tử Việt Nam, bạn có thể đọc phần Hỏi đáp bằng cách nhấn vào liên kết. Có thể bạn cần đăng kí trước khi có thể gửi bài . Để bắt đầu xem bài viết, chọn diễn đàn bạn muốn thăm dưới đây.
Đấy là một bài tập của chúng tôi trong môn Mạng máy tính và truyền thông công nghiệp do ATYLA giảng dạy và hướng dẫn ! Thực ra chúng tôi mới chỉ dừng lại ở việc ghép nối các máy tính với nhau trong đó một máy tính là server với chuẩn OPC...
Tôi dùng chương trình VB (dựa vào chương trình mẫu của PCAccess) để giám sát một số biến dưới PLC.
Tôi dùng Timer interval=100 thì VB kịp xử lý, nhưng lại không đảm bảo tính thời gian thực, sợ ko phản ứng kịp các sự cố.
Nếu cho Interval =1ms thì chương trình VB bị ảnh hưởng vì nó liên tục phải "ngắt" để thực thiện lệnh trong Timer.
Các bác có cách giám sát các biến dưới PLC ngoài việc dùng Timer không.
Tôi dùng chương trình VB (dựa vào chương trình mẫu của PCAccess) để giám sát một số biến dưới PLC.
Tôi dùng Timer interval=100 thì VB kịp xử lý, nhưng lại không đảm bảo tính thời gian thực, sợ ko phản ứng kịp các sự cố.
Nếu cho Interval =1ms thì chương trình VB bị ảnh hưởng vì nó liên tục phải "ngắt" để thực thiện lệnh trong Timer.
Các bác có cách giám sát các biến dưới PLC ngoài việc dùng Timer không.
OPC server nào cũng cung cấp cho bạn một sự kiện là Datachange() bạn khia báo sự kiện ấy mà dùng he he he !!!
Tôi dùng chương trình VB (dựa vào chương trình mẫu của PCAccess) để giám sát một số biến dưới PLC.
Tôi dùng Timer interval=100 thì VB kịp xử lý, nhưng lại không đảm bảo tính thời gian thực, sợ ko phản ứng kịp các sự cố.
Nếu cho Interval =1ms thì chương trình VB bị ảnh hưởng vì nó liên tục phải "ngắt" để thực thiện lệnh trong Timer.
Các bác có cách giám sát các biến dưới PLC ngoài việc dùng Timer không.
Thời gian thực ở VD của bạn là cái gì vậy, dùng từ này ở đây thì no chính xác. Vấn đề ở chỗ chúng ta chỉ phát hiện được cảm nhận được 24h/s và chương trình chỉ là giám sát biến và các trạng thái để cập nhật lên màn hình thì cần gì phải 1ms chỉ cần 100ms là đủ để chúng ta quan sát trạng thái của biến rồi.
Đúng như Longimi nói, chương trình bạn viết trên VB chỉ làm nhiệm vụ trao đổi dữ liệu tham số quá trình, PLC mới làm nhiệm vụ điều khiển, thời gian lấy mẫu 100 ms.
Một cách khác không dùng timer là dùng hàm main và cho đoạn chương trình truyền thông vào trong vòng lặp:
OPC server nào cũng cung cấp cho bạn một sự kiện là Datachange() bạn khia báo sự kiện ấy mà dùng he he he !!!
Có phải đoạn chương trình này không bạn(đoạn mã trong VB Sample của PCAccess):
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
' Callback from OnDataChange
Private Sub MyGroup_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date)
On Error GoTo ErrorHandler
Dim i As Long
TxtDataChange.Text = TxtDataChange.Text + 1
'---------------------
''Dong nay toi them vao.
'txtReadVal.Item(2).Text = Values(1) ' Write Value to Text Box I0.0
'txtReadVal.Item(3).Text = Values(2) ' Write Value to Text Box Timer
'txtReadVal.Item(4).Text = Values(5) ' Write Value to Text Box Counter
'txtReadVal.Item(5).Text = Values(7) ' Write Value to Text Box Mw
'txtReadVal.Item(6).Text = Values(8) ' Write Value to Text Box SMB2
'txtReadVal.Item(7).Text = Values(9) ' Write Value to Text Box VB2
'---------------------
' Check Parameters
For i = 1 To NumItems
If ClientHandles(i) > 0 And ClientHandles(i) < 3 Then
' Values -> Values from read complete
' Qualities -> Qualities of the values
If Qualities(i) = 192 Then
txtChangeVal.Item(ClientHandles(i) - 1).Text = ItemValues(i) ' Write Value to Text Box
txtChangeVal.Item(ClientHandles(i) - 1).BackColor = &HFFFFFF
Else
txtChangeVal.Item(ClientHandles(i) - 1).Text = GetQualityText(Qualities(i))
txtChangeVal.Item(ClientHandles(i) - 1).BackColor = &H8080FF
End If
Else
MsgBox "DataChange Item " + Str$(i) + " has invalid Client Handle ", vbCritical
End If
Next
Exit Sub
ErrorHandler:
MsgBox Err.Description + Chr(13) + "OnDataChange", vbCritical, "ERROR"
End Sub
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Mấy dòng lệnh dưới tôi thêm vào, như không được ;
'txtReadVal.Item(2).Text = Values(1) ' Write Value to Text Box I0.0
....
'txtReadVal.Item(7).Text = Values(9) ' Write Value to Text Box VB2
Các Value(i) lấy từ dưới PLC, có thể là giá trị của IB,MW,Timer,Conter...
* Tôi làm như vậy nhưng không được, hay là chưa hiểu ý bạn, bạn có thể hướng dẫn cụ thể hơn được không, 1 đoạn code hay 1 chương trình mẫu.
Thanks ! ducvietacbk@yahoo.com
* Thanks longimi :đúng là dùng từ "thời gian thực" ở đây là không hợp lý.
Ban chuyen qua lap trinh bang Labview di, co san cac modun cho OPC server. Công việc của bạn chỉ còn là thiết lập đường dẫn cho chuẩn thôi!
các bác ơi, 2thang bon e dang lam do an ve OPC UA, hixhix,nhung ma doc quyển sách OPC Unified Architecture mà mở hồ quá. Sách dày >300 trang mà k có code mẫu j cả
toàn lý thuyết là lý thuyết. hixhix. bọn e 2 thằng, đứa là server đứa làm client.
các bác trao đổi từ năm 2006 còn bọn e đến 2010 mới nghe cái này lần đâu tiên
vào trong opcfoundation thì k down được vì mình chỉ là NonMember, hjxxjx. Tìm trên mạng đang làm theo cái SDK C++ nhưng cũng chỉ là trial
các có tài liệu j có thẻ share cho bọn e với k ạ?
hay có same mấu cho bọn e tham khảo với. hjxhjx. đọc j mà toàn lý thuyết là lý thuyết> hjx khó hiểu quá mất.
trời, bạn làm như vậy là cao thủ lắm đó, hồi giờ người ta làm những cái OPC có sẵn rồi, còn bạn tự tạo ra OPC để làm luôn, ghê thiệt, bạn có thể nói cách bạn làm ntn ko? mình cùng trao đổi, vì mình mới viết cái file DLL cho modbus, còn viết OPC như thế nào mình còn chưa hiểu nữa, hehheh
hjx hjx. To di mo mam tren mạng được cái SDK C++ viết theo nó. Và ở trang đó nó cũng cung cấp 1 công cụ thiết kế theo OPC UA < dĩ nhiên là graphic rồi> kéo thả, các object, objecttype, variable, methods... rồi sinh code theo chuẩn OPC UA. TỪ đó mình có thể định nghĩa cách thức xử lý các methods thôi vì nó khai báo hết cho mình rồi < cả thông số đàu ra đầu vào> cứ thế làm thôi.
còn kết nối client thì có hướng dẫn, cũng kết nối được rồi, browse rồi, call methods và đọc biến biếc rồi. Nhưng mà nó thiết kế trong 1 file C++ thôi, k tách biệt nhóm chức năng thành các lớp gì cả. Ý t là: mình sẽ cho các methods connects, dis => class Login; các method liên quan create và delete session => class session; các method gọi, read, write, call => interactServer ...
cứ nghĩ là đơn giản, vì mình chỉ cần đưa các methods về các class để mà gọi thôi, nào ngờ mấy cái liên quan đến thư viện của SDK nó báo là cứ redefinition mới khó hiểu chứ chắc tại mình chưa hiểu rõ cấu trúc của client ttrong OPC UA ntn hix die mất.
mới biết như thế thôi. các bác giúp e với
ps: còn dùng cái OpcSystem thì khổi nói, trial đó nhưng tận 30 ngày cơ, thiết kế client cứ gọi là quá sướng kéo thả có hết, nhưng k biết tạo Opc ua Server thế nào vì cái này là client. hjxhjx. dùng C# trong VS08 thế mà k theo cái này được, vì thế này thì k biết viết server ntn.
À, sản phẩm họ thiết kế ra, họ yêu cầu mình chứng minh là sau chỉnh sửa thì 1 là gỡ jump cắm lại không hư mạch, 2 là gỡ jump thì 220Vdc vẫn dùng được led áp thấp 20V mà không hư led như mình báo, nên họ hiểu rõ mà....
Bài học kiểu trực tuyến dù là loại đơn giản bậc nhất cũng vẫn cần chú tâm. Chỉ bật tai nghe lên thì không có loại nào thấm nổi đâu. Cách hay hơn, dễ hơn là kiếm phim tiếng Anh nào đó xem, ban đầu bật phụ đề tiếng Việt, nghe và...
Ha ha !
Thay đổi cách nghĩ thì sẽ nghĩ ra.
.
.
.
Một thứ cần kiểm soát dòng + nhiệt + công suất tiêu tán. Nhưng lại dùng tư duy ổn áp. Làm sao mà giải quyết được.
Nó là mạch ổn dòng.
Vì thế các anh nước lạ không thèm quan tâm là phải....
Vì cứ phải chỉnh sửa cho mỗi dải điện áp, quên chỉnh thì hư chíp phải bảo hành nên em thấy bất tiện, mới cần cái mạch 1 dải áp cao dùng cho tất cả loại đèn đó bác!...
Mình thỉnh thoảng cũng làm việc với người nước ngoài nói tiếng Anh thì toàn ghép nhặt từ, cộng với quơ tay quơ chân để diễn tả, hix. Nỗi khổ là không biết cách để mô tả sự việc. Tôi muốn tìm các bài giảng tiếng anh nào phù hợp...
Comment