張 鋒
(保定萊特整流器股份有限公司,河北 保定 071051)
Modbus 是一種主/從串行通信協(xié)議,可分為Modbus RTU 與Modbus ASCII 兩種模式。這里僅有一臺設(shè)備(主機(jī))可以請求數(shù)據(jù)交換(叫做“查詢”),而其他設(shè)備(從機(jī))以向主機(jī)提供數(shù)據(jù)或執(zhí)行主機(jī)的查詢命令的方式對主機(jī)作出響應(yīng)。Modbus協(xié)議定義了查詢消息的格式以及從機(jī)響應(yīng)的格式,主機(jī)查詢消息包括地址、功能碼、數(shù)據(jù)以及CRC 校驗(yàn),從機(jī)響應(yīng)消息包括地址、功能碼、數(shù)據(jù)以及CRC校驗(yàn)。如果從機(jī)在接受消息時(shí)出錯或是從機(jī)不能執(zhí)行接收的命令,他將生成一個(gè)錯誤信息并作為響應(yīng)發(fā)給主機(jī)。主從查詢響應(yīng)如圖1所示。
圖1 主從查詢響應(yīng)周期
設(shè)備地址在通信幀的開始部分,由8 位組成,有效的從機(jī)設(shè)備地址范圍0~247(十進(jìn)制),各從機(jī)地址的尋址范圍為1~247;信息幀功能碼告訴被尋址到的終端執(zhí)行何種功能。有效碼范圍為1~255(十進(jìn)制),有關(guān)常用功能碼的內(nèi)容見圖2;數(shù)據(jù)域包含了終端需要的數(shù)據(jù)或者響應(yīng)查詢時(shí)采集到的數(shù)據(jù);錯誤校驗(yàn)域是為了提高系統(tǒng)的安全性和效率,出錯校驗(yàn)采用了16 位循環(huán)冗余的方法,即CRC 校驗(yàn),CRC 域在信息幀的最后。
圖2 常用功能碼
使用STEP7 V5.5版本(其他版本也可),雙擊SIMATIC管理器圖標(biāo)進(jìn)入SIMATIC管理器,彈出新項(xiàng)目對話框,輸入名稱,單擊“完成”按鈕。項(xiàng)目建立完成后,鼠標(biāo)單擊SIMATIC管理器左側(cè)的項(xiàng)目名稱,選擇“插入新對象”選擇“SIMATIC S7-300站”,將此項(xiàng)目下插入一個(gè)S7-300站。
圖3 新建300 站點(diǎn)
選中插入的站,SIMATIC 管理器右側(cè)將出現(xiàn)“硬件”文件,雙擊或用鼠標(biāo)右鍵選擇“打開對象”將打開“硬件組態(tài)編輯器”,如圖4在右側(cè)硬件庫中依次選擇機(jī)架RAIL,機(jī)架的1 槽放入電源模塊,2 槽放置CPU 315-2DP,3 槽被CPU 占用,4槽放置CP340 RS422/485 通信模塊。
圖4 硬件配置組態(tài)
雙擊CP340所在的槽位,會彈出如圖5所示的對話框,左鍵點(diǎn)擊“參數(shù)”按鈕,配置模塊。左鍵雙擊protocol,如圖6,ASCII 選項(xiàng)卡下面部分設(shè)置模塊通信參數(shù)波特率9600,數(shù)據(jù)位8,停止位1,無校驗(yàn)位;對話框最后一個(gè)選項(xiàng)通信線路電氣接口特性(如圖7),選擇RS485兩線半雙工通信。設(shè)置完畢點(diǎn)擊確定。在硬件組態(tài)界面,點(diǎn)擊保存和編譯。下載組態(tài)到PLC。
圖5 CP340 模塊屬性
新建FB100 程序塊,為了方便編寫程序?qū)崿F(xiàn)功能,使用STL 語言,編寫通信程序,在接口部分建立數(shù)據(jù)對象,包括但不限于使能位、從機(jī)地址、功能碼、參考地址、數(shù)據(jù)數(shù)量、數(shù)據(jù)映像區(qū),故障位、故障代碼、超時(shí)連接時(shí)間(如圖8)。然后建立FB程序塊的背景數(shù)據(jù)塊DB100。
圖6 Protocol 配置ASCII
圖7 Protocol 配置Interface
圖8 數(shù)據(jù)對象
建立好數(shù)據(jù)對象后,新建程序段1,主站要對進(jìn)行從站通信的各站進(jìn)行初始化,發(fā)收信息命令,使用STL 編寫。
QDFS 位控制西門子PLC 自帶發(fā)送程序塊FB2發(fā)送數(shù)據(jù)。QDJS 控制FB3 接收數(shù)據(jù);接收段程序同樣檢測從機(jī)站號、功能碼、數(shù)據(jù)和校驗(yàn)碼;校驗(yàn)采用CRC16 校驗(yàn)方式。
主程序設(shè)計(jì)流程圖如圖10 所示。
圖9 發(fā)送數(shù)據(jù)程序代碼
圖10 主程序流程圖
使用Modsim32 調(diào)試軟件,連接串口轉(zhuǎn)485,485線雙線連接CP340 模塊通信端口,在軟件中新建仿真文件1,connection 選擇計(jì)算機(jī)中對應(yīng)端口,建立通信,device ID 設(shè)置從機(jī)站號,起始地址以及數(shù)據(jù) 長度。指示燈閃爍正常。在PLC 程序中新建程序塊FC10,以及通信測試數(shù)據(jù)塊DB10 進(jìn)行數(shù)據(jù)測試。在仿真文件寄存器 40001-40010 中寫入數(shù)據(jù),在DB10.DBW0-DB10.DBW18 地址中可以收到仿真文件中寫入的數(shù)據(jù);主站讀從站數(shù)據(jù)正常;在DB20.DBW0-DB10.DBW38 中強(qiáng)制寫入數(shù)據(jù),從仿真文件寄存器40011-40020 中可以收到主站發(fā)送數(shù)據(jù);測試結(jié)果正常(圖11)。
圖11 仿真文件
本文在Modbus協(xié)議的規(guī)則基礎(chǔ)上,運(yùn)用西門子PLC軟件,使用STL語言編寫適用于CP340模塊的Modbus主站通信程序,通過調(diào)試實(shí)現(xiàn)Modbus通信協(xié)議的主站功能。運(yùn)用主機(jī)輪詢機(jī)制,保證每一個(gè)從設(shè)備的信息能夠及時(shí)的發(fā)送到主站進(jìn)行分析處理。省去了昂貴CP341+DOUGLE費(fèi)用,程序編寫靈活,重復(fù)利用率高,可在工程中廣闊應(yīng)用。
[1] 廖常初.S7-300/400 PLC 應(yīng)用技術(shù).[M].北京:機(jī)械工業(yè)出版社,2005.
[2] 邊春元,任雙燕,滿永奎,等.S7-300/400 PLC 實(shí)用開發(fā)指南[M].北京:機(jī)械工業(yè)出版社,2007.
[3] Siemens AG.S7-300 CP340 的PtP 耦合與組態(tài) 設(shè)備手冊 [Z].2007.20-26,200-203.
[4] MODICON,Inc.,Industrial Automation Systems.Modicon Modbus Protocol Reference Guide [Z].1996.http://www.modbus.org/docs/PI_MBUS_300.pdf.