概述
本例說(shuō)明如何以自由協(xié)議實(shí)現(xiàn)計(jì)算機(jī)與S7-200的通信,計(jì)算機(jī)作為主站略雪,可以實(shí)現(xiàn)對(duì)PLC從站各寄存器的讀/寫(xiě)操作癌蚂。
計(jì)算機(jī)通過(guò)COM口發(fā)送指令到PLC的PORT0(或PORT1)口,PLC通過(guò)RCV接收指令摩赎,然后對(duì)指令進(jìn)行譯碼在策,譯碼后調(diào)用相應(yīng)的讀/寫(xiě)子程序?qū)崿F(xiàn)指令要求的操作,并返回指令執(zhí)行的狀態(tài)信息锄垛。
通信協(xié)議
在自由口模式下何杈,通信協(xié)議是由用戶定義的。用戶可以用梯形圖程序調(diào)用接收中斷默峦、發(fā)送中斷剿液、發(fā)送指令(XMT)、接受指令(RCV)來(lái)控制通信操作袱类。在自由口模式下寨支,通信協(xié)議完全由梯形圖程序控制。
指令格式定義
計(jì)算機(jī)每次發(fā)送一個(gè)33字節(jié)長(zhǎng)的指令來(lái)實(shí)現(xiàn)一次讀/寫(xiě)操作趣匪,指令格式見(jiàn)表1 說(shuō)明:
1惭舒、起始字符
起始字符標(biāo)志著指令的開(kāi)始钞诡,在本例中被定義為ASCII碼的"g"郑现,不同的PLC從站可以定義不同的起始字符以接收真對(duì)該P(yáng)LC的指令。
2荧降、指令類(lèi)型
該字節(jié)用來(lái)標(biāo)志指令的類(lèi)型接箫,在本例中05H代表讀操作,06H代表寫(xiě)操作朵诫。
3辛友、目標(biāo)PLC站地址
目標(biāo)PLC站地址占用指令的B2、B3兩個(gè)字節(jié)剪返,以十六進(jìn)制ASCII碼的格式表示目標(biāo)PLC的站地址废累。
4、目標(biāo)寄存器地址
在PLC內(nèi)部可以用4個(gè)字節(jié)來(lái)表示一個(gè)寄存器的地址(但不能表示一個(gè)位地址)脱盲。前兩個(gè)字節(jié)表示寄存器類(lèi)型邑滨,后兩個(gè)字節(jié)表示寄存器號(hào)日缨。
00 00(H): I寄存器區(qū)
01 00(H): Q寄存器區(qū)
02 00(H): M寄存器區(qū)
08 00(H): V寄存器區(qū)
例如:
IB000的地址可表示為 00 00 00 00(H)
VB100的地址可表示為 08 00 00 64(H)
5、讀/寫(xiě)字節(jié)數(shù)M
當(dāng)讀命令時(shí)驼修,始終讀回從目標(biāo)寄存器開(kāi)始的連續(xù)8個(gè)字節(jié)的數(shù)據(jù)(轉(zhuǎn)換為十六進(jìn)制ASCII碼后占用16個(gè)字節(jié))殿遂,可以根據(jù)自己的需要取用卸橘,M可以任意寫(xiě)入敌夜。
當(dāng)寫(xiě)命令時(shí),M表示的是要寫(xiě)入數(shù)據(jù)的十六進(jìn)制ASCII碼所占用的字節(jié)數(shù)塞这。例如要寫(xiě)入1個(gè)字節(jié)的數(shù)據(jù)数凫,數(shù)據(jù)在指令中以十六進(jìn)制ASCII碼表示,它將占用2個(gè)字節(jié)窜鳍,此時(shí)應(yīng)向M中寫(xiě)入"02"森烦。同理,如果要寫(xiě)入5個(gè)字節(jié)的數(shù)據(jù)稻嘱,M中應(yīng)寫(xiě)入"0A"维愈。
6、要寫(xiě)入的數(shù)據(jù)
要寫(xiě)入的數(shù)據(jù)在指令中以十六進(jìn)制ASCII碼的格式表示罢令,占用指令的B14-B29共16個(gè)字節(jié)林狈。數(shù)據(jù)區(qū)必須填滿,但只有前M個(gè)字節(jié)的數(shù)據(jù)會(huì)被寫(xiě)入目標(biāo)寄存器媒埃。一條指令最多可以寫(xiě)入8個(gè)字節(jié)的數(shù)據(jù)(此時(shí)M中應(yīng)寫(xiě)入"10"菜碌,代表十進(jìn)制的16)
7、BCC校驗(yàn)碼
在傳輸過(guò)程中题山,指令有可能受到任何的干擾而使原來(lái)的數(shù)據(jù)信號(hào)發(fā)生扭曲兰粉,此時(shí)的指令當(dāng)然是錯(cuò)誤的,為了偵測(cè)指令在傳輸過(guò)程中發(fā)生的錯(cuò)誤顶瞳,接收方必須對(duì)指令作進(jìn)一步的確認(rèn)工作玖姑,以防止錯(cuò)誤的指令被執(zhí)行,最簡(jiǎn)單的方法就是使用校驗(yàn)碼慨菱。BCC校驗(yàn)碼的方法就是將要傳送的字符串的ASCII碼以字節(jié)為單位作異或和焰络,并將此異或和作為指令的一部分傳送出去;同樣地抡柿,接收方在接到指令后舔琅,以相同的方式對(duì)接收到的字符串作異或和,并與傳送方所送過(guò)來(lái)的值作對(duì)比洲劣,若其值相等备蚓,則代表接收到的指令是正確的,反之則是錯(cuò)誤的囱稽。
在本例中郊尝,bcc為指令B1到B29的異或和二跋,BCC為bcc的十六進(jìn)制ASCII碼。
bcc=B1 xor B2 xor B3 xor B4 xor …… xor B29
8艺扑、結(jié)束字符
結(jié)束字符標(biāo)志著指令的結(jié)束哭练,在本例中被定義為ASCII碼的"G",不同的PLC從站可以定義不同的結(jié)束字符以接收真對(duì)該P(yáng)LC的指令米法。
PLC在接到上位機(jī)指令后僧憾,將發(fā)送一個(gè)21字節(jié)長(zhǎng)反饋信息,格式見(jiàn)表2
說(shuō)明:
1短户、起始字符
起始字符標(biāo)志著反饋信息的開(kāi)始荐呵,在本例中被定義為ASCII碼的"g",不同的PLC從站可以定義不同的起始字符唇锡,這樣上位機(jī)可以根據(jù)信息的起始字符來(lái)判斷反饋信息的來(lái)源蔬聚。
2、狀態(tài)信息
該字節(jié)包含指令執(zhí)行的狀態(tài)信息矗绅,在本例中
01H 代表 讀取正確
02H 代表 寫(xiě)入正確
03H 代表 BCC校驗(yàn)碼錯(cuò)誤
04H 代表 指令不合法
3墙违、數(shù)據(jù)區(qū)
反饋信息的B3到B18為讀指令所要讀取的數(shù)據(jù),以十六進(jìn)制ASCII碼表示叼枝。
4诽表、BCC校驗(yàn)碼
與上位機(jī)指令中的BCC校驗(yàn)碼類(lèi)似,它是反饋信息B3到B18的異或和腥光。
5关顷、結(jié)束字符
結(jié)束字符標(biāo)志著反饋信息的結(jié)束,在本例中被定義為26H武福。
指令中為何要使用ASCII碼
一條指令除包含數(shù)據(jù)外议双,還包含必要的控制字(起始字符、結(jié)束字符捉片、指令類(lèi)型等)平痰。如果指令中的數(shù)據(jù)直接以其原本的形式傳輸,則不可避免的會(huì)與指令中的控制字發(fā)生混淆伍纫。
例如本例中宗雇,指令的起始字符為"g",其ASCII碼值為67H莹规,結(jié)束字符為"G"赔蒲,其ASCII碼值為47H。假設(shè)要寫(xiě)入的數(shù)據(jù)中也有47H良漱,并且數(shù)據(jù)直接以其原本的形式傳輸库樊,則PLC會(huì)因?yàn)榻邮盏搅藬?shù)據(jù)中的47H而停止接收,這樣PLC接收到的指令將是一個(gè)不完整的非法指令忆和,很可能造成PLC的誤動(dòng)作数壤。
為了避免這種情況的發(fā)生效迹,可以用文本來(lái)傳送二進(jìn)制數(shù)據(jù)。通過(guò)以16進(jìn)制ASCII碼的格式描述數(shù)據(jù)趣闻,每個(gè)二進(jìn)制的字節(jié)都可以表示成一對(duì)ASCII編碼啰蕴,這對(duì)編碼表示這個(gè)字節(jié)的兩個(gè)16進(jìn)制字符。這種格式可以表示任何的數(shù)值存学,僅僅使用ASCII代碼的30H到39H(表示0到9)和41H到46H(表示A到F)码承。ASCII碼的其余部分可以用作控制字(起始標(biāo)志、結(jié)束標(biāo)志誉缚、指令類(lèi)型等)嘱垛。這樣,數(shù)據(jù)中的47H以ASCII碼的形式進(jìn)行傳送就變成了34H 37H 兩個(gè)字節(jié)疫遵,從而避免了PLC因接收到數(shù)據(jù)中的47H而停止接收的錯(cuò)誤。
表1 上位機(jī)指令格式
Byte0 起始字符 Byte1 指令類(lèi)型(讀/寫(xiě)) Byte2 目標(biāo)PLC站地址(十六進(jìn)制ASCII碼) Byte3 Byte4 目標(biāo)寄存器地址(十六進(jìn)制ASCII碼) Byte5 Byte6 Byte7 Byte8 Byte9 Byte10 Byte11 Byte12 讀/寫(xiě)字節(jié)數(shù)M(十六進(jìn)制ASCII碼) Byte13 Byte14 要寫(xiě)入的數(shù)據(jù)(十六進(jìn)制ASCII碼) Byte15 Byte16 Byte17 Byte18 Byte19 Byte20 Byte21 Byte22 Byte23 Byte24 Byte25 Byte26 Byte27 Byte28 Byte29 Byte30 BCC校驗(yàn)碼(十六進(jìn)制ASCII碼) Byte31 Byte32 結(jié)束字符 表2 反饋信息格式
Byte0 起始字符 Byte1 狀態(tài)信息 Byte2 數(shù)據(jù)區(qū)(十六進(jìn)制ASCII碼) Byte3 Byte4 Byte5 Byte6 Byte7 Byte8 Byte9 Byte10 Byte11 Byte12 Byte13 Byte14 Byte15 Byte16 Byte17 Byte18 BCC校驗(yàn)碼(十六進(jìn)制ASCII碼) Byte19 Byte20 結(jié)束字符
PLC程序執(zhí)行過(guò)程
PLC在第一次掃描時(shí)執(zhí)行初始化子程序算行,對(duì)端口及RCV指令進(jìn)行初始化梧油。初始化完成后,運(yùn)行RCV指令使端口處于接受狀態(tài)州邢。
RCV會(huì)將以"g"開(kāi)頭"G"結(jié)尾的指令保存到接收緩沖區(qū)儡陨,并同時(shí)產(chǎn)生接收完成中斷。
RCVcomplete中斷服務(wù)程序用來(lái)處理接收完成中斷事件量淌,它會(huì)將接收緩沖區(qū)中的十六進(jìn)制ASCII碼還原成數(shù)據(jù)并保存骗村,同時(shí)置位Verify子程序的觸發(fā)條件(M0.1)。 ----Verify子程序首先復(fù)位本身的觸發(fā)條件以防止子程序被重復(fù)調(diào)用呀枢,然后求出接收緩沖區(qū)中指令的BCC校驗(yàn)碼并與指令中的BCC校驗(yàn)碼進(jìn)行比對(duì)胚股。如果相等則置BCC碼校驗(yàn)正確的標(biāo)志位(M0.0)為1;如果指令格式正確(指令的結(jié)束標(biāo)志在接收緩沖區(qū)中特定的位置VB133)而B(niǎo)CC碼不相等裙秋,則發(fā)送代表BCC校驗(yàn)碼錯(cuò)誤的反饋信息琅拌;如果指令格式不正確(VB133中不是指令的結(jié)束標(biāo)志),則返回代表指令格式錯(cuò)誤的反饋信息摘刑。
Read子程序的觸發(fā)條件為:指令中的站地址與本機(jī)站地址相符进宝、指令類(lèi)型為讀指令、BCC檢驗(yàn)碼正確枷恕。當(dāng)條件滿足時(shí)佩嘀,Read子程序被執(zhí)行。Read子程序首先禁止RCV遵艰,然后將指令所要讀取的數(shù)據(jù)轉(zhuǎn)換成十六進(jìn)制ASCII碼并寫(xiě)入發(fā)送緩沖區(qū)沫杜、計(jì)算BCC檢驗(yàn)碼、最后發(fā)送反饋信息峭签。
Write子程序的觸發(fā)條件為:指令中的站地址與本機(jī)站地址相符晶乘、指令類(lèi)型為寫(xiě)指令蚜遥、BCC檢驗(yàn)碼正確。當(dāng)條件滿足時(shí)翠笛,Write子程序被執(zhí)行由饵。Write子程序首先禁止RCV,然后將指令中的數(shù)據(jù)寫(xiě)入目標(biāo)寄存器桦徘,最后發(fā)送代表寫(xiě)入正確的反饋信息故咽。
PLC每接到一條指令后都會(huì)發(fā)送一條反饋信息,當(dāng)反饋信息發(fā)送完成時(shí)橄文,會(huì)產(chǎn)生發(fā)送完成中斷化刻,XMTcomplete中斷服務(wù)程序用來(lái)處理發(fā)送完成中斷事件。在XMTcomplete中斷服務(wù)程序中所要執(zhí)行的操作包括:復(fù)位BCC校驗(yàn)碼正確的標(biāo)志位(M0.0)上陕;允許RCV桩砰;bcc碼寄存器清零;重新裝入用于計(jì)算BCC校驗(yàn)碼的地址指針释簿;接收緩沖區(qū)中存放指令結(jié)束字符的字節(jié)VB133清零(用來(lái)判斷下一條指令格式是否正確)亚隅。
PLC寄存器地址分配
此程序占用PLC寄存器的VB100-VB199,內(nèi)部繼電器占用M0.0和M0.1庶溶。寄存器地址分配見(jiàn)表3煮纵、表4、表5偏螺、表6行疏。
表3 接收緩沖區(qū)
VB100 字符數(shù) VB101 起始字符 Byte0 VB102 指令類(lèi)型(讀/寫(xiě)) Byte1 VB103 目標(biāo)PLC站地址(十六進(jìn)制ASCII碼) Byte2 VB104 Byte3 VB105 目標(biāo)寄存器地址(十六進(jìn)制ASCII碼) Byte4 VB106 Byte5 VB107 Byte6 VB108 Byte7 VB109 Byte8 VB110 Byte9 VB111 Byte10 VB112 Byte11 VB113 讀/寫(xiě)字節(jié)數(shù)M(十六進(jìn)制ASCII碼) Byte12 VB114 Byte13 VB115 要寫(xiě)入的數(shù)據(jù)(十六進(jìn)制ASCII碼) Byte14 VB116 Byte15 VB117 Byte16 VB118 Byte17 VB119 Byte18 VB120 Byte19 VB121 Byte20 VB122 Byte21 VB123 Byte22 VB124 Byte23 VB125 Byte24 VB126 Byte25 VB127 Byte26 VB128 Byte27 VB129 Byte28 VB130 Byte29 VB131 BCC校驗(yàn)碼(十六進(jìn)制ASCII碼) Byte30 VB132 Byte31 VB133 結(jié)束字符 Byte32 表4 譯碼區(qū)
VB134 PLC站號(hào)(ATH from VB103-VB104) VB135 合成為VD135作為目標(biāo)寄存器的地址指針
(ATH from VB105-VB112) VB136 VB137 VB138 VB139 讀/寫(xiě)字節(jié)數(shù)(ATH from VB113-VB114) VB140 bcc碼(ATH from VB131-VB132) VB141 未使用 VB142 VB143 VB144 VB145 VB146 VB147 VB148 VB149 和成為VD149作為VB102的地址指針
用以計(jì)算BCC校驗(yàn)碼 VB150 VB151 VB152 表5 發(fā)送緩沖區(qū)
VB153 字符數(shù) VB154 起始字符 Byte0 VB155 狀態(tài)信息 Byte1 VB156 數(shù)據(jù)區(qū)(十六進(jìn)制ASCII碼) Byte2 VB157 Byte3 VB158 Byte4 VB159 Byte5 VB160 Byte6 VB161 Byte7 VB162 Byte8 VB163 Byte9 VB164 Byte10 VB165 Byte11 VB166 Byte12 VB167 Byte13 VB168 Byte14 VB169 Byte15 VB170 Byte16 VB171 Byte17 VB172 BCC校驗(yàn)碼(十六進(jìn)制ASCII碼) Byte18 VB173 Byte19 VB174 結(jié)束字符 Byte20 表6 其它
VB175 合成為VW175
作為接收時(shí)計(jì)算bcc碼循環(huán)的INDX VB176 VB177 合成為VW177
作為發(fā)送時(shí)計(jì)算bcc碼循環(huán)的INDX VB178 VB179 接收數(shù)據(jù)的bcc碼 VB180 發(fā)送數(shù)據(jù)的bcc碼 VB181 合成為VD181作為VB156的地址指針
(計(jì)算發(fā)送反饋信息的bcc碼時(shí)使用) VB182 VB183 VB184 VB185至VB198 未使用 VB199 本機(jī)站號(hào)
程序清單
主程序:
NETWORK 1
LD SM0.1 //第一次掃描調(diào)用初始化子程序
CALL initialize
NETWORK 2
LDB= VB134, VB199 //指令中的站地址與本機(jī)站地址相符
AB= VB102, 5 //指令類(lèi)型為讀指令
A M0.0 //BCC碼校驗(yàn)正確
CALL Read //調(diào)用讀子程序
NETWORK 3
LDB= VB134, VB199 //指令中的站地址與本機(jī)站地址相符
AB= VB102, 6 //指令類(lèi)型為寫(xiě)指令
A M0.0 //BCC碼校驗(yàn)正確
CALL Write //調(diào)用寫(xiě)子程序
NETWORK 4
LD M0.1 //指令接收完成后調(diào)用BCC碼校驗(yàn)子程序
CALL Verify
NETWORK 5
LD SM4.5 //當(dāng)端口空閑時(shí)啟動(dòng)RCV
RCV VB100, 0
Read子程序:
NETWORK 1
LD SM0.0 //停止端口0的接收
R SM87.7, 1
R M0.0, 1
RCV VB100, 0
NETWORK 2
LD SM0.0 //將數(shù)據(jù)寫(xiě)入發(fā)送緩沖區(qū)
MOVB 103, VB154
MOVB 1, VB155
HTA *VD135, VB156, 16
MOVB 26, VB174
MOVB 21, VB153
NETWORK 3
LD SM0.0 //計(jì)算BCC校驗(yàn)碼
FOR VW177, +1, +16
NETWORK 4
LD SM0.0
XORB *VD181, VB180
NETWORK 5
LD SM0.0
INCD VD181
NETWORK 6
NEXT
NETWORK 7
LD SM0.0
HTA VB180, VB172, 2 //BCC校驗(yàn)碼寫(xiě)入發(fā)送緩沖區(qū)
NETWORK 8
LD SM4.5 //發(fā)送反饋信息
XMT VB153, 0
Write子程序:
NETWORK 1
LD SM0.0 //停止端口0的接收
R SM87.7, 1
R M0.0, 1
RCV VB100, 0
NETWORK 2
LD SM0.0 //裝入要寫(xiě)如數(shù)據(jù)源的地址指針
MOVD &VB115, VD145
NETWORK 3
LD SM0.0 //寫(xiě)入數(shù)據(jù)
ATH *VD145, *VD135, VB139
NETWORK 4
LD SM0.0 //指令執(zhí)行的反饋信息寫(xiě)入發(fā)送緩沖區(qū)
MOVB 21, VB153
MOVB 103, VB154
MOVB 2, VB155
MOVB 26, VB174
NETWORK 5
LD SM4.5 //發(fā)送指令執(zhí)行的反饋信息
XMT VB153, 0
Verify子程序:
NETWORK 1
LD SM0.0
R M0.1, 1 //復(fù)位verify子程序的執(zhí)行條件
NETWORK 2
LD SM0.0 //計(jì)算BCC碼
FOR VW175, +1, +29
NETWORK 3
LD SM0.0
XORB *VD149, VB179
NETWORK 4
LD SM0.0
INCD VD149
NETWORK 5
NEXT
NETWORK 6
LDB= VB179, VB140 //當(dāng)BCC碼校驗(yàn)正確時(shí),M0.0置1
AB= VB133, 71
S M0.0, 1
NETWORK 7
LDB= VB133, 71 //BCC碼錯(cuò)誤時(shí)發(fā)送反饋信息
AB<> VB179, VB140
MOVB 21, VB153
MOVB 103, VB154
MOVB 3, VB155
MOVB 26, VB174
R SM87.7, 1
RCV VB100, 0
XMT VB153, 0
NETWORK 8
LDB VB133, 71 //指令格式錯(cuò)誤或RCV超時(shí)時(shí)發(fā)送反饋信息
MOVB 21, VB153
MOVB 103, VB154
MOVB 4, VB155
MOVB 26, VB174
R SM87.7, 1
RCV VB100, 0
XMT VB153, 0
Initialize子程序:
NETWORK 1
LD SM0.0
MOVB 9, SMB30 //0口"9600,N,8,1"
NETWORK 2
LD SM0.0 //RCV指令初始化
MOVB 16#EC, SMB87
MOVB 103, SMB88
MOVB 71, SMB89
MOVB +1000, SMW92
MOVB 35, SMB94
R SM87.2, 1
NETWORK 3
LD SM0.0
ATCH RCVcomplete, 23 //連接口0接收完成的中斷
NETWORK 4
LD SM0.0
ATCH XMTcomplete, 9 //連接口0發(fā)送完成的中斷
NETWORK 5
LD SM0.0
ENI //中斷允許
NETWORK 6
LD SM0.0
MOVB 2, VB199 //將本機(jī)站地址裝入寄存器
NETWORK 7
LD SM0.0
MOVB &VB102, VD149 //裝入地址指針
MOVB 0, VB179 //BCC碼寄存器清零
MOVB &VB156, VD181 //裝入地址指針
MOVB 0, VB180 //BCC碼寄存器清零
RCVcomplete中斷程序
NETWORK 1
LD SM0.0
ATH VB103, VB134, 2 //指令譯碼(ASCII碼到十六進(jìn)制)
ATH VB105, VB135, 8
ATH VB113, VB139, 2
ATH VB131, VB140, 2
S M0.1, 1 //置位Verify子程序的觸發(fā)條件
MOVB 0, VB179 //BCC碼寄存器清零
MOVD &VB102, VD149 //裝入地址指針
XMTcomplete中斷程序
NETWORK 1
LD SM0.0
R M0.0, 1 //復(fù)位BCC校驗(yàn)碼正確的標(biāo)志位
S SM87.7, 1 //允許口0進(jìn)行接收
MOVB 0, VB179 //BCC校驗(yàn)碼寄存器清零
MOVB 0, VB180 //BCC校驗(yàn)碼寄存器清零
MOVD &VB102, VD149 //重新裝入地址指針
MOVD &VB156, VD181
MOVB 0, VB133 //接收緩沖區(qū)中存放指令結(jié)束字符的字節(jié)清零
->freeport.mwp(5.77k)
說(shuō)明:此應(yīng)用為西門(mén)子公司提供的Beta版套像,僅供參考
(摘自西門(mén)子網(wǎng))
本例說(shuō)明如何以自由協(xié)議實(shí)現(xiàn)計(jì)算機(jī)與S7-200的通信,計(jì)算機(jī)作為主站略雪,可以實(shí)現(xiàn)對(duì)PLC從站各寄存器的讀/寫(xiě)操作癌蚂。
計(jì)算機(jī)通過(guò)COM口發(fā)送指令到PLC的PORT0(或PORT1)口,PLC通過(guò)RCV接收指令摩赎,然后對(duì)指令進(jìn)行譯碼在策,譯碼后調(diào)用相應(yīng)的讀/寫(xiě)子程序?qū)崿F(xiàn)指令要求的操作,并返回指令執(zhí)行的狀態(tài)信息锄垛。
通信協(xié)議
在自由口模式下何杈,通信協(xié)議是由用戶定義的。用戶可以用梯形圖程序調(diào)用接收中斷默峦、發(fā)送中斷剿液、發(fā)送指令(XMT)、接受指令(RCV)來(lái)控制通信操作袱类。在自由口模式下寨支,通信協(xié)議完全由梯形圖程序控制。
指令格式定義
計(jì)算機(jī)每次發(fā)送一個(gè)33字節(jié)長(zhǎng)的指令來(lái)實(shí)現(xiàn)一次讀/寫(xiě)操作趣匪,指令格式見(jiàn)表1 說(shuō)明:
1惭舒、起始字符
起始字符標(biāo)志著指令的開(kāi)始钞诡,在本例中被定義為ASCII碼的"g"郑现,不同的PLC從站可以定義不同的起始字符以接收真對(duì)該P(yáng)LC的指令。
2荧降、指令類(lèi)型
該字節(jié)用來(lái)標(biāo)志指令的類(lèi)型接箫,在本例中05H代表讀操作,06H代表寫(xiě)操作朵诫。
3辛友、目標(biāo)PLC站地址
目標(biāo)PLC站地址占用指令的B2、B3兩個(gè)字節(jié)剪返,以十六進(jìn)制ASCII碼的格式表示目標(biāo)PLC的站地址废累。
4、目標(biāo)寄存器地址
在PLC內(nèi)部可以用4個(gè)字節(jié)來(lái)表示一個(gè)寄存器的地址(但不能表示一個(gè)位地址)脱盲。前兩個(gè)字節(jié)表示寄存器類(lèi)型邑滨,后兩個(gè)字節(jié)表示寄存器號(hào)日缨。
00 00(H): I寄存器區(qū)
01 00(H): Q寄存器區(qū)
02 00(H): M寄存器區(qū)
08 00(H): V寄存器區(qū)
例如:
IB000的地址可表示為 00 00 00 00(H)
VB100的地址可表示為 08 00 00 64(H)
5、讀/寫(xiě)字節(jié)數(shù)M
當(dāng)讀命令時(shí)驼修,始終讀回從目標(biāo)寄存器開(kāi)始的連續(xù)8個(gè)字節(jié)的數(shù)據(jù)(轉(zhuǎn)換為十六進(jìn)制ASCII碼后占用16個(gè)字節(jié))殿遂,可以根據(jù)自己的需要取用卸橘,M可以任意寫(xiě)入敌夜。
當(dāng)寫(xiě)命令時(shí),M表示的是要寫(xiě)入數(shù)據(jù)的十六進(jìn)制ASCII碼所占用的字節(jié)數(shù)塞这。例如要寫(xiě)入1個(gè)字節(jié)的數(shù)據(jù)数凫,數(shù)據(jù)在指令中以十六進(jìn)制ASCII碼表示,它將占用2個(gè)字節(jié)窜鳍,此時(shí)應(yīng)向M中寫(xiě)入"02"森烦。同理,如果要寫(xiě)入5個(gè)字節(jié)的數(shù)據(jù)稻嘱,M中應(yīng)寫(xiě)入"0A"维愈。
6、要寫(xiě)入的數(shù)據(jù)
要寫(xiě)入的數(shù)據(jù)在指令中以十六進(jìn)制ASCII碼的格式表示罢令,占用指令的B14-B29共16個(gè)字節(jié)林狈。數(shù)據(jù)區(qū)必須填滿,但只有前M個(gè)字節(jié)的數(shù)據(jù)會(huì)被寫(xiě)入目標(biāo)寄存器媒埃。一條指令最多可以寫(xiě)入8個(gè)字節(jié)的數(shù)據(jù)(此時(shí)M中應(yīng)寫(xiě)入"10"菜碌,代表十進(jìn)制的16)
7、BCC校驗(yàn)碼
在傳輸過(guò)程中题山,指令有可能受到任何的干擾而使原來(lái)的數(shù)據(jù)信號(hào)發(fā)生扭曲兰粉,此時(shí)的指令當(dāng)然是錯(cuò)誤的,為了偵測(cè)指令在傳輸過(guò)程中發(fā)生的錯(cuò)誤顶瞳,接收方必須對(duì)指令作進(jìn)一步的確認(rèn)工作玖姑,以防止錯(cuò)誤的指令被執(zhí)行,最簡(jiǎn)單的方法就是使用校驗(yàn)碼慨菱。BCC校驗(yàn)碼的方法就是將要傳送的字符串的ASCII碼以字節(jié)為單位作異或和焰络,并將此異或和作為指令的一部分傳送出去;同樣地抡柿,接收方在接到指令后舔琅,以相同的方式對(duì)接收到的字符串作異或和,并與傳送方所送過(guò)來(lái)的值作對(duì)比洲劣,若其值相等备蚓,則代表接收到的指令是正確的,反之則是錯(cuò)誤的囱稽。
在本例中郊尝,bcc為指令B1到B29的異或和二跋,BCC為bcc的十六進(jìn)制ASCII碼。
bcc=B1 xor B2 xor B3 xor B4 xor …… xor B29
8艺扑、結(jié)束字符
結(jié)束字符標(biāo)志著指令的結(jié)束哭练,在本例中被定義為ASCII碼的"G",不同的PLC從站可以定義不同的結(jié)束字符以接收真對(duì)該P(yáng)LC的指令米法。
PLC在接到上位機(jī)指令后僧憾,將發(fā)送一個(gè)21字節(jié)長(zhǎng)反饋信息,格式見(jiàn)表2
說(shuō)明:
1短户、起始字符
起始字符標(biāo)志著反饋信息的開(kāi)始荐呵,在本例中被定義為ASCII碼的"g",不同的PLC從站可以定義不同的起始字符唇锡,這樣上位機(jī)可以根據(jù)信息的起始字符來(lái)判斷反饋信息的來(lái)源蔬聚。
2、狀態(tài)信息
該字節(jié)包含指令執(zhí)行的狀態(tài)信息矗绅,在本例中
01H 代表 讀取正確
02H 代表 寫(xiě)入正確
03H 代表 BCC校驗(yàn)碼錯(cuò)誤
04H 代表 指令不合法
3墙违、數(shù)據(jù)區(qū)
反饋信息的B3到B18為讀指令所要讀取的數(shù)據(jù),以十六進(jìn)制ASCII碼表示叼枝。
4诽表、BCC校驗(yàn)碼
與上位機(jī)指令中的BCC校驗(yàn)碼類(lèi)似,它是反饋信息B3到B18的異或和腥光。
5关顷、結(jié)束字符
結(jié)束字符標(biāo)志著反饋信息的結(jié)束,在本例中被定義為26H武福。
指令中為何要使用ASCII碼
一條指令除包含數(shù)據(jù)外议双,還包含必要的控制字(起始字符、結(jié)束字符捉片、指令類(lèi)型等)平痰。如果指令中的數(shù)據(jù)直接以其原本的形式傳輸,則不可避免的會(huì)與指令中的控制字發(fā)生混淆伍纫。
例如本例中宗雇,指令的起始字符為"g",其ASCII碼值為67H莹规,結(jié)束字符為"G"赔蒲,其ASCII碼值為47H。假設(shè)要寫(xiě)入的數(shù)據(jù)中也有47H良漱,并且數(shù)據(jù)直接以其原本的形式傳輸库樊,則PLC會(huì)因?yàn)榻邮盏搅藬?shù)據(jù)中的47H而停止接收,這樣PLC接收到的指令將是一個(gè)不完整的非法指令忆和,很可能造成PLC的誤動(dòng)作数壤。
為了避免這種情況的發(fā)生效迹,可以用文本來(lái)傳送二進(jìn)制數(shù)據(jù)。通過(guò)以16進(jìn)制ASCII碼的格式描述數(shù)據(jù)趣闻,每個(gè)二進(jìn)制的字節(jié)都可以表示成一對(duì)ASCII編碼啰蕴,這對(duì)編碼表示這個(gè)字節(jié)的兩個(gè)16進(jìn)制字符。這種格式可以表示任何的數(shù)值存学,僅僅使用ASCII代碼的30H到39H(表示0到9)和41H到46H(表示A到F)码承。ASCII碼的其余部分可以用作控制字(起始標(biāo)志、結(jié)束標(biāo)志誉缚、指令類(lèi)型等)嘱垛。這樣,數(shù)據(jù)中的47H以ASCII碼的形式進(jìn)行傳送就變成了34H 37H 兩個(gè)字節(jié)疫遵,從而避免了PLC因接收到數(shù)據(jù)中的47H而停止接收的錯(cuò)誤。
表1 上位機(jī)指令格式
Byte0 起始字符 Byte1 指令類(lèi)型(讀/寫(xiě)) Byte2 目標(biāo)PLC站地址(十六進(jìn)制ASCII碼) Byte3 Byte4 目標(biāo)寄存器地址(十六進(jìn)制ASCII碼) Byte5 Byte6 Byte7 Byte8 Byte9 Byte10 Byte11 Byte12 讀/寫(xiě)字節(jié)數(shù)M(十六進(jìn)制ASCII碼) Byte13 Byte14 要寫(xiě)入的數(shù)據(jù)(十六進(jìn)制ASCII碼) Byte15 Byte16 Byte17 Byte18 Byte19 Byte20 Byte21 Byte22 Byte23 Byte24 Byte25 Byte26 Byte27 Byte28 Byte29 Byte30 BCC校驗(yàn)碼(十六進(jìn)制ASCII碼) Byte31 Byte32 結(jié)束字符 表2 反饋信息格式
Byte0 起始字符 Byte1 狀態(tài)信息 Byte2 數(shù)據(jù)區(qū)(十六進(jìn)制ASCII碼) Byte3 Byte4 Byte5 Byte6 Byte7 Byte8 Byte9 Byte10 Byte11 Byte12 Byte13 Byte14 Byte15 Byte16 Byte17 Byte18 BCC校驗(yàn)碼(十六進(jìn)制ASCII碼) Byte19 Byte20 結(jié)束字符
PLC程序執(zhí)行過(guò)程
PLC在第一次掃描時(shí)執(zhí)行初始化子程序算行,對(duì)端口及RCV指令進(jìn)行初始化梧油。初始化完成后,運(yùn)行RCV指令使端口處于接受狀態(tài)州邢。
RCV會(huì)將以"g"開(kāi)頭"G"結(jié)尾的指令保存到接收緩沖區(qū)儡陨,并同時(shí)產(chǎn)生接收完成中斷。
RCVcomplete中斷服務(wù)程序用來(lái)處理接收完成中斷事件量淌,它會(huì)將接收緩沖區(qū)中的十六進(jìn)制ASCII碼還原成數(shù)據(jù)并保存骗村,同時(shí)置位Verify子程序的觸發(fā)條件(M0.1)。 ----Verify子程序首先復(fù)位本身的觸發(fā)條件以防止子程序被重復(fù)調(diào)用呀枢,然后求出接收緩沖區(qū)中指令的BCC校驗(yàn)碼并與指令中的BCC校驗(yàn)碼進(jìn)行比對(duì)胚股。如果相等則置BCC碼校驗(yàn)正確的標(biāo)志位(M0.0)為1;如果指令格式正確(指令的結(jié)束標(biāo)志在接收緩沖區(qū)中特定的位置VB133)而B(niǎo)CC碼不相等裙秋,則發(fā)送代表BCC校驗(yàn)碼錯(cuò)誤的反饋信息琅拌;如果指令格式不正確(VB133中不是指令的結(jié)束標(biāo)志),則返回代表指令格式錯(cuò)誤的反饋信息摘刑。
Read子程序的觸發(fā)條件為:指令中的站地址與本機(jī)站地址相符进宝、指令類(lèi)型為讀指令、BCC檢驗(yàn)碼正確枷恕。當(dāng)條件滿足時(shí)佩嘀,Read子程序被執(zhí)行。Read子程序首先禁止RCV遵艰,然后將指令所要讀取的數(shù)據(jù)轉(zhuǎn)換成十六進(jìn)制ASCII碼并寫(xiě)入發(fā)送緩沖區(qū)沫杜、計(jì)算BCC檢驗(yàn)碼、最后發(fā)送反饋信息峭签。
Write子程序的觸發(fā)條件為:指令中的站地址與本機(jī)站地址相符晶乘、指令類(lèi)型為寫(xiě)指令蚜遥、BCC檢驗(yàn)碼正確。當(dāng)條件滿足時(shí)翠笛,Write子程序被執(zhí)行由饵。Write子程序首先禁止RCV,然后將指令中的數(shù)據(jù)寫(xiě)入目標(biāo)寄存器桦徘,最后發(fā)送代表寫(xiě)入正確的反饋信息故咽。
PLC每接到一條指令后都會(huì)發(fā)送一條反饋信息,當(dāng)反饋信息發(fā)送完成時(shí)橄文,會(huì)產(chǎn)生發(fā)送完成中斷化刻,XMTcomplete中斷服務(wù)程序用來(lái)處理發(fā)送完成中斷事件。在XMTcomplete中斷服務(wù)程序中所要執(zhí)行的操作包括:復(fù)位BCC校驗(yàn)碼正確的標(biāo)志位(M0.0)上陕;允許RCV桩砰;bcc碼寄存器清零;重新裝入用于計(jì)算BCC校驗(yàn)碼的地址指針释簿;接收緩沖區(qū)中存放指令結(jié)束字符的字節(jié)VB133清零(用來(lái)判斷下一條指令格式是否正確)亚隅。
PLC寄存器地址分配
此程序占用PLC寄存器的VB100-VB199,內(nèi)部繼電器占用M0.0和M0.1庶溶。寄存器地址分配見(jiàn)表3煮纵、表4、表5偏螺、表6行疏。
表3 接收緩沖區(qū)
VB100 字符數(shù) VB101 起始字符 Byte0 VB102 指令類(lèi)型(讀/寫(xiě)) Byte1 VB103 目標(biāo)PLC站地址(十六進(jìn)制ASCII碼) Byte2 VB104 Byte3 VB105 目標(biāo)寄存器地址(十六進(jìn)制ASCII碼) Byte4 VB106 Byte5 VB107 Byte6 VB108 Byte7 VB109 Byte8 VB110 Byte9 VB111 Byte10 VB112 Byte11 VB113 讀/寫(xiě)字節(jié)數(shù)M(十六進(jìn)制ASCII碼) Byte12 VB114 Byte13 VB115 要寫(xiě)入的數(shù)據(jù)(十六進(jìn)制ASCII碼) Byte14 VB116 Byte15 VB117 Byte16 VB118 Byte17 VB119 Byte18 VB120 Byte19 VB121 Byte20 VB122 Byte21 VB123 Byte22 VB124 Byte23 VB125 Byte24 VB126 Byte25 VB127 Byte26 VB128 Byte27 VB129 Byte28 VB130 Byte29 VB131 BCC校驗(yàn)碼(十六進(jìn)制ASCII碼) Byte30 VB132 Byte31 VB133 結(jié)束字符 Byte32 表4 譯碼區(qū)
VB134 PLC站號(hào)(ATH from VB103-VB104) VB135 合成為VD135作為目標(biāo)寄存器的地址指針
(ATH from VB105-VB112) VB136 VB137 VB138 VB139 讀/寫(xiě)字節(jié)數(shù)(ATH from VB113-VB114) VB140 bcc碼(ATH from VB131-VB132) VB141 未使用 VB142 VB143 VB144 VB145 VB146 VB147 VB148 VB149 和成為VD149作為VB102的地址指針
用以計(jì)算BCC校驗(yàn)碼 VB150 VB151 VB152 表5 發(fā)送緩沖區(qū)
VB153 字符數(shù) VB154 起始字符 Byte0 VB155 狀態(tài)信息 Byte1 VB156 數(shù)據(jù)區(qū)(十六進(jìn)制ASCII碼) Byte2 VB157 Byte3 VB158 Byte4 VB159 Byte5 VB160 Byte6 VB161 Byte7 VB162 Byte8 VB163 Byte9 VB164 Byte10 VB165 Byte11 VB166 Byte12 VB167 Byte13 VB168 Byte14 VB169 Byte15 VB170 Byte16 VB171 Byte17 VB172 BCC校驗(yàn)碼(十六進(jìn)制ASCII碼) Byte18 VB173 Byte19 VB174 結(jié)束字符 Byte20 表6 其它
VB175 合成為VW175
作為接收時(shí)計(jì)算bcc碼循環(huán)的INDX VB176 VB177 合成為VW177
作為發(fā)送時(shí)計(jì)算bcc碼循環(huán)的INDX VB178 VB179 接收數(shù)據(jù)的bcc碼 VB180 發(fā)送數(shù)據(jù)的bcc碼 VB181 合成為VD181作為VB156的地址指針
(計(jì)算發(fā)送反饋信息的bcc碼時(shí)使用) VB182 VB183 VB184 VB185至VB198 未使用 VB199 本機(jī)站號(hào)
程序清單
主程序:
NETWORK 1
LD SM0.1 //第一次掃描調(diào)用初始化子程序
CALL initialize
NETWORK 2
LDB= VB134, VB199 //指令中的站地址與本機(jī)站地址相符
AB= VB102, 5 //指令類(lèi)型為讀指令
A M0.0 //BCC碼校驗(yàn)正確
CALL Read //調(diào)用讀子程序
NETWORK 3
LDB= VB134, VB199 //指令中的站地址與本機(jī)站地址相符
AB= VB102, 6 //指令類(lèi)型為寫(xiě)指令
A M0.0 //BCC碼校驗(yàn)正確
CALL Write //調(diào)用寫(xiě)子程序
NETWORK 4
LD M0.1 //指令接收完成后調(diào)用BCC碼校驗(yàn)子程序
CALL Verify
NETWORK 5
LD SM4.5 //當(dāng)端口空閑時(shí)啟動(dòng)RCV
RCV VB100, 0
Read子程序:
NETWORK 1
LD SM0.0 //停止端口0的接收
R SM87.7, 1
R M0.0, 1
RCV VB100, 0
NETWORK 2
LD SM0.0 //將數(shù)據(jù)寫(xiě)入發(fā)送緩沖區(qū)
MOVB 103, VB154
MOVB 1, VB155
HTA *VD135, VB156, 16
MOVB 26, VB174
MOVB 21, VB153
NETWORK 3
LD SM0.0 //計(jì)算BCC校驗(yàn)碼
FOR VW177, +1, +16
NETWORK 4
LD SM0.0
XORB *VD181, VB180
NETWORK 5
LD SM0.0
INCD VD181
NETWORK 6
NEXT
NETWORK 7
LD SM0.0
HTA VB180, VB172, 2 //BCC校驗(yàn)碼寫(xiě)入發(fā)送緩沖區(qū)
NETWORK 8
LD SM4.5 //發(fā)送反饋信息
XMT VB153, 0
Write子程序:
NETWORK 1
LD SM0.0 //停止端口0的接收
R SM87.7, 1
R M0.0, 1
RCV VB100, 0
NETWORK 2
LD SM0.0 //裝入要寫(xiě)如數(shù)據(jù)源的地址指針
MOVD &VB115, VD145
NETWORK 3
LD SM0.0 //寫(xiě)入數(shù)據(jù)
ATH *VD145, *VD135, VB139
NETWORK 4
LD SM0.0 //指令執(zhí)行的反饋信息寫(xiě)入發(fā)送緩沖區(qū)
MOVB 21, VB153
MOVB 103, VB154
MOVB 2, VB155
MOVB 26, VB174
NETWORK 5
LD SM4.5 //發(fā)送指令執(zhí)行的反饋信息
XMT VB153, 0
Verify子程序:
NETWORK 1
LD SM0.0
R M0.1, 1 //復(fù)位verify子程序的執(zhí)行條件
NETWORK 2
LD SM0.0 //計(jì)算BCC碼
FOR VW175, +1, +29
NETWORK 3
LD SM0.0
XORB *VD149, VB179
NETWORK 4
LD SM0.0
INCD VD149
NETWORK 5
NEXT
NETWORK 6
LDB= VB179, VB140 //當(dāng)BCC碼校驗(yàn)正確時(shí),M0.0置1
AB= VB133, 71
S M0.0, 1
NETWORK 7
LDB= VB133, 71 //BCC碼錯(cuò)誤時(shí)發(fā)送反饋信息
AB<> VB179, VB140
MOVB 21, VB153
MOVB 103, VB154
MOVB 3, VB155
MOVB 26, VB174
R SM87.7, 1
RCV VB100, 0
XMT VB153, 0
NETWORK 8
LDB VB133, 71 //指令格式錯(cuò)誤或RCV超時(shí)時(shí)發(fā)送反饋信息
MOVB 21, VB153
MOVB 103, VB154
MOVB 4, VB155
MOVB 26, VB174
R SM87.7, 1
RCV VB100, 0
XMT VB153, 0
Initialize子程序:
NETWORK 1
LD SM0.0
MOVB 9, SMB30 //0口"9600,N,8,1"
NETWORK 2
LD SM0.0 //RCV指令初始化
MOVB 16#EC, SMB87
MOVB 103, SMB88
MOVB 71, SMB89
MOVB +1000, SMW92
MOVB 35, SMB94
R SM87.2, 1
NETWORK 3
LD SM0.0
ATCH RCVcomplete, 23 //連接口0接收完成的中斷
NETWORK 4
LD SM0.0
ATCH XMTcomplete, 9 //連接口0發(fā)送完成的中斷
NETWORK 5
LD SM0.0
ENI //中斷允許
NETWORK 6
LD SM0.0
MOVB 2, VB199 //將本機(jī)站地址裝入寄存器
NETWORK 7
LD SM0.0
MOVB &VB102, VD149 //裝入地址指針
MOVB 0, VB179 //BCC碼寄存器清零
MOVB &VB156, VD181 //裝入地址指針
MOVB 0, VB180 //BCC碼寄存器清零
RCVcomplete中斷程序
NETWORK 1
LD SM0.0
ATH VB103, VB134, 2 //指令譯碼(ASCII碼到十六進(jìn)制)
ATH VB105, VB135, 8
ATH VB113, VB139, 2
ATH VB131, VB140, 2
S M0.1, 1 //置位Verify子程序的觸發(fā)條件
MOVB 0, VB179 //BCC碼寄存器清零
MOVD &VB102, VD149 //裝入地址指針
XMTcomplete中斷程序
NETWORK 1
LD SM0.0
R M0.0, 1 //復(fù)位BCC校驗(yàn)碼正確的標(biāo)志位
S SM87.7, 1 //允許口0進(jìn)行接收
MOVB 0, VB179 //BCC校驗(yàn)碼寄存器清零
MOVB 0, VB180 //BCC校驗(yàn)碼寄存器清零
MOVD &VB102, VD149 //重新裝入地址指針
MOVD &VB156, VD181
MOVB 0, VB133 //接收緩沖區(qū)中存放指令結(jié)束字符的字節(jié)清零
->freeport.mwp(5.77k)
說(shuō)明:此應(yīng)用為西門(mén)子公司提供的Beta版套像,僅供參考
(摘自西門(mén)子網(wǎng))
(工業(yè)自動(dòng)化系統(tǒng) > s7 200)
聲明:本網(wǎng)站所收集的部分公開(kāi)資料來(lái)源于互聯(lián)網(wǎng)酿联,轉(zhuǎn)載的目的在于傳遞更多信息及用于網(wǎng)絡(luò)分享,并不代表本站贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé)凉夯,也不構(gòu)成任何其他建議货葬。本站部分作品是由網(wǎng)友自主投稿和發(fā)布、編輯整理上傳咳衣,對(duì)此類(lèi)作品本站僅提供交流平臺(tái)共撰,不為其版權(quán)負(fù)責(zé)。如果您發(fā)現(xiàn)網(wǎng)站上所用視頻故碱、圖片鞋夹、文字如涉及作品版權(quán)問(wèn)題,請(qǐng)第一時(shí)間告知炎殃,我們將根據(jù)您提供的證明材料確認(rèn)版權(quán)并按國(guó)家標(biāo)準(zhǔn)支付稿酬或立即刪除內(nèi)容孕炒,以保證您的權(quán)益!聯(lián)系電話:010-58612588 或 Email:editor@mmsonline.com.cn。
網(wǎng)友評(píng)論
匿名:
最新反饋
注冊(cè)獲取更多行業(yè)信息
- 暫無(wú)反饋
無(wú)須注冊(cè),輕松溝通
編輯推薦
- 2025新年特刊:打造新質(zhì)生產(chǎn)力挪拟,智啟未來(lái)新篇章
- 定義制造業(yè)未來(lái)的數(shù)控加工中心技術(shù)專(zhuān)題
- 航空航天及交通領(lǐng)域先進(jìn)制造技術(shù)應(yīng)用專(zhuān)題
- 解碼消費(fèi)電子產(chǎn)品生產(chǎn)的數(shù)字化之路技術(shù)專(zhuān)題
- 精密智能機(jī)床击你,助力制造升級(jí)技術(shù)專(zhuān)題
- 汽車(chē)輕量化驅(qū)動(dòng)下的零部件加工應(yīng)用專(zhuān)題
- 高性能銑刀實(shí)現(xiàn)高精加工生產(chǎn)技術(shù)專(zhuān)題
- 航空航天發(fā)動(dòng)機(jī)解決方案專(zhuān)題
- 高效齒輪加工生產(chǎn)技術(shù)方案專(zhuān)題
- 金屬加工液的性能不止?jié)櫥夹g(shù)應(yīng)用專(zhuān)題