日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript如何对欧姆龙、三菱、施耐德等PLC进行读写通讯控制

發布時間:2023/12/10 javascript 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript如何对欧姆龙、三菱、施耐德等PLC进行读写通讯控制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

思考

說到 Javascript,大部分人都會將其和網頁Web,特效,前端掛鉤,但隨著UI技術的不斷發展,以及計算機摩爾定律的推進, Javascript 也逐步開始承擔更多的功能,如支持游戲的3D引擎 Three.js 、Babylon.js,支持深度學習的引擎?TensorFlow.js 、keras.js ,還有大型的數據分析和可視化庫?D3.js 、Aperture JS。所以通過 Javascript 完成的事情會越來越多。

再隨著 Node.js?的發展,用Javascript來完成一個工業控制領域的專業系統也不是不可能的。

可能傳統的思維,對于工業控制和數據分析這部分,一般會使用Java、C#這種老牌的開發工具來進行開發,但明顯對于現在的生產環境,Java或者C#的可變性,以及其擴展工具的豐富程度,遠沒有Javascript、Python這類型的高了,混合編程是個很好的解決方案,但 Java 和 C# 這種開發工具的學習成本,也不得不說比 Javascript 高多了。

我們工業自動化項目組就使用了 PHP 和 Python 完成了一整套MES系統(制造業執行系統),并成功的實施在多個工廠和廠區的項目中,其開發,實施與運維成本分別比傳統Java、C#的低上40%、30%、15%;以后在工業自動化的項目上,通過 Javascript?出現類似三維家,微信小程序這種行業顛覆的解決方案的公司,也并不是不可能,可能你會在未來不久, 就會看到通過純 Javascript Webbrowser 機制完成的SCADA系統、MES系統,WCS系統。

目前情況

工業自動化繞不開一個關鍵元素就是PLC,不管是機器人,采集系統,還是輸送線,單機設備,PLC進行電氣化控制是現在的金標準,而與互聯網的解決方案不一樣,PLC并沒有一個標準的控制模式,也就是說沒有一個標準的通訊協議,每家PLC的廠家都為了打造自己的壁壘,而創建了千奇百怪的通訊協議,如歐姆龍的FINS協議和C-Mode協議,三菱的MC協議,松下的Mewtocol協議,西門子的S7系列的通訊協議,還有施耐德的Modbus協議(題外話,Modbus就是施耐德創立的協議標準),而工業自動化現場,不同的設備廠家會使用不同品牌,不同型號的PLC,而且連接方式也有不同,如RS232鏈路的,RS485鏈路的,以太網鏈路的。

這個時候,通訊的中間件就應運而生,這類型的通訊中間件,也叫組態軟件,如知名的 KepServer、Matrikon(好像我也就只知道這兩個),其可以通過不同的協議與PLC進行連接,并且通過OPCUA協議開放出讀寫控制權限給第三方系統,又或者放到數據庫某張表上,與其他系統共享點位。

如圖 方案1 、方案2;因此,這里的第三方系統,則無法使用Javascript直接完成,因為 Javascript for Browser 并沒有OPCUA、OPCDA和數據庫的支持

?

通過Javascript與PLC進行通訊

LECPServer是一個開源項目,他將OPCUA、OPCDA和數據庫的中間接口,換成了更有利于互聯網方式的 WebAPI 服務,所以只需要通過?HTTP POST ,就可以通過純 JS 代碼,完成PLC通訊、數據采集、系統控制和監控展示。

LECPServer 全稱 Leanboard Equipment Communication Proxy Server 是一款基于 JLean 框架開發的高性能工業用組態服務軟件,可以通過該組態軟件,鏈接市面上90%的PLC,通過HTTP協議通聯PLC的讀寫,使用戶能夠通過一個直觀的用戶界面來連接、管理、監視和控制不同的自動化設備和軟件應用程序。

安裝和環境

首先,可以先到官網下載一個 LECPServer的最新版?http://www.lecpserver.com/downloads/LECPServer.zip

LECPServer是免安裝的,直接放到文件夾內即可運行,運行需要下面的支持環境

  • Microsoft .NET Framework 4.6.1或以上
  • Visual C++ Redistributable Packages for Visual Studio 2013
  • 下載連接我也放在下面

    Microsoft .NET Framework 4.6.1?https://dotnet.microsoft.com/download/dotnet-framework/thank-you/net461-web-installer

    Visual C++ Redistributable Packages for Visual Studio 2013?https://www.microsoft.com/zh-cn/download/details.aspx?id=40784

    安裝完成后,雙擊 LECPServer.exe 就可以啟動程序了

    配置部分(歐姆龍 CP1H)

    我們通過以太網連接歐姆龍CP1H,PLC的IP設置為192.168.3.20,本機IP設置為192.168.3.202

    通過LECPServer的配置界面,配置對應的參數,如圖:

    ?然后點擊應用,當你看到設備欄的列表指示為綠色,則說明PLC已經正式連接成功了

    ?這時候我們可以通過HTTP POST的調試工具,如POSTMAN,HTTP Debug來測試下是否能正常讀寫,我們這里選用LECPServer自帶的HTTP調試器。

    我們先發送 plc_read_node 命令查看D0000的值,同樣,我們也可以通過 plc_write_node 來配置節點的值。

    代碼部分

    直接上 Javascript 的代碼:

    // 獲取當前時間 yyyy-mm-dd hh:mm:ss 格式 function get_datatime_by_yyyymmddhhmmss() {let d = new Date();return d.getFullYear() + "-" + d.getMonth() + "-" + d.getDate() + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds(); }// 將獲得的值轉成echart的data格式 function node_val_to_data(v) {let now = new Date();return {name: now.toString(),value: [get_datatime_by_yyyymmddhhmmss() ,Math.round(v)]}; }option = {title: {text: '動態數據 + 時間坐標軸'},tooltip: {trigger: 'axis',formatter: function (params) {params = params[0];var date = new Date(params.name);return date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear() + ' : ' + params.value[1];},axisPointer: {animation: false}},xAxis: {type: 'time',splitLine: {show: true}},yAxis: {type: 'value',boundaryGap: [0, '100%'],splitLine: {show: true}},series: [{name: '模擬數據',type: 'line',showSymbol: false,hoverAnimation: false,data: data}] };// 數據 array var data = [];setInterval(function () {// LECPServer的WebAPI服務地址 端口默認為8088let url = "http://127.0.0.1:8088";$.ajax({url: url,// 讀取PLC節點數據data: JSON.stringify({"action":"plc_read_node", "node":"NODES.CP1H.D0000"}),contentType: "application/x-www-form-urlencoded",type: 'POST',timeout: 2000,success: function (response) {// 解析節點數據// 數據長度是1,因此拿v[0]的數據即可v = JSON.parse(response);data.push(node_val_to_data(v['rtval'][0]));},error: function (x, t, m) {console.log(x);}});// 刷新EChartmyChart.setOption({series: [{data: data}]}); }, 500);

    其核心通訊就是ajax部分,獲取PLC數據的API接口;代碼可以直接放在 EChart 的調試窗口直接運行,如圖

    傳送門

    LECPServer的官網站點 http://www.lecpserver.com

    LECPServer的使用手冊 http://www.lecpserver.com:3001

    LECPServer的Github地址?https://github.com/xeden3/LECPServer?

    是的,沒看錯,LECPServer 是完全開源免費的。

    總結

    以上是生活随笔為你收集整理的JavaScript如何对欧姆龙、三菱、施耐德等PLC进行读写通讯控制的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。