上位機與plc通訊有很多種方式,比如cpu程式設計口、網口、串列埠、匯流排連線等等。本章節記錄一下如何通過串列埠讓plc控制程式執行操作。博主之前寫過一章使用網口與plc通訊,具體請參考:qt使用 mx component 外掛程式與三菱plc通訊
所謂通訊協議是指通訊雙方的一種約定。約定包括對資料格式、同步方式、傳送速度、傳送步驟、檢糾錯方式以及控制字元定義等問題做出統一規定,通訊雙方必須共同遵守,屬於osi七層參考模型中的資料鏈路層。目前,採用的通訊協議有兩類:非同步協議和同步協議。
總的來說,通訊協議就是通訊雙方共同遵循的一套規則,定義協議的原則是盡可能的簡單以提高傳輸率,盡可能的具有安全性保證資料傳輸完整正確。基於這2點規則,我們乙個通訊協議應該是這樣的:
頭 + 資料長度 + 資料正文 + 校驗
需要在 pro 檔案中匯入串列埠模組:
qt += serialport
serialportcontrol.h
#ifndef serialportcontrol_h
#define serialportcontrol_h
#include #include #include class serialportcontrol : public qthread
;#endif // serialportcontrol_h
serialportcontrol.cpp
#include "serialportcontrol.h"
#include "globalfun.h"
serialportcontrol::serialportcontrol()
bool serialportcontrol::open(qstring portname)
// 設定資料位
switch (globalvalue::atm_dbt)
// 設定奇偶校驗
switch (globalvalue::atm_cbt)
// 設定停止位
switch (globalvalue::atm_sbt)
// 設定流控制
switch (globalvalue::atm_fcl)
// 開啟串列埠
isstarted = m_serialport.open(qiodevice::readwrite);
return isstarted;
}void serialportcontrol::close()
void serialportcontrol::writeresult(qstring ret)
}void serialportcontrol::run()
globalfun::bsleep(100);}}
mainwindow.cpp
void mainwindow::initserialport()
connect(m_spctl, &serialportcontrol::startwork, this, [&](), qt::queuedconnection);
}
void mainwindow::on_filldata()
}
三菱FX系列PLC的通訊協議
一 fx系列與計算機通訊所用到的命令碼 命令命令碼 目標裝置 元件讀取 cmd 0 x,y,m,s,t,c,d 元件寫入 cmd 1 x,y,m,s,t,c,d 強迫 on cmd 7 x,y,m,s,t,c 強迫 off cmd 8 x,y,m,s,t,c 所用字元 enq05h 來自計算機的請求...
三菱PLC之SLMP協議報文說明
slmp是三菱plc用於cpu模組或外部裝置 個人計算機或顯示器等 使用乙太網對plc裝置進行資料訪問的一種協議,slmp協議是基於tcp ip,因此會存在伺服器和客戶端的功能區分。伺服器功能是指cpu模組基於來自外部裝置的要求報文 命令 執行資料處理的收發。而客戶端功能是指可以使用專用命令向外部裝...
三菱FX系列PLC程式設計口通訊協議舉例
本文介紹的 pc 與三菱 fx 系列 plc 通訊,是通過 plc 的程式設計口與 pc 機的串列埠進行的,採用 sc 09 程式設計電纜作為計算機與 plc 通訊的連線。電纜的 9 芯 d 形插頭連線在計算機串列埠上,另一端連線 plc 的 rs 422 程式設計口。編寫 pc 的通訊程式可採用組...