GYJ-0268 八路开关量输入可编程串口通讯 NPN开关量信号输入转485通讯输出

合集下载

嵌入式系统应用中实现RS485的方向切换-技术方案

嵌入式系统应用中实现RS485的方向切换-技术方案

嵌入式系统应用中实现RS485的方向切换-技术方案RS485接口具有良好的抗噪声干扰性能、长传输距离和多站能力等特点,使其成为工业控制的串行接口。

嵌入式系统中也广泛采用RS485接口作为设备控制的串行接口。

RS485采用两线差分的接线方式进行串口数据的传输。

由于发送和接收都是采用这两根差分线进行,因此它是半双工工作模式。

基于RS485的特点,分别讲述了通过硬件方式和软件方式来实现RS485发送和接收方向的切换,重点解决了DM8168嵌入式平台上软件实现RS485方向切换的功能。

RS485总线是工业应用中非常成熟的技术,是现代通信技术的工业标准之一。

RS485总线用于多站互连十分方便,用一对双绞线即可实现,采用平衡发送和差分接收,即在发送端驱动器将TTL电平信号转换成差分信号输出,在接收端接收器将差分信号变成TTL电平,因此具有抗共模干扰的能力。

根据RS485标准,传送数据速率达100 kb/s时通信距离可达1200 m。

RS485在嵌入式系统中的应用非常广泛。

嵌入式系统可以通过RS485接口来控制终端设备。

由于RS485是半双工模式,因此发送和接收的方向切换需要我们的关注和研究。

如果方向切换方式选择不好可能会导致RS485驱动能力下降、软件执行效率下降,甚至导致系统异常等问题。

本文分别给出硬件实现RS485方向切换和软件实现RS485方向切换两种方式。

两种方式各有优点,硬件方式控制起来比较简单。

软件方式的驱动能力更好,但是和嵌入式平台关系比较密切,不同的平台都需要调试和验证。

1 硬件方式控制RS485方向图1所示为硬件控制RS485的电路图。

电路中使用2N7002LT1G MOS场效晶体管把UART_TXD_485这个MCU输出的RS485发送信号逻辑取反后送给RS485芯片的RE/DE PIN脚。

控制的原理是,当UART_TXD_485输出低电平时RS485芯片的DE使能;输出高电平时RE使能。

格雷码转485

格雷码转485

格雷码转485的过程涉及到硬件和软件两个方面,以下是一个大致的步骤和说明:
1. 硬件准备:需要准备能够进行485通讯的设备,例如485通讯模块,用于物理层的数据传输。

同时,需要将格雷码转换成数字信号的电路,例如单片机或微处理器等。

2. 格雷码编码转换:将原始数据按照格雷码的规则进行编码,得到一组二进制数据。

然后,将这组二进制数据输入到单片机或微处理器中,进行485编码。

在单片机或微处理器中,需要编写相应的程序,将二进制数据转换成485通讯协议支持的格式,例如曼彻斯特、RS232等。

3. 数据传输:通过485通讯模块,将编码后的数据发送到另一端的设备中。

另一端的设备需要能够解析485编码的数据,将其转换回格雷码或者其他类型的编码,以便后续的处理。

4. 错误检测与校正:在进行485通讯时,由于物理层的限制,可能会出现数据传输错误的情况。

因此,需要在编码和解码的过程中加入校验位,以便检测和校正错误。

注意事项:
1. 确保485通讯的波特率、数据位、校验位等参数设置正确。

2. 在进行格雷码转485的过程中,要保证编码的正确性和可靠性。

3. 在进行解码时,要确保能够正确地将485编码的数据转换回原始的格雷码数据。

以上回答仅供参考,具体情况可能因实际设备和通讯协议的不同而有所不同。

如果需要更详细的指导,建议咨询专业人士。

RS485串行通信电路设计

RS485串行通信电路设计

RS485串行通信电路设计RS485是一种常见的串行通信协议,广泛应用于工业自动化、仪器仪表、电力系统等领域。

RS485通信具有高可靠性、抗干扰能力强、通信距离远等特点,因此在一些需要长距离、高可靠性的通信场景中得到广泛应用。

本文将针对RS485串行通信电路的设计进行详细介绍。

首先,我们需要了解RS485通信的基本原理。

RS485采用差分信号传输,即发送端将逻辑0和逻辑1分别表示为低电平和高电平,接收端通过比较接收到的两个信号的电平差值来判断传输的是0还是1、差分信号传输具有较强的抗干扰能力,可以有效地抵抗电磁干扰和串扰。

除了收发芯片,RS485通信电路还需要考虑其他一些因素。

首先是电源电压的选择,一般RS485通信电路的电源电压为5V,但也可以根据实际需求选择其他电压。

其次是控制信号的设计,通常需要使用一个使能信号来控制发送和接收的开关。

此外,还要考虑阻抗匹配和信号线的布线,通常使用120欧姆电阻进行阻抗匹配,并尽量避免信号线与电源线、高电压线等干扰源的靠近。

在实际设计中,我们可以参考以下步骤进行RS485串行通信电路的设计:1.确定通信距离和通信速率:根据实际需求确定通信的最远距离和传输速率,这将影响到电路设计的一些参数。

2.选择收发芯片:根据通信距离和速率的要求,选择合适的收发芯片,并根据其规格书进行电路连接和布线。

3.设计电源电路:确定电源电压和电流,并设计相应的电源电路,通常需要增加滤波电容来提高电源的稳定性。

4.控制信号设计:根据收发芯片的要求设计使能信号和其他控制信号的接口电路。

5.阻抗匹配和信号线布线:根据通信距离和速率要求,选择合适的阻抗匹配电阻,并良好地布线,以减少干扰和串扰。

6.电路测试和优化:完成电路设计后,进行测试和优化,检查通信稳定性和可靠性,并根据需要进行一些调整和改进。

总之,RS485串行通信电路设计是一个相对复杂的过程,需要考虑多个因素的综合。

通过仔细设计和优化,可以实现稳定、可靠的串行通信。

欧诺克 CAN转485 使用说明书

欧诺克 CAN转485 使用说明书

CAN 转 485 说明书CAN to 485 manual深圳市欧诺克科技有限公司一、接线说明(1)J1端子模块供电电源(直流20-90V),+HV 电源正,GND 电源负(2)J2端子485接口。

如果B 和R 短接,表示485接终端电阻(3)J3端子CAN 接口(和伺服的网线接法是平行网线压法)(4)S1 选择485的波特和检验位(参考通信设置中的说明)(5)本通信卡最多可以带16台从站,典型网络图如下CAN 转485型号说明090 - MRTUCANC:CANMRTU:远程控制终端远程控制终端090:18~90V 180:18~180VRS485R:RS485C R额定电压制动电阻型号汇总驱动器型号电压CR090-MRTU 18~90VDC CR180-MRTU18~180VDC二、通讯设置1、485通讯设置(1)波特率与校验2数据位模块内部 J5-MDB 位跳线帽插上为 8 取出为 7 (默认为8)。

3停止位模块内部 J5-MSB 位跳线帽插上为 1 取出为 2 (默认为1)。

旋钮 S1 的值波特率校验09600None119200None238400None357600None4115200None59600Odd619200Odd738400Odd857600Odd9115200OddA9600EvenB19200EvenC38400EvenD57600EvenE115200EvenF115200Even2、CAN通讯设置Can波特率(默认为1000k)(1) 模块内部J5-CB1~3为CAN波特率设置CB1CB2CB3波特率ON ON ON1000kOFF ON ON800kON OFF ON500kOFF OFF ON250kON ON OFF125kOFF ON OFF50kON OFF OFF25kOFF OFF OFF1000k三、地址寄存器索引表(4X)序号CAN_INDEX(HEX)MODBUS ID(DEC)长度(字节)操作方式说明1100C1102RW CANopen节点保护时间,配合0x100D使用,单位(ms)可以向系统站ID为166写入数值向所有子站发送2100D1111RW CANopen节点保护因子,和0x100c的乘积,为节点保护时间可以向系统站ID为166写入数值向所有子站发送3781节点保护(发送数据0x5A5A,可以向系统站ID为166写入该值向所有子站发送保护帧)4791NMT操作(网络管理)1:操作 0x80预操作 0x81复位节点可以向系统站ID为166写入数值向所有子站发送56040802RW控制字(附表一)660411202R状态字(附表二)710021224R驱动器状态寄存器821801244R紧急状态寄存器921811264R事件锁存寄存器1021841124R CANopen限制状态掩码116060811RW CAN模式的控制模式选择(附表三)1260611211R CAN操作模式显示132300822RW操作模式(附表四)1410011281R1521201144RW跟随错误窗口1621821164R故障掩码1721831294R锁存故障寄存器182310884RW模式选择1960641314RW电机实际位置(count)2060691334R电机实际速度(0.1 counts/sec)21221c1352R电机实际电流(0.01 amps)2222001362R模拟量输入(mv)2322011372R母线电压(0.1V)2422021382R驱动器温度2521901402R端子输入状态262191902RW端子上下拉电平选择272194912RW端子输出状态与控制28606704RW位置跟随窗口29606822RW位置跟随窗口时间3060F434R位置错误3160FB:152RW位置环比例(Pp)3260FB:262RW位置前馈()3360FB:372RW速度前馈()3460FB:482RW增益倍数35607D:194RW软件负限位,回零后有效36607D:2114RW软件正限位,回零后有效372253134RW接近软件限制时的减速率12100154RW速度环最大加速度(1000counts/s2)22101174RW速度环最大减速度(1000counts/s2)32102194RW速度环紧急减速度(1000counts/s2)42103214RW速度环最大速度(0.1counts/sec)52104234RW速度误差窗口6606d252RW72105262RW速度错误窗口时间82341274RW命令速度(0x2300设成11时的速度模式,速度值)960F9:1292RW速度环比例增益(Vp)1060F9:2302RW速度环积分增益(Vi)1160F9:3312RW1260F9:4322RW1360F9:5332RW电流环参数12110342RW峰值电流(0.01amps)22111352RW持续电流(0.01amps)32112362RW I2t时间 (ms)42113374RW命令电流增加率(mA/sec)52340392RW命令电流(0.01amps)660f6:1402RW电流环比例增益(Cp)760f6:2412RW电流环积分增益(Ci)860f6:3422RW电流偏移96071732RW目标扭矩rated torque/1000106076744RW额定扭矩函数发生器功能12330832RW函数发生器配置 8193:梯形波形 2:正弦波形22331842RW函数发生器的频率(Hz)32332854RW函数发生器的幅度42333872RW发生的占空比 , 方波有效(0.1%)回零模式参数16098431RW回零模式选择(在软件配置)26099:1444RW回零高速速度(0.1counts/sec)36099:2464RW回零低速速度(0.1counts/sec)4609A484RW回零时的加减速(10counts/sec2)5607C504RW原点偏移位置(counts)62351522RW硬停止回零模式延时(ms)72350532RW硬停止模式电流(0.01A)82352542RW原点偏移位置(counts)位置模式12121554RW S曲线的加加速度(100counts/sec2)222521412R轨迹曲线状态321221424R轨迹生成器目标位置.脉冲输入时有用4607A604RW给定目标位置56081624RW轨迹位置模式生成器的速度(0.1counts/sec)660FF644RW轨迹速度模式生成器的速度(0.1counts/sec)76083664RW加速度(10counts/sec2)86084684RW减速度(10counts/sec2)96085704RW急停减速度(10counts/sec2)106086722RW轨迹曲线模式选择 0:是梯形曲线 3:是s形曲线 -1:只走速度驱动器状态信息130R 输出短路231R 驱动器过温332R 过电压433R 电压低534R 电机过温635R 输出电源故障736R 电机相序错误837R 输出电流限制938R 输出电压限制1039R 正限位故障1140R 反限位故障1241R 硬件没使能1342R 软件没使能1443R 停止电机1544R 电机刹车激活1645R PWM 输出没激活1746R 软件正限位1847R 软件负限位1948R 跟踪错误2049R 跟踪报警2150R 驱动器处于复位状态2251R 位置错误2352R 驱动器故障2453R 速度限制2554R 加速度限制2655R 位置误差大于误差警告2756R原点信号激活16410:2952RW 电机极数26410:0B 964RW 电机最高速度(rpm)36010:17984RW 电机编码器分辨率(counts)驱动器属性16510:31502R 驱动器峰值电流26510:41512R 驱动器持续电流36510:51522R I2t 时间46510:61532R 驱动器最高电压56510:71542R 驱动器最低电压66510:91552R驱动器最高温度四、线圈寄存器地址(0X)序号CAN_INDEX (HEX)MODBUS ID (DEC)长度 (字节)操作 方式说明10R 输入端子对应MODBUS 地址,0对应IN1,1对应IN2如此类推220R 输出端子对应MODBUS 地址,20对应out1,21对应out2如此类推380W 保存参数484W 驱动器复位585W 故障清除686W实际位置清零序号CAN_INDEX (HEX)MODBUS ID (DEC)长度 (字节)操作方式说明102R 固件版本212R 485旋钮值322R 卡内部J5值444R Rs485波特率562R Rs485校验位672R Rs485停止位782R Rs485数据位892R 485错误信息9102R CAN 波特率10112R 卡最多支持站号11122R 当前站数12132R Can 错误信息13164R CAN 总线ESR 14182R ESR Rec 15192R ESR Tec 16202R ESR Lec 17212R ESR BusOffBit 18222R ESR EPVF 19232R ESR EWGF20252R 有效站位.4X25-4X4021781RW 所有站发送节点远程帧22791RW 所有站发送NMT 231101RW 所有站发送节点时间241111RW所有站发送节点时间因子2857R (位置模式)运动中2958R 位置误差大于误差警告3059R 相序未初始化3160R PMW 命令错误3261R CRC 错误3362R 驱动器内部错误3463R 过电流3564R FPGA1错误3665R FPGA2错误3766R 安全电路故障3867R 电流超控3968R 电机绕组未连接4069R 4170R节点错误五、CAN 转485模块信息(4X )(1) 寄存器说明(2)通信指示灯状态显示485 端指示灯:1)绿灯快闪通信正常收发。

ttl转rs485自动流向控制电路方案

ttl转rs485自动流向控制电路方案

ttl转rs485自动流向控制电路方案方案概述:本方案旨在设计一种用于实现RS485自动流向控制的TTL转RS485电路方案。

通过该方案,可以实现TTL信号的自动检测与转换,实现TTL信号的发送和接收功能,并在RS485通信中实现自动流向控制,提高通信稳定性和可靠性。

方案详述:第一步:电路选型1. RS485芯片:选择一款性能稳定、集成度高、易于控制的RS485芯片,如MAX485。

2. TTL芯片:选择一款逻辑门电平转换芯片,可将TTL信号转换为RS485电平,并进行自动流向控制。

第二步:电路设计1. TTL转RS485电路设计:a.将TTL信号输入到逻辑门电平转换芯片的输入端。

b.逻辑门电平转换芯片输出的电平通过电阻分压电路,将电平转换为RS485通信所需的电平范围。

c.将转换后的RS485信号输出到RS485芯片的输入端。

2.自动流向控制设计:a. RS485芯片提供了自动流向控制功能,通过配置芯片的控制引脚,可以实现自动的发送和接收流向切换。

b.根据实际需求,设置RS485芯片的发送和接收流向切换条件。

c.在TTL转RS485电路中添加控制集成电路,根据RS485芯片的控制引脚状态,控制逻辑门电平转换芯片的工作模式,以实现自动发送和接收流向切换。

第三步:电路调试和优化1.制作电路原型并进行调试,在调试过程中,需要注意芯片的引脚连接是否准确,信号电平是否正确,以及自动流向控制的可靠性等。

2.调试完成后,对电路进行优化,包括减少电路噪声、提高电路稳定性和可靠性等。

第四步:性能测试与验证1.对电路进行性能测试,包括信号的发送和接收稳定性、自动流向控制的可靠性等。

2.对电路的性能进行验证,与已有的RS485通信设备进行连接测试,并对数据传输稳定性、通信距离等进行验证。

第五步:电路应用与改进1.将电路应用于实际场景中,如工业自动化、电力监控等领域。

2.根据实际应用需求和用户反馈,对电路进行改进和优化,以提高性能和可靠性。

远程IO模块_开关量转rs485

远程IO模块_开关量转rs485

远程IO模块_开关量转rs485
提供I/O转485功能,主要⽤于⼯业现场监控应⽤。

其采⽤RS485总线技术通信,能够将⼯业现场I/O数据通过RS485总线实现远程采集,亦可通过485继电器远程控制机电设备的开关,其具有设计简单,布线⽅便,易于维护,能够提供远距离⾼速数据收发等特点。

采⽤标准的Modbus RTU协议,使之能够直接通过RS485总线与其他基于Modbus RTU协议的RS485设备组⽹通信,可以直接与市⾯上⼤部分组态软件以及PLC组态使⽤。

产品主要应⽤领域:
1. ⽤于⼯业控制中输⼊、输出触点的I/O扩展,可以与PLC连接,扩展PLC的输⼊、输⼊端⼝。

2. 通过RS485总线进⾏控制,每台设备可设置1~255个地址,允许多台设备同时⼯作。

3. 可⽤于替代普通的⼯业可编程控制器PLC,⽤于各种控制场合(如各种机器控制),性价⽐更⾼。

4. 可⽤于单⽚机系统学习和试验;迅速组建套完整的开关量控制系统,⽐如灯光控制系统,门禁控制系统,电机控制系统,阀门控制系
统等,与组态软件配合,迅速制作画⾯精美的控制界⾯。

5. 可⽤于串⼝控制多路继电器输出,⽤于电脑、触摸屏上实时监控各种开关量信号的状态,如实时监控灯光、电源开关等信号应⽤。

6. ⽤于各种集散型控制系统、各种远程控制系统。

7. 可⽤于楼宇、⼴告等灯光控制,电⼚控制,⾃动化车间的⼤中型控制项⽬。

8. 可⽤于⼯业控制电脑的外设扩展模块,轻松实现外部控制。

8路IO输入输出说明书

8路IO输入输出说明书

8路IO 输入输出 说明书产品图片产品特性及参数规格模块特性参数规格 一、TTL 电平和干接点信号输入 检测;二、TTL 电平和LED 指示灯信号输出; 三、通信接口:RS-485;四、可用于机械按键,传感器触发 开关的识别及状态反馈; 五、8位拨码设定ID 号;六、体积小巧,非常适合86盒内隐 藏式安装。

型号IO0404FB名称 4路IO 输入4路IO 输出模块 总线 RS-485输入TTL 电平、或干接点 4输出TTL 电平、 或LED 指示灯 4拨码开关设置1.拨码开关拨上为有效,拨下无效;2.7、8位一般为拨上状态(如图所示);3.第一位对应ID 01,第二位对应ID 02,第三位对应ID 03,第四位对应ID 04, 从1-6位(低到高)以此类推4.例:ID 10将拨码开关第2位跟第4位拨上(ID2+ID8=ID10) ID15将拨码开关第1、2、3、4拨上(ID1+ID2+ID4+ID8=ID15)拨码开关右图ID 02注释:G-模块供电DC 24V“–极”接触点;24V-模块供电DC 24V“+ 极”接触点;A-模块RS485总线信号“A +”接触点;B-模块RS485总线信号“B–”接触点;后面2个端子是预留位,暂时未定义;注:G是“GND”地,GND是直通的1~4是IO输入信号,与G短路就能触发指令指令发送有2种形式:1.通过拨码改变发送数据(直接通过改变ID的形式发送不同代码)如ID为01,G与1短路发送指令如下:CA 20 FE C1 04 03 01 00 01 AC如ID为02,G与4短路发送指令如下:CA 20 FE C1 04 03 04 00 02 AC2.填写固定发送指令需要通过软件修改模块发码数据(建议将发码数据给厂家,可帮您设置好)5~8是IO输出信号,输出3.3V电压EEPROM地址定义:0x00 : ID地址设置位0x21: IO1到IO4 输入输出方式控制位。

GYJ-0071_单路输入输出可编程485控制模块产品使用手册

GYJ-0071_单路输入输出可编程485控制模块产品使用手册

GYJ-0071_单路输入输出可编程485控制模块产品使用手册【简要说明】一、尺寸:长78mmX宽47mmX高24mm二、主要芯片:STC单片机 MAX485芯片三、工作电压:直流5~36V四、特点:可编程控制,提供原理图,例程及相关资料,提供程序源代码,提供相关资料!客户可以通过485端口对继电器进行开关控制,也可以通过编程自由控制!1、具有信号指示灯,继电器吸合指示灯。

2、板子功耗小于1W3、额定切换电流10A以内,切换电压250V以内4、最大切换功率300W5、继电器寿命1000000次以上。

6、电器绝缘电阻100M7、触电耐压1000V8、继电器最大吸合时间15mS 毫秒9、继电器最大释放时间5mS 毫秒10、工作温度-40度至+70度11、工作湿度40% ~ 80%RH适用场合:远程通信控制,可编程控制,输入输出控制,仪器仪表监控。

12、使用说明:【标注说明】【接线说明】【应用举例下载线连接图同时可以TTL控制】【应用举例485接线图】【实用接线】【通信协议(字符控制协议)】购买后提供源代码单片机与PC机采用485通讯,波特率默认为9600.单片机接收PC机发送的ASC||数据码表如下:01、开关继电器:PC发送'A';继电器吸合发送'a' 继电器断开02、输出状态查询:PC发送B;单片机返回输出状态‘C’表示继电器开‘c’表示继电器关;03、输入状态查询:PC发送b;单片机有输入返回输入状态‘D’无输入返回‘d’表示关;04、继电器状态取反:PC发送E 继电器状态取反【通信协议(仿mod bus控制协议)】购买后提供源代码波特率9600通讯协议格式如下:发送十六进制协议启始位地址位功能位数据位结束位控制AA 00~FF 00~09 00~FF BB解释第一个数据第二个数据第三个数据第四个数据最后一个数据功能1:改变板子地址举例:更改地址:(发货默认地址00)注意:多个板子并联使用时需要不同地址协议启始位地址位功能位数据位结束位控制AA 00 01 01 BB解释开始数据向00地址发送改变地址将地址改成01 数据结束功能2:打开继电器举例:打开第一块板子的继电器协议启始位地址位功能位数据位结束位控制AA 00 02 01 BB解释开始数据向00地址发送打开功能打开继电器数据结束功能3:关闭继电器举例:关闭第二路板子的继电器协议启始位地址位功能位数据位结束位解释开始数据向01地址发送关闭功能关闭继电器数据结束功能4:打开某块板子的所有继电器(单路继电器模块的这个功能码和功能2一样)举例:打开第一块板子的全部继电器协议启始位地址位功能位数据位结束位控制AA 00 04 FF BB解释开始数据向00地址发送打开所有功能打开所有继电器数据结束功能5:关闭某块板子的所有继电器(单路继电器模块的这个功能码和功能3一样)举例:关闭第三块板子的全部继电器协议启始位地址位功能位数据位结束位控制AA 02 05 00 BB解释开始数据向02地址发送关闭所有功能关闭所有继电器数据结束功能6:查询继电器状态举例:查询第一块板子继电器状态协议启始位地址位功能位数据位结束位控制AA 00 06 01 BB解释开始数据向00地址发送查询功能查询继电器数据结束查询返回信息分析继电器关闭返回值(关闭返回00)协议启始位地址位功能位数据位结束位控制AA 00 07 00 BB解释开始数据00地址返回返回功能继电器状态关闭数据结束查询返回信息分析继电器打开返回值(打开返回FF)协议启始位地址位功能位数据位结束位控制AA 00 07 FF BB解释开始数据00地址返回返回功能继电器状态打开数据结束功能7:查询输入状态举例:查询第一块板子的输入状态协议启始位地址位功能位数据位结束位控制AA 00 08 01 BB解释开始数据向00地址发送查询功能查询输入数据结束查询返回信息分析输入返回值(关闭返回00)协议启始位地址位功能位数据位结束位解释开始数据00地址返回返回功能输入状态关闭数据结束查询返回信息分析输入返回值(打开返回01)协议启始位地址位功能位数据位结束位控制AA 00 09 FF BB解释开始数据00地址返回返回功能输入状态打开数据结束板子地址清零控制(用于地址不清晰或者忘记,在485总线下禁止操作,只可对其单独清零) 协议启始位地址位功能位数据位结束位控制AA 00 00 00 BB解释开始数据00 地址清零数据结束【原理图】【尺寸图】#include "main.h"#include "init.h"#define ENABLE_IAP 0x83 //系统工作时钟<12MHz 时,对IAP_CONTR 寄存器设置此值#define CMD_IDLE 0#define CMD_READ 1#define CMD_PROGRAM 2#define CMD_ERASE 3#define ENABLE_IAP 0x83//SYSCLK<12MH#define IAP_ADDRESS 0x0000 //存储地址uint8 add; //掉电保持485的地址uint8 j=0;uint8 dat=0X00;bit flag_zx=0;uint8 sendPosi=0; //发送缓冲区指针uint8 receCount=0; //接收缓冲区指针uint8 sendCount=0; //需要发送数据个数uint8 receTimeOut=0; //通讯超时值uint8 byteCount=5; //发送个数uint8 sendBuf[10]; //发送缓冲区uint8 receBuf[10]; //接收缓冲区/********************************************************************定义数据类型*********************************************************************/ uint8 TBUF,RBUF;uint8 TDAT,RDAT;uint8 TCNT,RCNT;uint8 TBIT,RBIT;bit TING,RING;bit TEND,REND;bit bz1=0;uint8 t,r,ii; //定义数据类型uint8 but[16]; //数据存储数组/********************************************************************定义ISP/IAP/EEPROM 命令*********************************************************************/void IapIdle();//禁用ISP/IAP/EEPROM functionmake 单片机在一安全状态uint8 IapReadByte(uint16 addr);//读数据void IapProgramByte(uint16 addr, uint8 dat);//写数据void IapEraseSector(uint16 addr);//擦除数据void delay()//延时程序{uint8 m,n,s;for(m=100;m>0;m--)for(n=200;n>0;n--)for(s=248;s>0;s--);}void delay1()//延时程序{uint8 m,n,s;for(m=10;m>0;m--)for(n=20;n>0;n--)for(s=148;s>0;s--);}/****************发送函数*********************/void send1(){sendBuf[0]=0xaa;sendBuf[1]=add;sendBuf[2]=0x10;sendBuf[3]=0xff;sendBuf[4]=0xbb;}/****************发送函数*********************/void senduart2(){ RS485_DIR=1;for(ii=0;ii<5;ii++){if(TEND) //允许发送{TEND=0;TBUF=sendBuf[t++&0x0F];TING=1;}while(!TEND);}t=0;RS485_DIR=0;}/*****************清空发送缓冲区*************************/void clear_receBuf(){uint8 i;for(i=0;i<5;i++){receBuf[i]=0;}}void main(){delay();clear_receBuf();add= IapReadByte(0x01);//读取存储的值if(add==0xff)add=0x00;ConfigUART1();TR0=1;EA=1;// TEND=0;// REND=0;while(1){if((IN1==0)&&(bz1==0)){delay1();if(IN1==0){bz1=1;send1();senduart2();clear_receBuf();OUT1 =0;}}if((IN1==1)&&(bz1==1)){bz1=0;OUT1=1;}if(REND) //如果有接收{REND=0; //接收标志清零receBuf[r++&0x0F]=RBUF; //把接受的数据存储到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];IapEraseSector(0); //擦除扇区IapProgramByte(0x01,add);//写入新的地址}else if(receBuf[2]==0x02) //打开单路继电器{switch(receBuf[3]){case 0x01: OUT1=0; break;}}else if(receBuf[2]==0x03) //关闭单路继电器{switch(receBuf[3]){case 0x01: OUT1=1; break;}}else if(receBuf[2]==0x04) //打开全部继电器{if(receBuf[3]==0xff){OUT1=0;}}else if(receBuf[2]==0x05) //关闭全部继电器{if(receBuf[3]==0x00){OUT1=1;}}else if(receBuf[2]==0x06) //查询继电器{sendBuf[0]=0xaa;sendBuf[1]=add;sendBuf[2]=0x07;//sendBuf[3]=0xfe;sendBuf[4]=0xbb;switch(receBuf[3]){case 0x01: if(OUT1==0) sendBuf[3]=0xFF;else sendBuf[3]=0x00;break;default:break;}senduart2();}else if(receBuf[2]==0x08) //查询输入{sendBuf[0]=0xaa;sendBuf[1]=add;sendBuf[2]=0x09;//sendBuf[3]=0xfe;sendBuf[4]=0xbb;switch(receBuf[3]){case 0x01: if(IN1==0) sendBuf[3]=0xFF;else sendBuf[3]=0x00;break;default:break;}senduart2();}}if((receBuf[0]==0xaa)&&(receBuf[1]==0x00)&&(receBuf[2]==0x00)&&(receBuf[3] ==0x00)&&(receBuf[4]==0xbb)){add=0x00;IapEraseSector(0); //擦除扇区IapProgramByte(0x01,0x00);//写入新的地址sendBuf[0]=0xaa;sendBuf[1]=add;sendBuf[2]=0x00;sendBuf[3]=0x00;sendBuf[4]=0xbb;senduart2();}clear_receBuf();}}}// /********************************************************** //放在主函数,定时0溢出中断函数,//*********************/void tm0()interrupt 1 using 1{if(RING){if(--RCNT==0){RCNT=3;if(--RBIT==0){RBUF=RDA T;RING=0;REND=1;}else{RDA T>>=1;if(RXB)RDAT|=0X80;}}}else if(!RXB){RING=1;RCNT=4;RBIT=9;}if(--TCNT==0){TCNT=3;if(TING){if(TBIT==0){TXB=0;TDA T=TBUF;TBIT=9;}else{TDA T>>=1;if(--TBIT==0){TXB=1;TING=0;TEND=1;}else{TXB=CY;}}}}}void IapIdle(){//禁用ISP/IAP/EEPROM functionmake 单片机在一安全状态IAP_CONTR = 0; //IAP_CMD = 0; //IAP_TRIG = 0; //IAP_ADDRH = 0x80; //IAP_ADDRL = 0; //}uint8 IapReadByte(uint16 addr){//读数据uint8 dat;IAP_CONTR = ENABLE_IAP;IAP_CMD = CMD_READ;IAP_ADDRL = addr;IAP_ADDRH = addr >> 8;IAP_TRIG = 0x5A;IAP_TRIG = 0xA5;_nop_();dat = IAP_DATA;IapIdle();return dat;}void IapProgramByte(uint16 addr, uint8 dat){//写数据IAP_CONTR = ENABLE_IAP;IAP_CMD = CMD_PROGRAM;IAP_ADDRL = addr;IAP_ADDRH = addr >> 8;IAP_DATA = dat;IAP_TRIG = 0x5A;IAP_TRIG = 0xA5;_nop_();IapIdle();}void IapEraseSector(uint16 addr){//擦除数据IAP_CONTR = ENABLE_IAP;IAP_CMD = CMD_ERASE;IAP_ADDRL = addr;IAP_ADDRH = addr >> 8;IAP_TRIG = 0x5A;IAP_TRIG = 0xA5;_nop_();IapIdle();}【图片展示】。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【简要说明】
【标注说明】
【接线说明】
【输入控制设备】
【下载说明】
【串口通信说明】
【485通信说明】
【扩展接口说明】(我们会在陆续增加、模拟量输入模块、电流模块、电压模块、无线模块、数码管显示模块、液晶模块、按键模块、PWM模块、模拟量输出模块、wifi模块、CAN模块、IP模块等等。


1、控制板和电脑连接示意图(用于电脑通讯控制或下载程序)
2、控制电源电路解析
3、两块控制板之间通讯的连接示意5、控制板输入外接传感器解析说明
6、输入外接开关接线说明
7、输入控制电路原理解析
【原理图】(提供PDF格式的原理图及PCB图)
免费提供与此工控板有关的:资料、例程、原理图芯片资料、软件。

【尺寸图】
【图片展示】。

相关文档
最新文档