• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于西門子S7-1200 Modbus通信協(xié)議的應(yīng)用

      2022-11-25 10:08:52周博遙
      通信電源技術(shù) 2022年13期
      關(guān)鍵詞:輪詢功能塊通信協(xié)議

      周博遙

      (九江賽晶科技股份有限公司,江西 九江 332000)

      0 引 言

      隨著近年來信息技術(shù)的不斷發(fā)展,用戶需要采集越來越多現(xiàn)場設(shè)備的各種數(shù)據(jù)。采集方式逐漸由以前單純的數(shù)字量輸入/輸出(Input/Output,I/O)及模擬量輸出模式逐漸轉(zhuǎn)變成直接與遠(yuǎn)方采集設(shè)備進(jìn)行通信處理。

      現(xiàn)場儀表設(shè)備支持的通信協(xié)議眾多,但人們使用及支持最廣泛的是Modbus通信協(xié)議。由于Modbus協(xié)議是完全公開透明的,所需的軟硬件非常簡單,使其成為了一種通用的工業(yè)標(biāo)準(zhǔn)。許多工業(yè)設(shè)備包括可編程邏輯控制器(Programmable Logic Controller,PLC)、分布式控制系統(tǒng)(Distributed Control System,DCS)、智能儀表等,普遍采用Modbus協(xié)議作為通信標(biāo)準(zhǔn)。

      本文以西門子S7-1200 PLC與九江賽晶科技股份有限公司自研的JM810數(shù)控器進(jìn)行Modbus通信為例,對(duì)整個(gè)通信過程進(jìn)行探討。

      1 S7-1200 PLC實(shí)現(xiàn)Modbus通信方式所需的硬件配置

      S7-1200 PLC是西門子公司推出的新一代PLC,旨在替換老舊的S7-200和部分S7-300型號(hào)。S7-1200設(shè)計(jì)緊湊、組態(tài)靈活且具有功能強(qiáng)大的指令集,使其成為能夠控制各種應(yīng)用的完美方案。S7-1200的主模塊攜帶RJ45接口,支持PROFINET、Modbus-TCP、傳輸控制協(xié)議/網(wǎng)際協(xié)議(Transmission Control Protocol/Internet Protocol,TCP/IP)協(xié)議,而現(xiàn)場設(shè)備大多采用基于RS485的Modbus協(xié)議,需要外加1塊通信模塊[1]。

      S7-1200為了便于應(yīng)用RS485通信接口,需要外接擴(kuò)展模塊。有2種類型的通信模塊可供選擇,分別是CM1241 RS485通信模塊和CB1241 RS485通信信號(hào)板[2]。CM1241 RS485為通信擴(kuò)展模塊,是屬于附加在PLC主模塊左邊的擴(kuò)展模塊,緊挨著中央處理器(Central Processing Unit,CPU)主模塊裝在卡軌上,通過模塊右邊的插針與CPU左邊插針進(jìn)行連接。CB1241 RS485為信號(hào)通信板,是直接插在CPU的小板上。

      CB1241 RS485模塊屬于通信信號(hào)板,掛在主CPU模塊上,只支持RS485通信協(xié)議。CM1241 RS485可支持RS485和RS422這2種通信協(xié)議[3]。雖然使用RS485時(shí)2種通信模塊并無任何差異,但是在實(shí)際應(yīng)用過程中更傾向于選擇CM1241外接擴(kuò)展模塊進(jìn)行通信。本文探討的基于RS485通信方式的硬件環(huán)境均采用CM1241模塊進(jìn)行通信。

      2 通信方案及軟件設(shè)計(jì)

      2.1 系統(tǒng)通信網(wǎng)絡(luò)方案

      現(xiàn)場通信網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。以公司自制數(shù)控器為例,應(yīng)用基于RS485的4個(gè)Modbus協(xié)議模塊并聯(lián)運(yùn)行進(jìn)行通信。

      圖1 現(xiàn)場網(wǎng)絡(luò)結(jié)構(gòu)圖

      2.2 S7-1200控制器與JM810數(shù)控器通信的設(shè)計(jì)

      S7-1200控制器通過CM1241 RS485模塊進(jìn)行通信時(shí),需要調(diào)用Modbus_Comm_Load功能塊對(duì)該模塊進(jìn)行初始化。

      該功能塊只需要調(diào)用1次。正常進(jìn)行初始化操作后,DONE為1,ERROR位為0。其中:PORT對(duì)應(yīng)CM1241 RS485對(duì)應(yīng)的硬件標(biāo)識(shí)符(S7-1200可以攜帶多個(gè)通信擴(kuò)展模塊);RESP_TO為通信從站響應(yīng)時(shí)間,超過該時(shí)間則報(bào)通信超時(shí)。該功能塊的其他更多設(shè)置選項(xiàng)在背景數(shù)據(jù)庫Modbus_Comm_Load_DB背景數(shù)據(jù)塊中進(jìn)行設(shè)置,其中MB_DB為后面Modbus通信功能塊的背景數(shù)據(jù)塊。

      通信初始化成功后,正式進(jìn)行Modbus通信。PLC一般處于主站讀取從站數(shù)據(jù)的狀態(tài),因此通常調(diào)用Modbus_Master功能塊進(jìn)行通信。若PLC作為從站,則調(diào)用Modbus_Slave功能塊進(jìn)行通信。

      EN管腳為功能塊的啟動(dòng)開關(guān),推薦在需要使用時(shí)再進(jìn)行接通。其中,REQ為脈沖觸發(fā),推薦使用上升沿觸發(fā)。每次觸發(fā)過程會(huì)將數(shù)據(jù)送到CM1241 RS485模塊進(jìn)行數(shù)據(jù)發(fā)送,若在數(shù)據(jù)發(fā)送過程中再次觸發(fā),則不予響應(yīng)。如果不采用脈沖觸發(fā),則很大幾率會(huì)導(dǎo)致該功能塊一直處于BUSY而造成網(wǎng)絡(luò)堵塞。MB_ADDR為Modbus協(xié)議的通信地址。MODE則將讀寫模式分為0、1、2、80、81以及104。

      最常用的是功能碼03和功能碼05,分別對(duì)應(yīng)MODE的0和1。

      DATA_ADDR為Modbus寄存器地址,DATA_LEN表示從DATA_ADDR開始訪問多少個(gè)字節(jié),DATA_PTR為指向DB區(qū)的指針。如果MODE為0,則將讀取的內(nèi)容存入該DB區(qū)域。如果MODE為1,則將DB區(qū)的數(shù)據(jù)寫入DATA_ADDR的地址中。

      如果寫入或讀取完成,則DONE引腳會(huì)輸出1并保持1個(gè)掃描周期。如果錯(cuò)誤,則ERROR位為1,且STATUS顯示出錯(cuò)誤代碼,并保持1個(gè)掃描周期。

      因?yàn)镈ONE和ERROR位狀態(tài)及錯(cuò)誤代碼只保存一個(gè)周期,所以必須及時(shí)保存錯(cuò)誤代碼,以免下一個(gè)掃描周期將錯(cuò)誤代碼更新或清零而無法捕獲錯(cuò)誤代碼。

      2.3 S7-1200控制器與從站通信的調(diào)度問題

      第2.2節(jié)描述了讀1個(gè)控制器的通信過程,如果需要讀第2個(gè)控制器,則涉及通信調(diào)度問題。Modbus為半雙工通信,在發(fā)送過程中無法接收,在接收時(shí)無法發(fā)送,所以處理好通信調(diào)度是一個(gè)重要內(nèi)容。公司編程時(shí)主要考慮時(shí)間調(diào)度和以完成位進(jìn)行調(diào)度2種調(diào)度方式。

      時(shí)間調(diào)度是指以1個(gè)固定的時(shí)間周期對(duì)1次通信過程進(jìn)行調(diào)度,如超過此時(shí)間,則放棄該次通信過程,啟動(dòng)下一個(gè)站點(diǎn)的通信。該種調(diào)度方式編程簡單,但通信效率并不高。每次通信過程需要等到該固定的時(shí)間周期結(jié)束。為了保證所有的正常通信過程都能在固定時(shí)間周期內(nèi)完成,固定的時(shí)間周期設(shè)置不會(huì)太小,一定程度上造成通信控制器在等待該固定周期結(jié)束才啟動(dòng)下一個(gè)站點(diǎn)通信,造成了資源浪費(fèi)。現(xiàn)階段,該方式主要適用于站點(diǎn)對(duì)時(shí)間響應(yīng)并不敏感的場景。

      以完成位進(jìn)行調(diào)度的這種調(diào)度方式是指利用上次通信完成位來觸發(fā)下一次通信的過程。該種調(diào)度方式效率高,完成后可立刻進(jìn)行下一次通信處理。與時(shí)間調(diào)度方式相比,節(jié)省了等待時(shí)間,縮短了站點(diǎn)的響應(yīng)時(shí)間,但編程較為復(fù)雜。

      因?yàn)槭褂蒙弦粋€(gè)設(shè)備的完成位進(jìn)行下一次通信的觸發(fā),所以編程過程中需要考慮各種異常處理方式,如從站斷線、從站地址沖突等通信錯(cuò)誤,以確保下一次通信的正常進(jìn)行[4]。

      2.4 Modbus通信的討論

      2.4.1 Modbus協(xié)議應(yīng)用的優(yōu)缺點(diǎn)

      Modbus協(xié)議作為一種開放式協(xié)議,數(shù)據(jù)報(bào)文和實(shí)現(xiàn)均較為簡單,使其成為現(xiàn)場總線領(lǐng)域普及最廣的協(xié)議。但是,因?yàn)樵搮f(xié)議過于簡單,所以在應(yīng)用過程中存在很多局限性。

      作為一種半雙工通信協(xié)議,Modbus協(xié)議無法同時(shí)進(jìn)行讀寫。當(dāng)處于多站點(diǎn)通信環(huán)境時(shí),只能一個(gè)個(gè)輪詢采集,且讀寫操作無法同時(shí)進(jìn)行。當(dāng)同時(shí)需要對(duì)多個(gè)設(shè)備進(jìn)行寫入、讀取操作時(shí),合理的安排讀寫順序顯得尤為重要。此外,Modbus協(xié)議對(duì)主從站有明顯區(qū)分。需要注意,一個(gè)設(shè)備只能作為主站或從站,無法既為A設(shè)備的主站又為B設(shè)備的從站。這些缺點(diǎn)使得應(yīng)用Modbus協(xié)議進(jìn)行通信時(shí)需要開展大量的優(yōu)化處理工作。

      2.4.2 站點(diǎn)通信的讀寫優(yōu)化

      在用戶現(xiàn)場,不少設(shè)備并不只是簡單需要監(jiān)測設(shè)備數(shù)據(jù)信息,還需要進(jìn)行設(shè)備操作和控制。這類設(shè)備不僅需要進(jìn)行設(shè)備數(shù)據(jù)的讀取,還需要進(jìn)行設(shè)備數(shù)據(jù)的寫入。

      實(shí)際上,大多數(shù)設(shè)備的讀取需求是監(jiān)測現(xiàn)場數(shù)據(jù),這就要求必須盡快采集設(shè)備數(shù)據(jù)并及時(shí)顯示出來。在每個(gè)輪詢周期里,必須要讀設(shè)備數(shù)據(jù)。但是,遠(yuǎn)方控制設(shè)備的需求并不是時(shí)刻都有,每個(gè)周期如果都進(jìn)行重復(fù)的寫操作(控制設(shè)備為對(duì)從站的寫操作),會(huì)浪費(fèi)輪訓(xùn)時(shí)間,此時(shí)可以采用選擇一個(gè)數(shù)據(jù)區(qū)域緩存下發(fā)數(shù)據(jù)。當(dāng)用戶需要操作或者控制設(shè)備時(shí),用戶在操作后需要將這一次數(shù)據(jù)存入緩存。每次讀取完成后,需要檢查下發(fā)數(shù)據(jù)。如果與緩存數(shù)據(jù)一致,證明用戶并無在此周期進(jìn)行新的下發(fā)操作,則需要重新寫入;如果與緩存數(shù)據(jù)對(duì)比不一致,則將寫的操作插入到輪詢隊(duì)列中。

      2.4.3 站點(diǎn)掉線時(shí)的處理方法

      Modbus協(xié)議基于主從模式,所有從站設(shè)備均以輪詢方式工作。在單個(gè)設(shè)備通信故障或者掉線時(shí),必須等待超時(shí)時(shí)間才能夠進(jìn)行下一個(gè)設(shè)備的通信工作。以完成標(biāo)志位進(jìn)行觸發(fā)時(shí)效率較高,但是仍然無法避免這個(gè)問題。單個(gè)設(shè)備掉線時(shí),該超時(shí)時(shí)間尚可接受,但多個(gè)從站點(diǎn)同時(shí)掉線,1個(gè)周期內(nèi)的輪詢總時(shí)間就會(huì)大幅增加。針對(duì)這種情況,一般采取兩種處理方式。

      方案1:增加幾個(gè)CM1241 RS485模塊,利用多模塊并聯(lián)開展工作。該方案將Modbus一個(gè)主站對(duì)多個(gè)從站的逐個(gè)輪詢模式變成多個(gè)主站對(duì)多個(gè)從站的輪詢模式。如果多加1個(gè)CM1241 RS485模塊,則整個(gè)輪詢時(shí)間減半。該方案能夠顯著縮短正常運(yùn)行時(shí)和發(fā)生掉線故障時(shí)的輪詢時(shí)間,具有編程實(shí)現(xiàn)簡單、可靠性高、輪詢時(shí)間短等優(yōu)點(diǎn)。此外,該方案存在增加一個(gè)擴(kuò)展模塊便需要增加硬件成本和系統(tǒng)通信線路布設(shè)較為復(fù)雜等缺點(diǎn)[5]。

      方案2:程序內(nèi)部進(jìn)行判斷處理,增加正常輪詢隊(duì)列和慢輪詢隊(duì)列。如果正常輪詢時(shí)發(fā)現(xiàn)某設(shè)備連續(xù)3次通信超時(shí),則將該設(shè)備剔除正常輪詢隊(duì)列,并將其添加至慢輪詢隊(duì)列。整個(gè)輪詢順序?yàn)檎]喸冴?duì)列輪詢多次后輪詢一次慢輪詢隊(duì)列,找出其中由故障轉(zhuǎn)為正常的設(shè)備后,將其添加至正常輪詢隊(duì)列,并再次進(jìn)行正常輪詢過程。輪詢機(jī)制的流程如圖2所示。

      圖2 輪詢機(jī)制流程

      3 結(jié) 論

      簡單分析S7-1200控制器與JM810數(shù)控器的通信后可知,Modbus協(xié)議具有實(shí)現(xiàn)簡單、硬件便宜、通用性強(qiáng)、使用方便以及容易開發(fā)和實(shí)現(xiàn)等優(yōu)點(diǎn),同時(shí)存在通信實(shí)時(shí)性不高、通信響應(yīng)不可靠、無法同時(shí)讀寫以及從站之間無法相互通信等缺點(diǎn)。因此,在通信設(shè)計(jì)時(shí)考慮相關(guān)問題,以期更好地促進(jìn)工業(yè)現(xiàn)場總線及協(xié)議的完善與發(fā)展。

      猜你喜歡
      輪詢功能塊通信協(xié)議
      基于等概率的ASON業(yè)務(wù)授權(quán)設(shè)計(jì)?
      基于Z-Stack通信協(xié)議棧的紅外地溫采集電路設(shè)計(jì)
      Ovation系統(tǒng)FIRSTOUT和FIFO跳閘首出比較
      基于DMX512通信協(xié)議的多路轉(zhuǎn)發(fā)器設(shè)計(jì)與研究
      依托站點(diǎn)狀態(tài)的兩級(jí)輪詢控制系統(tǒng)時(shí)延特性分析
      基于NS-3的PLC多頻通信協(xié)議仿真平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)
      電測與儀表(2016年2期)2016-04-12 00:24:52
      利用時(shí)間輪詢方式操作DDR3實(shí)現(xiàn)多模式下數(shù)據(jù)重排
      自定義功能塊類型在電解槽聯(lián)鎖中的應(yīng)用
      中國氯堿(2015年9期)2015-11-02 01:03:41
      基于MACSV6.5.2的鍋爐燃盡風(fēng)開關(guān)量調(diào)節(jié)門控制功能塊設(shè)計(jì)
      PLCopen運(yùn)動(dòng)控制功能塊的研究與開發(fā)
      普陀区| 天峨县| 宕昌县| 清流县| 武鸣县| 合肥市| 海淀区| 汝阳县| 蒙山县| 犍为县| 大余县| 滁州市| 安丘市| 民权县| 都匀市| 北流市| 安义县| 郧西县| 丹凤县| 望都县| 黑水县| 建平县| 南康市| 祁门县| 滦南县| 六枝特区| 泰兴市| 大新县| 乌拉特前旗| 江口县| 平昌县| 台北市| 卢氏县| 彰化市| 寿光市| 通化市| 稷山县| 布尔津县| 凤山县| 龙陵县| 盐亭县|