熱情、耐心、真誠的服務(wù)與支持
一、硬件連線
對(duì)于第三方的設(shè)備,如掃碼槍、打印機(jī)、儀表等,為非標(biāo)準(zhǔn)的總線協(xié)議、自定義的協(xié)議,稱之為自由口協(xié)議。在啟動(dòng)程序編寫之前,首先要明確第三方的設(shè)備的串口類型。
1.通信接口
A. 第三方設(shè)備串口為232的SMART CPU本體串口為RS-485,欲與232設(shè)備進(jìn)行通信,中間需加一個(gè)232to485的轉(zhuǎn)換器。常見連線如圖1。
圖1 RS-232設(shè)備
B. 第三方設(shè)備串口為485的
SMART CPU和第三方設(shè)備串口皆為485時(shí),可用直連。常見連線如圖2。
圖2 RS-485設(shè)備
C. 第三方設(shè)備串口為422的
第三方設(shè)備串口為422的,需將422該為485接法。常見連線如圖3。
圖3 RS-422設(shè)備
在復(fù)雜的工業(yè)現(xiàn)場或長距離通訊的情況下,建議選擇優(yōu)質(zhì)的總線連接器和電纜。億維自動(dòng)化的總線連接器自帶終端電阻和偏置電阻,在此情況下,可提高通訊的穩(wěn)定和抗干擾能力。
總線連接器和電纜,訂貨號(hào)如表4。
表4 總線鏈接器&電纜
3.為什么選擇總線連接器和總線電纜
眾所周知,網(wǎng)線有超五類和超六類之分,超五類傳輸帶寬可高達(dá)1000Mb/s,但一般只應(yīng)用在100Mb/s的網(wǎng)絡(luò)中;超六類主要應(yīng)用在千兆網(wǎng)絡(luò)中,在傳輸性能上遠(yuǎn)遠(yuǎn)高于超五類網(wǎng)線標(biāo)準(zhǔn)。超五類,超六類的電纜直觀區(qū)別就是電纜銅芯線徑不同,超六類銅芯明顯粗于超五類。
同理推測,億維自動(dòng)化的總線電纜,回路阻抗:<150R/KM,優(yōu)于一般通訊電纜。線阻小,通訊距離長,抗干擾能力強(qiáng)。
億維自動(dòng)化的總線連接器,自帶終端電阻和偏置電阻,同樣可以提高通訊的質(zhì)量。
建議組網(wǎng)方式如圖5:
圖5總線接頭
終端和偏置電阻如圖6:
圖6 終端和偏置電阻
二、通信機(jī)制
了解清楚通信機(jī)制,理清程序思路,才能編程順利。常見的通信機(jī)制如下:
A. CPU只接受不發(fā)送,即第三方設(shè)備只發(fā)送不接收。常見的如掃碼槍。
B. CPU只發(fā)送不接收,即第三方設(shè)備只接收不發(fā)送。常見的如打印機(jī)。
C. CPU先發(fā)送,再接收,再發(fā)送,再接收。CPU通信機(jī)制類似主站機(jī)制,如Modbus RTU Master。
D. CPU先接收,再發(fā)送,再接收,再發(fā)送。CPU通信機(jī)制類似從站機(jī)制,如Modbus RTU Slave。
E.通信邏輯自定義。
三、通信報(bào)文
通信報(bào)文,即發(fā)送和接收的數(shù)據(jù)格式。如Modbus通信,通信格式有明確定義。通信的雙方要按照約定的格式及長度發(fā)送、接收響應(yīng)的數(shù)據(jù)。
CPU做主站,以Modbus RTU主站報(bào)文為例,CPU發(fā)送的數(shù)據(jù)格式如下:
而第三方設(shè)備,接收到CPU報(bào)文后,需響應(yīng)的數(shù)據(jù)格式如下:
上面示例主要要說明的是,理解通訊雙方約定的通訊數(shù)據(jù)每一個(gè)字節(jié)所代表的含義。只有理解清楚了數(shù)據(jù)的含義,才能對(duì)數(shù)據(jù)進(jìn)行讀取或封裝。
四、PLC控制字
在編寫程序之前,還有一項(xiàng)準(zhǔn)備工作,理解定義串口/通訊方式的控制字。
A.串口控制字
SMB30 和 SMB130 分別組態(tài)通信端口 0 和 1 以進(jìn)行自由端口操作,并提供波特率、奇偶校驗(yàn)和數(shù)據(jù)位數(shù)的選擇。下圖顯示了自由端口控制字節(jié)。對(duì)于所有組態(tài),都生成一個(gè)停止位。
SMB30\SMB130數(shù)據(jù)位格式:
SMB30\SMB130數(shù)據(jù)定義:
B.通訊控制字&狀態(tài)字
五、PLC只收不發(fā)
A.主程序上電串口初始化
2#00 0 010 01 SMB30 8-N-1 9600 自由口
2#01110000 SMB87
接收數(shù)據(jù)的表頭位為A5,表尾為5A
接收長度10個(gè)字節(jié) SMB94
B. 打開接收完成中斷
C. 觸發(fā)接收指令,接收到的數(shù)據(jù)放置在VB200開始的寄存器區(qū)。
D. 接收完成中斷程序中,打開接收。
控制字中,接收數(shù)據(jù)長度設(shè)為10,接收到的數(shù)據(jù)存放在VB201開始的10個(gè)字節(jié),VB200為接收到字節(jié)計(jì)數(shù)器。
六、 PLC只發(fā)不收
A.串口初始化
B.組織要發(fā)送的數(shù)據(jù)
C.觸發(fā)發(fā)送指令
起始字節(jié)即VB100為發(fā)送的字節(jié)長度
D.報(bào)文監(jiān)控
發(fā)送長度不同時(shí)的報(bào)文
七、PLC先發(fā)后收
邏輯類似Modbus主站,也可用自由口模式,編輯Modbus 通訊。
A.串口初始化,一般要定義接收的字符長度,或結(jié)束字符,以判斷接收結(jié)束。
初始化時(shí),連接發(fā)送完成中斷,接收完成中斷。
B.組織發(fā)送數(shù)據(jù)
本例發(fā)送長度10個(gè)字節(jié),VB100=10,VB100-VB110為發(fā)送的數(shù)據(jù)
C.程序邏輯
D.發(fā)送&超時(shí)判斷
若超時(shí),關(guān)閉接收,即復(fù)位SM87.7
超時(shí)標(biāo)志位下降沿,重新打開接收,即置位SM87.7,并再次觸發(fā)發(fā)送。
E.發(fā)送完成,打開接收
F.接收完成,再次觸發(fā)發(fā)送
G.報(bào)文分析
發(fā)送完成,PLC未接收到數(shù)據(jù),超時(shí)后繼續(xù)發(fā)送。如報(bào)文前五行。
發(fā)送完成,PLC收到數(shù)據(jù),立即觸發(fā)下一次發(fā)送。如第六第7行報(bào)文。
八、PLC先收后發(fā)
邏輯和上一章節(jié)類似,邏輯類似Modbus 從站。
九、接收字符中斷
串口初始化,可忽視接收字符長度,結(jié)束字符等,編程更靈活。
A.串口初始化
連接接收字符中斷
B.組織發(fā)送報(bào)文,觸發(fā)發(fā)送指令
接收字符中斷,蔣接收到的數(shù)據(jù)存放至目標(biāo)寄存器
十、問題排查
通訊異常時(shí),建議從以下幾個(gè)方面排查:
A.確保通訊電纜連接正確,參考第一章節(jié),重點(diǎn)關(guān)注1.1章節(jié)。
B.確保通訊參數(shù)一致。
C.用電腦串口助手軟件,監(jiān)控通訊報(bào)文,定位是PLC沒有發(fā)出數(shù)據(jù),還是設(shè)備沒有響應(yīng)數(shù)據(jù),參考第三章節(jié)。
監(jiān)控通訊報(bào)文:將電腦485的A、B并聯(lián)在通訊鏈路上,軟件推薦串口助手。
圖15 電腦監(jiān)聽