wlmissyou
級(jí)別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 61 個(gè)
工控威望: 164 點(diǎn)
下載積分: 1273 分
在線時(shí)間: 95(小時(shí))
注冊(cè)時(shí)間: 2017-06-11
最后登錄: 2024-11-10
查看wlmissyou的 主題 / 回貼
樓主  發(fā)表于: 2023-05-27 16:15
新增特點(diǎn):
1、不需要在端口界面上進(jìn)行硬件組態(tài),指令中集成了Port_Config、Send_Config、Receive_Config,通信指令的輸入腳就可以進(jìn)行端口組態(tài)。
2、指令的錯(cuò)誤代碼更加規(guī)范。
3、增加MBrtuMastrer1500Manual說(shuō)明塊
4、除例程外,還制做了項(xiàng)目庫(kù)、全局庫(kù)
一、   概述
本文描述的程序文件可以在西門(mén)子CM PtP RS422/485 BA 6ES7540-1AB00-0AA0通信模塊實(shí)現(xiàn)MODBUS RTU 主站通信。
本程序特點(diǎn):
1.     實(shí)現(xiàn)MODBUS RTU 功能號(hào)1、2、3、4、5、6、15、16。
2.     支持單臺(tái)CPU下多臺(tái)通信模塊,一臺(tái)通信模塊使用一套程序,互不干擾。
3.     可單條或多條 輪詢指令 離線,即從站掉電,可手動(dòng)讓其離線,減少輪詢時(shí)間。
4.     可控制每條指令間的時(shí)間間隔。
5.     程序量再大也不必?fù)?dān)心CPU掃描時(shí)間,因?yàn)槲催\(yùn)行的指令會(huì)跳過(guò)。
6.     每條指令單獨(dú)返回錯(cuò)誤信息。
7.     不必?fù)?dān)心程序塊和數(shù)據(jù)塊多,支持多重背景。
8.     程序組態(tài)直觀,簡(jiǎn)單,方便,靈活。
9.    指令內(nèi)集成端口配置指令,發(fā)送和接收配置指令,外部只需簡(jiǎn)單參數(shù)即可。
10.  在冗余系統(tǒng)上使用通過(guò)。
二、   硬件網(wǎng)絡(luò)施工
關(guān)于通信網(wǎng)絡(luò)施工,盡量選擇西門(mén)子485紫皮電纜,你胡弄網(wǎng)絡(luò),網(wǎng)絡(luò)就胡弄你,所以質(zhì)量可靠的硬件是保證通信正常的前提。若通信線路過(guò)長(zhǎng),請(qǐng)使用RS485中繼器,但請(qǐng)不要西門(mén)子RS485中繼器,因?yàn)椴恢С諱ODBUS通信。具體接線方式請(qǐng)查閱相關(guān)資料。
CM PtP RS422/485 BA接線圖:下表顯示了 CM PtP RS422/485 BA 前面板上 15 針 sub-D 型插槽的針腳分配。
[ 此帖被wlmissyou在2023-05-27 17:31重新編輯 ]
wlmissyou
級(jí)別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 61 個(gè)
工控威望: 164 點(diǎn)
下載積分: 1273 分
在線時(shí)間: 95(小時(shí))
注冊(cè)時(shí)間: 2017-06-11
最后登錄: 2024-11-10
查看wlmissyou的 主題 / 回貼
1樓  發(fā)表于: 2023-05-27 17:32
三、      程序說(shuō)明及使用方法
您得到的程序如圖:

這是由TIA V16歸檔后文件,打開(kāi)TIA V16后,打開(kāi)此文件,會(huì)提示新建文件夾,恢復(fù)后會(huì)看到項(xiàng)目已經(jīng)打開(kāi)。

2.     程序工作原理

3.     程序塊功能說(shuō)明:
MBrtuMaster1500PointerDB1:用戶數(shù)據(jù)塊。非優(yōu)化數(shù)據(jù)塊?梢允菃蝹(gè)數(shù)據(jù)塊,也可以是多個(gè)數(shù)據(jù)塊。從站返回的數(shù)據(jù)保存在這個(gè)數(shù)據(jù)里,向從站寫(xiě)入的數(shù)據(jù)也在這個(gè)數(shù)據(jù)塊里。
MBrtuMaster1500BufferDB1:緩沖區(qū)數(shù)據(jù)塊。非優(yōu)化數(shù)據(jù)塊一個(gè)緩沖區(qū)數(shù)據(jù)塊對(duì)應(yīng)一個(gè)串口。將要發(fā)送的數(shù)據(jù)在這里進(jìn)行校驗(yàn)操作,接收回的數(shù)據(jù)同樣在這里校驗(yàn)操作。
MBrtuMaster1500Msg:主站輪詢指令功能塊。可以單個(gè)塊運(yùn)行,也可以多個(gè)塊輪流運(yùn)行。根據(jù)輸入?yún)?shù)決定把哪些用戶數(shù)據(jù)放入緩沖區(qū)數(shù)據(jù)塊,再將從站返回?cái)?shù)據(jù)放回用戶數(shù)據(jù)塊。注意:同一時(shí)刻只允許一個(gè)主站輪詢指令工作,否同返回9006錯(cuò)誤。
MBrtuMaster1500Crtl:主站通信控制功能塊。一個(gè)通信控制功能塊對(duì)應(yīng)一個(gè)串口。主要功能為發(fā)送和接收與從站的通信的報(bào)文。
4.     功能塊參數(shù)說(shuō)明
MBrtuMaster1500Crtl

名稱類(lèi)型數(shù)據(jù)類(lèi)型說(shuō)明允許值,說(shuō)明
iCpuHWIDInputHW_SUBMODULECPU硬件標(biāo)識(shí)符 設(shè)備組態(tài)》CPU》系統(tǒng)常數(shù)》名稱:Local類(lèi)型:Hw_SubModule的硬件標(biāo)識(shí)符
iProtInputHW_SUBMODULE通信模塊硬件標(biāo)識(shí)符 設(shè)備組態(tài)》通信模塊》系統(tǒng)常數(shù)》硬件標(biāo)識(shí)符
iBaudInputUInt端口數(shù)據(jù)傳輸速率1 = 300 bps,
2 = 600 bps,
3 = 1200 bps,
4 = 2400 bps,
5 = 4800 bps,
6 = 9600 bps,
7 = 19200 bps,
iParityInputUInt端口的奇偶校驗(yàn)1 = 無(wú)奇偶校驗(yàn),
2 = 偶校驗(yàn),
3 = 奇校驗(yàn),
4 = 傳號(hào)校驗(yàn),
5 = 空號(hào)校驗(yàn),
6 = 任意
iSendTimeInputTime發(fā)送前定時(shí)時(shí)間值可以很大,但沒(méi)有必要
iRcvTimeOutInputTime接收信息超時(shí)時(shí)間值可以很大,但沒(méi)有必要
iBufferDBNumberInputUDIntMODBUS緩沖區(qū)數(shù)據(jù)塊號(hào)如:UDINT#3000
iBufferInputVariantMODBUS緩沖區(qū)指針如:"MBrtuMaster1500BufferDB1".Buffer
qLicenseOutputBool授權(quán)
qDoneOutputBool初始化完成標(biāo)志位指令完成后,一直為真
qWorkingSlaveOutputUInt正在與從站通信的從站地址可能值為1到247
qWorkConfigStatusOutputWord組態(tài)PtP端口狀態(tài)詳見(jiàn)Port_Config指令幫助
qSendConfigStatusOutputWord組態(tài)PtP發(fā)送方狀態(tài)詳見(jiàn)Send_Config指令幫助
qReceiveConfigStatusOutputWord組態(tài)PtP接收方狀態(tài)詳見(jiàn)Receive_Config指令幫助


MBrtuMaster1500Msg

名稱類(lèi)型數(shù)據(jù)類(lèi)型說(shuō)明允許值,說(shuō)明
iInstructionActiveInputBool真為激活指令,假為不激活指令
iNewRequestInputBool讀寫(xiě)請(qǐng)求位每一個(gè)新的讀寫(xiě)請(qǐng)求必須使用脈沖觸發(fā)
iSlaveInputUSInt從站地址1到247
iReadWriteInputUSInt0=讀,1=寫(xiě)1. 開(kāi)關(guān)量輸出和保持寄存器支持讀和寫(xiě)功能
2. 開(kāi)關(guān)量輸入和模擬量輸入只支持讀功能
iAddressInputUSInt讀寫(xiě)從站的寄存器地址選擇讀寫(xiě)的數(shù)據(jù)類(lèi)型
00001 至 0xxxx - 開(kāi)關(guān)量輸出
10001 至 1xxxx - 開(kāi)關(guān)量輸入
30001 至 3xxxx - 模擬量輸入
40001 至 4xxxx - 保持寄存器
400001 至 465535 - 保持寄存器
iCountInputUInt數(shù)據(jù)個(gè)數(shù)通訊的數(shù)據(jù)個(gè)數(shù)(位或字的個(gè)數(shù)
Modbus主站可讀/寫(xiě)的最大數(shù)據(jù)量為120個(gè)字
(是指每一個(gè) MBrtuMasterMsg 指令)
iBufferDBNumberInputUDIntMODBUS緩沖區(qū)數(shù)據(jù)塊號(hào)如:UDINT#3000
iPointerDBNumberInputUDIntMODBUS讀寫(xiě)數(shù)據(jù)塊號(hào)如:UDINT#2000
iPointerByteInputUInt用戶數(shù)據(jù)塊字節(jié)地址1. 如果是讀指令,讀回的數(shù)據(jù)放到數(shù)據(jù)區(qū)這個(gè)字節(jié)開(kāi)始的區(qū)域中
2. 如果是寫(xiě)指令,要寫(xiě)出的數(shù)據(jù)從這個(gè)字節(jié)開(kāi)始的數(shù)據(jù)區(qū)取出
qDoneOutputBool完成位此位為脈沖信號(hào),需要保持信號(hào),用戶自行加起保停程序,完成位為啟動(dòng),讀寫(xiě)請(qǐng)求位為停止即可。
qBusyOutputBool指令工作中BUSY = 1:作業(yè)尚未完成。BUSY = 0:作業(yè)完成
qErrorOutputBool通信錯(cuò)誤錯(cuò)誤規(guī)范:
0000 命令完成沒(méi)有錯(cuò)誤
7000 指令未執(zhí)行
7001 指令開(kāi)始工作
9003 接收超時(shí)
9004 輸入?yún)?shù)錯(cuò)誤
9005 Modbus未激活
9006 忙 其它指令在工作
9007 功能號(hào)不符
9008 CRC校驗(yàn)錯(cuò)誤
9009 本指令未啟用
900A 發(fā)送錯(cuò)誤
900B 發(fā)送超時(shí)
900C 接收錯(cuò)誤
900D 接收的數(shù)據(jù)長(zhǎng)度與預(yù)計(jì)長(zhǎng)度不符
900E 簽名錯(cuò)誤
91XX 從站返回的錯(cuò)誤
qSendStatusOutputWord發(fā)送指令狀態(tài)及錯(cuò)誤見(jiàn)發(fā)送指令規(guī)范
qRevStatusOutputWord接收指令狀態(tài)及錯(cuò)誤見(jiàn)接收指令規(guī)范
wlmissyou
級(jí)別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 61 個(gè)
工控威望: 164 點(diǎn)
下載積分: 1273 分
在線時(shí)間: 95(小時(shí))
注冊(cè)時(shí)間: 2017-06-11
最后登錄: 2024-11-10
查看wlmissyou的 主題 / 回貼
2樓  發(fā)表于: 2023-05-27 17:35
MBrtuMaster1500BufferDB1
非優(yōu)化數(shù)據(jù)塊。緩沖區(qū)數(shù)據(jù)塊是一個(gè)400(不可小于400)個(gè)字節(jié)數(shù)據(jù)塊,可以復(fù)制,可改符號(hào),可改絕對(duì)地址


MBrtuMaster1500PointerDB1
非優(yōu)化數(shù)據(jù)塊用戶數(shù)據(jù)塊用戶可自行定義,無(wú)要求。


五、 程序注意
符號(hào)地址和絕對(duì)地址都可更改。
當(dāng)功能號(hào)為5時(shí),用戶數(shù)據(jù)塊的字節(jié)地址的第0位有效。
當(dāng)功能號(hào)為1,2,15時(shí),用戶數(shù)據(jù)塊的字節(jié)地址的從第0位開(kāi)始有效。
程序無(wú)法在仿真器內(nèi)工作。
六、 程序高級(jí)應(yīng)用
1.當(dāng)有多臺(tái)從站執(zhí)行相同操作時(shí),如讀取相同數(shù)據(jù)寄存器。這時(shí)可將指令的完成位連接到讀寫(xiě)請(qǐng)求位,將從站地址和用戶數(shù)據(jù)塊字節(jié)號(hào)做成變量,使用完成位改變這兩個(gè)變量,就可以實(shí)現(xiàn)單指令輪詢多主站。
2.當(dāng)用通信控制設(shè)備啟停等操作時(shí),或多從站時(shí)快速刷新單個(gè)從站數(shù)據(jù)時(shí),要求響應(yīng)時(shí)間快一些,而有些程序沒(méi)有這方面考慮。本程序在應(yīng)對(duì)此方面可以將單一輪詢指令的激活位置真,其它指令置假(用上升沿,僅一個(gè)掃描即可),這時(shí)不管其它指令在什么狀態(tài)都會(huì)將串口使用權(quán)讓出,優(yōu)先讓激活的指令運(yùn)行。


未完,等我程序哈