產(chǎn)品詳情
湖南 西門(mén)子 6ES7331-7NF00-4AB2 現(xiàn)貨特價(jià)銷售
硬件及軟件列表
設(shè)備名稱
|
設(shè)備型號(hào)
|
PS 307 |
6ES7 307-1EA00-0AA0 |
CPU 315-2DP |
6ES7 315-2AG10-0AB0 |
MMC |
6ES7 953-8LG11-0AA0 |
CP341 |
6ES7 341-1AH01-0AE0 |
Dongle |
6ES7 870-1AB01-0YA0 |
應(yīng)用CP341進(jìn)行 MODBUS協(xié)議通信時(shí)需要有Dongle的支持。在使用之前先將Dongle安裝在CP341模塊的背面的Dongle插槽中,Dongle和插入Dongle前后的CP341如下圖所示:
長(zhǎng)沙玥勵(lì)自動(dòng)化設(shè)備有限公司(西門(mén)子系統(tǒng)集成商)長(zhǎng)期銷售西門(mén)子S7-200/300/400/1200PLC、數(shù)控系統(tǒng)、變頻器、人機(jī)界面、觸摸屏、伺服、電機(jī)、西門(mén)子電纜等,并可提供西門(mén)子維修服務(wù),歡迎來(lái)電垂詢
聯(lián)系人:姚善雷 (銷售經(jīng)理)
手機(jī) :13874941405
QQ : 3464463681
地址:長(zhǎng)沙市岳麓區(qū)雷鋒大道468號(hào)金科世界城16-3303室
長(zhǎng)沙玥勵(lì)自動(dòng)化設(shè)備有限公司(西門(mén)子系統(tǒng)集成商)長(zhǎng)期銷售西門(mén)子S7-200/300/400/1200PLC、數(shù)控系統(tǒng)、變頻器、人機(jī)界面、觸摸屏、伺服、電機(jī)、西門(mén)子電纜等,并可提供西門(mén)子維修服務(wù),歡迎來(lái)電垂詢
聯(lián)系人:姚善雷 (銷售經(jīng)理)
手機(jī) :13874941405
QQ : 3464463681
地址:長(zhǎng)沙市岳麓區(qū)雷鋒大道468號(hào)金科世界城16-3303室
圖1
注意:STEP7 V5.X軟件上,必須安裝如下軟件包才可進(jìn)行后續(xù)的組態(tài)配置。
組態(tài)和配置
1、打開(kāi)上面創(chuàng)建的項(xiàng)目ptp,用鼠標(biāo)右鍵點(diǎn)擊項(xiàng)目名稱,選擇Insert New Object-> SIMATIC 300 Station,更改站的名稱為CP341 Modbus-S。
圖2
2、雙擊Hardware進(jìn)入硬件配置畫(huà)面,插入RACK、CPU315-2DP、CP341。
圖3
3、 雙擊CP341模板,點(diǎn)擊Parameter...,配置CP341參數(shù)。在Protocol選項(xiàng)中選擇MODBUS Slave。
圖4
4、雙擊Protocol下的信封圖標(biāo),配置MODBUS Slave參數(shù),點(diǎn)擊MODBUS-Slave按鈕。
圖5
- 步驟1:設(shè)置MODBUS從站地址,本例中設(shè)為2;
- 步驟2:設(shè)置MODBUS從站波特率,停止位,校驗(yàn)位等參數(shù);
- 接下來(lái)配置功能代碼所表示的參數(shù),具體參見(jiàn)下4圖
5、FC01,05,15:讀取、強(qiáng)制輸出位的狀態(tài);左邊的地址為信息傳送地址,右邊對(duì)應(yīng)西門(mén)子的PLC地址區(qū),即左邊地址從0~100對(duì)應(yīng)MODBUS地址區(qū)為00001~00101,對(duì)應(yīng)西門(mén)子數(shù)據(jù)區(qū)為M0.0~M12.4;101~200對(duì)應(yīng)MODBUS 地址區(qū)為00102~00201,對(duì)應(yīng)西門(mén)子數(shù)據(jù)區(qū)為Q0.0~Q12.3;從地址201~300,301~400對(duì)應(yīng)Modbus 地址區(qū)為00202~00301,00302~00401,對(duì)應(yīng)西門(mén)子數(shù)據(jù)區(qū)為T(mén)imer,Counter。
圖6
6、FC02讀取輸入數(shù)據(jù)位的狀態(tài),地址對(duì)應(yīng)如上文所述。
圖7
7、FC03,06,16組態(tài)輸出寄存器數(shù)據(jù)區(qū),對(duì)應(yīng)西門(mén)子數(shù)據(jù)區(qū)為DB塊。
圖8
8、FC04組態(tài)輸入寄存器數(shù)據(jù)區(qū),對(duì)應(yīng)西門(mén)子數(shù)據(jù)區(qū)同樣是DB塊。
圖9
9、設(shè)置寫(xiě)參數(shù)的限制值。
圖10
10、如果選用的是RS422/485接口的CP341時(shí),還需要設(shè)置接口類型,如下圖所示,其它參數(shù)均采用默認(rèn)設(shè)置。
圖11
11、配置完成后保存時(shí)會(huì)提示是否裝載驅(qū)動(dòng)。
圖12
12、此時(shí)必須連接到實(shí)際的PLC,點(diǎn)擊Yes按鈕裝載驅(qū)動(dòng),裝載時(shí)CPU必須為STOP模式。驅(qū)動(dòng)裝載完成后,如果再次裝載,STEP7會(huì)提示Driver already exists,配置完成后點(diǎn)擊“編譯保存”按鈕保存編譯硬件組態(tài),并確認(rèn)沒(méi)有錯(cuò)誤。
圖13
編寫(xiě)通信程序
1、將FB7,F(xiàn)B8添加到程序Blocks中,方法為雙擊OB1,打開(kāi)OB1編程畫(huà)面,從庫(kù)Libraries->CP PtP->CP341中調(diào)用發(fā)送程序塊FB8和接收程序塊FB7,然后再?gòu)腛B1中刪除。因?yàn)镸ODBUS從站通訊要用到這兩個(gè)功能塊。
2、調(diào)用MODBUS從站功能塊FB80,位置在Libraries->Modbus->Modbus ->FB80。分配背景數(shù)據(jù)塊DB80,將參數(shù)LADDR設(shè)為硬件組態(tài)中的起始邏輯地址256。
圖14
2、調(diào)用MODBUS從站功能塊,設(shè)置參數(shù)。
圖15
LADDR |
硬件組態(tài)中的起始邏輯地址,本例中為256 |
START_TIME |
超時(shí)初始化定時(shí)器,本例中為T(mén)1 |
START_TIME |
超時(shí)初始化時(shí)間值,本例中為1s |
OB_MASK |
外設(shè)訪問(wèn)錯(cuò)誤屏蔽位,本例中為M100.0 |
CP_START |
FB初始化始能位,本例中為M100.1 |
CP_START_FM |
CP_START初始化的上升沿位,本例中為M100.2 |
CP_START_NDR |
從CP寫(xiě)操作位,本例中為M100.3 |
CP_START_OK |
初始化成功標(biāo)志,本例中為M100.4 |
CP_START_ERROR |
初始化失敗標(biāo)志,本例中為M100.5 |
ERROR_NR |
錯(cuò)誤號(hào),本例中為MW102 |
ERROR_INFO |
錯(cuò)誤信息,本例中為MW104,可以查看Modbus Slave 手冊(cè)第10章 |
3、創(chuàng)建FC03,06,16功能代碼通訊數(shù)據(jù)塊DB1。
圖16
4、創(chuàng)建FC04功能代碼通訊數(shù)據(jù)塊DB2。
圖17
設(shè)備連接
本文檔使用的CP341的接口是RS232C,因此需要通過(guò)標(biāo)準(zhǔn)的RS232C電纜來(lái)連接CP341和計(jì)算機(jī)的串口,具體的電纜連接方法請(qǐng)查看CP341手冊(cè)B章節(jié)連接電纜部分(見(jiàn):手冊(cè)、文檔和軟件鏈接部分)。
如果使用的CP341是RS485接口的模塊,需要使用RS232C/RS485轉(zhuǎn)換器。
通信測(cè)試
前面使用Step7 V5.5軟件已經(jīng)將通信CP341的通信工作做完,下面進(jìn)行通信測(cè)試。這里使用串口通訊測(cè)試軟件Modscan32軟件來(lái)測(cè)試CP341和計(jì)算機(jī)的通信,步驟如下
1、首先將硬件配置和程序下載到CPU315-2DP中。在計(jì)算機(jī)上打開(kāi)MODBUS主站仿真軟件Modscan32。
圖18
2、點(diǎn)擊Modscan32上的Connection->Connect,顯示畫(huà)面如下,選擇計(jì)算機(jī)和CP341相連的COM口COM1,設(shè)好波特率,數(shù)據(jù)位,停止位,校驗(yàn)方式,如下圖:
圖19
3、設(shè)置完成,點(diǎn)擊OK,顯示畫(huà)面如下。
圖20
4、數(shù)據(jù)顯示區(qū)的10個(gè)地址的數(shù)據(jù)對(duì)應(yīng)CPU中DB1的前10個(gè)字(Word)的數(shù)值(DBW0–DBW10分別為1-10 ),如下圖。
圖21
5、其它數(shù)據(jù)的讀取,只需更改訪問(wèn)的數(shù)據(jù)類型,此處不再介紹。
6、但要說(shuō)明一下對(duì)于浮點(diǎn)數(shù)的顯示,PLC中浮點(diǎn)數(shù)的高16位和低16位與Modscan32顯示的相反,即PLC中浮點(diǎn)數(shù)的高16位對(duì)應(yīng)Modscan32顯示浮點(diǎn)數(shù)的低16位,PLC中浮點(diǎn)數(shù)的低16位對(duì)應(yīng)Modscan32顯示浮點(diǎn)數(shù)的高16位,可在程序中做一下處理,如下圖:
圖22
此時(shí)Modscan32顯示的浮點(diǎn)數(shù)40001對(duì)應(yīng)MD200的浮點(diǎn)數(shù)值,但MODBUS地址對(duì)應(yīng)DB1.DBD0。
硬件列表
設(shè)備名稱 |
設(shè)備型號(hào) |
PS 307 |
6ES7 307-1EA01-0AA0 |
CPU 315-2PN/ DP |
6ES7 315-2EH14-0AB0 |
MMC |
6ES7 953-8LG30-0AA0 |
CP341 |
6ES7 341-1AH02-0AE0 |
Dongle |
6ES7 870-1AB01-0YA0 |
應(yīng)用CP341進(jìn)行 MODBUS協(xié)議通信時(shí)需要有Dongle的支持。在使用之前先將Dongle安裝在CP341模塊的背面的Dongle插槽中,Dongle和插入Dongle前后的CP341如下圖所示。
圖1
組態(tài)和配置
1、打開(kāi)軟件TIA PORTAL STEP7 V13,點(diǎn)擊項(xiàng)目->新建...創(chuàng)建一新項(xiàng)目,項(xiàng)目名稱為341_modbus_Slave。
圖2
2、用鼠標(biāo)點(diǎn)擊“添加新設(shè)備”,選擇SIMATIC S7-300->CPU->CPU 315-2PN/DP->6ES7 315-2EH14-0AB0。
圖3
3、雙擊“設(shè)備組態(tài)”進(jìn)入硬件組態(tài)界面,導(dǎo)軌RACK和CPU 315-2PN/DP已經(jīng)存在,只需要插入PS307和CP341。
圖4
4、雙擊CP341模板,進(jìn)入CP341的屬性框,配置CP341參數(shù)。
圖5
5、在“協(xié)議”選項(xiàng)中選擇“Modbus從站”。配置Modbus從站通信參數(shù),設(shè)定的通信參數(shù)要和通訊伙伴的相同。傳輸率(通信波特率):9600bps,數(shù)據(jù)位:8位,停止位:1位,奇偶校驗(yàn):無(wú),從站站址:2,其他的參數(shù)都采用默認(rèn)設(shè)置。
圖6
6、FC01,05,15:讀取、強(qiáng)制輸出位的狀態(tài);分4個(gè)范圍,每個(gè)范圍前2行地址為信息傳送地址,后2行對(duì)應(yīng)西門(mén)子的PLC地址區(qū),即第1范圍從0~15對(duì)應(yīng)MODBUS地址區(qū)為00001~00016,對(duì)應(yīng)西門(mén)子數(shù)據(jù)區(qū)(標(biāo)記F.)為M10.0~M11.7;第2范圍從16~31對(duì)應(yīng)MODBUS 地址區(qū)為00017~00032,對(duì)應(yīng)西門(mén)子數(shù)據(jù)區(qū)(輸出Q.)為Q0.0~Q1.7;第3范圍從地址32~64對(duì)應(yīng)Modbus 地址區(qū)為00033~00065,對(duì)應(yīng)西門(mén)子數(shù)據(jù)區(qū)(時(shí)間T.)為T(mén)0~T1;第4范圍從地址64~96對(duì)應(yīng)Modbus 地址區(qū)為00065~00097,對(duì)應(yīng)西門(mén)子數(shù)據(jù)區(qū)(計(jì)數(shù)器C.)為C0~C1。
圖7
7、FC02:讀取輸入數(shù)據(jù)位的狀態(tài),分2個(gè)范圍,每個(gè)范圍前2行地址為信息傳送地址,后2行對(duì)應(yīng)西門(mén)子的PLC地址區(qū),即第1范圍從0~15對(duì)應(yīng)MODBUS地址區(qū)為10001~10016,對(duì)應(yīng)西門(mén)子數(shù)據(jù)區(qū)(標(biāo)記F.)為M12.0~M13.7;第2范圍從16~31對(duì)應(yīng)MODBUS 地址區(qū)為10017~10032,對(duì)應(yīng)西門(mén)子數(shù)據(jù)區(qū)(輸入I.)為I0.0~I1.7。
圖8
8、FC03、06、16:組態(tài)保持寄存器數(shù)據(jù)區(qū),對(duì)應(yīng)西門(mén)子數(shù)據(jù)區(qū)為DB塊,即MODBUS保持寄存器地址區(qū)的地址40001,對(duì)應(yīng)西門(mén)子DB塊的地址DB10.DBW0,依次40002對(duì)應(yīng)DB10.DBW2,往后依次類推。
圖9
9、FC04:組態(tài)輸入寄存器數(shù)據(jù)區(qū),對(duì)應(yīng)西門(mén)子數(shù)據(jù)區(qū)同樣是DB塊,即MODBUS輸入寄存器地址區(qū)的地址30001,對(duì)應(yīng)西門(mén)子DB塊的地址DB11.DBW0,依次30002對(duì)應(yīng)DB11.DBW2,往后依次類推。
圖10
10、設(shè)置寫(xiě)參數(shù)的限制值,對(duì)寫(xiě)操作做訪問(wèn)限制。
圖11
11、如果選用的是RS422/485接口的CP341時(shí),還需要設(shè)置接口類型,如下圖所示,其它參數(shù)與RS232的設(shè)置一樣。
圖12
編寫(xiě)通信程序
1、在設(shè)置功能碼FC03、06、16中,創(chuàng)建DB10滿足設(shè)置需要;在設(shè)置功能碼FC04中,創(chuàng)建DB11滿足設(shè)置需要。這2個(gè)數(shù)據(jù)塊都創(chuàng)建1個(gè)數(shù)據(jù)類型Array的變量,數(shù)組元素的數(shù)據(jù)類型為Word,數(shù)量為101。
圖13
2、進(jìn)入主程序OB1,從通信->通信處理器->MODBUS Slave (RTU),調(diào)用功能塊MODB_341,MODB_341的背景數(shù)據(jù)塊為DB1。
圖14
關(guān)于功能塊MODB_341的管腳說(shuō)明。
LADDR |
硬件組態(tài)中的起始邏輯地址,本例中為256,見(jiàn)圖15 |
START_TIMER |
超時(shí)初始化定時(shí)器,本例中為T(mén)0 |
START_TIME |
超時(shí)初始化時(shí)間值,本例中為S5t#1s |
OB_MASK |
外設(shè)訪問(wèn)錯(cuò)誤屏蔽位,本例中為M200.0 |
CP_START |
FB初始化始能位,該位需要置1。本例中為M200.1 |
CP_START_FM |
CP_START初始化的上升沿位,本例中為M200.2 |
CP_START_NDR |
從CP寫(xiě)操作位,本例中為M200.3 |
CP_START_OK |
初始化成功標(biāo)志,本例中為M200.4 |
CP_START_ERROR |
初始化失敗標(biāo)志,本例中為M200.5 |
ERROR_NR |
錯(cuò)誤號(hào),本例中為MW202 |
ERROR_INFO |
錯(cuò)誤信息,本例中為MW204,可以查看Modbus Slave 手冊(cè)第10章 |
圖15
設(shè)備連接
本文檔使用的CP341的接口是RS232C,因此需要通過(guò)標(biāo)準(zhǔn)的RS232C電纜來(lái)連接CP341和計(jì)算機(jī)的串口,具體的電纜連接方法請(qǐng)查看CP341手冊(cè)B章節(jié)連接電纜部分(見(jiàn):手冊(cè)、文檔和軟件鏈接部分)。
如果使用的CP341是RS485接口的模塊,需要使用RS232C/RS485轉(zhuǎn)換器。
通信測(cè)試
前面使用 TIA Step7 軟件已經(jīng)將通信CP341的通信工作做完,下面進(jìn)行通信測(cè)試。這里使用串口通訊測(cè)試軟件Modscan32軟件來(lái)測(cè)試CP341和計(jì)算機(jī)的通信,步驟如下
1、將項(xiàng)目程序在線,本示例中手動(dòng)將M200.1(即:CP_START)置1,M200.2(即:CP_START_FM)和M200.4(即:CP_START_OK)也會(huì)為1。
圖16
2、首先將硬件配置和程序下載到CPU315-2DP中。在計(jì)算機(jī)上打開(kāi)MODBUS主站仿真軟件Modscan32。
圖17
3、點(diǎn)擊Modscan32上的Connection->Connect,顯示畫(huà)面如下,選擇計(jì)算機(jī)和CP341相連的COM口COM1,設(shè)好波特率,數(shù)據(jù)位,停止位,校驗(yàn)方式,如下圖。
圖18
4、設(shè)置完成,點(diǎn)擊OK,顯示畫(huà)面如下。
圖19
5、數(shù)據(jù)顯示區(qū)的10個(gè)地址的數(shù)據(jù)對(duì)應(yīng)CPU中DB10的前10個(gè)字(Word)的數(shù)值(DBW0–DBW10分別為1-10 ),如下圖。給這10個(gè)字賦值1-10。
圖20
6、Modscan32軟件界面03功能碼的地址40001-40010分別顯示1-10的數(shù)據(jù)。
圖21
Modbus RTU 協(xié)議的多站點(diǎn)輪詢(CP341,RS485)
硬件列表
設(shè)備名稱 | 設(shè)備型號(hào) |
PS 307 |
6ES7 307-1EA00-0AA0 |
CPU 315-2PN/DP |
6ES7 315-2EH13-0AB0 |
MMC |
6ES7 953-8LG11-0AA0 |
CP341 |
6ES7 341-1CH01-0AE0 |
Dongle |
6ES7 870-1AA01-0YA0 |
注意:STEP7 V5.X軟件上,必須安裝如下軟件包才可進(jìn)行后續(xù)的組態(tài)配置。
組態(tài)配置
1、組態(tài)CPU及CP341,如圖1將CP341邏輯地址設(shè)為256。
圖1
2、設(shè)置Modbus總線傳輸速率和幀字符結(jié)構(gòu)
雙擊CP341->Parameters->Protocol中選擇Modbus Master;雙擊信封Protocol,選擇Modbus Master設(shè)置總線傳輸速率和幀字符結(jié)構(gòu)以及,其它從站的設(shè)置必須和主站設(shè)置一致。如圖,本例傳輸速率為9.6Kbit/s,幀字符1-8-e-1,即1位起始位,8位數(shù)據(jù)位,偶校驗(yàn),1位停止位。
圖2
3、設(shè)置電氣接口
選擇半雙工RS 485,接收端初始狀態(tài)按圖3設(shè)置,各從站的接口電氣標(biāo)準(zhǔn)應(yīng)和主站一致,如圖,具體配置步驟請(qǐng)參考手冊(cè)《CP340/341/440/441通訊及編程》。
圖3
編程
1、創(chuàng)建發(fā)送數(shù)據(jù)塊DB1
如圖,定義Modbus功能碼03的數(shù)據(jù)格式,更多功能碼格式參考手冊(cè)《以用于 PtP CP MODBUS 協(xié)議 RTU 格式 S7 的 SIMATIC 可加載驅(qū)動(dòng)程序?yàn)橹髡尽?/a>
圖4
2、創(chuàng)建接收數(shù)據(jù)DB
在此共建立了2個(gè)DB(DB4,DB5)分別存放來(lái)自兩個(gè)從站的數(shù)據(jù),每個(gè)DB分配了一個(gè)0~1000個(gè)字的整型數(shù)組如圖。
圖5
3、創(chuàng)建輪詢功能塊FC1
設(shè)置指令計(jì)數(shù)器(MW2),如圖,本例中設(shè)置為2,即2兩條指令。
圖6
根據(jù)指令計(jì)數(shù)器值構(gòu)造發(fā)送指令并指定接收緩沖區(qū)。如圖,指令計(jì)數(shù)器數(shù)值為1,構(gòu)造的發(fā)送指令為訪問(wèn)1號(hào)從站,功能碼03,起始地址0(對(duì)應(yīng)Modbus地址40001),4個(gè)寄存器;接收緩沖區(qū)為數(shù)據(jù)塊DB4,起始地址為0。
圖7
如圖,指令計(jì)數(shù)器數(shù)值為2,構(gòu)造的發(fā)送指令為訪問(wèn)2號(hào)從站,功能碼03,起始地址0(對(duì)應(yīng)Modbus地址40001),4個(gè)寄存器;接收緩沖區(qū)為數(shù)據(jù)塊DB5,起始地址為2。
圖8
為了實(shí)現(xiàn)數(shù)據(jù)發(fā)送和接收,F(xiàn)C1中還必須調(diào)用CP341發(fā)送FB8 和接收FB7 功能塊。
圖9
FB8參數(shù)說(shuō)明表
SF |
‘S’為發(fā)送,此處必須為大寫(xiě)的‘S’ |
LADDR |
硬件組態(tài)中的起始邏輯地址,本例中為256 |
REQ |
發(fā)送數(shù)據(jù)觸發(fā)位,上升沿觸發(fā),本例中為M0.0 |
DB_NO |
發(fā)送數(shù)據(jù)塊號(hào),本例中為1 |
DBB_NO |
發(fā)送數(shù)據(jù)的起始地址,本例中為0 |
LEN |
發(fā)送數(shù)據(jù)的長(zhǎng)度,本例中為6 |
R_TYP |
‘X’為擴(kuò)展的數(shù)據(jù)塊,此處必須為大寫(xiě)的‘X’ |
R |
取消通訊,本例始終為初始值FALSE |
DONE |
發(fā)送完成位,無(wú)故障發(fā)送完成后為true,M0.1 |
ERROR |
錯(cuò)誤位,為true說(shuō)明有錯(cuò)誤,M0.2 |
STATUS |
狀態(tài)字,標(biāo)識(shí)錯(cuò)誤代碼,查看Modbus Master和CP341手冊(cè) |
其它參數(shù) |
查看在線幫助 |
圖10
FB7參數(shù)說(shuō)明表
LADDR |
硬件組態(tài)中的起始邏輯地址,本例中為256 |
DB_NO |
發(fā)送數(shù)據(jù)塊號(hào),本例中為MW4 |
DBB_NO |
發(fā)送數(shù)據(jù)的起始地址,本例中為MW6 |
LEN |
接收數(shù)據(jù)的長(zhǎng)度 |
EN_R |
使能接收位,本例中始終為T(mén)URE |
R |
取消通訊,本例始終為初始值FALSE |
NDR |
接收完成位,無(wú)故障接收完成后為true |
ERROR |
錯(cuò)誤位,為true說(shuō)明有錯(cuò)誤 |
STATUS |
狀態(tài)字,標(biāo)識(shí)錯(cuò)誤代碼,查看Modbus Master和CP341手冊(cè) |
其它參數(shù) |
查看在線幫助 |
CP341 Modbus RTU主站輪詢從站過(guò)程:以功能碼03(Function Code 03)為例,正常情況下REQ(M0.0)檢測(cè)到一個(gè)上升沿時(shí),F(xiàn)B8啟動(dòng)發(fā)送作業(yè),從站收到主站請(qǐng)求后發(fā)送響應(yīng)數(shù)據(jù),F(xiàn)B7將從站響應(yīng)的數(shù)據(jù)送回給CPU處理,發(fā)送作業(yè)完成位DONE(M0.1)置位,同時(shí)指令計(jì)數(shù)器MW2加1,構(gòu)造下條指令,傳遞到發(fā)送DB中(DB1.DBB0~DB1.DBB5),更新下一條指令的接收區(qū)地址(MW4,MW6)同時(shí)觸發(fā)REQ上升沿,啟動(dòng)一個(gè)新的發(fā)送作業(yè)。
圖11
同樣以功能碼03(Function Code 03)為例,在故障情況下,F(xiàn)B8發(fā)送功能無(wú)法完成,ERROR置位,那么判斷該次發(fā)送作業(yè)失敗,更新發(fā)送區(qū)地址和接收區(qū)地址啟動(dòng)下一個(gè)發(fā)送作業(yè)。如果FB8的DONE和ERROR由于某些故障都無(wú)法置位,那么通訊將處于死鎖狀態(tài),所以在啟動(dòng)發(fā)送作業(yè)同時(shí)啟動(dòng)超時(shí)定時(shí)器t0(本例中超時(shí)定時(shí)器時(shí)間設(shè)為2100ms),即定時(shí)器計(jì)時(shí)結(jié)束時(shí)DONE或ERROR仍然沒(méi)有置位,那么判斷該次發(fā)送作業(yè)失敗,更新發(fā)送區(qū)地址和接收區(qū)地址啟動(dòng)下一個(gè)發(fā)送作業(yè)。
如圖所示,主站向Slave1發(fā)送請(qǐng)求指令,由于1號(hào)從站斷線故障,從站沒(méi)有收到主站請(qǐng)求,也無(wú)法返回主站需要的數(shù)據(jù),當(dāng)預(yù)設(shè)的從站響應(yīng)時(shí)間t(如圖11,t=2000ms)超時(shí),發(fā)送功能塊ERROR(M0.2)置位,主站判斷本條指令失敗,同時(shí)發(fā)起下一條指令作業(yè)(Function Code 03)訪問(wèn)Slave2,Slave2收到主站請(qǐng)求后,將響應(yīng)數(shù)據(jù)返回給主站CP341,主站再通過(guò)FB7將從站接收到的數(shù)據(jù)保存到指定位置,發(fā)送功能塊DONE(M0.1)置位,同時(shí)觸發(fā)下一次發(fā)送作業(yè)。
圖12
需要注意的是超時(shí)定時(shí)器時(shí)間(t0)必需大于預(yù)設(shè)的從站響應(yīng)時(shí)間t,而預(yù)設(shè)的從站響應(yīng)時(shí)間應(yīng)大于等于主站發(fā)出請(qǐng)求到接收到從站響應(yīng)數(shù)據(jù)的時(shí)間最大值(tn,n=1,2),即t0 > t ≥ Max(t1,t2),如圖。
圖13
4、在OB1中調(diào)用輪詢功能塊FC1
圖14
總結(jié)
本文檔所提供的例程適用于CP341作為Modbus主站輪詢?cè)L問(wèn)多個(gè)從站,根據(jù)實(shí)際需要構(gòu)造不同功能碼指令,可讀寫(xiě)不同的從站的不同地址空間。本例對(duì)通訊故障時(shí)的處理方式是簡(jiǎn)單的放棄當(dāng)前作業(yè),并觸發(fā)下一個(gè)作業(yè),實(shí)際運(yùn)用中可根據(jù)實(shí)際情況判斷是否需要重發(fā)或進(jìn)行其他故障處理。
串口通信故障診斷
如果串口通訊發(fā)生故障,為了能快速定位發(fā)生的所有錯(cuò)誤, 可以通過(guò)以下常用方法診斷通信模塊的故障:
通過(guò)功能塊的 STATUS 輸出進(jìn)行診斷;
模塊指示燈
CP340/341/440/441 模塊都有數(shù)據(jù)交換的指示燈:Txd和Rxd。
- Txd(綠色):模塊通過(guò)接口向外發(fā)送數(shù)據(jù);
- Rxd(綠色):模塊通過(guò)接口接收外部發(fā)來(lái)的數(shù)據(jù);
故障指示燈各模塊不相同,詳細(xì)如下。
CP340/341模塊的故障指示燈
組報(bào)警 SF 燈(紅色常亮):組報(bào)警 LED SF 始終會(huì)在通電后亮起,在初始化后熄滅。 如果已為 CP340/341 生成了參數(shù)化數(shù)據(jù),則 SF LED 會(huì)在重新參數(shù)化期間再次短暫亮起。
如果發(fā)生以下哪種情況,組報(bào)警 LED SF 都將亮起:
- 硬件故障;
- 固件錯(cuò)誤;
- 參數(shù)分配出錯(cuò)或者不存在參數(shù)分配;
- 斷路(模塊和通訊伙伴之間的接收電纜斷開(kāi))。
CP440/441模塊的故障指示燈
組錯(cuò)誤顯示:
- INTF(紅色):內(nèi)部錯(cuò)誤;
- EXTF(紅色):外部錯(cuò)誤。
接口故障顯示:
- FAULT(紅色):接口錯(cuò)誤。
CP440 故障指示燈的錯(cuò)誤消息,如圖 1 所示。
圖1 CP440 故障指示燈的錯(cuò)誤消息
CP441 故障指示燈的錯(cuò)誤消息,如圖 2 所示。
圖2 CP441 故障指示燈的錯(cuò)誤消息
通信功能塊的 STATUS 診斷信息
CP 340/CP341/CP440 通訊功能塊的 STATUS 信息
FB 的 STATUS 輸出:
- 功能塊(CP340:P_SEND 和 P_RCV;CP341:P_SND_RK 和 P_RCV_RK;CP440:SEND_440 和 RECV_440)均有一個(gè)用于錯(cuò)誤診斷的 STATUS 輸出,讀取功能塊的 STATUS 輸出就可以明了有關(guān)通訊期間發(fā)生的錯(cuò)誤的信息, 可以在用戶程序中解釋 STATUS 輸出。
- 模塊還會(huì)將位于 STATUS 輸出上的診斷事件輸入至模塊的診斷緩沖區(qū)。
注意:功能塊的 STATUS、ERROR、DONE 和 NDR 等狀態(tài)僅保持一個(gè)掃描周期,然后清零,需要客戶編程讀出判斷。
STATUS 參數(shù)的結(jié)構(gòu),如圖 3 所示:
圖3 STATUS 參數(shù)的結(jié)構(gòu)
CP340 功能塊的 STATUS 事件類別和事件編號(hào)鏈接。
CP341 功能塊的 STATUS 事件類別和事件編號(hào)鏈接。
CP440 功能塊的 STATUS 事件類別和事件編號(hào)鏈接。
CP 441 通訊功能塊的 STATUS 信息
SFB 的 STATUS 輸出:
- 系統(tǒng)功能塊(SFB12/SFB13)都有一個(gè)用于錯(cuò)誤診斷的 STATUS 輸出。 讀取系統(tǒng)功能塊的 STATUS 輸出,就可以了解有關(guān)在 CP 441 和分配的 CPU 之間進(jìn)行通訊時(shí)發(fā)生的錯(cuò)誤的常規(guī)信息, 可以在用戶程序中解釋 STATUS 參數(shù)。
SFB12 的錯(cuò)誤信息,如圖 4 所示。
圖4 SFB12 的錯(cuò)誤信息
SFB13 的錯(cuò)誤信息,如圖 5 所示。
圖5 SFB13 的錯(cuò)誤信息
通信模塊的診斷緩沖區(qū)
通訊模塊有自己的診斷緩沖區(qū),模塊的所有診斷事件都按事件發(fā)生的順序輸入診斷緩沖區(qū)。
在診斷緩沖區(qū)中會(huì)顯示以下內(nèi)容:
- 模塊的工作狀態(tài);
- 模塊上的硬件/固件錯(cuò)誤;
- 初始化和參數(shù)錯(cuò)誤;
- 執(zhí)行 CPU 請(qǐng)求期間出現(xiàn)的錯(cuò)誤;
- 數(shù)據(jù)傳輸錯(cuò)誤(接收和發(fā)送錯(cuò)誤)。
模塊的診斷緩沖區(qū)特點(diǎn):
- 是環(huán)形緩沖,診斷緩沖區(qū)已滿后,在其中生成新條目的同時(shí)會(huì)刪除最老的條目,這樣,最新條目始終在最頂部;
- 最多可容納診斷條目(CP340/341:9個(gè);CP440:10個(gè);CP441:64個(gè));
- 關(guān)閉電源或重新分配模塊的參數(shù),診斷緩沖區(qū)中的內(nèi)容丟失。