亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        西門(mén)子CM PtP模塊Modbus RTU主站通信程序設(shè)計(jì)

        2022-07-26 13:55:52薛春陽(yáng)尤麗靜陳炳秋冀衛(wèi)杰
        自動(dòng)化與儀表 2022年7期
        關(guān)鍵詞:西門(mén)子調(diào)用串口

        薛春陽(yáng),尤麗靜,陳炳秋,冀衛(wèi)杰

        (北京和利時(shí)系統(tǒng)集成有限公司,北京 100176)

        Modbus RTU 作為一種開(kāi)放高效的通信協(xié)議在眾多工業(yè)領(lǐng)域中的智能控制器以及智能儀表上已經(jīng)得到了廣泛的應(yīng)用,它成功解決了現(xiàn)場(chǎng)智能控制器以及工業(yè)儀表與PLC 之間數(shù)據(jù)交換的問(wèn)題,這樣不僅節(jié)省了傳統(tǒng)的大量通信電纜,而且其數(shù)據(jù)傳輸可靠性也得到了大幅度提升[1]。隨著科技的不斷發(fā)展和進(jìn)步,工業(yè)以太網(wǎng)以其低成本、高效率及一網(wǎng)到底的便捷性,正在逐步取代傳統(tǒng)工業(yè)總線(xiàn),在工業(yè)自動(dòng)化控制領(lǐng)域得到了迅速推廣和普及[2]。西門(mén)子ET200SP CM PtP 正是以太網(wǎng)結(jié)構(gòu)下的串口通信模塊,相比傳統(tǒng)總線(xiàn)結(jié)構(gòu)下的串口通信模塊,CM PtP的實(shí)現(xiàn)方法和資料還比較少,編程方法仍停留在基礎(chǔ)功能塊上,不滿(mǎn)足PLC 結(jié)構(gòu)化編程理念。

        本文結(jié)合城市軌道交通地鐵BAS(環(huán)境與設(shè)備監(jiān)控系統(tǒng))機(jī)電設(shè)備和西門(mén)子STEP7 編程環(huán)境特點(diǎn),對(duì)西門(mén)子ET200SP 串口通信模塊CM PtP 的Modbus RTU 主站通信程序的設(shè)計(jì)開(kāi)發(fā)進(jìn)行重點(diǎn)研究,其開(kāi)發(fā)后的程序組織結(jié)構(gòu)規(guī)范、清晰、簡(jiǎn)明,通用性和可讀性強(qiáng),更容易被閱讀者理解,有利于對(duì)常用功能進(jìn)行標(biāo)準(zhǔn)化,將難化簡(jiǎn),更適合多人分工合作共同編寫(xiě)的復(fù)雜項(xiàng)目,且易于查錯(cuò)、修改和調(diào)試[3]。

        1 研究背景

        城市軌道交通BAS 是對(duì)地鐵建筑物內(nèi)的環(huán)境與空氣條件、通風(fēng)、給排水、照明、乘客導(dǎo)向、自動(dòng)扶梯及電梯、屏蔽門(mén)、防淹門(mén)等建筑設(shè)備和系統(tǒng)進(jìn)行集中監(jiān)視、控制和管理的系統(tǒng),以確保設(shè)備處于安全、可靠、高效、節(jié)能的最佳運(yùn)行狀態(tài)[4]。其中BAS 系統(tǒng)中有很多使用Modbus RTU 通信協(xié)議的設(shè)備,如隧道風(fēng)機(jī)、空調(diào)機(jī)組、冷水機(jī)組、遠(yuǎn)程水表、電保溫等。

        在項(xiàng)目實(shí)際應(yīng)用中,Modbus 通信部分相關(guān)的硬件配置如圖1所示。

        針對(duì)上述配置,Modbus 通信程序需設(shè)計(jì)為面向CM PtP 的通用程序塊,項(xiàng)目中每增加一個(gè)CM PtP的硬件,則在程序中增加一次對(duì)通用程序塊的調(diào)用,調(diào)用時(shí)只需修改塊的輸入?yún)?shù),而不必修改其內(nèi)部程序。

        2 設(shè)計(jì)思路

        西門(mén)子編程環(huán)境STEP7 提供了串口通信的基礎(chǔ)程序Modbus_Comm_Load 和Modbus_Master。其中Modbus_Comm 用于設(shè)置PtP 參數(shù),例如數(shù)據(jù)傳輸速率、奇偶校驗(yàn)和數(shù)據(jù)流控制,Modbus_Master 用作Modbus 主站指令,與一個(gè)或更多的Modbus 從站設(shè)備進(jìn)行通信。

        在西門(mén)子技術(shù)手冊(cè)《ET 200MP/ET 200SP 用于S7-300/400 分布式I/O 的PtP 通信指令》中有如下要求:①M(fèi)odbus_Comm_Load 來(lái)完成將用于Modbus通信的每個(gè)通信端口的組態(tài)。必須為使用的每個(gè)端口分配唯一的Modbus_Comm_Load 背景數(shù)據(jù)塊。②對(duì)于該端口,可以使用一個(gè)或多個(gè)Modbus_Master的實(shí)例。但是,所有版本的Modbus_Master 都必須為該端口使用相同的背景數(shù)據(jù)塊。鑒于西門(mén)子手冊(cè)的要求,每個(gè)PtP 不允許使用多個(gè)Modbus_Comm_Load以及不能在同一時(shí)間調(diào)用多個(gè)Modbus_Master,故在程序中設(shè)計(jì)一個(gè)功能塊FB(Sub_ModbusRTU),該FB 以Modbus_Comm_Load 和Modbus_Master 為基礎(chǔ),能夠完成一次完整的發(fā)送查詢(xún)信息和接收響應(yīng)信息的過(guò)程,并且通過(guò)修改該FB 的輸入?yún)?shù)和觸發(fā)條件能夠完成下一次的通信。

        在實(shí)際應(yīng)用中,一個(gè)PtP 可以和多個(gè)對(duì)象通信,每個(gè)通信對(duì)象根據(jù)數(shù)據(jù)量的大小和數(shù)據(jù)寄存器地址的分布情況,可能需要多次通信才能讀回和寫(xiě)出全部數(shù)據(jù),所以Sub_ModbusRTU 的功能是完成針對(duì)某個(gè)PtP 的全部通信過(guò)程,該過(guò)程需要調(diào)用一次或多次Modbus_Master 來(lái)實(shí)現(xiàn)??紤]到程序的通用性,Sub_ModbusRTU 應(yīng)該是一個(gè)模塊化的程序,模塊內(nèi)部的程序是固定不變的,當(dāng)用于不同的PtP 時(shí)只需要修改輸入?yún)?shù)即可。

        在試驗(yàn)對(duì)比梯形圖(LAD)、語(yǔ)句表(STL)、結(jié)構(gòu)化文本(SCL)三種編程語(yǔ)言之后,本文最終選擇了 結(jié)構(gòu)化文本(SCL)。結(jié)構(gòu)化文本(SCL)是用于SIMATIC S7 系列CPU 編程的類(lèi)PASCAL 高級(jí)語(yǔ)言,特別適合復(fù)雜算法、數(shù)學(xué)函數(shù)、過(guò)程優(yōu)化、數(shù)據(jù)和配方管理等編程任務(wù)。

        3 詳細(xì)設(shè)計(jì)

        3.1 設(shè)計(jì)目標(biāo)

        Sub_ModbusRTU 作為供編程者直接應(yīng)用的通用程序,設(shè)計(jì)目標(biāo)如下:①該程序要設(shè)計(jì)和封裝為一個(gè)面向?qū)ο蟮淖映绦?,及每個(gè)PtP 模塊調(diào)用一次,并為其分配一個(gè)背景數(shù)據(jù)塊,當(dāng)PtP 模塊改變時(shí),僅需修改通信參數(shù)即可實(shí)現(xiàn)功能。②該程序支持Modbus 協(xié)議中的8 個(gè)常用的功能碼01,02,03,04,05,06,15,16。③由于PtP 在BAS 系統(tǒng)中作為Modbus RTU 主站使用,所以Sub_ModbusRTU 還要能夠與多個(gè)Modbus RTU 從站通信,本次設(shè)計(jì)為最多帶8 個(gè)從站。④Modbus 協(xié)議具有問(wèn)答式的通信特點(diǎn),其通信過(guò)程是由多個(gè)問(wèn)答過(guò)程組成的,在對(duì)這些過(guò)程的調(diào)度上,Sub_ModbusRTU 還要設(shè)計(jì)靈活的觸發(fā)方式,即:事件觸發(fā),當(dāng)前過(guò)程完成后,自動(dòng)觸發(fā)下一個(gè)通信過(guò)程;輪詢(xún)方式,通過(guò)設(shè)置輪詢(xún)時(shí)間參數(shù),控制通信過(guò)程之間的時(shí)間間隔。

        3.2 接口參數(shù)

        Sub_ModbusRTU 程序的接口參數(shù)設(shè)計(jì)如下:

        輸入?yún)?shù):

        (1)LADDR:INT 型,在STEP7 中組態(tài)硬件時(shí)產(chǎn)生的CM PtP 模塊的地址。

        (2)InPar:ARRAY[0..7,0..5,0..6] OF INT,在程序中以InPar[k,x,y]的形式出現(xiàn),三位數(shù)組類(lèi)型,其中“k”用來(lái)區(qū)分接在同一PtP 上的不同從站設(shè)備,一個(gè)PtP 模塊設(shè)計(jì)最多帶8 個(gè)不同的從站,“x”用來(lái)區(qū)分同一從站下的不同通信過(guò)程,每個(gè)從站設(shè)計(jì)最多6 個(gè)不同的通信過(guò)程,“y”包含7 個(gè)參數(shù),設(shè)置方法如下:

        InPar[k,x,0]——ModbusRTU 從站ID 號(hào);

        InPar[k,x,1]——通訊模式選擇,該參數(shù)與西門(mén)子提供的Modbus_Master 的輸入?yún)?shù)MODE 一致;

        InPar[k,x,2]——Modbus 數(shù)據(jù)的存儲(chǔ)區(qū)域,標(biāo)準(zhǔn)Modbus 地址萬(wàn)位上數(shù)字,例如40001,則取4設(shè)置;

        InPar[k,x,3]——Modbus 數(shù)據(jù)起始地址;

        InPar[k,x,4]——Modbus 數(shù)據(jù)長(zhǎng)度;

        InPar[k,x,5]——目標(biāo)數(shù)據(jù)所在的DB 塊編號(hào);

        InPar[k,x,6]——目標(biāo)數(shù)據(jù)所在的DB 塊內(nèi)的起始地址。

        (3)TimePoll:INT 型;每次通訊過(guò)程的輪詢(xún)時(shí)間(以100 ms 為最小單位)。TimePoll=10 時(shí),表示每隔1000 ms 進(jìn)行一次通訊;TimePoll=0 時(shí),表示上一次通訊過(guò)程結(jié)束后觸發(fā)本次通訊。

        (4)PARITY:校驗(yàn)方式,0 無(wú)校驗(yàn),1 奇校驗(yàn),2偶校驗(yàn)。

        (5)DataChange:BOOL 型;此變量為T(mén)rue 時(shí),執(zhí)行寫(xiě)命令,否則只執(zhí)行讀命令。

        輸出參數(shù):①CommOK,BOOL 型;Modbus 從站通信狀態(tài),正常時(shí)為T(mén)rue,不正常時(shí)為False;②STATUS:WORD 型,錯(cuò)誤代碼,該參數(shù)與西門(mén)子提供的Modbus_Master 的輸出參數(shù)STATUS 一致,在調(diào)試過(guò)程中遇到問(wèn)題時(shí)可從西門(mén)子手冊(cè)中查找相關(guān)信息,判斷故障原因。

        3.3 編程要點(diǎn)

        Sub_ModbusRTU 程序的流程如圖2所示。

        圖2 串口通信程序設(shè)計(jì)流程Fig.2 Serial communication program design flow chart

        本程序核心思路是利用雙重循環(huán)依次完成每個(gè)從站設(shè)備的每個(gè)通信過(guò)程,外層循環(huán)以從站順序號(hào)為依據(jù),內(nèi)層循環(huán)以從站內(nèi)的通信過(guò)程順序號(hào)為依據(jù)。程序從第一個(gè)從站的第一個(gè)通信過(guò)程開(kāi)始執(zhí)行,當(dāng)執(zhí)行完第一個(gè)從站的最后一個(gè)通信過(guò)程后,接著執(zhí)行第二個(gè)從站的第一個(gè)通信過(guò)程,依次類(lèi)推,當(dāng)執(zhí)行完最后一個(gè)從站的最后一個(gè)通信過(guò)程后,重新開(kāi)始第一個(gè)從站的第一個(gè)通信過(guò)程,只要程序被使能,便如此循環(huán)下去。

        具體的實(shí)現(xiàn)方法如下:

        本程序的亮點(diǎn):①將RTU 從站的通信參數(shù)存儲(chǔ)在三維數(shù)組中,在數(shù)組的基礎(chǔ)上充分結(jié)合循環(huán)的程序結(jié)構(gòu)特點(diǎn),實(shí)現(xiàn)對(duì)通信過(guò)程的組織調(diào)度。程序結(jié)構(gòu)清晰明了,同時(shí)也縮減了代碼的體積,使代碼更加優(yōu)化。②本程序在處理Modbus_Master 不同從站通信過(guò)程的時(shí)候使用了西門(mén)子ANY 指針的方法給Modbus_Master 的DATA_PTR 管腳賦值[5]。該方法可以將Modbus 數(shù)據(jù)傳送到不同設(shè)備的背景DB 塊的指定位置中,省去了數(shù)據(jù)處理的問(wèn)題。③利用Modbus_Master 的輸出參數(shù)Done 和Error 以及Modbus_Comm_Load 的輸出參數(shù)Error 來(lái)判斷Modbus每從站的通信狀態(tài),并將錯(cuò)誤代碼反饋輸出。④程序設(shè)置看門(mén)狗,用于程序第一次運(yùn)行和模塊斷電后重新運(yùn)行以及程序發(fā)生故障卡死時(shí)保障程序可靠性和穩(wěn)定性。⑤利用結(jié)構(gòu)化文本SCL 編程,可讀性以及可移植性更強(qiáng),處理復(fù)雜數(shù)據(jù)更容易。

        4 實(shí)例調(diào)用

        Sub_ModbusRTU 將Modbus_Master 指令以及Modbus_Comm_Load 指令高效地整合在一起,使其直接作為通用子程序被調(diào)用,實(shí)現(xiàn)每個(gè)PtP 模塊只調(diào)用一次就可以實(shí)現(xiàn)全部功能。很適合地鐵BAS 這種通信設(shè)備數(shù)量多和種類(lèi)多的大型機(jī)電項(xiàng)目PLC編程工作,Sub_ModbusRTU 的調(diào)用如圖3所示。

        圖3 通信程序塊Sub_ModbusRTUFig.3 Communication block Sub ModbusRTU

        每個(gè)CM PtP 模塊的Sub_ModbusRTU 輸入?yún)?shù),即InPar 的賦值直接采用在SCL 中編寫(xiě)初始化功能函數(shù)FC1000(Initialize)的方式來(lái)實(shí)現(xiàn),輸入?yún)?shù)以每個(gè)CM PtP 模塊下每個(gè)Modbus 子站的每條讀寫(xiě)命令為單位編寫(xiě)設(shè)置,每個(gè)Modbus RTU 子站最多配置6 條讀寫(xiě)命令,每條命令有7 個(gè)參數(shù)信息,分別對(duì)應(yīng)到Sub_ModbusRTU 的輸入?yún)?shù)InPar 中,編制方法簡(jiǎn)單清晰,利于修改和調(diào)試維護(hù),如圖4所示。

        每個(gè)CM PtP 模塊調(diào)用Sub_ModbusRTU 后集中放到FC1040(Com_Modbus_RTU)中,在地鐵車(chē)站中,一個(gè)典型的S7-400H 系統(tǒng)中會(huì)存在多個(gè)CM PtP模塊,因此在實(shí)例調(diào)用時(shí),會(huì)把通信塊集中到一個(gè)功能塊,將程序分為功能塊調(diào)用和參數(shù)初始化設(shè)置兩部分,如圖5所示。

        5 結(jié)語(yǔ)

        本文的設(shè)計(jì)成果已成功應(yīng)用在深圳地鐵2 號(hào)線(xiàn)三期、深圳地鐵8 號(hào)線(xiàn)一期、成都地鐵5 號(hào)線(xiàn)、北京地鐵新機(jī)場(chǎng)線(xiàn)中,經(jīng)現(xiàn)場(chǎng)調(diào)試驗(yàn)證,程序運(yùn)行穩(wěn)定可靠,通信效果良好。程序Sub_ModbusRTU 是面向通信模塊硬件的通用程序,編程時(shí)可根據(jù)項(xiàng)目的實(shí)際需要靈活調(diào)用,其它行業(yè)的工控系統(tǒng)也可借鑒使用,具有較大的實(shí)際應(yīng)用價(jià)值。

        猜你喜歡
        西門(mén)子調(diào)用串口
        淺談AB PLC串口跟RFID傳感器的通訊應(yīng)用
        核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
        LabWindows/CVI下基于A(yíng)ctiveX技術(shù)的Excel調(diào)用
        西門(mén)子重型燃機(jī)出海
        能源(2017年7期)2018-01-19 05:05:05
        基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
        USB接口的多串口數(shù)據(jù)并行接收方法探索
        基于藍(lán)牙串口適配器的GPS接收機(jī)與AutoCAD的實(shí)時(shí)無(wú)線(xiàn)通信
        西門(mén)子亮相CIIF201
        基于并行控制的FPGA多串口拓展實(shí)現(xiàn)
        西門(mén)子 分布式I/O Simatic ET 200AL
        亚洲综合一区无码精品| av素人中文字幕在线观看| 中国美女a级毛片| 天天看片视频免费观看| 揄拍成人国产精品视频肥熟女| 日韩精品一区二区三区视频| 91精品亚洲成人一区二区三区| 国产特级毛片aaaaaa| 欧美在线成人午夜网站| 一道本中文字幕在线播放| 亚洲国产成人av二区| 美女视频黄的全免费视频网站| 亚洲精品美女久久久久久久| 亚洲一区二区三区视频免费| 欧美成人家庭影院| 先锋影音av最新资源| 日韩久久久久中文字幕人妻| 五月婷婷丁香视频在线观看| 亚洲精品无码专区在线在线播放 | 免费国产黄网站在线观看可以下载| 波多野结衣一区| 国产一品二品三品精品久久| 丰满女人猛烈进入视频免费网站| 99香蕉国产精品偷在线观看| 精品无吗国产一区二区三区av| 亚洲美女一区二区三区三州| 成人内射国产免费观看| 韩国19禁主播深夜福利视频| 黑丝美女被内射在线观看| 国产av精品一区二区三区久久| 国产精品9999久久久久| 久久婷婷色香五月综合激情| 久久综合亚洲鲁鲁五月天| 亚洲国产精品无码专区在线观看| 亚洲欧美日韩高清专区一区| 极品少妇被后入内射视| 一边摸一边做爽的视频17国产| 人人爽人人爽人人爽| 香蕉亚洲欧洲在线一区| 亚洲av成熟国产一区二区| 黄网站欧美内射|