【聯系人:蘇烈格】
【手 機: 18030170117】
【直線座機:0592-5211182】
【QQ: 3004859263 】
【傳 真: 0592-5165561】
【郵 箱: 3004859263 @qq.com】
【信譽第一、誠信交易】【長期銷售、安全穩定】
【稱心滿意、服務動力】【真誠面對、溝通無限】
【服務第一、一諾千金】【質量承諾、客戶滿意】
----------------------------------------------------------------------
----------------------------------------------------------------------
基于多線程技術的PLC與PC的通訊方式
2018-03-13 來源: 工控網
摘要:介紹了推進系統的基本組成,重點介紹了基于多線程技術的PLC與PC的通訊方式,給出了部分VC6.0的程序,該種通訊方法簡單、實用有較高的實用價值。
關鍵詞:串行通訊PLC多線程重疊結構VC6.0
0.引言
在現代工業控制系統中,PLC以其高可靠性、適應工業過程現場、強大的聯網功能等特點,被廣泛應用。可實現順序控制、PID回路調節、高速數據采集分析、計算機上位管理,是實現機電一體化的重要手段和發展方向。但PLC無法單獨構成完整的控制系統,無法進行復雜的運算和顯示各種實時控制圖表和曲線,無良好的用戶界面,不便于監控。將個人計算機(PC)與PLC結合起來使用,可以使二者優勢互補,充分利用個人計算機強大的人機接口功能、豐富的應用軟件和低廉的價格優勢,組成高性能價格比的控制系統。
1.系統構成
推進系統中,PC機選用工控計算機。它是整個控制系統的核心,是上位機。其主要利用良好的圖形用戶界面,顯示從PLC接收的開關量和控制手柄的位置,進行一些較復雜的數據運算,并且向PLC發出控制指令。
PLC是該系統的下位機,負責現場高速數據采集(控制手柄的位置),實現邏輯、定時、計數、PID調節等功能,通過串行通訊口向PC機傳送PLC工作狀態及有關數據,同時從PC機接受指令,向蜂鳴器、指示燈、滑油泵、控制手柄的位置等發出命令,實現PC機對控制系統的管理,提高了PLC的控制能力和控制范圍,使整個系統成為集散控制系統。
2.通訊協議
計算機與PLC之間的通信是建立在以RS232標準為基礎的異步雙向通信上的,FX系列PLC有其特定的通信格式,整個通信系統采用上位機主動的通信方式,PLC內部不需要編寫專門的通信程序,只要把數據存放在相應的數據寄存器中即可,每個數據寄存器都有相應的物理通信地址,通信時計算機直接對物理通信地址進行操作。通信過程中,傳輸字符和命令字以ASCⅡ碼為準,常用的字符及其ASCⅡ碼對應關系。
計算機與PLC進行通訊時,計算機與PLC之間是以幀為單位進行信息交換的,其中控制字符ENQ、ACK、NAK,可以構成單字符幀發送和接受,其余的信息幀發送和接受時都是由字符STX、命令字、數據、字符ETX以及和校驗5部分組成。
校驗和在信息幀的尾部用來判斷傳輸的正確與否,和校驗碼的計算方法是將命令碼到ETX之間的所有字符的ASCⅡ碼(十六進制數)相加,取所得和的最低2位數,在后面的通信程序設計里面還會提到。進行差錯檢驗的方法很多,常用的有奇偶校驗碼,水平垂直冗余校驗LRC,目前廣泛使用的是CRC校驗碼,它能查處99%以上18位或更長的突出錯誤,而在計算機與PLC點對點的短距離通訊時,出錯的幾率較小,因而采用校驗和法,基本能滿足要求。
3.多線程技術及在VC++串口通信程序中的實現
在Windows的一個進程內,包含一個或多個線程,每個線程共享所有的進程資源,包括打開的文件、信號標識及動態分配的內存等等。
一個進程內的所有線程使用同一個32位地址空間,而這些線程的執行由系統調度程序控制,調度程序決定哪個線程可執行和什么時候執行線程。線程有優先級別,優先權較低的線程必須等到優先權較高的線程執行完任務后再執行。在多處理器的機器上,調度程序可以把多個線程放到不同的處理器上運行,這樣可以使處理器的任務平衡,也提高系統的運行效率。
Windows內部的搶先調度程序在活動的線程之間分配CPU時間,Windows區分兩種不同類型的線程,一種是用戶界面線程(UserInterfaceThread),它包含消息循環或消息泵,用于處理接收到的消息;另一種是工作線程(WorkThread)它沒有消息循環,用于執行后臺任務、監視串口事件的線程即為工作線程。
Pneumax 1319.50.0200.01 05G
Norgren M/6016/50
SMC CQ2WA32TF-50DCZ
SMC C85WE25-100
Bosch 0822406092
SMC AW30-F03BE-1N
Rexroth R480051594
Camozzi 31M2A040A080
Phoenix 1DF17-152324
Festo DNC-50-350-PPV-A 163368 AD08
SMC AR6000-10
SMC CDM2B40-75
SMC CDMLN20-25-G79L
SMC CDQ2B32-50DM
SMC CMBN40-50
SMC ISG130-030
SMC VF3140-4DZ-03-0
SMC VZ4120-5MOZ-01-U
SMC CDMDN40-50C-B77L
SMC VT315
SMC VZ2250
SMC CDMKL25-300
Asco Joucomatic 52000090
Bosch Rexroth 0822341005
Diottalevi 9160062-032/004
Diottalevi 9055005-070/020
Cai D2050200110
Bosch Rexroth 2510510100
Parker P3HVA11LN
Parker P3KVA13LN
Smc KQ2LE10-00
SMC CDU10-50D
SMC CDQ2B32F-120DCZ-X439
SMC AFM40-F04D
MP Filtri VUOTOSTATOE0
SMC CDQ2B50TF-50DZ
SMC CDMKF25-50-G79L
SMC CDQP2B40-10D
SMC CMFA30-160
Hafner 260M-12-1/2
Legris 48902121
Festo MHA2-M1H-3/2G-2 Solenoid Valve 196118 A302 IP65
SMC SY7120-3DZ-C8F-Q
Legris 0107 06 00 Equal
SMC EVZ5123-9MOS-01F-Q
Pneumax 779/V.32.0.1A.M2
Norgren RA/8050/M/80
SMC CD85WE20-250-B
SMC CDMFN30-100
SMC VZ4150-5MNZ-02
SMC CDMFN30-100-G79L
Bosch Rexroth 5284110050
Bosch Rexroth R412010322
Pneumax G1017000
Pneumax 0766130676G
Pneumax 00L0003176F
SMC VZ2150-5MZ-01
SMC SY9420-5LOU-03F-Q
Parker 38KBTF19MPX
SMC CDQ2B50-35D
SMC EVF3122-5DZ-02F
Parker 1100P06C 04
Hafner 955P-12
Smc CD85N25-80C-A
Le Pivert DP 140
MP Filtri VUOTOSTATOE1
Norgren RA/8050/M/40
Norgren RA/8080/M/30
SMC C82SDB25-100
Festo QST-B-4-20
Norgren PA0014030C-30MTR
Norgren 240200800
Festo CRHNC-40 176938
SMC CDQ2D20-10DC
SMC AMC-310
Univer K200-63-150
SMC CDQ2B32-20D
SMC CDQ2B32-10D-X203