三菱PLC和PC機通過程式設計口序列通訊實現
一個完整的命令幀由控制字元STX(02H)、命令碼(CMD)、資料段、控制字元ETX(03H)以及和校驗碼五部分組成。其中,和校驗碼是從命令碼到控制字元ETX的所有字元的ASCII碼(十六進位制)相加所得結果的最低兩位數。
①PC機“讀”命令幀
“讀”命令幀由報文開始標誌、命令碼、軟元件首地址、軟元件資料長度(位元組數)、報文結束標誌以及和校驗碼組成。
當通訊正確時,PLC返回的應答幀由報文開始標誌、資料段、報文結束標誌以及和校驗碼組成;通訊出錯時,PLC應答“NAK”。
②PC機“強制ON”命令幀
PC機“強制ON”命令幀由報文開始標誌、命令碼(37H)、軟元件地址、報文結束標誌以及和校驗碼組成。接收命令正常時,PLC應答“ACK”;接收出錯時,PLC應答“NAK”。
③PC機“強制OFF”命令幀
PC機“強制OFF”命令幀由報文開始標誌、命令碼(38H)、軟元件地址、報文結束標誌以及和校驗碼組成。接收命令正常時,PLC應答“ACK”;接收出錯時,PLC應答“NAK”。
④PC機“寫”命令幀
PC機“寫”命令幀由報文開始標誌、命令碼、軟元件首地址、軟元件資料長度(位元組數)、待寫入軟元件的資料、報文結束標誌以及和校驗碼組成,如圖3所示。寫入正常時,PLC應答“ACK”;寫入出錯時,PLC應答“NAK”。
圖3 “寫”命令幀
3 LabVIEW程式設計
在LabVlEW程式設計中,系統利用虛擬儀器軟體規範VISA(virtual instrument software architecture)實現序列通訊。VISA本身並不具有儀器程式設計能力,它通過呼叫相應裝置驅動器的高層應用程式程式設計介面(API)進行程式設計。
首先對埠進行配置,然後傳送“ENQ”訊號給PLC請求通訊,在收到PLC返回的“ACK”訊號後,PC機連續對PLC進行“讀取”和“寫入”操作,通訊結束後關閉埠。PC機和PLC序列通訊的程式結構如圖4所示。
圖4 序列通訊程式流程圖
3.1 串列埠初始化
串列埠按照Fx系列PLC的標準通訊引數進行配置:①波特率為9 600 bit/s;②資料位元為7位;③奇偶校驗方式採用偶校驗;④停止位為1位。
3.2 請求通訊
開始通訊時,PC機發送“ENQ”指令查詢PLC是否準備好,同時也檢查PC機到PLC的連線是否正確。當接收到字元後,若PLC處在RUN狀態,則要等到本次掃描週期結束時才應答;若PLC處在STOP狀態,則馬上應答。通訊正常時,PLC應答“ACK”;通訊出錯時,應答“NAK”。
3.3 讀取PLC軟元件狀態
程式首先通過VISA寫入節點發送命令字元“0”讀取PLC相應軟元件的狀態,然後VISA讀取節點獲得PLC返回資料。寫入和讀取的字串都是十六進位制形式的。通過對讀取的字串的拆分可獲得相應軟元件每一位的狀態,從而起到監視PLC的作用。
3.4 資料寫入PLC軟元件
程式首先通過VISA寫入節點發送命令字元“1”對相應的軟元件進行寫入操作,然後VISA讀取節點獲得PLC返回的應答幀,若寫入正確,PLC應答“ACK”;若寫入錯誤,PLC應答“NAK”。將寫入資料傳送至PLC軟元件所對應的地址,即可對軟元件的任意位進行實時操作。資料寫入PLC的程式框圖如圖5所示。
圖5 資料寫入PLC的程式框圖
3.5 關閉串列埠
通訊結束後,需使用VISA關閉節點關閉串列埠裝置,否則程式會一直佔用串列埠資源,導致其他程式無法訪問。
4 結束語
以PC機和PLC分別構成上、下位機的監控系統在工業控制中應用廣泛。本文通過程式設計口直接實現三菱PLC與PC機之間的序列通訊,無需使用通訊模組,既節省了成本又簡化了系統,具有較大的實用價值。同時,結合相關硬體,本文以LabVlEW作為開發平臺設計了相應的通訊程式。實驗結果表明,該通訊方式方便簡單、穩定可靠,具有廣泛的應用
相關推薦
三菱PLC和PC機通過程式設計口序列通訊實現
2.3 命令幀 一個完整的命令幀由控制字元STX(02H)、命令碼(CMD)、資料段、控制字元ETX(03H)以及和校驗碼五部分組成。其中,和校驗碼是從命令碼到控制字元ETX的所有字元的ASCII碼(十六進位制)相加所得結果的最低兩位數。 ①PC機“讀”命令幀 “讀”命令幀由
c#通過網線讀取三菱PLC資料
一、寫入PLC資料 public static bool PlcWrite(int adres, int count, string SendData) { if (Sys.PlcComUse == 0) retu
上位機操作三菱PLC指令規範 轉載
通訊程式設計在自動化系統的應用越來越廣泛,例如plc與操作介面的資料交換,通過通訊對變頻器的控制,plc的連網等等。要想實現plc的通訊程式設計,首先所選的plc必須有強大的通訊能力,就是說plc的作業系統能夠支援多種通訊格式,通常一種品牌的plc如果能夠提供給使用者更多的
stm32與三菱PLC通信
系統 16px 系列 雙機 rs485 程序 dev style 字符串 一、三菱PLC通訊概要 三菱PLC FX系列通信結構如下圖所示: 三菱PLC FX系列的通信規格如下圖所示: 三菱PLC FX系列一般有以下幾種通信模塊,以FX2N為例: FX
三菱PLC聯網的網絡結構原理
com 子郵件 循環 質量 mod 深圳 功能 可維護性 blog 三菱公司PLC網絡繼承了傳統使用的MELSEC網絡,並使其在性能、功能、使用簡便等方面更勝一籌。Q系列PLC提供層次清晰的三層網絡,針對各種用途提供最合適的網絡產品。 1、信息層/
c# 數據寫入三菱PLC
row ice IT PC utl 成功 ddr nbsp HR public void Data_Write_Value(int[] m_write_data) { int lSize = 2; string[
python 讀寫三菱PLC數據,使用以太網讀寫Q系列,L系列,Fx系列的PLC數據
的人 tps github 演示 cts 設置 但是 服務器程序 簡單 本文將使用一個gitHub開源的組件技術來讀寫三菱的plc數據,使用的是基於以太網的TCP/IP實現,不需要額外的組件,讀取操作只要放到後臺線程就不會卡死線程,本組件支持超級方便的高性能讀寫操作 git
JZX879|西門子PLC|施耐德PLC|三菱PLC|遠距離通訊|歐姆龍|技卓芯
可程式設計邏輯控制器是種專門為在工業環境下應用而設計的數字運算操作電子系統。它採用一種可程式設計的儲存器,在其內部儲存執行邏輯運算、順序控制、定時、計數和算術運算等操作的指令,通過數字式或模擬式的輸入輸出來控制各種型別的機械裝置或生產過程。 ![JZX879
一.三菱PLC+HMI+啟保停
Tip:筆記內容根據網上資料外加個人理解整理而來,希望能幫助到有需要的人。 簡介: 三菱PLC啟保停程式 實現對Y輸出的啟保停控制。 HMI組態實現觸控式螢幕對Y輸出的啟保停控制。 筆記相關素材:https://www.lanzous.com/i2rwwbe 教程:
【PLC】三菱PLC MITSUBISHI ELECTRIC FX3U-16M、FX3U-46M 型號PLC Monitor Utility控制元件通訊設定
配置 第一步、選擇通訊方式 – 串列埠通訊;選擇串列埠號 – COM3(示例);設定超時時間。 第二部、選擇CPU型別 – FX3UC;波特率 – 115200;選擇控制方式-DTR and RTS。 第三步、完成配置,測試連線。
【PLC】三菱PLC控制元件 PLCActiveXEnvironment3.0
ErrorCode[錯誤程式碼] 0x01802007 Transfer setting[傳輸設定] Receive data error [接收資料錯誤] The data received is abnorma
第三課輸入和顯示——C#計算器程式設計教學
首先完成輸入功能。前面講到了那個語句cacl.EnterString(key);那麼,方法EnterString(string str)是必須有的,而且是public。 最先想到的迴圈語句是什麼呢?想想介面上的Button的Text,都是不同的,但有隻是輸入的,有功能鍵的,
LINUX和PC之間通過串列埠傳檔案
轉自:http://www.360doc.com/content/090528/23/150654_3691341.html 從PC機下載東西到開發板的嵌入式linux系統裡面,首先會想到用tftp sftp等網路工具從網口下載。但如果網路用不了,只能通過串列埠下載怎麼辦呢
基於VS應用開發的WinCE和PC機的區別
WindowsCE是微軟公司嵌入式、移動計算平臺的基礎,它是一個開放的、可升級的32位嵌入式作業系統,是基於掌上型電腦類的電子裝置作業系統,它是精簡的Windows 95,Windows CE的圖形使用者介面相當出色。對於大部分製造業企業,測量儀器的自動資料採集一直是個
VirtualBox實現宿主機和虛擬機之間網絡的通訊
popu cto 通信 res data rest data- 虛擬網絡 bsp 摘要:實現宿主機和虛擬機之間網絡的通訊 環境: 宿主機操作系統 WindowsXP 虛擬機軟件 VirtualBox 虛
劍指Offer - 和為S的連續正數序列(Java實現)
題目描述: 小明很喜歡數學,有一天他在做數學作業時,要求計算出9~16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100(至少包括兩個數)。沒多久,他就得到另一組連續正數和為100的序列:18,19,20,21,22。現在把問題
java序列化(transient和static修飾的變數的序列化實現)
序列化 (程式碼摘抄自Java程式設計思想) 平常序列化知識不做介紹 把書裡的有意思東西摘抄下來 用transient修飾是變數是否可以序列化? 靜態變數是否可以初始化? 1.用 Externalizable 介面實現序列化(在重寫的writeExterna
Oracale序列是什麼?:通過一個用序列+觸發器實現主鍵自增的例項來說明
一.Oracle序列是幹嘛的? 為表中的行自動生成唯一的序列號,從而實現主鍵自增; 二.為什麼要在Oracle中使用序列? 像mysql中的資料庫表中的主鍵值都可以在建立表的時候, 通過設定自增就能夠很容易實現。 但是oracle中沒有
三菱FX系列PLC與PC通訊的實現之專有協議(計算機聯接)的程式設計之二
在實現這程式的過程中,關於字串的使用。 1、CString型別加法。指令操作是由各個功能區組成的。 Instruction = pParentDlg->m_StationID + pParentDlg->m_PCID + Instruction + pParen
三菱FX系列PLC程式設計口通訊協議總覽
該協議實際上適用於PLC程式設計埠以及FX-232AW模組的通訊 通訊格式 命令(CMD) 命令碼 目標裝置 DEVICE READ CMD "0" X,Y,M,S,T,C,D DEVICE WRITE CMD "1" X,Y,