數據庫數據轉ModbusTCP訪問

目標:編寫一個程序將數據庫裏某個表的數據提取出來,轉換成能供支持ModbusTCP協議設備讀取的值

編寫內容:數據庫值獲取、數據類型(進制)轉換、MoubusTCP從機建立、數據存入從機保持寄存器(4xxxx)、多線程處理

一、各內容部分特點:

1、 數據庫值獲取

數據 庫爲遠程SQLSERVER 數據庫,嘗試了兩個Python庫:pypyodbc和pymssql,只有pymssql能遠程連接數據庫,pypyodbc也是很不錯的。因此採用pymssql 庫。數據庫裏的數據內容如下:每個StationNum的值是唯一的,要求需要根據這個值計算存入寄存器的寄存器的地址段。

2、數據類型(進制)轉換

從數據庫裏除了StationNum外,其他值都是實數,因爲每個寄存器的長度是16位,需要存實數的話,需要將實數(32位)轉化 成兩個16位的數存到兩個寄存器中,因此此處需要編寫 這樣的一個方法。

3、MoubusTCP從機建立

採用modbus_tk庫,該庫功能比較豐富,ModbusRTU等這些都可以採用該庫

4、數據存入從機保持寄存器(4xxxx)

前面提到需要根據StationNum計算存入寄存器的寄存器的地址段,因此也需要編寫這樣一個計算寄存器地址的方法,同時以上的每個數經轉化後需要兩個寄存器來存儲。

5、多線程處理 

由於寄存器裏存儲的是數據庫裏實時的數據,因此需要把數據庫裏實時的數據及時更新到寄存器裏,此處採用生產消費者模型方式協調從數據庫裏讀數、數據存入寄存器這樣的一種方式,減少內存的負荷。

二、成果展示

用ModScan測試完全 正常.(ps:溝通交流)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章