<code id="flumd"></code>
    1. <meter id="flumd"><tt id="flumd"></tt></meter>
        1. <bdo id="flumd"><del id="flumd"></del></bdo>

          1. 技術天地
            行業應用 首頁 > 技術天地 > 行業應用
            基于MX組件的上位計算機與三菱PLC通信
            發表日期:2011-04-20

            基于MX組件的上位計算機與三菱PLC通信

            摘要:

            筆者曾以前拙文基于MS-COMMON組件與上位計算機的通信(杭州自動化10周年論文集,中國工控網等轉載),隨著FA產品的開放性等市場的要求,上位計算機與PLC的通信還是一個十分廣泛的話題。三菱電機推出了MX-Componet組件,使我們開發上位計算機組態等更加方便快揭。

            關鍵詞:通訊,控件,三菱電機

                 根據微軟權威的軟件開發指南MSDN(Microsoft Developer Network)的定義,ActiveX是Micrsoft適應組件對象模型(Component Object Model,COM)開發技術提出的。核心COM允許應用程序之間互相通信和使用彼此的功能,組件對象模型起源于面向對象的編程(Object-oriented programming,OOP)的概念,并把這個模型延伸到操作系統,從而方便任何COM程序對象與其他需要的接口的COM對象通訊。

            目前,在工業控制FA領域,實現人機交互和數據備份的一般選擇工業計算機及組態軟件。筆者在南京某居住區中水處理項目管理計算機中,選用了Visal Basic6.0作為開發工具,結合三菱電機發布的MX-Component 控件,方便的實現了計算機與三菱PLC的通訊。由于采用三菱MX-Component 控件方面的文獻資料比較少,筆者茁文,希望大家指正。

            SW3D5C-ACT-E軟件目前版本3.0,支持OS有98,2000,XP等。平臺支持VB,VC,VB.NET,VC.NET ,LABVIEW,BC等開發工具。經過安裝SW3D5C-ACT-E,系統OCX控件列表內就有相應的驅動OCX:

            一  系統組成構架:


                            中水處理系統組成

            系統描述:由上位計算機,1號從站,2號從站。計算機和PLC之間通過RS-232通訊,直接在PLC編程口讀取數據。

            1號站配置:

            電源模塊:   Q61P-A2

            主基板:     Q38B

            CPU模塊:   Q01CPU

            CCLINK主站:QJ61BT11

            本地輸入模塊:QX40

            本地輸出模塊:QY40

            模擬量模塊:  Q68ADI  采集PH,濁度等信號

            模擬量輸出:  Q64DA   控制壓濾機,風機,提升泵

            2號站配置:

            電源模塊:   Q61P-A2

            主基板:     Q35B

            CPU模塊:   Q01CPU

            CCLINK主站:QJ61BT11

            本地輸入模塊:QX40

            本地輸出模塊:QY40

            模擬量模塊:  Q68ADI

            3-12號站

            遠程輸入輸出:AJ65SBTB1-16D,AJ65SBTB1-16T

            分別采集遠程水泵運行狀態和監視設備。

            系統運行登陸畫面


            編寫登陸程序。

            標準語法:Open (Communication line opening)

            (1)   Applicable ACT controls

            This function is available for all ACT controls.

            (2)   Feature

            Opens the communication line.

            (3)   Format

            R R

            Visual Basic , Visual C++ ,VBA : lRet = object.Open()

            LonglRetReturned valueOutput

            VBScript : varRet = object.Open()

            VARIANTvarRetReturned value (LONG type)Output

            (4)   Explanation

            The line is connected on the basis of the value set to the property for Open

            method.

            (5)   Returned value

            Normal termination: 0 is returned.

            Abnormal termination: A value other than 0 is returned.

            (Refer to Chapter 6 ERROR CODES.)

            編寫程序:

                Dim fLogin As New frmLogin

                fLogin.Show vbModal

                If Not fLogin.OK Then

                    '登錄失敗,退出應用程序

                    End

                End If

                Unload fLogin

                frmSplash.Show

            '//////////////////////////

                Open App.Path & "\wecom.txt" For Append As #1

                 Print #1, Format(Date) + " " + Format(Time) + "系統開啟"

            '//////////////////////////

               frmSplash.Refresh

               Load frmMain

               IRet = frmMain.Q1.Open

            '/////////////////////////

               Print #1, Format(Date) + " " + Format(Time) + "準備與PLC通信"

              

            '/////////////////////////////

              If IRet <> 0 Then

              Print #1, Format(Date) + " " + Format(Time) + "無法鏈接到PLC"

              Close #1

            '////////////////////////////

                    MsgBox "無法鏈接到PLC,請檢查硬件設置!"

            ex:    End

                 End If

            '///////////////////////////

            '  Print #1, Format(Date) + " " + Format(Time) + "與PLC通信成功"

              Close #1

             ' Set db = OpenDatabase(App.Path & "\base.mdb")

             ' Set res = db.OpenRecordset("xml")

             '  res.AddNew

             '  res.Fields(0) = "系統開啟時間" + Format(Date) + "  " + Format(Time)

             '  res.Update

                Set fMainForm = New frmMain

                Load fMainForm

                Unload frmSplash

                fMainForm.Show


            運行界面

            數據采集,讀取位元件,由于采樣上來的16個位元件組成一個字讀取的,必須在VB程序編寫相應的程序,便于在界面反映每個閥門,泵的運行狀態。

            標準語法;讀數據塊

            ReadDeviceBlock (Device batch-read)

            (1)   Applicable ACT controls

            This function is available for all ACT controls.

            (2)   Feature

            Batch-reads data from devices.

            (3)   Format

            Visual Basic , VBA : 

            lRet = object.ReadDeviceBlock(szDevice, lSize, lData(0))

            LonglRetReturned valueOutput

            StringszDeviceDevice nameInput

            LonglSizeNumber of read pointsInput

            實際采集輸入狀態子程序模塊

            Dim jy As Integer

             Dim jx As Integer

             Dim jz As Integer

            '將讀出的數據分配給數組,注意,這里從Y(1)開始

            '----OUTPUT Y

            '------READ X SATU

            IRet = Q1.ReadDeviceBlock("X0", 5, Wordx(1))

            '------READ Y SATU

            'IRet = Q1.ReadDeviceBlock("Y30", 8, Wordy(1))

              On Error Resume Next

            '   ky = 0

            '  For YI = 1 To 7

            '      Call DecBinX(Wordy(YI), OTY(YI))

            '      For jy = 1 To Len(OTY(YI))

            '        Y(ky + jy - 1) = CBool(Mid$(OTY(YI), 17 - jy, 1))

            '        Next jy

            '        ky = ky + 16

            '      Next YI

                     '-----INPUT X

             ' For i = 1 To 5

              '   Wordx(i) = Int(Rnd * 32766)

              '   Next

               kx = 0

              For xi = 1 To 5

                Call DecBinX(Wordx(xi), OTX(xi))

                  For jx = 1 To 16

                     x(kx + jx - 1) = CBool(Mid$(OTX(xi), 17 - jx, 1))

                    Next jx

                     kx = kx + 16

                   Next xi

                 For i = 0 To 7

                 Bar1(i).Value = Rnd * i + 60

                 Next

             LED1.LEDSTRING = Format(Date) + " " + Format(Time)

            '---------------------------顯示處理----------

            '--------------------------------------------

            向PLC寫數據塊

            標準語法:WriteDeviceBlock (Device batch-write)

            (1)   Applicable ACT controls

            This function is available for all ACT controls.

            (2)   Feature

            Batch-writes data to devices.

            (3)   Format

            Visual Basic , VBA : lRet = object.WriteDeviceBlock(szDevice, lSize, lData(0))

            LonglRetReturned valueOutput

            StringszDeviceDevice nameInput

            LonglSizeNumber of write pointsInput

            LonglData(n)Device values to be writtenInput

            Visual C++  : lRet = object.WriteDeviceBlock(szDevice, lSize,  lplData)

            LonglRetReturned valueOutput

            CStringszDeviceDevice nameInput

            LonglSizeNumber of write pointsInput

            lplDataDevice values to be writtenInput

            Long

            VBScript : varRet = object.WriteDeviceBlock(varDevice, varSize, varData)

            VARIANTvarRetReturned value(LONG type)Output

            VARIANTvarDeviceDevice name(character string type)Input

            VARIANTvarSizeNumber of write points(LONG type)Input

            Device values to be written

            VARIANTvarData Input

            (LONG array type)

            (4)   Explanation

            * The device values for lSize(varSize) are batch-written to the devices, beginning

            with the device specified in szDevice(varDevice).

            * Store the device values to be written in lData (lplData or varData).

            * Reserve an array of lSize (varSize) or more for lData (lplData or varData).

            樣例程序:

            For i = 0 To 5

            If Val(Text1(i + 4)) = 0 Then

               MsgBox "參數錯誤!請重新輸入"

               Else

              IData(220 + i) = Val(Text1(i + 4))

            End If

            Next i

            IRet = frmMain.Q1.WriteDeviceBlock("D220", 6, IData(220))

               Text1(10) = Val(Text1(4)) / Val(Text1(5))

               Text1(11) = Val(Text1(6)) / Val(Text1(7))

               Text1(12) = Val(Text1(8)) / Val(Text1(9))

            生成數據報表。


            由于生成報表個性化等特點,更適合中小型監控設備。

            結束語:目前系統已經運行穩定2年多。采用了三菱提供的控件編寫上位機器程序,省去了煩瑣冗長的通訊部分,開發人員只編寫流程處理和工業工程程序模塊。

            我們可以說,用VB+MX-Component控件構件中小型監控系統是一種經濟實用的方案。

            參考文獻:1.《MX Component Programming Manual》

                                   ------------------------三菱電機

                      2.《Visal Basic6 數據庫開發》-----E.winemiller,J.Roff

                                   -----------------------清華大學出版

                   
              杭州和華電氣工程有限公司 版權所有 地址:杭州市西湖區荊山嶺路2號匯峰國際D座206 郵箱入口 | 隱私聲明 | 聯系我們  
              技術熱線:0571-88935188、88935199 E-mail:webmaster@hzhehua.com  
            浙ICP備11009523號-1
             
            99久久免费国产精品|久久精品一区二区无码|亚洲Av高清久久久无遮挡|国产二区亚洲欧美今日更新 国产精品一区二区在线观看蜜|亚洲Aⅴ无码一区二区三区性色|亚洲日韩精品欧美一区二区|欧美日韩国产中文字幕药 人妻无码系列一区二区三区|欧美性大战久久久久久|国产成年女人视频免费观看|欧洲综合视频网站一区二区 国产在线无码精品麻豆不卡|欧美日韩国产电影在线观看|国产亚洲AV无码AV男人的天堂|国产成人精品男人的天堂

              <code id="flumd"></code>
              1. <meter id="flumd"><tt id="flumd"></tt></meter>
                  1. <bdo id="flumd"><del id="flumd"></del></bdo>