rs485 16路继电器控制板 仿modbus通信协议控制有上下位机程序

发布者:bobojrt最新更新时间:2020-09-21 来源: 51hei关键字:rs485  16路继电器  通信协议  上下位机 手机看文章 扫描二维码
随时随地手机看文章

Modbus十六路继电器输出控制板

一、应用场合

  • 工业控制需要扩展输出口的场合

  • PLC输出接口扩展

  • 组态触摸屏控制

  • 简要说明

  • 尺寸:长152mmX宽163mmX高25mm

  • 通讯协议:MODBUS_RTU模式

  • 工作电压:直流12伏(另有24V)

  • 掉电后保存继电器状态

  • 看门狗复位功能


三、特点

  • RS485标准接口

  • 16路输出光电隔离控制继电器

  • 标准11.0592M晶振,9600波特率、八位数据位、一位停止位、一位校验位(偶校验)

  • 有上电复位和手动复位。

  • MODBUS_RTU标准协议控制

  • 输出16路继电器LED指示。

  • 通过软件指令设定地址等参数

  • 可控制交流220V/10A以下设备

  • 有程序下载口,可随意更改程序。

  • 可按客户要求定制协议


注:顾客可以根据需要选择相应的产品,我们公司有两路开关量2路输入输出、4路开关量输入输出、8路开关量输入输出、8路模拟量输入4路开关量输出、15路开关量输入输出、30路输入输出等继电器控制板,有需要请联系我们,选择您满意的产品!


四、工作环境

  • 工作环境温度:-20℃~65℃

  • 相对湿度:95%(无凝结)


五、引脚描述

名称

描述

名称

描述

VCC

12V电源正极

OUT7

第七路继电器公共端和常开端

GND

电源负极

OUT8

第八路继电器公共端和常开端

A+

RS485数据A+

OUT9

第九路继电器公共端和常开端

B-

RS485数据B-

OUT10

第十路继电器公共端和常开端

OUT1

第一路继电器公共端和常开端

OUT11

第十一路继电器公共端和常开端

OUT2

第二路继电器公共端和常开端

OUT12

第十二路继电器公共端和常开端

OUT3

第三路继电器公共端和常开端

OUT13

第十三路继电器公共端和常开端

OUT4

第四路继电器公共端和常开端

OUT14

第十四路继电器公共端和常开端

OUT5

第五路继电器公共端和常开端

OUT15

第十五路继电器公共端和常开端

OUT6

第六路继电器公共端和常开端

OUT16

第十六路继电器公共端和常开端

五、硬件连接

  • 电源的连接

  • RS485的连接

注:RS485建议采用双绞线连接,采用带屏蔽的双绞线连接,并将屏蔽层接地,总线上挂多个模块时,采用手拉手不的连接方式。

  • 继电器输出的连接

六、软件协议

6.1串口通信定义

  • 串口波特率:1位起始位、8位数据位 、1位停止位 、偶校验

  • 默认地址:0x01

  • 通讯接口:RS485

6.1指令功能表

功能

从机地址

0x01~0xff

命令

寄存器地址

高字节、低字节

数据域

CRC校验

高低字节

长度

1个字节

1个字节

2个字节


2个字节

读取继电器状态

Addr

0x02

0x0001

高字节:0x00

低字节:0x0f(16个继电器状态)

CRCH

CRCL

控制多路继电器

Addr

0x0F


0x0000~0x000f

继电器个数

高:0x00

低:0x01~0x0f

字节个数

(1个字节)

0x01~0x02

数据域

对应位为1:开

对应位为0:关

CRCH

CRCL

控制单个继电器

Addr

0x05

0x0000~0x000f

高:0xff  低:0x00 吸合

高:0x00 低:0x00 断开

CRCH

CRCL

设定模块地址

Addr

0x06

0x0010

要修改的地址两个字节

CRCH

CRCL

6.2指令示例及详解

  • 读取16路继电器状态(地址0x01)

地址

功能

继电器起始地址

读取个数

CRC校验

0x01

0x02

高:0x00

低:0x01

高:0x00

低:0x0F

0x69

0xCE

从机回应

地址

功能

字节数

返回继电器状态

CRC校验

0x01

0x02

0x02

高:0x00

低:0x00

0xB9

0xB8

注:返回的十六路状态0为断开,1为吸合

  • 控制多路继电器

a.控制所有继电器全开主机发送:

地址

功能

继电器起始地址

控制继电器个数

字节个数

数据域

CRC校验

0x01

0x0F

高:0x00

低:0x00

高:0x00

低:0x0F

0x02

0xff 0xff

0xE4

0x44

从机回应:

地址

功能

继电器起始地址

控制继电器个数

CRC校验

0x01

0x0F

高:0x00

低:0x00

高:0x00

低:0x0F

0x15

0xCF

注:控制多路时数据域中二进制数对应位为1是打开某一路继电器,为0关闭某一路继电器

b控制所有继电器全关主机发送:

地址

功能

继电器起始地址

控制继电器个数

字节个数

数据域

CRC校验

0x01

0x0F

高:0x00

低:0x00

高:0x00

低:0x0F

0x02

0x00 x00

0xE5

0xF4

从机回应:

地址

功能

继电器起始地址

控制继电器个数

CRC校验

0x01

0x0F

高:0x00

低:0x00

高:0x00

低:0x0F

0x15

0xCF

注:控制多路时数据域中二进制数对应位为1是打开某一路继电器,为0关闭某一路继电器

  • 控制单个继电器状态

控制第一路继电器开主机发送:

地址

功能

继电器地址

打开继电器

CRC校验

0x01

0x05

高:0x00

低:0x00

高:0xFF

低:0x00

0x8C

0x3A

从机回应:

地址

功能

继电器地址

打开继电器

CRC校验

0x01

0x05

高:0x00

低:0x00

高:0xFF

低:0x00

0x8C

0x3A


控制第一路继电器关主机发送:

地址

功能

继电器地址

打开继电器

CRC校验

0x01

0x05

高:0x00

低:0x00

高:0x00

低:0x00

0xCD

0xCA

从机回应:

地址

功能

继电器地址

打开继电器

CRC校验

0x01

0x05

高:0x00

低:0x00

高:0x00

低:0x00

0xCD

0xCA

6.3上位机测试软件

上位机简介

  • 上位机编译环境:vs2008.net

  • 使用语言是vb.net

  • 使用该软件需要安装framwork3.5软件(一般win7系统都已安装)

  • 打开该软件前请先把数据线和控制板连接好,控制板供电

上位机软件可控制七个十六路继电器输出控制板,如要需要控制更多从机设备,需要更改上位机软件,

产品展示

附录:


单片机源程序如下:

/********************************************************************

                            汇诚科技

实现功能:串口控制继电器程序

使用芯片:AT89S52

晶振:11.0592MHZ

波特率:9600

编译环境:Keil

【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!

*********************************************************************/

#include                 //库文件

#include

#include

#define uchar unsigned char//宏定义无符号字符型

sbit K1=P2^0;

sbit K2=P2^1;

sbit K3=P2^2;

sbit K4=P2^3;

sbit K5=P2^4;

sbit K6=P2^5;

sbit K7=P2^6;

sbit K8=P2^7;

sbit K9=P1^0;

sbit K10=P1^1;

sbit K11=P1^2;

sbit K12=P1^3;

sbit K13=P1^4;

sbit K14=P1^5;

sbit K15=P1^6;

sbit K16=P1^7;


sbit RS485_DIR=P3^7;

uchar dat;

uchar t,r,ii;

uchar add;    //掉电保持485的地址

uchar j=0;

bit flag_zx=0;

uchar sendBuf[10];          //发送缓冲区

uchar receBuf[10];    //接收缓冲区

bit busy;

bit bz1=0;

bit bz2=0;

bit bz3=0;

bit bz4=0;

bit bz5=0;

bit bz6=0;

bit bz7=0;

bit bz8=0;

/********************************************************************

                            延时函数

*********************************************************************/

void delay(uchar t)

{

  uchar i,j;

   for(i=0;i   {

            for(j=13;j>0;j--);

         { ;

         }

   }

}


/********************************************************************

              功能:串口初始化,波特率9600,方式1

*********************************************************************/

void Init_Com(void)

{

TMOD = 0x20;

PCON = 0x00;

SCON = 0x50;

TH1 = 0xFd;

TL1 = 0xFd;

TR1 = 1;

ES=1;

EA=1;

}


/****************发送函数*********************/

void senduart2()

{          

RS485_DIR=1;

SBUF=sendBuf[0];while(!TI);TI=0;

SBUF=sendBuf[1];while(!TI);TI=0;

SBUF=sendBuf[2];while(!TI);TI=0;

SBUF=sendBuf[3];while(!TI);TI=0;

SBUF=sendBuf[4];while(!TI);TI=0;

RS485_DIR=0;

}

/*****************清空发送缓冲区*************************/

void clear_receBuf()

{

    uchar i;

        for(i=0;i<5;i++)

        {

            receBuf[i]=0;

        }

}

/********************************************************************

                            主函数

*********************************************************************/

void main()

{

Init_Com();//串口初始化

add = EEPROMReadByte(0);

//add = 0X00;

    P2=0XFF;

        P1=0XFF;

        RS485_DIR=0;

while(1)

{


/********************************************************************

                            接收数据判断函数

*********************************************************************/

if(RI)  //如果有接收

           {

             RI=0; //接收标志清零

             receBuf[r++&0x0F]=SBUF;     //把接受的数据存储到BUT数组中

                 if(receBuf[0]!=0xaa){r=0;}

                 if(r>=5)

                 {        r=0;


                    flag_zx=1;

                 }

           }

           if(flag_zx==1)

           {                     


                flag_zx=0;

                    //0         1       2       3        4               

                        //起始位   地址位  功能位   数据位  结束位

                        if((receBuf[0]==0xaa)&&(receBuf[4]==0xbb)&&(receBuf[1]==add))          //如果开始位和结束位,还有地址都正确,进行下一步判断

                        {

                           if(receBuf[2]==0x01)  //修改板子地址

                           {

                                add=receBuf[3];

                                        EEPROMSectorErase(0);//擦除扇区

                                EEPROMWriteByte(0,add);//写入新的地址

                           }

                           else if(receBuf[2]==0x02)  //打开单路继电器

                           {

                                       switch(receBuf[3])

                                        {

                                            case 0x01: K1=0; break;

                                                case 0x02: K2=0; break;

                                            case 0x03: K3=0; break;

                                                case 0x04: K4=0; break;

                                            case 0x05: K5=0; break;

                                                case 0x06: K6=0; break;

                                            case 0x07: K7=0; break;

                                                case 0x08: K8=0; break;

                                                case 0x09: K9=0; break;

                                                case 0x0A: K10=0; break;

[1] [2] [3]
关键字:rs485  16路继电器  通信协议  上下位机 引用地址:rs485 16路继电器控制板 仿modbus通信协议控制有上下位机程序

上一篇:51单片机PCF8591 DA转换源码
下一篇:两轮巡线小车源程序 2个红外传感器

推荐阅读最新更新时间:2024-11-17 03:41

stm32串口1和RS485通信的串口2的配置
stm32串口1的配置 #if EN_USART1_RX //如果使能了接收 //串口1中断服务程序 //注意,读取USARTx- SR能避免莫名其妙的错误 u8 USART_RX_BUF ; //接收缓冲,最大USART_REC_LEN个字节. //接收状态 //bit15, 接收完成标志 //bit14, 接收到0x0d //bit13~0, 接收到的有效字节数目 u16 USART_RX_STA=0; //接收状态标记 void uart_init(u32 bound){ //GPIO端口设置 GPIO_InitTypeDef GPIO_InitStructure; USART_In
[单片机]
如何优化电机驱动系统 电机与驱动的通信协议探讨
改进工业电机的设计以及与驱动装置和其他系统的通信,可帮助工程师在工业机器和应用方面取得成功。 设计和部署电机驱动系统有助于提高自动化效率,并为生产过程的关键部件提供信息。电机和驱动装置之间以及其它设备和系统之间的工业通信通常采用基于标准的协议,例如EtherCAT、EtherNet/IP和Profinet等。 三位来自通信协议组织的专家:PI用户组织北美执行董事 Michael Bowne、EtherCAT技术集团北美代表 Bob Trask 和 ODVA组织分布式运动和时间同步 SIG成员Paul Brooks,向我们介绍了工程师如何优化电机驱动系统、改善工业电机通信、操作和安全。 01 电机选择标准 EtherCAT技
[嵌入式]
如何优化电机驱动系统 电机与驱动的<font color='red'>通信协议</font>探讨
三晶S350系列变频器与西门子S7-200 MODBUS的通讯
1、概述   三晶S350系列 变频器 提供了RS485通讯接口,采用国际标准的MODBUS(RTU/ASCII)的通讯协议进行主从通讯,用户可通过PC/ PLC ,控制上位机等实现集中监控,以适应特定的使用要求。下面以RTU方式为例详细说明三晶S350变频器与西门子S7-200的MODBUS串行通讯。 2、通讯参数设置   要实现变频器与上位机的通讯控制,先需要设置变频器参数F0.01=2,F0.03=9,即变频器的启动方式及频率给定由通讯给定。除此之外还必须要选择好正确的通讯端口,且需确保变频器与上位机两者的通讯参数的一致性。 3、 接线方式   三晶S350系列变频器与西门子S7-200的通讯连接采用
[嵌入式]
基于RS485总线通信的智能小区周界防越报警系统的设计
  1.引言   随着科学技术和经济的快速发展,人们对居家的概念已从最初满足简单的居住到注重对住宅的人性化需求,如安全、舒适、快捷、方便的智能小区,其中安全性是智能小区设计的首要目标。智能小区的安防系统担负着保护小区居民生命和财产安全的职责,由周界防越报警、视频监控、电子巡查、可视对讲、出入口控制、停车场管理等子系统组成,其中周界防越报警子系统是整个智能小区安防系统的核心之一。   2.智能小区周界防越系统概述   智能化住宅小区周界防越系统是为了防止有人从非法入口擅自闯入小区,以避免各种潜在的危险。为了对小区的周界进行安全防范,防止围墙或栅栏有可能受到破坏及非法翻越,提高周边的安全防范的可靠性,缩短发现非法入侵的时间,保证
[嵌入式]
浅谈RS485总线防雷保护
RS485作为最为最常用的电表通讯方式之一,其具有的噪声抑制性能高、信令速率高、可以在一个单独的总线上实现多节点以及能够使用的收发器品种多等优点,已经越来越得到使用与肯定。但是伴随着使用频率的增高,其遇到的问题也日益增加。例如,日常生活中雷电和静电干扰已经成为485通信总线在实际工程经常遇到的问题。雷电能够使各种通信总线构成的系统遭到严重的毁坏, 静电电磁干扰也严重地影响通信总线的数据传输质量。故如何对芯片以及总线进行有效的保护,是摆在每一个使用者面前的一个问题。在这里,我们主要讨论485在电表中的防雷保护及方案。 一.雷击过压防护的必要性 RS-485 接口带电拔插和抖动都会引起电压的剧烈变化,都会使芯片损坏,而RS485总线
[嵌入式]
无人机航磁测量系统通信协议转换器的设计
鉴于无人机航磁测量系统具有经济、高效、安全的优势,其在小区域大比例尺航空物探应用领域具有广阔前景。近年来无人机航磁测量系统的研发与应用日益受到世界航空地球物理勘查公司的广泛关注。现在国外已发展了多套技术成熟的无人机航磁测量系统,并且得到了实际应用。典型的无人机航磁系统包括Fugro公司的Georanger系统、Magsurvey公司的PrionUAV系统等。中国地质科学院地球物理地球化学勘查研究所在航空物探领域有较深的理论研究和应用实践,在2012年联合中国航天空气动力研究院开展彩虹系列无人机航空物探系统的研究工作,包括飞行平台的选型和改装、航磁和航放测量设备的适用化改型、系统集成以及搭载试验。其中涉及彩虹三无人机和AARC510
[单片机]
无人机航磁测量系统<font color='red'>通信协议</font>转换器的设计
基于现场总线的感应淬火机床控制系统设计
0前言 近年来,随着计算机网络的发展,企业资源计划(ERP)的应用已日渐普及,制 造执行系统(MES)的研究和应用也得到业界的高度重视。感应热处理机床是一种清洁热处理 设备,符合现代化工业生产的3S标准(Sure—可靠,Safe—安全,Saving—节约),又可以安 装在生产线上进行在线金属热处理,在国内外机械热处理行业已广泛应用,在制造多功能回 转式淬火机床时,笔者研制了支持现场总线的数控系统使机床支持工业以太网,进而可以与 车间级网络进行信息交换,并进行远程淬火参数设置。 1多功能回转式淬火机床简介 感应加热是利用电磁感应的方法对导体材料进行加热。其主要优点是 “效率 高、成本低、节能、易于实现自动控制。金属热处理的感应加
[嵌入式]
PLC在机械手远程控制系统中的应用
1.引言   当今社会,科学技术飞速发展,人类活动给世界带来了巨大的改变。在科技进步的同时,以各种控制器控制的不同类型的机械手以其突出的性能越来越多的被人们所应用。机械手在不同的作业场合,尤其是在特殊的环境背景下,为人类活动的顺利快速进行带来了极大的方便和益处,尤为明显的是在工业及军事领域内。工业中大量的生产活动,存在着很多不便于人类操纵的环节,特别是在工作环境较危险的情况下[1],如果使用具有远程控制功能的机械手,则可以增加系统的安全性,大大的节约损耗,提高效率。可见,在 自动化 、工业化进程中,在特殊背景环境中使用机械手已成为一种必然的趋势[2]。 2. 控制系统 组成   2.1 系统组成   本控制系统中选
[嵌入式]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved