From 2df93dc3273e23246b0df2565f51ce403156d0e4 Mon Sep 17 00:00:00 2001 From: jqy1988 Date: Mon, 8 May 2023 15:15:41 +0800 Subject: [PATCH] 1.add br ppc2100 ethernet test app 2.add br ppc2100 test readme --- .../control_app/plc_demo/br/Makefile | 2 +- .../control_app/plc_demo/br/README.md | 23 +++++ .../control_app/plc_demo/br/br_ppc2100.c | 64 +++++++++++++ .../plc_demo/br/test_recipe_br_ppc2100.json | 93 +++++++++++++++++++ 4 files changed, 181 insertions(+), 1 deletion(-) create mode 100644 APP_Framework/Applications/control_app/plc_demo/br/README.md create mode 100644 APP_Framework/Applications/control_app/plc_demo/br/br_ppc2100.c create mode 100644 APP_Framework/Applications/control_app/plc_demo/br/test_recipe_br_ppc2100.json diff --git a/APP_Framework/Applications/control_app/plc_demo/br/Makefile b/APP_Framework/Applications/control_app/plc_demo/br/Makefile index 5ed1ef7ee..e7701d2c3 100755 --- a/APP_Framework/Applications/control_app/plc_demo/br/Makefile +++ b/APP_Framework/Applications/control_app/plc_demo/br/Makefile @@ -1,3 +1,3 @@ -SRC_FILES := br_x20cp0410.c br_x20cp1381.c br_x20cp1586.c +SRC_FILES := br_x20cp0410.c br_x20cp1381.c br_x20cp1586.c br_ppc2100.c include $(KERNEL_ROOT)/compiler.mk diff --git a/APP_Framework/Applications/control_app/plc_demo/br/README.md b/APP_Framework/Applications/control_app/plc_demo/br/README.md new file mode 100644 index 000000000..23bb4aae4 --- /dev/null +++ b/APP_Framework/Applications/control_app/plc_demo/br/README.md @@ -0,0 +1,23 @@ +# 贝加莱 PPC2100通信测试 + +[TOC] + +## 通信接线及参数设置 + +* 网口 + * 通过ETH1 RJ45 网口连接 + * 网口参数:IP:192.168.250.26 Port:502 + * 测试的协议:Modbus TCP + +## 存储区 + +- 贝加莱PLC与其他PLC不同,没有明确类似M,D等这样的存储区的概念,Modbus地址取决于库函数中结构体变量索引。 + +## 通信测试 + +- 共测试BOOL,INT16,INT32,FLOAT,DOUBLE 共五种类型数据。 +- 测试BOOL型变量,用功能码01,测其他类型变量用功能码03。 +- + + + diff --git a/APP_Framework/Applications/control_app/plc_demo/br/br_ppc2100.c b/APP_Framework/Applications/control_app/plc_demo/br/br_ppc2100.c new file mode 100644 index 000000000..faaa476a2 --- /dev/null +++ b/APP_Framework/Applications/control_app/plc_demo/br/br_ppc2100.c @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2022 AIIT XUOS Lab + * XiUOS is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + */ + +/** + * @file br_ppc2100.c + * @brief PLC BR PPC2100 app + * @version 3.0 + * @author AIIT XUOS Lab + * @date 2023.5.8 + */ + +#include + +extern int Adapter4GActive(void); + +void ControlBrTest_PPC2100(void) +{ + int i, j = 0; + int read_data_length = 0; + uint8_t read_data[128] = {0}; + +#ifdef CONNECTION_ADAPTER_4G + Adapter4GActive(); +#endif + + ControlProtocolType modbus_tcp_protocol = ControlProtocolFind(); + if (NULL == modbus_tcp_protocol) { + printf("%s get modbus tcp protocol %p failed\n", __func__, modbus_tcp_protocol); + return; + } + + printf("%s get modbus tcp protocol %p successfull\n", __func__, modbus_tcp_protocol); + + if (CONTROL_REGISTERED == modbus_tcp_protocol->protocol_status) { + ControlProtocolOpen(modbus_tcp_protocol); + + for (;;) { + read_data_length = ControlProtocolRead(modbus_tcp_protocol, read_data, sizeof(read_data)); + printf("%s read [%d] modbus tcp data %d using receipe file\n", __func__, i, read_data_length); + if (read_data_length) { + for (j = 0; j < read_data_length; j ++) { + printf("j %d data 0x%x\n", j, read_data[j]); + } + } + i++; + memset(read_data, 0, sizeof(read_data)); + PrivTaskDelay(10000); + } + + //ControlProtocolClose(modbus_tcp_protocol); + } +} +PRIV_SHELL_CMD_FUNCTION(ControlBrTest_PPC2100, Delta ppc2100 Demo, PRIV_SHELL_CMD_MAIN_ATTR); + + diff --git a/APP_Framework/Applications/control_app/plc_demo/br/test_recipe_br_ppc2100.json b/APP_Framework/Applications/control_app/plc_demo/br/test_recipe_br_ppc2100.json new file mode 100644 index 000000000..566b15e05 --- /dev/null +++ b/APP_Framework/Applications/control_app/plc_demo/br/test_recipe_br_ppc2100.json @@ -0,0 +1,93 @@ +{ + "device_id": 1, + "device_name": "BR_PPC2100", + "communication_type": 0, + "socket_config": { + "plc_ip": "192.168.250.26", + "local_ip": "192.168.250.233", + "gateway": "192.168.250.1", + "netmask": "255.255.254.0", + "port": 502 + }, + "protocol_type": 2, + "read_period": 2000, + "read_item_list": [ + { + "value_name": "motorrun", + "value_type": 1, + "function_code": 2, + "start_address": 0, + "quantity": 1 + }, + { + "value_name": "motorstop", + "value_type": 1, + "function_code": 2, + "start_address": 1, + "quantity": 1 + }, + { + "value_name": "valueopen", + "value_type": 1, + "function_code": 1, + "start_address": 100, + "quantity": 1 + }, + { + "value_name": "valueclose", + "value_type": 1, + "function_code": 1, + "start_address": 101, + "quantity": 1 + }, + { + "value_name": "step", + "value_type": 3, + "function_code": 4, + "start_address": 100, + "quantity": 1 + }, + { + "value_name": "temperature", + "value_type": 9, + "function_code": 4, + "start_address": 101, + "quantity": 2 + }, + { + "value_name": "status", + "value_type": 4, + "function_code": 4, + "start_address": 103, + "quantity": 2 + }, + { + "value_name": "mode", + "value_type": 3, + "function_code": 3, + "start_address": 200, + "quantity": 1 + }, + { + "value_name": "setTemperature", + "value_type": 9, + "function_code": 3, + "start_address": 201, + "quantity": 2 + }, + { + "value_name": "setConuter", + "value_type": 4, + "function_code": 3, + "start_address": 203, + "quantity": 2 + }, + { + "value_name": "LrealTest", + "value_type": 8, + "function_code": 3, + "start_address": 205, + "quantity": 4 + } + ] +} \ No newline at end of file