Thông báo

Collapse
No announcement yet.

Giao tiếp S7-200 với PC

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #31
    Nguyên văn bởi caohoangvu
    Bác có thể cho tui code để tham khao không? cám ơn bác trước.email cua tui: vucao_hc505@yahoo.com
    các bạn không cần phải xin ai cả. chỉ cần cài PC access là có code = VB cho các bạn tham khảo rồi.
    katllu

    Comment


    • #32
      Nguyên văn bởi kemoihoc Xem bài viết
      [














      Như vậy chúng ta thấy Mscomm là một bộ công cụ đã có sẳn trong VB giúp người lập trình can thiệp vào cổng com ( RS232). Và đây chính là 1 Actix có đầy đủ các thuộc tính cần thiết. Thông thường sau khi tạo một Project mới, ở phần các Actix có thể chưa có Mscomm do vậy bạn cần phải lấy đối tượng này ra ( hình điện thoại). Chúng ta có thể xem Mscomm là 1 đối tượng có nhiều thuộc tính, để Mscomm hoạt động chúng ta phải khai báo hay nói đúng hơn là set các thuộc tính cần thiết cho cơ chế truyền thông.
      Khi đã được kích hoạt, Mscomm sẽ tự động lấy data từ cổng RS232 vào và cất ở bộ đệm truyền thông ( được thực hiện trên cơ chế ngắt truyền thông, Mscomm sẽ tự động chuyển đổi dữ liệu nguời sử dụng sang mã ASCII hoặc ngược lại), vậy người lập trình chỉ có nhiệm vụ lấy dữ liệu ( hoặc ngược lại) đưa vào 1 Text để hiện thị hoặc cất vào 1 địa chỉ cần thiết. Tuy nhiên VB là ngôn ngữ có cơ chế kích hoạt theo sự kiện vì vậy CHU KÌ lấy dữ liệu của bạn bắt buộc phải theo 1 sự kiện ( đây chính là nhược điểm hạn chế tốc độ truyền và nhận gói dữ liệu và hạn chế tính thời gian thực ), như ví dụ trên hình vẽ bạn phải sử dụng 1 timer để tạo ra sự kiện có tính tuần hoàn, và mỗi lần timer tràn thì sẽ tạo ra 1 sự kiện và đây chính là điều kiện để thực hiện việc lấy dữ liệu từ bộ đệm vào text.
      Để kích hoạt các thuộc tính cần thiết của Mscomm cho truyền thông bạn cần khai báo các thuộc tính của nó như sau:
      Mscomm1.PortOpen = True // mở cổng
      Mscomm1.CommPort=1 // chọn com 1
      Mscomm1.Settings=’ 9600,N,8,1’ // tốc độ,không sửdụng Parity,8 bít dữ liệu,1 bít stop.
      Để lấy dữ liệu từ bộ đệm vào text ta sử dụng câu lệnh
      Text1.text = Mscomm1.input ( hoặc .output)
      Lưu ý các công việc này chỉ được thực hiện theo sự kiện ( ví dụ timer tràn)
      Nếu cần thiết bạn có thể liên hệ trực tiếp tôi sẽ gửi cho bạn tài liệu và các chương trình mẫu. Chúc thành công.
      [/QUOTE]

      Nếu dùng con S7-200 để truyền thông với máy tính theo phương thức Modbus thì lại phải khởi tạo nó = phần mềm. Còn nếu có thàng PC Access thì mọi việc chở nên đơn giản rất nhiều.
      katllu

      Comment


      • #33


        Nếu dùng con S7-200 để truyền thông với máy tính theo phương thức Modbus thì lại phải khởi tạo nó = phần mềm. Còn nếu có thàng PC Access thì mọi việc chở nên đơn giản rất nhiều.[/QUOTE]

        Bác có tài liệu và phần mềm PC access không gửi cho mình với nhé! Cảm ơn bác nhe!

        Comment


        • #34
          Nguyên văn bởi nodiesun Xem bài viết
          Nếu dùng con S7-200 để truyền thông với máy tính theo phương thức Modbus thì lại phải khởi tạo nó = phần mềm. Còn nếu có thàng PC Access thì mọi việc chở nên đơn giản rất nhiều.
          Bác có tài liệu và phần mềm PC access không gửi cho mình với nhé! Cảm ơn bác nhe![/QUOTE]

          Nâu rồi không đụng tới chẳng nhớ nó lằm ở đâu nữa bạn chịu khó search trên mạng đi hoặc tham khảo đoạn code sau của mình qua đường link:
          http://dientuvietnam.net/forums/show...?t=5207&page=2
          katllu

          Comment


          • #35
            Nguyên văn bởi mstudio8x Xem bài viết
            Bác có tài liệu và phần mềm PC access không gửi cho mình với nhé! Cảm ơn bác nhe!
            Nâu rồi không đụng tới chẳng nhớ nó lằm ở đâu nữa bạn chịu khó search trên mạng đi hoặc tham khảo đoạn code sau của mình qua đường link:
            http://dientuvietnam.net/forums/show...?t=5207&page=2[/QUOTE]
            Anh Lưu ơi em đang làm đồ án về hiển thị và điều khiển nhiệt độ dùng S7-200. Anh có phần mềm và tài liệu về PC access gửi cho em với nhé! À nếu em muốn hiển thị nhiệt độ theo thời gian thì lập trình như thế nào để có được đồ thị nhiệt độ theo thời gian hả anh! Anh cố gắng giúp em với nhé! Thanks anh!
            Last edited by nodiesun; 15-04-2008, 20:33.

            Comment


            • #36
              Nguyên văn bởi nodiesun Xem bài viết
              Nâu rồi không đụng tới chẳng nhớ nó lằm ở đâu nữa bạn chịu khó search trên mạng đi hoặc tham khảo đoạn code sau của mình qua đường link:
              http://dientuvietnam.net/forums/show...?t=5207&page=2
              Anh Lưu ơi em đang làm đồ án về hiển thị và điều khiển nhiệt độ dùng S7-200. Anh có phần mềm và tài liệu về PC access gửi cho em với nhé! À nếu em muốn hiển thị nhiệt độ theo thời gian thì lập trình như thế nào để có được đồ thị nhiệt độ theo thời gian hả anh! Anh cố gắng giúp em với nhé! Thanks anh![/QUOTE]

              Đây là đường link mình gửi trên diễn đàn bạn vào đó xem:
              http://dientuvietnam.net/forums/show...8261#post98261
              katllu

              Comment


              • #37
                Cho mình hỏi với Microcomputing cái này dùng làm gì mà ai cũng tranh nhau xin thế?
                Mình đang viết chương trình giao tiếp PC với S7200 của siemen không biết cái đó có giúp gì được không? Xin hỏi trong diễn đàn ai đã làm về đề tài này giúp đỡ mình với
                cảm ơn nhiều
                xuanvudk2@gmail.com
                NGUYỄN XUÂN VŨ
                Mua bán, sửa chữa PLC, biến tần
                Vỉ mạch điện tử công nghiệp các loại
                0978462163

                Comment


                • #38
                  mình đang viết chương trình nhận kí tự 'A' từ VB6.0 truyền xuống plc ,rồi sau đó sẽ xuất tín hiệu qo.o. vậy ai có thể sửa bài làm này dùm ko ? xin cảm ơn .
                  trong chương trình chính
                  LD SM0.0
                  MOVB 16#09,SMB30 /khai báo cổng truyền thông ..
                  MOVD &VB300,AC1 / byte nhận vào ô nhớ VB300
                  MOVB SMB2,*AC1
                  INCD AC1
                  NETWORK 2:
                  LD SM0.1
                  ATCH INT_0, 8
                  ENI
                  TRONG CHƯƠNG TRÌNH NGẮT INT0
                  LD SM0.0
                  AB= VB300, 'A' / lệnh so sánh kí tự A
                  = Q0.0
                  LD SM0.0
                  AB= VB2, 1 /VB2 là biến đếm số lượng byte nhận
                  = Q0.0

                  Comment


                  • #39
                    Chương trình ngắt bạn viết thế là sai rồi. Minh ko hiểu ý bạn lắm.Có lẽ như này đúng hơn:
                    LD SM0.0
                    AB= VB300 , 16#41
                    = Q0.0
                    Mình nghĩ chương trình ngắt viết như thế là đủ.

                    Comment


                    • #40
                      giao tiếp plc S7-200 với VB6.0

                      mình đang muốn truyền kí tự (ví dụ kí tự A) xuống plc S7-200 rồi mở tín hiệu Q0.0 .trong VB mình có ô textbox1 (dùng ghi kí tự) , cmdsend (gửi kí tự ) . trong cmdsend ,viết : mscomm1.output=buffer(65)
                      trong form_load : dim buffer
                      buffer= text1.text.
                      nhưng tại sao khi test lại ko được nhỉ ? sau khi mình nhấn nút send thì PC ko kết nối được với plc s7-200,mình ko thể upload hay download chương trình lên đc. vậy đại ca nào biết xin giúp đở ,xin cảm ơn.

                      Comment


                      • #41
                        bạn thử tắt chương trình VB đi rồi mới download xuống nhé! Nếu không bạn phải thiết lập lại trong setPG xem!

                        Comment


                        • #42
                          Chao ban !
                          Theo như bạn nói : sau khi nhấn nút Send nhưng không kếtt nối được với S7-200 do :
                          1. Bạn phải viết chương trình nhận ở chế độ freeport cho PLC
                          2. Sau khi PLC nhận được ký tự đó, rồi so sánh nếu bằng thí xuất ra q0.0
                          3. Chương trình vb bạn viết chưa có lệnh mở cổng Com (portopen=true) , tốc độ truyen (baud=9600,8,1).
                          4. khi cần truyền ký tự bạn có thể dùng dòng lệnh :
                          mscomm1.output = text1.text

                          Comment


                          • #43
                            giao tiếp vb với plc s7-200

                            những cái đó thì mình khai báo rồi .mình sẽ viết đầy đủ code nhé :
                            trong VB6.0 : mình nhấn nút command thì sẽ gửi kí tự A
                            private form_load()
                            with mscomm1
                            .rthreshold=1
                            .commport=1
                            .settings="9600,N,8,1"
                            .handshaking=2-comrts
                            .RTSenable=true
                            .portopen=true
                            end with
                            end sub
                            privat sub command_click()
                            mscomm1.output="A" 'truyền kí tự A
                            trong plc s7-200
                            NETWORK 1:
                            LD SM0.1
                            MOVB 16#09,SMB30
                            MOVD &VB300,AC1

                            NETWORK 2:
                            LD SM0.1
                            ATCH INT_0, 8
                            ENI
                            Phần nhận ký tự ở trong chương trình con
                            LD SM0.0
                            MOVB SMB2,*AC1
                            INCD AC1
                            trong chương trình chính
                            LD SM0.0
                            AB= VB300, 'A' // lệnh so sánh kí tự A
                            = Q0.0

                            khi so sánh là kí tự A thì sẽ mở tín hiệu Q0.0 ,nhưng khi mình test như vậy thì có một số vấn đề sau :
                            trong VB6.0 thông báo lỗi ở đoạn : .portopen=true
                            còn trong plc thì lúc đầu download chương trình được ,nhưng sau đó ko download được ,thông báo lỗi truyền thông (communication time-out,check port,address..).vậy ai đã từng làm bài này xin chỉ giáo dùm .chờ đợi câu trả lời .

                            Comment


                            • #44
                              bạn thử tắt nguồn PLC đi rồi bật lại. Thế là ok ngay mà!
                              Nhưng ma chương trình PLC và VB bạn xem kĩ lại nhé. Theo mình thì khi bạn truyền ký tự A trên VB xuống PLC sẽ có mã là 41h. Nếu bạn khai báo ký tự 'A' trong PLC là 41h rồi thì ok. Mình có câu hỏi này muốn hỏi bạn. Mình muốn truyền từ PLC lên VB nhưng ko phải liên tục mà cứ cách khoảng 1s lại truyền thì phải viết chương trình như thế nào nhỉ. Giúp mình với nhé! Thanks. Chúng ta cùng trao đổi nhé!

                              Comment


                              • #45
                                Chao ban !
                                Đây là đoạn code mình đã thử trên vb :

                                Private form_load()
                                MSComm1.CommPort = 1
                                MSComm1.Settings = "9600,n,8,1"
                                MSComm1.PortOpen = True
                                End sub

                                Private Sub SEND_Click() ' truyền ký tự A xuống PLC
                                MSComm1.Output = Chr(65)
                                End Sub

                                Private Sub THOAT_Click()
                                MSComm1.portOpen = Flase
                                end
                                End Sub

                                Chương trìn nhận trên PLC :
                                PROGRAM COMMENTS
                                Chuong trinh Ket noi PLC va PC
                                PC se gui mot ky tu la " V " xuong PLC. Khi PLC nhan duoc ky tu "V" thi ngo ra Q0.0 ON.
                                PC se gui mot ky tu la " A" xuong PLC. Khi PLC nhan duoc ky tu "A thi ngo ra Q0.0 OFF


                                MAIN COMMENTS
                                Network1
                                LD SM0.1
                                CALL SBR_0

                                SUBROUTINE COMMENTS
                                network1
                                LD SM0.0
                                MOVB 16#09, SMB30
                                ATCH INT_0, 8
                                ENI

                                INTERRUPT ROUTINE COMMENTS
                                Network1
                                LDB= SMB2, 16#56
                                S Q0.0, 1

                                Network2
                                LDB= SMB2, 16#41
                                R Q0.0, 1

                                Chuc ban thanh cong.

                                Comment

                                Về tác giả

                                Collapse

                                vnn2005 Tìm hiểu thêm về vnn2005

                                Bài viết mới nhất

                                Collapse

                                Đang tải...
                                X