ayusecret
級(jí)別: 略有小成
![]() |
花兩天半純手敲的代碼,代碼有點(diǎn)亂,周五就要出差了,沒時(shí)間整理了 ![]() 測(cè)試工具: R04 CPU,3E幀通訊(理論支持Q系列,可打開Gxwork3 e-Manual搜索3E幀得到手冊(cè)內(nèi)容) ![]() TCP通訊小助手(測(cè)試報(bào)文用) ![]() Python環(huán)境編寫代碼 版本3.10.4 ![]() Gxwork3(配置CPU參數(shù),理論上Q系列使用Gxwork2也可) 整體的一個(gè)思路如下: 1.用小助手報(bào)文測(cè)試進(jìn)行報(bào)文測(cè)試,如果有響應(yīng),無論對(duì)錯(cuò),至少通訊上了,再根據(jù)發(fā)送的報(bào)文和響應(yīng)的報(bào)文,根據(jù)手冊(cè)幀定義進(jìn)行拆分解讀. 2.參考網(wǎng)上代碼,用Python實(shí)現(xiàn)Socket通訊到PLC,為下一個(gè)環(huán)節(jié)做準(zhǔn)備. 3.先直接把前面測(cè)試成功的報(bào)文,以字符串形式(需解碼成字節(jié))用Socket直接發(fā)給PLC 4.如果前面測(cè)試成功,就開始封裝幀,以某個(gè)元件(我是以"D元件")開始,編輯指令,再根據(jù)需要,擴(kuò)展其他元件,反復(fù)優(yōu)化,迭代 目前實(shí)現(xiàn): D元件單雙字寫入,單進(jìn)度浮點(diǎn)數(shù)寫入,可正負(fù),浮點(diǎn)數(shù)可能有精度丟失 M元件0,1 寫入 TN 將其當(dāng)成D理解去處理 TC,TS,X,Y將其當(dāng)成M去處理,注意M地址是10進(jìn)制而X,Y是16進(jìn)制,需對(duì)類型進(jìn)行區(qū)分 限制: 1.幀有部分內(nèi)容暫時(shí)寫死,軟元件有部分子指令暫時(shí)寫死 2.目前只封裝批量讀寫指令,個(gè)人認(rèn)為只需要這兩個(gè)即可,隨機(jī)讀寫指令實(shí)際應(yīng)用中應(yīng)該比較少就沒寫了. 總結(jié): 1.純練習(xí)項(xiàng)目,還未實(shí)際應(yīng)用,目前測(cè)試數(shù)據(jù)還算正常.發(fā)出來只是給大家做個(gè)參考 2.說來慚愧,干自動(dòng)化那么多年,還沒接觸上位機(jī)開發(fā),為了實(shí)現(xiàn)這些代碼也是網(wǎng)上參考了很多函數(shù)技巧,后面有機(jī)會(huì)再嘗試試試多線程,做數(shù)據(jù)庫相關(guān)的內(nèi)容3 3.主要困難點(diǎn)在于 1.float數(shù)據(jù)如何傳到PLC,又如何讀出來解讀.(參考規(guī)格化浮點(diǎn)數(shù)定義) ![]() 2.數(shù)據(jù)正負(fù)的實(shí)現(xiàn) 4.臨時(shí)敲的代碼,可能還有很多Bug,望指正. |
---|---|
本帖最近評(píng)分記錄: |