回覆列表
-
1 # 工控程式設計
-
2 # 控制研究控
我先來澄清一下你的問題中的概念!
PLC的指令大多是用作處理本站點內的I/O資訊的,當和非本PLC站點的CPU,I/O或者儀表等,有資料交換的時候就需要用到通訊指令!一般就是send/receive收發這些!所以你說的PLC傳送的指令,其實應該是PLC透過傳送指令,傳送出一些資料資訊,然後你想用其他的軟體去接收到這PLC發出的這些資訊!---問題的根本其實是一個通訊問題!還是來說一些常規的PLC通訊知識點吧:
應該說PLC通訊最常見的還是串列埠通訊,比如modbus RTU通訊。下圖是西門子200PLC中的2個指令:
這個圖片中的XMT指令是傳送指令,RCV是接收指令。這裡的port就是PLC上的通訊口,比如prot0。TBL就是你想傳送或者接收資料的一串連續資料地址,如果是XMT,那麼就是將這串資料傳送出去!
plc透過串列埠傳送出去的資料,通常要監控發出的數值到底是什麼的時候,就會想到用串列埠除錯助手這樣的工具,當然這個串列埠除錯助手這個工具,你可以用C, VB, labview等你熟悉的程式設計軟體自己開發一個出來這樣的功能就能監控到PLC發出的資料了!
還是看一個我之前做的測試吧:
這個圖片就是我利用XMT指令透過通訊口0(port0),把VB101-VB108中的8個數據傳送出去,又利用串列埠除錯助手接收到的截圖!可以看到我傳送的資料是 1 3 0 0 0 2 196 11,串列埠除錯助手接收到的資料是01 03 00 00 00 02 C4 0B,這兩串資料是一樣的,不過是一個是十進位制顯示,一個是16進位制顯示!
這個例子就實現了電腦上執行的串列埠除錯助手軟體,監控到我PLC串列埠發出的資料,實現了你的題目要求!當然,這是最簡單實現方法!但是,思路和方向也就是這樣了,PLC提供了一些通訊指令,比如網路通訊的和串列埠通訊的,當然有一些特殊的協議是不開放的,在知道協議報文的情況下,自己開發一個介面來實現通訊和對這些報文的解析就可以了!
這個功能會涉及哪些知識。
首先得了解通訊硬體上的一些常識。
比如常見到的通訊方式還是很多的,有RS232,RS485,USB等等。
可以事先對這些常用的通訊作一個瞭解。
自己硬體上的埠確認是RS232還是RS485,或是網口。
得保證通訊的兩個硬體能夠連線上。
例如我們常會見到PLC的埠為RS232序列口,
但電腦上只有USB口。
這樣就得透過轉換才能將兩者連線起來。
某寶會有USB轉RS232資料線。
RS485也是極為常見到的通訊方式。
也有對應的RS232,RS485互轉模組或資料線,如下圖。
這是硬體通訊上,我們要了解與注意的。
然後是建議先熟悉一種電腦軟體程式設計工具。
微軟系統上使用的話,可以使用它家的C#或MFC,
可以下載與安裝vs2010來看看。
C#或MFC都可以很方便的編寫出通訊程式。
這方面的程式設計學習會是一個比較系統的學習過程。
如果沒有硬性限制的話,
C#可以先看看,比較好上手。
最後是從官網等渠道準備PLC的通訊手冊,瞭解其通訊幀的格式。
比如使用MFC或C#編寫軟體來接收PLC指令。
通訊程式碼得根據通訊協議來編寫,
不同廠家的PLC,通訊協議並沒有統一標準,
但電腦軟體編寫,靈活性是很強的,
MFC或C#都能夠編寫程式碼,靈活應對。
例如我前面錄製的教程:三菱PLC與上位機串列埠通訊。
要向PLC傳送什麼指令?PLC又會回饋什麼指令?
X,Y,D暫存器資料讀寫時,PLC傳送的指令格式是什麼?
軟體如何解析?
等等一系列問題都得參考通訊手冊。
這裡就不貼出程式碼了。
以上僅是一些建議與分享。