Zui近在用1200通過Modbus-RTU采集某流量傳感器的數據,西門子側選擇的是CM1241(RS422/485)(訂貨號是6ES7 241-1CH32-0XB0,固件版本V2.2),CPU是1214C,固件版本是V4.2,自認為調試應該很簡單,但是卻花費了很多時間,并查閱了很多資料、視頻,才實現了通訊。下面逐步介紹一下步驟,可能的坑及解決辦法。
1、硬件接線
通訊卡9針插座的3和8針用于485通訊(Modbus的通訊),西門子手冊上標識為:3+(B),8-(A),流量傳感器上標識為A+、B-。通訊不通時,我在這兒折騰了很久,后來用萬用表直接測量電壓搞定,原則:不用理會AB,直接測量電壓,+對+,-對-即可。未通訊時,電壓在3-5VDC之間。
2、硬件配置
基本配置(要與從站保持一致),記下硬件標識符:這里是269。
3、端口初始化編程
注意選擇V3.1這一套程序,不要與下面的V2.2程序混用(注意這套程序的版本限制“使用CM1241 自固件版本V2.1起...”)。
初始化程序放置在OB1循環調用的子程序里,官方提醒不要放在OB100(啟動程序里),設置好參數(與硬件里的基本一致),自動生成頂部的背景數據塊(這里是DB1)。
打開DB1,將里面的MODE修改成4,其他保持默認值(這也是個大坑,誰會想著去修改背景數據塊?所有需要修改的應該都通過接口參數開放出來呀!)。
MB_DB要與后面的Modbus_Master的背景數據塊保持一致,在創建Modbus_Master時,會自動生成,然后再回過頭來修改,我這邊為DB2。
4、創建讀寫指令
我這邊用到了輪詢,所以,程序相對復雜,會調用多個Modbus_Master模塊(注意:他們必須用相同的背景數據塊,不要每次都新建)。如果只是單站讀取,REQ端用時鐘脈沖即可。REQ是上升沿觸發,如果常置位,則只會進行一次讀取,因此用時鐘脈沖可以周期讀取。
MB_ADDR是從站地址,MODE是模式,與DATA_ADDR配合,在后臺生成標準的MODBUS指令,比如,我要實現傳感器廠家的指令幀:
起始地址是0x800E,轉換成十進制地址是32782,功能碼是0x03
通過Modbus_Master的幫助可以看到,我的MODE要選擇0,DATA_ADDR填寫:432782(實際上由于是否從0開始的問題,這兒Zui終填寫的是432783)
這樣,就可以讀取了。
5、Zui快速度輪詢時的效果
我用錄波軟件PLC-Recorder對于采集回的值、輪詢指令等進行了錄波,以10ms的速度記錄,從這個波形上可以看到,實際輪詢周期能達到100ms(我這里有兩個從站):
將其中一個傳感器斷電,制造單站故障后的輪詢周期大都加長,達到了600ms(因為要等待超時):
- 西門子PLC在做PID編程中要知道的一些問題 2024-12-26
- Modbus協議實現單片機與PLC之間通訊 2024-12-26
- 探秘 SIMATIC PLC IO 模塊 2024-12-26
- S7-1200運動控制的超馳功能 2024-12-26
- STEP7- Micro/WIN SMART V2.6新增功能 2024-12-26
- 推薦四種PLC間跨網段通訊的方法 2024-12-26
- 實例分享 | MCGS 和西門子1200PLC通訊設置 2024-12-26
- 西門子200SMART PLC掃描周期執行過程詳解 2024-12-26
- 西門子SCL編程——通過模擬量控制氣缸升起和下降 2024-12-26
- 西門子200SMART發脈沖控制V90伺服詳解 2024-12-26
- 21個有關伺服電機的問題,想當工程師的你一定得知道 2024-12-26
- 西門子1200通過博圖軟件更新CPU固件詳解 2024-12-26
- 項目實踐:S71500高速脈沖計數及工程應用 2024-12-26
- 西門子S7-1515SPT-V90PN在貨車打碼機上的應用 2024-12-26
- 西門子PLC數據端與Unity用戶端的聯動通訊 2024-12-26
聯系方式
- 電 話:18126392341
- 聯系人:梁濤
- 手 機:15267534595
- 微 信:15267534595