工控網(wǎng)首頁
>

應(yīng)用設(shè)計

>

西門子S7-1200串口模塊CM1241進行Modus-RTU通訊的要點

西門子S7-1200串口模塊CM1241進行Modus-RTU通訊的要點

2024/4/10 9:43:38

最近在用1200通過Modbus-RTU采集某流量傳感器的數(shù)據(jù),西門子側(cè)選擇的是CM1241(RS422/485)(訂貨號是6ES7 241-1CH32-0XB0,固件版本V2.2),CPU是1214C,固件版本是V4.2,自認為調(diào)試應(yīng)該很簡單,但是卻花費了很多時間,并查閱了很多資料、視頻,才實現(xiàn)了通訊。下面逐步介紹一下步驟,可能的坑及解決辦法。

1、硬件接線

通訊卡9針插座的3和8針用于485通訊(Modbus的通訊),西門子手冊上標(biāo)識為:3+(B),8-(A),流量傳感器上標(biāo)識為A+、B-。通訊不通時,我在這兒折騰了很久,后來用萬用表直接測量電壓搞定,原則:不用理會AB,直接測量電壓,+對+,-對-即可。未通訊時,電壓在3-5VDC之間。

2、硬件配置

基本配置(要與從站保持一致),記下硬件標(biāo)識符:這里是269。

1.png

3、端口初始化編程

注意選擇V3.1這一套程序,不要與下面的V2.2程序混用(注意這套程序的版本限制“使用CM1241 自固件版本V2.1起...”)。

2.png

初始化程序放置在OB1循環(huán)調(diào)用的子程序里,官方提醒不要放在OB100(啟動程序里),設(shè)置好參數(shù)(與硬件里的基本一致),自動生成頂部的背景數(shù)據(jù)塊(這里是DB1)。

打開DB1,將里面的MODE修改成4(設(shè)置為485通訊),其他保持默認值(這也是個大坑,誰會想著去修改背景數(shù)據(jù)塊?所有需要修改的應(yīng)該都通過接口參數(shù)開放出來呀!)。

3.pngMB_DB要與后面的Modbus_Master的背景數(shù)據(jù)塊保持一致,在創(chuàng)建Modbus_Master時,會自動生成,然后再回過頭來修改,我這邊為DB2。

4、創(chuàng)建讀寫指令

4.png

我這邊用到了輪詢,所以,程序相對復(fù)雜,會調(diào)用多個Modbus_Master模塊(注意:他們必須用相同的背景數(shù)據(jù)塊,不要每次都新建)。如果只是單站讀取,REQ端用時鐘脈沖即可。REQ是上升沿觸發(fā),如果常置位,則只會進行一次讀取,因此用時鐘脈沖可以周期讀取。

MB_ADDR是從站地址,MODE是模式,與DATA_ADDR配合,在后臺生成標(biāo)準(zhǔn)的MODBUS指令,比如,我要實現(xiàn)傳感器廠家的指令幀:

5.png

起始地址是0x800E,轉(zhuǎn)換成十進制地址是32782,功能碼是0x03

通過Modbus_Master的幫助可以看到,我的MODE要選擇0,DATA_ADDR填寫:432782(實際上由于是否從0開始的問題,這兒最終填寫的是432783)

6.png

這樣,就可以讀取了。

5、最快速度輪詢時的效果

我用錄波軟件PLC-Recorder對于采集回的值、輪詢指令等進行了錄波,以20ms的速度記錄,從這個波形上可以看到,實際輪詢周期能達到100ms(我這里有兩個從站):

7.png將其中一個傳感器斷電,制造單站故障后的輪詢周期大都加長,達到了600ms(因為要等待超時):

8.png

審核編輯(
王靜
)
投訴建議

提交

查看更多評論
其他資訊

查看更多

派拓網(wǎng)絡(luò)被Forrester評為XDR領(lǐng)域領(lǐng)導(dǎo)者

展會|Lubeworks路博流體供料系統(tǒng)精彩亮相AMTS展會

中國聯(lián)通首個量子通信產(chǎn)品“量子密信”亮相!

國家重大裝備企業(yè)齊聚高交會 中國科技第一展11月深圳舉行

東土精彩亮相華南工博會,展現(xiàn)未來工業(yè)前沿技術(shù)