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