1756-IM16I
1756-IM16I
1756-IM16I
http://S7.NET是一個(gè)C#編寫(xiě)的,以太網(wǎng)連接西門(mén)子帶有Profinet接口CPU的dll驅(qū)動(dòng)庫(kù),官方文件介紹可連接S7-200、S7-300、S7-400、S7-1200、S7-1500。(經(jīng)本人測(cè)試,也可連接S7200 SMART)
http://S7.NET使用問(wèn)題說(shuō)明:(本人踩過(guò)的坑,寫(xiě)給大家借鑒一下)
1、連接S7200 SMART需使用S71200、S71500驅(qū)動(dòng)都可以。
2、讀寫(xiě)S7200或S7200 SMART的V區(qū)數(shù)據(jù)時(shí),DB塊號(hào)需設(shè)置為1。
3、使用中發(fā)現(xiàn)下面兩個(gè)bug:
public object Read(DataType dataType, int db, int startByteAdr, VarType varType, int varCount)
public ErrorCode Write(DataType dataType, int db, int startByteAdr, object value)
上述兩個(gè)函數(shù)無(wú)法完成位操作,請(qǐng)使用其他函數(shù)代替。
public object Read(DataType dataType, int db, int startByteAdr, VarType varType, int varCount)
該函數(shù)在讀取DInt(32位有符號(hào)整型)數(shù)據(jù)時(shí)出現(xiàn)問(wèn)題,讀取不了負(fù)數(shù),負(fù)數(shù)時(shí),值始終為-2147483648。
4、本程序中一次僅讀取1個(gè)數(shù)據(jù),實(shí)際應(yīng)用中請(qǐng)按照http://S7.NET文檔修改!
測(cè)試環(huán)境說(shuō)明:
1、連接S7200 SMART:
測(cè)試硬件:CPU SR20,自帶以太網(wǎng)接口
2、連接S7-200:(因該系列CPU無(wú)以太網(wǎng)接口,需外接模塊,如:西門(mén)子CP243-1,大連德嘉CP243u、ETH-ibus等)
測(cè)試硬件:S7-200 CPU226 CN + 大連德嘉CP243u模塊(西門(mén)子CP243-1設(shè)置太麻煩,這里用CP243u代替,協(xié)議都一樣)。
3、連接S7-300:(該系列PLC也多數(shù)不帶以太網(wǎng)口,需外接模塊,如CP343-1、大連德嘉ETH-MPI(Plus)等)
測(cè)試硬件1:CPU 314 + ETH-MPI(Plus) (同上,CP343-1設(shè)置同樣麻煩,這里用ETH-MPI(Plus)代替,協(xié)議一樣)
測(cè)試硬件2:CPU315-2PN/DP,自帶以太網(wǎng)接口
4、連接S7-1200:
測(cè)試硬件:CPU 1214C AC/DC/Rly
5、連接S7-1500:
測(cè)試硬件:CPU 1511-1PN
6、連接S7-400:未經(jīng)測(cè)試,鄙人手上無(wú)S7-400 CPU,如有哪位幫忙測(cè)試,請(qǐng)告知結(jié)果(請(qǐng)給出詳細(xì)硬件說(shuō)明)。
下面是PLC建立連接部分代碼片段:
建立連接:
讀函數(shù):
寫(xiě)函數(shù):
這里有一條非常重要的設(shè)置,之前忘記了,現(xiàn)在補(bǔ)上:如下圖,1500或者1200編程的時(shí)候下圖兩個(gè)地方需要注意:
讀寫(xiě)DB塊的話下面這兩個(gè)地方需要設(shè)置一下: