PLC 工控機(jī) 嵌入式系統(tǒng) 人機(jī)界面 工業(yè)以太網(wǎng) 現(xiàn)場(chǎng)總線 變頻器 機(jī)器視覺(jué) DCS PAC/PLMC SCADA 工業(yè)軟件 ICS信息安全 應(yīng)用方案 無(wú)線通訊
煙臺(tái)勾股通信技術(shù)有限公司
暫無(wú)信息 |
閱讀:429發(fā)布時(shí)間:2008-07-10
煙臺(tái)勾股通信技術(shù)有限公司
0K
0次
429次
1. 上位機(jī)與PLC之間通訊實(shí)現(xiàn)
歐姆龍PLC—CJ1M(CPU21)有兩個(gè)串行通訊口,一是通過(guò)歐姆龍串口通訊線CS1W-CN226,其網(wǎng)絡(luò)類(lèi)型設(shè)置為T(mén)oolbus,同時(shí)將DIP4串行通訊設(shè)狀態(tài)置為ON;一是通過(guò)歐姆龍九針串口通訊線XM2Z-200S-CV,其網(wǎng)絡(luò)類(lèi)型設(shè)置為SYSMAC WAY,其它為默認(rèn)設(shè)置,包括端口為COM1,波特率為9600。圖1所示為上位機(jī)通過(guò)RS-232C端口連接到PLC的示意圖,也可以稱(chēng)作1:1連接。
圖1 RS-232C端口的1:1連接
圖2所示為上位機(jī)與PLC之間通訊實(shí)現(xiàn)過(guò)程。
圖2 上位機(jī)與PLC之間通訊實(shí)現(xiàn)過(guò)程
2. VB與PLC之間通訊協(xié)議和程序?qū)崿F(xiàn)
2.1 鏈接系統(tǒng)的通訊協(xié)議
在紗線數(shù)據(jù)通訊中,只需要在上位機(jī)系統(tǒng)中編寫(xiě)上位機(jī)通訊程序,無(wú)需在PLC中編寫(xiě)任何程序,PLC CPU會(huì)根據(jù)上位機(jī)發(fā)來(lái)的命令幀自動(dòng)生成響應(yīng)幀返回給上位機(jī)。命令幀和響應(yīng)幀之間包含需要通訊的數(shù)據(jù),只有保證正確實(shí)現(xiàn)命令幀和響應(yīng)幀之間的應(yīng)答,才能實(shí)現(xiàn)準(zhǔn)確的數(shù)據(jù)交換。命令和應(yīng)答有兩種方式,一種是從上位機(jī)發(fā)命令到PLC,另一種方式允許PLC發(fā)命令給上位機(jī),我們采用淺一種方式。
從上位機(jī)發(fā)送命令時(shí)的命令幀和響應(yīng)幀如圖3。
圖3 命令幀和響應(yīng)幀格式
命令幀中:
@——命令開(kāi)始標(biāo)志,所有命令都以“@”開(kāi)始;
節(jié)點(diǎn)號(hào)——與上位機(jī)連接的PLC,在1:1連接中默認(rèn)值為00;
標(biāo)題碼——設(shè)置兩字節(jié)的命令代碼,如RD代表讀PLC的DM區(qū)數(shù)據(jù);
正文——設(shè)置命令參數(shù)
FCS——設(shè)置兩字符的幀檢查順序碼,用于校驗(yàn),是用兩位ASCII碼表示的8位數(shù)據(jù),是從“@”開(kāi)始到正文結(jié)束的所有字符的ASCII碼按位異或運(yùn)算的結(jié)果;
結(jié)束符——表示命令的結(jié)束,用“*”和回車(chē)符“CHR$(13)”標(biāo)明。
應(yīng)答幀中:
@、節(jié)點(diǎn)號(hào)、標(biāo)題碼、FCS和結(jié)束符同命令幀中的含義。
異常號(hào)——返回命令的執(zhí)行狀態(tài),,是否有錯(cuò)誤發(fā)生。
2.2 通訊端口初始化
在上位機(jī)與PLC實(shí)現(xiàn)通訊之前,必須先在上位機(jī)VB中設(shè)置通訊控件MSComm1的相應(yīng)屬性,通訊口初始化程序一般放在窗體加載程序中。
Private Sub Form_Load()
mPort = 1 ‘設(shè)置Com1通訊口
MSComm1.Settings = “9600,e,7,2” ‘波特率9600,e偶校驗(yàn),7位數(shù)據(jù)位,2位停止位
MSComm1.PortOpen = True ‘打開(kāi)通訊端口
MSComm1.InBufferCount = 0 ‘清空接收緩沖區(qū)
End Sub
其它設(shè)置均取通訊控件MSComm1的默認(rèn)值。
2.3 幀格式代碼
采用基于Windows操作系統(tǒng)功能強(qiáng)大的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言——Visual Basic,編寫(xiě)了上位機(jī)程序,建立了上位機(jī)與PLC之間良好的通訊協(xié)議。以讀內(nèi)存DM區(qū)為例:
上位機(jī)命令幀:
"@" + "00" + "FA" + "1" + "00000000" + "0101" + "82" + 開(kāi)始地址+讀取個(gè)數(shù)+FCS+結(jié)束符
PLC應(yīng)答幀:
"@" + "00" + "FA" + "1" + "00000000" + "0101" + "82" + "0000"+讀取數(shù)據(jù) +FCS+結(jié)束符
其中:
FA——表示FINS命令
0101——表示連續(xù)讀內(nèi)存區(qū)
82——表示讀內(nèi)存DM區(qū)
2.4 校驗(yàn)算法實(shí)現(xiàn)
為了保證通訊數(shù)據(jù)準(zhǔn)確無(wú)誤的傳輸,歐姆龍PLC對(duì)通訊數(shù)據(jù)以按位異或算法進(jìn)行校驗(yàn)。代碼如下,僅供參考。
Option Explicit
Function FCS(ByVal temp1 As String) As String
Dim slen1, i, xorresult1 As Integer ‘ 定義變量
Dim tempfcs1 As String
xorresult1 = 0
slen1 = Len(temp1) ‘ 求輸入字符串的長(zhǎng)度
For i = 1 To slen1
xorresult1 = xorresult1 Xor Asc(Mid(temp1, i, 1)) ‘從首字符到尾字符獲取ASCII碼,按位異或
Next i
Tempfcs1 = Hex$(xorresult1) ‘轉(zhuǎn)換為16進(jìn)制
If Len(tempfcs1) = 1 Then
FCS = "0" & tempfcs1
Else
FCS = tempfcs1
End If
End Function
3. 結(jié)束語(yǔ)
本文作者創(chuàng)新點(diǎn)主要通過(guò)RS-232C串口通訊,采用面向?qū)ο蟮目梢暬幊坦ぞ?mdash;—Visual Basic建立上位機(jī)與歐姆龍PLC-CJ1M(CPU21)之間的數(shù)據(jù)通訊,獲取紗線在線檢測(cè)數(shù)據(jù),現(xiàn)場(chǎng)實(shí)測(cè)表明能夠快速準(zhǔn)確在線測(cè)量紗線的CV值、瞬時(shí)直徑、平均直徑、粗節(jié)zui大值、細(xì)節(jié)zui小值等等,實(shí)時(shí)反映紗線的不勻率,對(duì)提高棉紡企業(yè)紗線質(zhì)量具有重要的意義。
商鋪:http://www.towegas.com/st16692/
主營(yíng)產(chǎn)品:Profibus總線雙環(huán)自愈光端機(jī) Controlnet總線光線路模塊 NS230系列Modbus PLUSMB+總線光纖鏈路模塊
智能制造網(wǎng) 設(shè)計(jì)制作,未經(jīng)允許翻錄必究 .? ? ?
請(qǐng)輸入賬號(hào)
請(qǐng)輸入密碼
請(qǐng)輸驗(yàn)證碼
請(qǐng)輸入你感興趣的產(chǎn)品
請(qǐng)簡(jiǎn)單描述您的需求
上傳附件
請(qǐng)選擇省份