- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
要求:通过 Modbus 从 Serial port-1 收集数据,在 Serial port-2 上进行镜像。
我可以在主从之间进行通信,但无法将数据镜像到串行端口 2。请建议我如何实现这一点。
代码:
Master :
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h> /* File Control Definitions */
#include <termios.h> /* POSIX Terminal Control Definitions */
#include <unistd.h> /* UNIX Standard Definitions */
#include <errno.h> /* ERROR Number Definitions */
#include <sys/ioctl.h>
#include "modbus.h"
int main()
{
uint8_t req[MODBUS_RTU_MAX_ADU_LENGTH];// request buffer
int len;// length of the request/response
printf("Modbus server example.\n");
//Create a new RTU context with proper serial parameters (in this example,
//device name /dev/ttyS0, baud rate 9600, no parity bit, 8 data bits, 1 stop bit)
modbus_t *ctx = modbus_new_rtu("/dev/ttyUSB3", 9600, 'N', 8, 1);
if (!ctx) {
fprintf(stderr, "Failed to create the context: %s\n", modbus_strerror(errno));
exit(1);
}
if (modbus_connect(ctx) == -1) {
fprintf(stderr, "Unable to connect: %s\n", modbus_strerror(errno));
modbus_free(ctx);
exit(1);
}
else
{
printf("Modbus server connected successfully\n");
}
//Set the Modbus address of the remote slave (to 3)
int rc=modbus_set_slave(ctx, 3);
printf("Modbus set remote slave return code : %d\n",rc);
uint16_t reg[5];// will store read registers values
//Read 5 holding registers starting from address 10
int num = modbus_read_registers(ctx, 10, 5, reg);
printf("Result of modbus_read_registers : %d\n",num);
for(int i=10;i<=15;i++)
{
printf("reg [%d] : %X\t",i,reg[i]);
}
printf("\n");
if (num != 5)
{// number of read registers is not the one expected
fprintf(stderr, "Failed to read: %s\n", modbus_strerror(errno));
}
modbus_close(ctx);
modbus_free(ctx);
}
============================================= =================奴隶:
#include <stdio.h>
#include <fcntl.h> /* File Control Definitions */
#include <termios.h> /* POSIX Terminal Control Definitions */
#include <unistd.h> /* UNIX Standard Definitions */
#include <errno.h> /* ERROR Number Definitions */
#include <sys/ioctl.h>
#include "modbus/modbus.h"
int main()
{
int len1=-1;
printf("Modbus slave example");
//Prepare a Modbus mapping with 30 holding registers
//(plus no output coil, one input coil and two input registers)
//This will also automatically set the value of each register to 0
modbus_mapping_t *mapping = modbus_mapping_new(0, 1, 30, 2);
if (!mapping) {
fprintf(stderr, "Failed to allocate the mapping: %s\n", modbus_strerror(errno));
exit(1);
}
else
{
printf("Mapping allocated successfully.\n");
}
//Example: set register 12 to integer value 623
mapping->tab_registers[12] = 623;
modbus_t *ctx = modbus_new_rtu("/dev/ttyHSL1", 9600, 'N', 8, 1);
if (!ctx) {
fprintf(stderr, "Failed to create the context: %s\n", modbus_strerror(errno));
exit(1);
}
//Set the Modbus address of this slave (to 3)
int rc= modbus_set_slave(ctx, 3);
printf("Result code of Modbus set slave address :%d\n",rc);
if (modbus_connect(ctx) == -1) {
fprintf(stderr, "Unable to connect: %s\n", modbus_strerror(errno));
modbus_free(ctx);
exit(1);
}
else
{
printf("Modbus slave connected successfully\n");
}
uint8_t req[MODBUS_RTU_MAX_ADU_LENGTH];// request buffer
int len;// length of the request/response
while(1) {
len = modbus_receive(ctx, req);
printf("Modbus receive len : %d\n",len);
if (len == -1)
break;
len1 = modbus_reply(ctx, req, len, mapping);
printf("req: %X\n",*req);
printf("len : %d\n",len);
printf("mapping->tab_registers[12] : %d\n",mapping->tab_registers[12]);
printf("Result Modbus reply len : %d\n",len1);
if (len == -1) break;
}
printf("Exit the loop: %s\n", modbus_strerror(errno));
modbus_mapping_free(mapping);
modbus_close(ctx);
modbus_free(ctx);
}
对/对:大师:
shilpa@RT:~/Desktop/Modbus_master/Modbus_masterComponent/src$ sudo ./Modbus_masterComponent
Modbus server example.
Modbus server connected successfully
Modbus set remote slave return code : 0
Result of modbus_read_registers : 5
reg [10] : 0 reg [11] : 0 reg [12] : AAC6 reg [13] : CDB5 reg [14] : 7F6D reg [15] : 0
奴隶:
root@swi-mdm9x15:~# /legato/systems/current/apps/Modbus_slave/read-only/bin/modbus_slave
Modbus slave exampleMapping allocated successfully.
Result code of Modbus set slave address :0
Modbus slave connected successfully
Modbus receive len : 8
req: 3
len : 8
mapping->tab_registers[12] : 623
Result Modbus reply len : 15
最佳答案
您不能像在 for 循环中那样简单地从 10 到 15 对 5 个槽数组进行索引。不,它错了。它的索引将从 0 到 4。
uint16_t reg[5];// will store read registers values
//Read 5 holding registers starting from address 10
int num = modbus_read_registers(ctx, 10, 5, reg);
printf("Result of modbus_read_registers : %d\n",num);
for(int i=10;i<=15;i++)
{
printf("reg [%d] : %X\t",i,reg[i]);
}
For 循环应该是这样的。还有 %X 用于以十六进制打印内容。如果你想看到你存储在从端的相同 623(十进制)以十进制打印在主端,那么使用 %d,就像我在下面所做的那样。
for(int i=0;i<5;i++)
{
printf("reg [%d] : %d\t",i+10, reg[i]);
}
关于c - Modbus 主从通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55805817/
我们打算做一主两从的配置。我们的目标如下。我们有大量的传入记录,因此我们计划执行以下操作: Master - has only past 7 days records Slave 1 - as sam
我已经成功地设置了一个主从环境,它绝对可以正常工作。 我遇到的唯一问题是从表中选择计数,它们不相同但是在 5 分钟后从主选择,在从属上创建 50 行,也创建 50 行(这就是为什么我说我'我确定它工作
我有一个与 MariaDb 实例相关的业务需求,该实例应该在具有故障转移功能的主从配置中工作。 查看我看到的文档,可以配置多集群主机 (galera) 或简单的主从副本。 配置主从+故障转移有什么建议
我想将 qml 与主从界面一起使用,但我不知道如何以正确的方式将当前项目传递到详细信息 View 。主视图中的 ListView 使用 C++ 模型(QSQLTableModel 的附加组件,它工作正
我有一个主从 fragment 布局,看起来像这样: 当从 ListView 中选择一个数字时,详细 View 中的值会发生变化(即单选按钮文本发生变化)。我有以下问题:当我在 ListView 中单
当主服务器已经有大量数据时,有没有办法复制mysql。我尝试了常规方法,但很难获取MASTER_LOG_POS值。从服务器如何能够复制主服务器上先前存在的数据。 最佳答案 通常,您会从现有数据库的完整
如果主数据库出现故障,我想切换从数据库。我找到了 Master/Slave开关,但它用于读写(看起来很合乎逻辑,但不是这种情况)。你能在 zend 中给出“db failure”策略吗? 最佳答案 看
场景: 我们的架构基于 memcached,随着用户群数量的增加,我们需要将缓存复制到多个服务器。 我们可以使用repcached实用程序轻松地在两台服务器之间进行复制。 我们希望以这样的方式负载平衡
单机配置启动 Redis安装 下载地址: http://redis.io/download 安装步骤: 1: 安装gcc编译器:yum install gcc 2:
我有一些关于主从数据复制的问题,是否有机会重新同步它们,以便在主从数据中拥有相同的数据,而无需尝试在从属数据上手动添加与主数据相同的数据? 最佳答案 一种选择是对主服务器进行备份并使用它来完全替换副本
我有一个Master和一个Slave 操作系统:MySQL5.6 & RHEL 7.0 复制状态:运行良好 一切工作正常且正确我想检查数据是否在服务器之间正确复制(主到从),并在 mysqlrplsy
我是 pgbouncer 1.7 的新手,我想用主从配置来配置它。 我已经使用 repmgr 配置了 postgres 9.3 流复制,我想使用 pgbouncer 进行负载平衡和连接池,以便在主服务
我想将一个从站连接到 Master-Jenkins,但是在尝试连接时出现以下错误: [05/02/18 15:26:59] [SSH] Opening SSH connection to Key e
我在 Windows 计算机上运行 SonarQube Server 和 Jenkins 实例。 我已经创建了 Jenkins 作业来使用 SonarQube 生成代码覆盖率报告。该作业在 Linux
我有一个这个模型(它不是实际代码,为了清楚起见,我省略了 INotifyPropertyChanged 实现)。 public class Project { public Ob
我正在使用分开的主细节剑道 ui 网格。主网格位于标签条 1 (tabstrip.select(0)) 内。添加/编辑字段(用于主网格)位于首页的标签条 2 (tabstrip.select(1))
我有 5 个选项卡栏项目。第五项是 UISplitViewController。在肖像模式下,在应用程序启动时,我可以看到详细信息屏幕,而不是主屏幕。我期待着大师的到来。在横向模式下,主从细节工作正常
作为 swift 的新手,我正在尝试使用 Master View Controller,在其中我使用 JSON 阅读博客并将其存储在核心数据中。一切都很好,只是我不明白如何在向右滑动和删除时从核心数据
我正在尝试使用主从复制配置 MySQL 数据库。在我意识到必须使用此复制来设置环境之前,我已经有 2 台独立的服务器运行它们自己的 MySQL 数据库。这些服务器中的每一个的配置都完全相同。 MySQ
我有一个正在运行的 Django 应用程序。我使用的数据库后端是 PostGreSql。一切对我来说都很好。 现在我想为我的数据库创建一个主从复制,这样: 无论 master 发生什么变化,都会在 s
我是一名优秀的程序员,十分优秀!