<object id="ir2le"></object>
  • 加入收藏 在線留言 聯系我們
    關注微信
    手機掃一掃 立刻聯系商家
    全國服務熱線15267534595
    公司新聞
    S7-1200串口CM1241的Modus-RTU通訊要點
    發布時間: 2023-11-05 20:35 更新時間: 2024-12-26 09:10

    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(因為要等待超時):

    圖片


    聯系方式

    • 電  話:18126392341
    • 聯系人:梁濤
    • 手  機:15267534595
    • 微  信:15267534595