程式讀寫 如果用C 編寫程式讀寫西門子PLC?

2021-10-16 02:45:00 字數 2320 閱讀 4792

s7.net介紹:

s7.net是乙個c#編寫的,乙太網連線西門子帶有profinet介面cpu的dll驅動庫,官方檔案介紹可連線s7-200、s7-300、s7-400、s7-1200、s7-1500。(經本人測試,也可連線s7200 smart)

s7.net使用問題說明:

(本人踩過的坑,寫給大家借鑑一下)

1、連線s7200 smart需使用s71200、s71500驅動都可以。

2、讀寫s7200或s7200 smart的v區資料時,db塊號需設定為1。

3、使用中發現下面兩個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)

上述兩個函式無法完成位操作,請使用其他函式代替。

public object read(datatype datatype, int db, int startbyteadr, vartype vartype, int varcount)

該函式在讀取dint(32位有符號整型)資料時出現問題,讀取不了負數,負數時,值始終為-2147483648。

4、本程式中一次僅讀取1個資料,實際應用中請按照s7.net文件修改!

測試環境說明:

1、連線s7200 smart:

測試硬體:cpu sr20,自帶乙太網介面

2、連線s7-200:(因該系列cpu無乙太網介面,需外接模組,如:西門子cp243-1,大連德嘉cp243u、eth-ibus等)

測試硬體:s7-200 cpu226 cn + 大連德嘉cp243u模組(西門子cp243-1設定太麻煩,這裡用cp243u代替,協議都一樣)。

3、連線s7-300:(該系列plc也多數不帶乙太網口,需外接模組,如cp343-1、大連德嘉eth-mpi(plus)等)

測試硬體1:cpu 314 + eth-mpi(plus) (同上,cp343-1設定同樣麻煩,這裡用eth-mpi(plus)代替,協議一樣)

測試硬體2:cpu315-2pn/dp,自帶乙太網介面

4、連線s7-1200:

測試硬體:cpu 1214c ac/dc/rly

5、連線s7-1500:

測試硬體:cpu 1511-1pn

6、連線s7-400:未經測試,鄙人手上無s7-400 cpu,如有哪位幫忙測試,請告知結果(請給出詳細硬體說明)。

下面是plc建立連線部分**片段:

建立連線:

讀函式:

寫函式:

這裡有一條非常重要的設定,之前忘記了,現在補上:如下圖,1500或者1200程式設計的時候下圖兩個地方需要注意:

讀寫db塊的話下面這兩個地方需要設定一下:

下篇更精彩:

牛人分享!工業裝置維修,我是怎樣跟工廠合作的?

爆!2020低壓電工國家題庫完整版從0到1的電工成長計畫,還在迷茫的電工值得一看!

C語言編寫程式計時

在我們程式設計的時候,有時候需要我們去監測程式執行的時間問題,尤其是在做加速或者做優化的時候,乙個程式執行的時間也許就是我們判斷程式好壞的標準,所以我們有時候要進行計時。因為用到了,所以做個記錄方便下次檢視 include stdio.h include time.h clock t start t...

Binder系統 C程式示例 編寫程式

一 server.c檔案的編寫 開啟驅動 bs binder open 128 1024 if bs 註冊服務 add service 註冊服務 svcmgr是0表示向服務管理發訊息,最後乙個是指標 ret svcmgr publish bs,svcmgr,hello void 123 if ret...

用c編寫cgi程式

cgi的工作原理介紹 cgi common gateway inte ce 是乙個web伺服器提供資訊服務的標準介面,通過這樣乙個介面,web伺服器能夠執行程式,並將程式輸出的資訊返回給瀏覽器。因為在web網上的資料都是靜態的,通過cgi程式能夠動態的處理瀏覽者的請求,如儲存使用者輸入的資訊,根據使...