forked from xuos/xiuos
1.add ge cpe100 test app 2.add ge plc readme
This commit is contained in:
parent
af665f9f29
commit
fb27201603
|
@ -1,3 +1,3 @@
|
||||||
SRC_FILES := ge_versamax001.c
|
SRC_FILES := ge_versamax001.c ge_cpe100.c
|
||||||
|
|
||||||
include $(KERNEL_ROOT)/compiler.mk
|
include $(KERNEL_ROOT)/compiler.mk
|
|
@ -0,0 +1,57 @@
|
||||||
|
---
|
||||||
|
typora-copy-images-to: upload
|
||||||
|
---
|
||||||
|
|
||||||
|
# 艾默生(原GE) 通信测试
|
||||||
|
|
||||||
|
[TOC]
|
||||||
|
|
||||||
|
## 小型VersaMAX CPU001测试
|
||||||
|
|
||||||
|
### 通信接线及参数设置
|
||||||
|
|
||||||
|
* 串口
|
||||||
|
* COM2为15孔D型 RS485。波特率:19200,数据位:8位,停止位:1位,校验:偶校验。接线按下图典型双线接法。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 存储区
|
||||||
|
|
||||||
|
- 存储区 I,Q,AI,R区。其他内存区如M,AQ不能直接访问,要通过程序转换访问。
|
||||||
|
|
||||||
|
### 通信测试
|
||||||
|
|
||||||
|
- 共测试BOOL,INT16,FLOAT共三种类型数据。
|
||||||
|
|
||||||
|
|
||||||
|
- 测试R区及Q区数据。
|
||||||
|
|
||||||
|
|
||||||
|
- R区数据测试,用功能码03,以字为单位读取。配方中start_address字段为PLC地址直接减1。
|
||||||
|
|
||||||
|
|
||||||
|
- Q区数据测试,用功能码01,以位为单位读取。配方中start_address字段为PLC地址直接减1。
|
||||||
|
|
||||||
|
## 中型PLC CPE100通信测试
|
||||||
|
|
||||||
|
### 通信接线及参数设置
|
||||||
|
|
||||||
|
- 网口
|
||||||
|
- 网口RJ45,参数 IP:192.168.250.28 端口号:502
|
||||||
|
|
||||||
|
### 存储区
|
||||||
|
|
||||||
|
- 存储区 I,Q,AI,R区。其他内存区如M,AQ不能直接访问,要通过程序转换访问。
|
||||||
|
|
||||||
|
### 通信测试
|
||||||
|
|
||||||
|
- 共测试BOOL,INT16,INT32,FLOAT,DOUBLE共五种类型数据。
|
||||||
|
|
||||||
|
|
||||||
|
- 测试R区及Q区数据。
|
||||||
|
|
||||||
|
|
||||||
|
- R区数据测试,用功能码03,以字为单位读取。配方中start_address字段为PLC地址直接减1。
|
||||||
|
|
||||||
|
|
||||||
|
- Q区数据测试,用功能码01,以位为单位读取。配方中start_address字段为PLC地址直接减1。
|
|
@ -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 ge_cpe100.c
|
||||||
|
* @brief PLC GE Versamax app
|
||||||
|
* @version 3.0
|
||||||
|
* @author AIIT XUOS Lab
|
||||||
|
* @date 2022.9.27
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <control.h>
|
||||||
|
|
||||||
|
extern int Adapter4GActive(void);
|
||||||
|
|
||||||
|
void ControlGecpe100Test(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(ControlGecpe100Test, ge cpe100 Demo, PRIV_SHELL_CMD_MAIN_ATTR);
|
||||||
|
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 109 KiB |
|
@ -0,0 +1,73 @@
|
||||||
|
{
|
||||||
|
"device_id": 1,
|
||||||
|
"device_name": "GE_CPE100_TCP",
|
||||||
|
"communication_type": 0,
|
||||||
|
"socket_config": {
|
||||||
|
"plc_ip": "192.168.250.28",
|
||||||
|
"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": "Q001",
|
||||||
|
"value_type": 1,
|
||||||
|
"function_code": 1,
|
||||||
|
"start_address": 0,
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value_name": "Q010",
|
||||||
|
"value_type": 1,
|
||||||
|
"function_code": 1,
|
||||||
|
"start_address":9,
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value_name": "Q066",
|
||||||
|
"value_type": 1,
|
||||||
|
"function_code": 1,
|
||||||
|
"start_address": 65,
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value_name": "Q100",
|
||||||
|
"value_type": 1,
|
||||||
|
"function_code": 1,
|
||||||
|
"start_address":99,
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value_name": "R11",
|
||||||
|
"value_type": 3,
|
||||||
|
"function_code": 3,
|
||||||
|
"start_address": 10,
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value_name": "R12",
|
||||||
|
"value_type": 9,
|
||||||
|
"function_code": 3,
|
||||||
|
"start_address": 11,
|
||||||
|
"quantity": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value_name": "R14",
|
||||||
|
"value_type": 8,
|
||||||
|
"function_code": 3,
|
||||||
|
"start_address": 13,
|
||||||
|
"quantity": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value_name": "R18",
|
||||||
|
"value_type": 4,
|
||||||
|
"function_code": 3,
|
||||||
|
"start_address": 17,
|
||||||
|
"quantity": 2
|
||||||
|
}
|
||||||
|
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,58 @@
|
||||||
|
{
|
||||||
|
"device_id": 1,
|
||||||
|
"device_name": "GE_VersaMAX_RTU",
|
||||||
|
"communication_type": 1,
|
||||||
|
"serial_config": {
|
||||||
|
"station": 1,
|
||||||
|
"baud_rate": 19200,
|
||||||
|
"data_bits": 8,
|
||||||
|
"stop_bits": 1,
|
||||||
|
"check_mode": 2
|
||||||
|
},
|
||||||
|
"protocol_type": 3,
|
||||||
|
"read_period": 2000,
|
||||||
|
"read_item_list": [
|
||||||
|
{
|
||||||
|
"value_name": "Q001",
|
||||||
|
"value_type": 1,
|
||||||
|
"function_code": 1,
|
||||||
|
"start_address": 0,
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value_name": "Q010",
|
||||||
|
"value_type": 1,
|
||||||
|
"function_code": 1,
|
||||||
|
"start_address": 9,
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value_name": "Q066",
|
||||||
|
"value_type": 1,
|
||||||
|
"function_code": 1,
|
||||||
|
"start_address": 65,
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value_name": "Q100",
|
||||||
|
"value_type": 1,
|
||||||
|
"function_code": 1,
|
||||||
|
"start_address": 99,
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value_name": "R11",
|
||||||
|
"value_type": 3,
|
||||||
|
"function_code": 3,
|
||||||
|
"start_address": 10,
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value_name": "R12",
|
||||||
|
"value_type": 9,
|
||||||
|
"function_code": 3,
|
||||||
|
"start_address": 11,
|
||||||
|
"quantity": 2
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
Loading…
Reference in New Issue