国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Modbus-TCP協(xié)議的S7-1200 PLC與RFID射頻讀寫器通信程序設(shè)計(jì)

2023-01-13 00:32:14陳元凱蓋超會谷玉玲
關(guān)鍵詞:輪詢功能測試IC卡

陳元凱 蓋超會 谷玉玲

(武漢軟件工程職業(yè)學(xué)院 電子工程學(xué)院 湖北 武漢:430205)

Modbus-TCP通信協(xié)議是一種已廣泛應(yīng)用于當(dāng)今工業(yè)控制領(lǐng)域的通用通信協(xié)議。通過此協(xié)議,控制器經(jīng)由網(wǎng)絡(luò)(如以太網(wǎng))可以和其它設(shè)備之間進(jìn)行數(shù)據(jù)通信。Siemens S7-1200 PLC作為一種高可靠性的控制器,通過與RFID射頻讀寫器進(jìn)行數(shù)據(jù)通信實(shí)現(xiàn)IC卡數(shù)據(jù)的讀寫,不但可以實(shí)現(xiàn)對生產(chǎn)過程的精準(zhǔn)控制,更能實(shí)現(xiàn)對用戶數(shù)據(jù)的實(shí)時(shí)管理。本文從Modbus-TCP通信協(xié)議以及RFID讀寫器的功能入手,詳細(xì)介紹了PLC與RFID讀寫器之間的讀取與寫入數(shù)據(jù)的程序編寫與調(diào)試方法。

1 Modbus_TCP通信協(xié)議概述

Modbus/TCP是簡單的、中立廠商的用于管理和控制自動化設(shè)備的Modbus系列通信協(xié)議的派生產(chǎn)品,它覆蓋了使用TCP/IP協(xié)議的“Intranet”和“Internet”環(huán)境中Modbus報(bào)文的用途。協(xié)議的最通用用途是為諸如PLC、I/O模塊以及連接其它簡單域總線或I/O模塊的網(wǎng)關(guān)服務(wù)的。

Modbus/TCP 使Modbus_RTU協(xié)議運(yùn)行于以太網(wǎng),Modbus TCP使用TCP/IP和以太網(wǎng)在站點(diǎn)間傳送Modbus報(bào)文,Modbus/TCP結(jié)合了以太網(wǎng)物理網(wǎng)絡(luò)和網(wǎng)絡(luò)標(biāo)準(zhǔn)TCP/IP以及以Modbus作為應(yīng)用協(xié)議標(biāo)準(zhǔn)的數(shù)據(jù)表示方法[1]。Modbus/TCP通信報(bào)文被封裝于以太網(wǎng)TCP/IP數(shù)據(jù)包中。與傳統(tǒng)的串口方式,Modbus/TCP插入一個(gè)標(biāo)準(zhǔn)的Modbus報(bào)文到TCP報(bào)文中,不再帶有數(shù)據(jù)校驗(yàn)和地址。

Modbus數(shù)據(jù)在TCP/IP以太網(wǎng)上傳輸,支持Ethernet II和802.3兩種幀格式,Modbus TCP數(shù)據(jù)幀包含報(bào)文頭、功能代碼和數(shù)據(jù)3部分[2]。MBAP報(bào)文頭(MBAP、Modbus Application Protocol、Modbus應(yīng)用協(xié)議)分4個(gè)域,共7個(gè)字節(jié),如圖1所示。

2 C-11HMRW型RFID射頻讀寫器功能及寄存器說明

RFID讀寫器(Radio Frequency Identification的縮寫)即無線射頻識別,是一種非接觸式的自動識別技術(shù),其基本原理是利用射頻信號和空間耦合(電感或電磁耦合)或雷達(dá)反射的傳輸特性,實(shí)現(xiàn)對被識別物體的自動識別。通過天線與RFID電子標(biāo)簽進(jìn)行無線通信,可以實(shí)現(xiàn)對標(biāo)簽識別碼和內(nèi)存數(shù)據(jù)的讀出或?qū)懭氩僮鱗3]。典型的RFID讀寫器包含有RFID射頻模塊(發(fā)送器和接收器)、控制單元以及天線,IC-11HMRW型RFID射頻讀寫器如圖2所示。

圖1 Modbus_TCP的數(shù)據(jù)幀

圖2 IC-11HMRW型RFID射頻讀寫器

RFID射頻讀寫器讀寫器在Modbus-TCP通信中作為服務(wù)端監(jiān)聽設(shè)備端口,當(dāng)有客戶端連接請求時(shí)響應(yīng)并創(chuàng)建連接。讀寫器設(shè)備的默認(rèn)端口號為39169,默認(rèn)站號為2,IC-11HMRW型RFID射頻讀寫器的部分寄存器地址功能說明如表1所示。

表1 RFID射頻讀寫器的部分寄存器地址

3 S7-1200 PLC與RFID射頻讀寫器通信要求

3.1 網(wǎng)絡(luò)結(jié)構(gòu)要求

網(wǎng)絡(luò)結(jié)構(gòu)要求利用工業(yè)以太網(wǎng)線纜,按照圖3所示的網(wǎng)絡(luò)結(jié)構(gòu)邏輯拓?fù)鋱D將交換機(jī)、上位機(jī)、RFID讀寫器與S7-1200連接起來并設(shè)置好相應(yīng)的IP地址。

圖3 網(wǎng)絡(luò)結(jié)構(gòu)圖

3.2 讀IC卡要求

在RFID讀寫器上讀IC卡,當(dāng)RFID讀寫器檢測到有卡時(shí)點(diǎn)亮PLC的Q0.1,無卡時(shí)熄滅。同時(shí)利用S7-1200 PLC的讀取操作將IC卡中0010~0013(40011~40014)4個(gè)寄存器中存儲的數(shù)據(jù)讀取到S7-1200 PLC的DB塊數(shù)組中進(jìn)行保存。

3.3 寫IC卡要求

在RFID讀寫器上寫IC卡,需將4組16進(jìn)制數(shù)1234、5678、9ABC、DEF0分別寫入到IC卡中0010~0013(40011~40014)4個(gè)寄存器中。寫入完成后再立即用RFID讀卡操作讀取IC卡中的數(shù)據(jù)。

4 S7-1200 PLC與RFID射頻讀寫器PLC程序設(shè)計(jì)

4.1 程序設(shè)計(jì)流程

依據(jù)系統(tǒng)要求,PLC與RFID射頻讀寫器的通信程序主要分為IC卡讀操作與IC卡寫操作兩大部分,同時(shí)IC卡讀操作到卡寫操作的過程需要通過手動切換,而IC卡寫操作到IC卡讀操作則需自動切換,故根據(jù)RFID射頻讀寫器功能及寄存器說明設(shè)計(jì)PLC通信程序,PLC程序設(shè)計(jì)流程如圖4所示。

圖4 PLC程序設(shè)計(jì)流程

4.2 全局DB塊創(chuàng)建

(1)在TIA博途軟件中創(chuàng)建名為“RFID數(shù)據(jù)讀取及寫入”工程,添加硬件后分別創(chuàng)建名為“IC卡讀取”和“IC卡寫入”的FC功能塊。

(2)向工程中創(chuàng)建一個(gè)名為“connect”的全局DB數(shù)據(jù)塊,用于存儲連接數(shù)據(jù)和通信數(shù)據(jù),并在該數(shù)據(jù)塊的屬性中取消其“優(yōu)化塊訪問”。

(3)向“connect”數(shù)據(jù)塊中添加兩個(gè)4字節(jié)數(shù)組、5個(gè)字節(jié)變量及1個(gè)TCON_IP_v4變量,數(shù)組分別命名為“receive”和“send”,“receive”數(shù)組用于接收RFID讀寫器的數(shù)據(jù),“send”數(shù)組用于向RFID讀寫器發(fā)送數(shù)據(jù),5個(gè)字節(jié)變量分別命名為“Answer1”、“Answer2”、“Answer3”、“Request1”和“Request2”,TCON_IP_v4變量命名為“IP”用于存儲Modbus TCP連接端口及地址,“connect”數(shù)據(jù)塊數(shù)據(jù)添加如圖5所示。

圖5 “connect”數(shù)據(jù)塊數(shù)據(jù)添加

系統(tǒng)要求利用RFID讀寫器向IC卡中寫入16進(jìn)制1234、5678、9ABC、DEF0四個(gè)數(shù)據(jù),故相應(yīng)的設(shè)置“send”數(shù)組的4個(gè)字節(jié)的初值。設(shè)置Request1和Request2的初值分別為16#8和16#4,這兩個(gè)字節(jié)用于向RFID讀寫器提出請求。設(shè)置TCON_IP_v4變量中“InterfaceID”、“ID”、“ADDR[1]”、“ADDR[2]”、“ADDR[3]”、“ADDR[4]”、“RemotePort”、“LocalPort”的初值分別為64、16#01、192、168、0、242、39169和0,其中ADDR[1]~ADDR[4]為遠(yuǎn)程通信對象IP地址的4個(gè)字節(jié),RemotePort為遠(yuǎn)程通信對象即RFID讀寫器的端口號,LocalPort為PLC本地端口號。

4.3 Main函數(shù)程序編寫

在主程序中調(diào)用“IC卡讀取”和“IC卡寫入”FC功能塊,并通過同一觸點(diǎn)連接,實(shí)現(xiàn)IC卡讀取與寫入操作的切換,根據(jù)系統(tǒng)要求,默認(rèn)為IC卡讀取狀態(tài),僅當(dāng)觸發(fā)IC卡寫入時(shí)才切換至寫入狀態(tài),故設(shè)置M6.0作為IC卡讀取操作與IC卡寫入操作的切換開關(guān),Main函數(shù)如圖6所示。

圖6 Main函數(shù)程序

4.4 “IC卡讀取”功能塊程序編寫

4.4.1 MB_CLIENT指令塊

在本例中RFID讀寫器作為服務(wù)端,S7-1200 PLC作為客戶端。在程序中添加Modbus TCP客戶端通信指令MB_CLIENT,該指令用于通過PROFINET在客戶端和服務(wù)器之間建立連接、發(fā)送Modbus請求、接收響應(yīng)并控制Modbus TCP客戶端的連接終端。需要注意的是Modbus查詢開始后,背景數(shù)據(jù)塊將鎖定,其它客戶端無法使用,因此與Modbus RTU類似,MB_CLIENT需利用輪詢操作實(shí)現(xiàn)同一指令多次調(diào)用的遍歷[4]。

4.4.2 判斷RFID讀寫器上是否有IC卡

根據(jù)前文的介紹,當(dāng)讀取到00007寄存器(地址為40008)的第四位為1時(shí),即表示有IC卡在RFID讀寫器的在感應(yīng)區(qū),故在FC1“IC卡讀取”功能塊中編寫程序判斷是否有卡,IC卡判斷程序如圖7所示。

其中當(dāng)M100.0觸發(fā)后PLC從00007寄存器讀取長度為1個(gè)字節(jié)的數(shù)據(jù)并將其保存在DB2.DBW8中。由于讀取到00007寄存器(地址為40008)的第四位為1時(shí)表示有卡,故可利用讀取到的DB2.DBW8與16#0010進(jìn)行比較,當(dāng)讀寫器上有卡時(shí)點(diǎn)亮指示燈Q0.1。

MB_CLIENT指令需利用輪詢操作實(shí)現(xiàn)同一指令多次調(diào)用的遍歷,故利用MB_CLIENT指令的完成位及錯誤位觸發(fā)TP脈沖定時(shí)器500毫秒的延時(shí)后復(fù)位當(dāng)前讀取操作的REQ請求位并置位下一操作的REQ請求位[5]。

圖7 IC卡判斷程序

4.4.3 請求讀取第一操作空間指定數(shù)據(jù)區(qū)域

根據(jù)程序編寫流程,在讀取IC卡的數(shù)據(jù)前需向00007寄存器(地址40008)寫入16#0008進(jìn)行數(shù)據(jù)讀取請求,待00007寄存器回復(fù)16#0012后方可執(zhí)行IC卡數(shù)據(jù)的讀取操作,故讀取第一操作空間時(shí)需利用MB_CLIENT指令向地址40008執(zhí)行寫操作,然后再對地址40008執(zhí)行讀操作,讀取第一操作空間指定數(shù)據(jù)區(qū)域請求程序如圖8所示。

圖8 讀取第一操作空間指定數(shù)據(jù)區(qū)域請求程序

4.4.4 讀取指定區(qū)域數(shù)據(jù)

在數(shù)據(jù)讀取請求得到回復(fù)后便可讀取4個(gè)寄存器中的數(shù)據(jù),輪詢觸發(fā)M100.3后,PLC讀取從40011開始的4個(gè)寄存器中的數(shù)據(jù)保存到從DB2.DBW0開始的4個(gè)字中。需要的注意的是由于輪詢控制算法是實(shí)現(xiàn)數(shù)據(jù)讀寫操作的輪流循環(huán),故在最后一步讀數(shù)據(jù)操作結(jié)束后再次置位第一步讀卡操作中的請求位,以實(shí)現(xiàn)輪詢控制[6]。

4.5 “IC卡寫入”功能塊程序編寫

4.5.1 IC卡數(shù)據(jù)寫入

根據(jù)系統(tǒng)要求,需將4組16進(jìn)制數(shù)分別寫入到IC卡中4個(gè)寄存器中,由于這4組16進(jìn)制數(shù)保存在DB2.DBW14開始的4個(gè)字的初值中,故在FC2“IC卡寫入”功能塊中添加寫操作指令,當(dāng)手動觸發(fā)寫操作按鈕M100.4后便可將這4個(gè)字臨時(shí)存儲到40011開始的4個(gè)寄存器中,同時(shí)利用輪詢控制算法觸發(fā)下一步使能數(shù)據(jù)入卡操作。注意此時(shí)的寫入僅是臨時(shí)存儲,只有激活使能后才能使數(shù)據(jù)保存到IC卡中。

要使數(shù)據(jù)存入卡中需向40008寄存器中寫入16#0004,使能數(shù)據(jù)存儲操作。故利用輪詢觸發(fā)寫操作指令將存儲16#0004數(shù)據(jù)的DB2.DBW24寫入到40008中,使能數(shù)據(jù)存入到IC卡,IC卡數(shù)據(jù)寫入程序如圖9所示。

圖9 IC卡數(shù)據(jù)寫入程序

4.5.2 讀取返回值,判斷是否寫入成功

數(shù)據(jù)存儲并使能完成后需繼續(xù)讀取40008寄存器的回復(fù)值,若回復(fù)為16#0011即為數(shù)據(jù)寫入成功。利用讀操作指令,將40008寄存器的值讀取到DB2.DBW12中,若返回值為16#0011則通過比較指令觸發(fā)寫入操作完成,即完成IC卡寫操作。IC卡寫操作完成后需自動切換至IC卡讀取狀態(tài),故輪詢控制的最后一步需復(fù)位IC卡寫切換開關(guān)M6.0,使系統(tǒng)自動切換至IC卡讀取功能塊。

5 功能測試

5.1 IC卡讀取功能測試

在RFID讀寫器上放置一張有數(shù)據(jù)的IC卡,監(jiān)視DB塊中receive接收數(shù)組及應(yīng)答回復(fù)字Answer1和Answer2,此時(shí)能夠從數(shù)組中讀取到數(shù)據(jù),且應(yīng)答回復(fù)字均為16#0012,即表示此時(shí)RFID讀寫器上有卡,且卡內(nèi)40011到40014寄存器內(nèi)有數(shù)據(jù),IC卡讀取功能測試如圖10所示。

5.2 IC卡寫入功能測試

IC卡數(shù)據(jù)讀取完成后啟用IC卡寫入功能,將默認(rèn)send數(shù)組中的4個(gè)16進(jìn)制數(shù)寫入到卡中,寫入完成后系統(tǒng)自動切換回IC讀取功能,再次監(jiān)視DB塊中receive接收數(shù)組及應(yīng)答回復(fù)字Answer1和Answer2,此時(shí)從數(shù)組中讀取到的數(shù)據(jù)即為IC卡寫入的數(shù)據(jù),即IC卡寫入功能測試成功,IC卡寫功能測試如圖11所示。

6 結(jié)束語

本文針對IC-11HMRW型RFID射頻讀寫器,詳細(xì)闡述了Siemens S7-1200 PLC與RFID讀寫器進(jìn)行以太網(wǎng)通信實(shí)現(xiàn)IC卡讀操作和寫操作的程序設(shè)計(jì)方法,并在TIA博途軟件中進(jìn)行了仿真調(diào)試。實(shí)踐證明該系統(tǒng)運(yùn)行穩(wěn)定、程序設(shè)計(jì)方案可行。

圖10 IC卡讀取功能測試

圖11 IC卡寫功能測試

猜你喜歡
輪詢功能測試IC卡
城市軌道交通車車通信系統(tǒng)室內(nèi)確認(rèn)測試方案研究
某內(nèi)花鍵等速傳動軸八功能測試夾具設(shè)計(jì)
工商業(yè)IC卡控制器改造為物聯(lián)網(wǎng)控制器實(shí)踐
在用電梯加裝外接式IC卡運(yùn)行控制系統(tǒng)設(shè)計(jì)改進(jìn)
基于等概率的ASON業(yè)務(wù)授權(quán)設(shè)計(jì)?
一種新的無觸點(diǎn)IC卡的檢測方法
電子測試(2017年15期)2017-12-18 07:19:05
依托站點(diǎn)狀態(tài)的兩級輪詢控制系統(tǒng)時(shí)延特性分析
利用時(shí)間輪詢方式操作DDR3實(shí)現(xiàn)多模式下數(shù)據(jù)重排
人事薪資管理系統(tǒng)軟件測試方案研究
民用飛機(jī)機(jī)載電子硬件測試策略研究
科技視界(2015年27期)2015-10-08 12:34:04
阜新市| 海伦市| 漯河市| 庆云县| 宝山区| 土默特左旗| 南通市| 靖边县| 井冈山市| 论坛| 武宁县| 海晏县| 鄱阳县| 咸阳市| 游戏| 津南区| 逊克县| 通州市| 武川县| 山西省| 安远县| 苍南县| 孟州市| 乐清市| 策勒县| 灵台县| 子长县| 城口县| 新安县| 平塘县| 鸡西市| 宾阳县| 阿拉善盟| 山丹县| 长治县| 禹州市| 广宁县| 衡南县| 宣汉县| 个旧市| 澄江县|