ZPC是ZLG全新研發的顯控一體機。開源AWTK,版權無憂!AWFlow流圖編程,開發很簡單!多種通信協議,設備互聯超便捷!更有ZWS,數據上云很輕松!本文將介紹ZPC輕松拿捏數據上云。
?ZPC簡介
ZPC系列顯控一體機 是廣州致遠電子全新研發的集“顯示”+“控制”一體化的高性能顯控終端產品。外框采用鋁合金材質,簡潔耐用;產品集成了多路隔離RS485、多路隔離CAN總線、多路千兆以太網等豐富外設。一觸即發,隨心控制。產品支持多種工業通信協議,工業互聯超便捷!支持拖拽式開源AWTK GUI,版權無憂!支持AWFlow流圖編程,應用開發很簡單!還支持ZWS云,數據上云很輕松!
ZPC系列顯控一體機
? RK3568處理器
? 顯控一體機
? 國產顯控
? 工業自動化
?ZWS簡介
ZWS IoT-PaaS云平臺,是一個開放的物聯網云平臺,可以為用戶提供多種協議設備的快速接入、設備管理、事件告警、數據統計分析等功能,幫助企業快速實現低成本搭建行業SaaS應用系統,助力企業實現數字化轉型。
?原理介紹ZPC擁有多路隔離RS485、多路隔離CAN總線、多路DI/DO以及多路千兆以太網等豐富的外設接口資源。為了避免大家手頭沒有RS485傳感器,本次我們將演示ZPC一機搞定數據輕松上云。原理是我們在ZPC上編程從RS-485-3接口輸出1~100的數據,RS-485-4接口采集這些數據然后通過以太網接口采用MQTT協議上傳到ZWS云。
?準備工作
ZPC-101Q55RTW-01顯控一體機1臺;
安裝Ubuntu虛擬機或Ubuntu系統的PC機1臺;
12V@2A的電源適配器1個;
雙公頭網線1根;
杜邦線若干。
在開始前,我們先使用杜邦線將RS485-3和RS485-4接口連通,如下圖所示位置(A3接A4,B3接B4)。
調試串口連接到ZPC,網線連接到可以上網的電腦,然后給ZPC插上適配器上電。通過MobaXterm或者其它串口調試上位機登錄ZPC,波特率為115200,8位數據位,1位停止位,無奇偶校驗,無流控。超級用戶賬號密碼同為root。然后使用ping指令進行測試對外網的連通情況,如下圖所示即為可以上網。 ?ZWS建模首先,需要準備一個ZWS云平臺賬號,注冊并登錄進入官網后,可以看到類似界面如下圖所示。
接著需要對設備進行建模,建模的意義在于創建一個設備類型,方便后續對同一類型設備和數據的管理。我們可以將ZPC一體機視為一個網關設備,也可以作為一個普通設備。如下圖所示,依次點擊設備建模、設備類型、自定義、添加設備類型。
如下圖所示填寫所需的設備類型信息。其中類型名稱只可為英文、數字或者一些特殊符號。
填寫完成后,即可在界面看到所創建的設備類型。
創建完成設備類型后,還需要添加一個實際的設備。如下圖所示,我們依次點擊設備管理、設備列表、添加設備。
然后這里需要填寫設備類型、設備名稱、設備ID和設備密鑰。其中,ID和密鑰我們可以通過串口助手使用opensslrand-hex16命令在ZPC一體機上生成一個長度為32的十六進制隨機數來使用,如下圖所示。
最后填寫完畢設備信息如下圖所示。(實際生產過程中,推薦使用機器序列號或其他唯一標識作為ID)
填寫完成并確認后,可以在設備列表中看到創建完成的設備。
接下來,需要對上報的數據進行編輯。我們點擊設備建模、設備類型、自定義,找到剛才創建的設備類型,點擊編輯。
這里顯示有兩個功能組,其中common_fn是全局通用功能模塊,其中包含上報原始數據(raw_data)的功能(本文不涉及,暫不展開);ZPC_101Q55RTW_01_fn是針對本次創建的設備類型的功能模塊,點擊ZPC_101Q55RTW_01_fn的編輯按鈕。
創建對應的數據組和數據字段。
數據組可以將所有的同類型數據作為一個數據組。比如使用ZPC一體機進行檢測被測設備的壓力值,在此將壓力值(pressure)作為一個數據組如下圖所示。
而數據字段代表了數據組下的一個數據字段內容。比如檢測多個被測設備時,可以將某一節點作為一個字段,在此模擬將節點1的壓力值作為一個pressure_node1數據字段,并將其設置為int類型數據,如下圖所示。
至此,在ZWS上的準備工作完畢。
?應用編程1. 搭建數據上云
首先下載ZWS SDK包到Ubuntu虛擬機下(建議使用ubuntu20.04),并安裝gcc-aarch64-linux-gnu包。解壓SDK包到工作目錄后,進入到zws_sdk_r2/mqttproto_V2.0.3.240626目錄。在根目錄下創建一個新的zpc.mk文件,用于構建工程使用,程序清單如下。Z
MESSAGE(STATUS "BUILD FOR ZPC")#across compiler setting#include(CMakeForceCompiler)
set(CMAKE_SYSTEM_NAME Linux)set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)
#set(CMAKE_FIND_ROOT_PATH ${TOOL_CHAIN_DIR})set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
在工程根目錄的CMakeLists.txt內添加以下內容,用于調用上文中的zpc.mk。
...#內置對zpc-101q55rtw-01/zpc-101q55rtw-02的支持if(ZPC)#ADD_DEFINITIONS(-DARM_LINUX=1) #經驗證ADD_DEFINITIONS定義的變量,然后同一個文件引用該變量是無效的set(ARM_LINUX 1)execute_process(COMMAND ln -svf zpc.mk cross-linux.mk)endif()...
創建測試代碼文件,路徑為demos/src/zpc_test.c,詳見在線文檔https://manual.zlg.cn/web/#/331/13023 程序清單2的內容,實現了從RS-485-4(對應串口/dev/ttyS8)讀取數據,并上報到ZWS,詳細可以參考代碼注釋。
并在demos/src/CMakeLists.txt中添加如下內容用于編譯測試demo。
...set(PRJ zpc_test)add_executable(${PRJ} "")target_sources(${PRJ} PRIVATE zpc_test.c ${shared_src})set_target_properties(${PRJ} PROPERTIES FOLDER "demos")target_link_libraries(${PRJ} client network ${SYS_LIBS})...
接下來執行cmake . -DZPC=1,構建編譯工程。
執行make指令,編譯工程。可以看到成功構建zpc_test文件(如果不成功,請檢查上述步驟)。
2. 搭建模擬數據
接下來,還需要實現從RS-485-3生成隨機數據并傳輸。另外創建一個文件夾(最好和前文的工程分開),在文件夾下創建main.c文件,程序清單如下:
#include #include #include #include #include #include // 配置串口int configure_serial_port(int fd) {struct termios tty;if (tcgetattr(fd, &tty) != 0) {perror("tcgetattr");return -1;}// 設置波特率cfsetospeed(&tty, B9600);cfsetispeed(&tty, B9600);// 設置字符大小、無奇偶校驗、一個停止位tty.c_cflag &= ~PARENB; // 無奇偶校驗tty.c_cflag &= ~CSTOPB; // 一個停止位tty.c_cflag &= ~CSIZE;tty.c_cflag |= CS8; // 8個數據位// 設置為非規范模式tty.c_lflag &= ~ICANON;tty.c_lflag &= ~ECHO;tty.c_lflag &= ~ECHOE;tty.c_lflag &= ~ISIG;// 禁用軟件流控制tty.c_iflag &= ~(IXON | IXOFF | IXANY);// 禁用硬件流控制tty.c_cflag &= ~CRTSCTS;// 設置讀取阻塞行為tty.c_cc[VMIN] = 1;tty.c_cc[VTIME] = 0;// 刷新串口設置if (tcsetattr(fd, TCSANOW, &tty) != 0) {perror("tcsetattr");return -1;}return 0;}int main() {int fd;int random_number;char buffer[4];// 打開串口設備fd = open("/dev/ttyS7", O_WRONLY | O_NOCTTY);if (fd == -1) {perror("open");return -1;}// 配置串口if (configure_serial_port(fd) != 0) {close(fd);return -1;}// 初始化隨機數生成器srand(time(NULL));while (1) {// 生成 1 到 100 之間的隨機數random_number = rand() % 100 + 1;snprintf(buffer, sizeof(buffer), "%d\n", random_number);// 向串口發送隨機數if (write(fd, buffer, sizeof(buffer)) == -1) {perror("write");close(fd);return -1;}// 延時 1 秒sleep(1);}// 關閉串口設備close(fd);return 0;}
保存文件后,執行aarch64-linux-gnu-gcc main.c -o rs485_test生成測試文件。
?驗證數據上云將上文中生成的測試程序zpc_test和rs485_test拷貝至ZPC一體機,并執行./rs485_test &,該程序將從RS485-3隨機發送1~100的數據。由于RS-485-3(/dev/ttyS7)和RS-485-4(/dev/ttyS8)短接,可以直接使用cat /dev/ttyS8查看采集的數據,如下圖所示。
最后執行./zpc_test,便開始將RS-485-4讀取到的數據上報到ZWS。下圖中標注的兩點,為采集到的數據。
打開ZWS IoT設備管理平臺界面,并按下圖所示選擇對應類別,即可看到上報的實時數據。
也可以使用歷史數據功能查看歷史數據。
-
一體機
+關注
關注
0文章
936瀏覽量
32858 -
終端
+關注
關注
1文章
1159瀏覽量
30039 -
zlg
+關注
關注
1文章
64瀏覽量
38243
發布評論請先 登錄
相關推薦
PCB阻抗設計12問,輕松帶你搞懂阻抗!
![PCB阻抗設計12問,<b class='flag-5'>輕松</b>帶你<b class='flag-5'>搞懂</b>阻抗!](https://file1.elecfans.com/web2/M00/BB/80/wKgaomWVAnuAT2d-AAAKjUL8czE809.gif)
教你輕松將CC3200接入機智云
云數據庫SQL Server 2008 R2版推出OSS版本數據上云
一文搞懂UPS主要內容
一文搞懂開關電源波紋的產生
輕松上云系列之一:本地數據遷移上云
輕松上云系列之二:其他云數據遷移至阿里云
希捷攜手Backblaze 讓海量數據輕松“上云”
加速數智化升級,華為云這款服務器讓企業上云更輕松
PCB阻抗設計12問,輕松帶你搞懂阻抗!
![PCB阻抗設計12問,<b class='flag-5'>輕松</b>帶你<b class='flag-5'>搞懂</b>阻抗!](https://file1.elecfans.com/web2/M00/BB/F5/wKgaomWXbOuAe8xfAAA61Eli75s527.png)
ZPC是如何輕松拿捏嚴苛工況的?
![<b class='flag-5'>ZPC</b>是如何<b class='flag-5'>輕松</b><b class='flag-5'>拿捏</b>嚴苛工況的?](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
評論