西門子S7-1200串口模塊CM1241進(jìn)行Modus-RTU通訊的要點(diǎn)
最近在用1200通過Modbus-RTU采集某流量傳感器的數(shù)據(jù),西門子側(cè)選擇的是CM1241(RS422/485)(訂貨號是6ES7 241-1CH32-0XB0,固件版本V2.2),CPU是1214C,固件版本是V4.2,自認(rèn)為調(diào)試應(yīng)該很簡單,但是卻花費(fèi)了很多時間,并查閱了很多資料、視頻,才實現(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。
3、端口初始化編程
注意選擇V3.1這一套程序,不要與下面的V2.2程序混用(注意這套程序的版本限制“使用CM1241 自固件版本V2.1起...”)。
初始化程序放置在OB1循環(huán)調(diào)用的子程序里,官方提醒不要放在OB100(啟動程序里),設(shè)置好參數(shù)(與硬件里的基本一致),自動生成頂部的背景數(shù)據(jù)塊(這里是DB1)。
打開DB1,將里面的MODE修改成4(設(shè)置為485通訊),其他保持默認(rèn)值(這也是個大坑,誰會想著去修改背景數(shù)據(jù)塊?所有需要修改的應(yīng)該都通過接口參數(shù)開放出來呀?。?。
MB_DB要與后面的Modbus_Master的背景數(shù)據(jù)塊保持一致,在創(chuàng)建Modbus_Master時,會自動生成,然后再回過頭來修改,我這邊為DB2。
4、創(chuàng)建讀寫指令
我這邊用到了輪詢,所以,程序相對復(fù)雜,會調(diào)用多個Modbus_Master模塊(注意:他們必須用相同的背景數(shù)據(jù)塊,不要每次都新建)。如果只是單站讀取,REQ端用時鐘脈沖即可。REQ是上升沿觸發(fā),如果常置位,則只會進(jìn)行一次讀取,因此用時鐘脈沖可以周期讀取。
MB_ADDR是從站地址,MODE是模式,與DATA_ADDR配合,在后臺生成標(biāo)準(zhǔn)的MODBUS指令,比如,我要實現(xiàn)傳感器廠家的指令幀:
起始地址是0x800E,轉(zhuǎn)換成十進(jìn)制地址是32782,功能碼是0x03
通過Modbus_Master的幫助可以看到,我的MODE要選擇0,DATA_ADDR填寫:432782(實際上由于是否從0開始的問題,這兒最終填寫的是432783)
這樣,就可以讀取了。
5、最快速度輪詢時的效果
我用錄波軟件PLC-Recorder對于采集回的值、輪詢指令等進(jìn)行了錄波,以20ms的速度記錄,從這個波形上可以看到,實際輪詢周期能達(dá)到100ms(我這里有兩個從站):
將其中一個傳感器斷電,制造單站故障后的輪詢周期大都加長,達(dá)到了600ms(因為要等待超時):
提交
派拓網(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ù)