目录
RS-0808-WIFI-5A 网络版8进8出5A开关量模块
KR-0016-WIFI-10A 网络版16路10A开关量输出模块
KR-0016-WIFI-30A 网络版16路30A开关量输出模块
KR系列DI/DO智能控制模块【控制器】采用高性能单片机研发,结合精心研发的内置固件程序使得本系列产品具有性能稳定,功能众多的特点,并支持HDE(Hardware Direct Execution)离线自动控制功能,还可以通过配置不同模块实现RF收发、定时触发等功能。
本系列板卡网络版均支持多并发任务。
应用本系列控制板模块,可以制作出多种产品,如智能家居控制器、交通灯控制器、灯光控制器等。
使用板卡前,请将整个板卡放置于干燥、绝缘的绝缘体上,按板卡背面提示接入电源线及通讯线。如无提示请参考板卡上的LOGO方向,左下角接口为板卡控制模块电源输入接口。接线柱形式为左“+”,右“-”;DC插座形式为内“+”外“-”。
WIFI网络版板卡默认RJ45口地址为192.168.16.254,连接控制模块的网卡地址请将IP地址改为同网段IP,(如192.168.16.250)子网掩码255.255.255.0,网关留空。
WIFI网络模块默认工作在TCP模式,WIFI网络的SSID为HI-LINK_****或者serial****,默认密码为12345678。
正确接线完毕后,请依此将控制模块及电脑启动,启动配套控制软件中的config.exe。
选择相应连接方式并填入对应参数,
模块出厂连接参数为IP:192.168.16.254端口:8080,TCP模式,请确认电脑跟控制模块在同一个网段下并填入对应参数,完成后点击连接,连接成功后点击搜索,相应地址的控制模块则会弹出在左侧设备列表中,证明控制模块已经与电脑正确连接。
注意:板卡地址默认为1,如果一个网络内存在多个地址相同的板卡,只能显示出一个,所以需要多个控制的,请先单独修改地址后再同时接入网络。
WIFI网络版控制器通讯参数:硬件版本为V4的默认通讯参数为IP:192.168.16.254,port:8080,TCP模式。
网络版控制器组网时,需要将其内部网络-串口转换器工作在UDP模式下并连接到可以互访的网络端口下,并保证控制器拥有唯一地址。
WIFI网络版控制器同时拥有IP地址以及控制器设备地址,需要组网时IP地址以及控制器设备地址都需要为唯一地址。
例:两台网络版控制器组网
在组网成功后,通过config程序配置两个控制器之间的相互动作,具体参照软件相关教程。
注意:
控制器地址约定如下:
0地址:控制器自身(本控制器,自控模式使用)
1-254:其他目标控制器(互控模式使用)。
255:广播地址,一条总线上所有控制器(互控模式使用)。
当遭受强烈干扰或程序设置错误时,控制器会出现死机情况,此时需要通过复位操作来重置控制器。
网络复位操作:通电状态下按住Reset按钮10S后重新上电,控制器回复出厂网络设置。
控制器复位:参照串口版控制器复位操作
config.exe是KR系列控制器产品的配置程序,拥有众多的功能选项,可以完成比较复杂的需求,现在我们来仔细分析一下更方面的功能含义。
首先我们先看程序界面:
程序界面中分如下三个功能区:
连接区:
在此区,可以选择是通过串口连接,还是通过TCP或者UDP连接,选择好参数后,点击Connect按钮,即可连接到选择的端口上。
设备列表区:
此区中用来显示搜索到的设备列表,可以同时显示若干个设备。
核心功能区:
通过config软件的属性页面,可以对控制器产品做多种功能配置。
功能解释:
Address:控制器ID,范围可以使1-254中任意数字。
Baud Rate:波特率,仅针对串口或485产品,TCPIP网络类产品无需设置。
Feature Allow:功能许可:
RF:RF功能许可
Power Recovery:断电保持功能许可,开启此功能后,讲启动断电状态保持功能。
状态反馈:
No Answer:不反馈,此选项下,只有向控制器发送查询指令才能获取设备状态。
State Feedback:状态主动反馈,开启此功能后,控制器IO状态变化,就主动反馈到通讯线路上。无特殊需求无需打开,否则容易造成互控设置失败。
Answer:向控制器发送控制命令后,控制器将执行结果反馈至总线。
Run Actuator :自控执行器运行许可【开启此功能,控制器可以执行Program中的程序列表】
Allow DI:允许执行DI作为触发条件的程序部分。
Allow DO:允许执行DO作为触发条件的程序部分。
Alarm Clock Tasks:允许执行定时器(时钟模块)作为触发条件的程序部分。
Allow RF:允许RF射频(遥控器)作为触发条件的程序部分。
RF 1.5s Debounce:RF射频1.5秒消抖。
Timer Vector:允许执行时间向量作为触发条件的程序部分。
示例:
此图的配置含义是:启动控制器断电保持功能,启动状态主动反馈功能,运行执行器,并允许执行器程序中的DI触发条件执行。
每次更改配置后,需要点击右下角的写入按钮【write】,保持配置。
控制器功能属性(只读):
此页面中,描述了控制器的一些特性,其中包括:是否存在DI,是否存在DO,是否存在时钟模块,是否存在扩展存储,是否存在AI,是否存在AO。
DI存在的个数,DO存在的个数,AI存在的个数,AO存在的个数。
ROM版本,控制器温度等信息。
示例:
如图上所示:表示这是一个存在12个输入检测,8个输出,存在时钟模块的控制器。
时钟属性页面(必须存在时钟模块):
此页面中客户获取控制器当前时钟数据与对控制器进行授时等功能。
设备级相关参数:
Pulsate Time:点动的时间间隔,设备点动时间间隔为1秒,通过调整此参数,可以修改设备点动功能的时间间隔。
Heartbeat Time:心跳时间,如果配置了心跳时间,控制器会按心跳时间的间隔回传状态数据,当再次将心跳时间置零后,停止回传。
Access token code:存储部分写密码,如果配置了此密码,所有对控制器内部存储的写操作,都需要鉴权。
Repeat key sequence to allow:在特殊应用场景下,如密码输入时,打开此功能可以允许有重复的键值。
IO控制参数:
IO屏蔽:可以配置IO屏蔽位,将特定的IO失能或者使能。
示例:
如图所示,如果我们配置完数据位,点DO Shield按钮,将屏蔽掉第1-4路继电器,此时被屏蔽的继电器处于失能状态,无法被控制。
如果点DI Shield按钮,将屏蔽掉第1-4路输入检测,此时使用第1-4路输入检测作为触发条件的动作将不能执行,但是上位机查询状态,或者状态主动反馈功能返回输入检测状态时,状态数据依旧有效。
DI控制参数:
DI Sequence Enable:DI序列使能:可以通过配置IO序列位,实现类似于密码键盘的功能。
DI Sequence hold time:DI序列保持时间,超过保持时间DI序列将清零。
示例:
如图所示:上图中表示建立一个以DI 1-6为输入序列的DI序列,这个序列的键值为,01,02,03,04,05,06,对应DI 1-6,可以组成以这6个数字混合的密码键盘等功能,DI序列维持时间为10秒。
DO控制参数:
Output Flip:继电器逆向输出,被设置的指定线路的继电器工作方式将与平时正常的工作方式相反。
Relay Virtualization:继电器虚拟化,被虚拟化后,继电器可能会被重新定位,或者多个继电器虚拟成一个。
示例:
如图所示:上图表示设置第一个继电器的虚拟化,将继电器第3-6路虚拟成第一路继电器,虚拟化后,通过软件控制第一路继电器的时候,将同时控制第3-6路,软件控制第3-6路继电器的时候,将无效,软件控制第2,7-16路继电器将正常控制。
Power Relay Shield:断电保持屏蔽位,被选中的项目,将存在断电保持功能,未选中的无断电保持功能。
示例:
如图所示:上图中的设置,在断电保持启用的情况下,表示第3-6路输出存在断电保持功能,其余线路断电保持功能无效。
Power Recovery:断电保持状态位,可以通过设置断电保持状态位的方法,强制某些位的断电保持状态。
示例:
如图所示:上图表示强制设置DO 1-7路断电保持状态为ON,即将控制器断电再通电,第1-7路将是ON的状态
config软件设备调试界面如下图所示:
扩展功能测试页面:
在此页面中,而已对单路、多路,点动、闪烁功能进行测试以及时间向量、场景、PI、变量等参数进行测试。
RF射频测试页面:
在此页面中,可以对时间向量、RF发射,接收(必须存在RF模块)功能进行测试。
通过Config程序,可以对控制器进行简单的编程,界面如下:
点击Add后,将弹出如下界面:
编程界面,此界面可以分为左右两个区,左边的区里都是触发条件,右边的区里是执行的动作。
触发区内的触发条件可以是:
IO:输入或者输出作为触发条件。
Power ON:上电启动作为触发条件。
Timing:定时任务作为触发条件。【LAN版需要安装电池,其他版本需要时钟模块支持】
RF:射频(遥控器)数据作为触发条件。【需要射频接受模块支持,LAN版无法使用该功能】
Scenes:场景模式作为触发条件
Vector:时间向量作为触发条件。
Timer:每秒或每0.1s时间循环作为触发条件。
Variable:变量作为触发条件。
PI:输入计数器作为触发条件。
Temperature:温度作为触发条件。【需要时钟模块支持,LAN版无法支持】
动作执行区可以配置的执行可以是:
【输出开关控制】
Power ON:打开一路继电器
Power OFF:关闭一路继电器
Pulsate OFF-ON-OFF:继电器以初始状态为OFF,中间状态为ON,最终状态为OFF的方式执行点动。
Pulsate ON-OFF-ON:继电器以初始状态为ON,中间状态为OFF,最终状态为ON的方式执行点动。
Twinkling:闪烁
Bitwise Control:按数据设置继电器状态。
Group Power ON:成组打开继电器。
Group Power OFF:成组关闭继电器。
Group Evert:成组翻转继电器。
【时间向量】
Set Second Vector:设置秒钟时间向量坐标。
Set 100ms Vector:设置100毫秒时间向量坐标。
【变量】
Variable Assignment:变量赋值
Variable Addition:变量增加
Variable Subtraction:变量减少
Variable AND:变量与运算
Variable OR:变量或运算
Variable Copy:变量复制
【发送数据】
Send RF Data:发射RF数据。
Send Data Block:通过数据线路发射预置的数据块(需要扩展存储模块)。
【I/O屏蔽】
DI Shield:DI功能屏蔽。
DO SHield:DO功能屏蔽。
【计时器】
Start/Stop 100ms Timer:100ms计时器启停
Start/Stop 1s Timer:1s计时器启停
带时钟模块的KR系列控制器,可以启动定时任务功能。
功能演示如下:
选择定时触发功能,配置对应的执行动作。
定时触发可以是:
Custom:指定时间
year:每年内的指定时间
month:每月内的指定时间
week:每周内的指定时间
day:每日内的指定时间
hour:每小时内的指定时间
minute:每分钟内的指定时间
KR系列控制器拥有时间向量的功能。
原理如下图:
时间向量的起点为0,终点为65535,将某个时间向量坐标设置为非65535时,此时间向量将自动按照时间间隔单位递增。
使用示例:
如我们有如下需求:
当按下DI1时,翻转第一路继电器,并且启动一个继电器工作序列,过5秒翻转第二路继电器,过20秒翻转第三路,如此循环,我们可以通过以下配置实现此功能。
配置DI1闭合时,翻转第一路继电器。
配置DI1闭合时,重新定义时间向量坐标为0
过5秒后,翻转第二路继电器
过20秒后,翻转第三路继电器。
同时在20秒时,重置时间向量坐标到0,循环第2路与第三路继电器循环。
第一路继电器有用配置的是通过DI触发翻转,所以不会执行时间向量上的翻转循环。
编程需求:对8进8出控制器1对1开关跟随控制编程,如X1闭合,Y1闭合,X1断开,Y1断开,依此类推。
编程实现:本次编程仅需要实现输出跟随输入的通断状态,程序相对简单。
步骤如下
2:添加控制命令:选择Program页面,在表格空白处点击右键→Add【添加】
在弹出编程操作界面trigger中选择:IO→DI trigger - Single-channel mode→Line1,Closure
在右边的Action中选择Power ON,Device ID:0 ,Line:1,点击OK添加。
本条命令的意思是:当输入端1闭合时,打开本机【控制本机的地址一定要是0】的第一路输出。
再添加一条,trigger中选择:IO→DI trigger - Single-channel mode→Line1,Open Circuit
在右边的Action中选择Power OFF,Device ID:0 ,Line:1,点击OK添加。
本条命令的意思是:当输入端1开路时,关闭本机的第一路输出
依次添加完1-8路对应的命令后点击Write写入,完成此次编程设置。
首先在软件安装目录或者绿色版目录中找到主程序Relaymgr.exe,双击启动主程序,进入软件操作界面,如下图(软件不停升级,截图可能有差异):
主要操作模块一共有如下 6 个部分,如下图:
1 连接部分,图中连接区,负责整个系统与设备的连接,连接有两种方式:串口方式、网络方式用户可根据自己手头不同的板卡,选择相应的连接方式。
连接区左侧有个查询指令发送延时,仅用于查询指令,可自定义查询命令的间隔时间。
2 设备分组,此设备分组是整个开关管理的分类(如:按楼层分类,按办公区域分类),在区域内右键,可出现操作选项,如下图:
增加类别:点击此选项,屏幕中间即出现添加分类的窗口,在编辑框中编辑类别,点击确定即完成增加类别。如下图
修改类别:在类别中右键选择相应类别,点击此选项,屏幕中间出现修改分类的窗口,在编辑框中重新编辑类别,点击确定即完成修改类别。如下图
删除类别:在类别中右键选择相应类别,点击此选项,即可删除此类别。
3 输出设备区域,当对设备进行连接之后,此区域即显示所有开关的状态,状态分关闭,开启,未知,三种类别(如图中图例)。在类别中选择相应类别(不可为“所有设备”)。
在此区域内右键,可出现操作选项,如下图:
增加项目:点击此选项,屏幕中间即出现添加设备的窗口,在编辑框中编辑名称、地址(文档最后详细介绍如何编辑地址)、线路(板卡分为1到4 线路与1到16线路两种,可对应板卡上继电器编号进行编辑),点击确定即完成增加项目。如下图
数据项解释:
设备分组:此设备属于哪个分组,为必填项。
设备名称:给要管理的设备定义个名称。设备地址:这个开关所在的板卡地址。设备线路:就是在此板卡上所对应的那一路继电器。默认动作:当执行组操作时,此路开关具体执行的默认动作。点动延时:当点击开关上的点动按钮时,延迟多少秒关闭。启动时运行组:可以选择当此开关处于启动状态是,运行另外一个组。关闭时运行组:可选择此开关处于关闭状态时,运行另外一个组
修改项目:在开关中右键选择相应开关,点击此选项,屏幕中间出现修改项目的窗口,在编
辑框中重新编辑名称、地址、线路,点击确定即完成修改类别。
删除项目:在开关中右键选择相应开关,点击此选项,即可删除此项目。
4 控制模块,如图2绿色区域。此模块为操作所有开关的按钮的集合,如果串口未连接,除“刷新”按钮可用外,其他按钮皆不可用,如图2绿色区域;若连接成功,按钮皆可用,如下图:
刷新:刷新开关状态,显示当前开关状态。启动(单项),关闭(单项):在开关模块中选中想要控制的开关(可多选),点击此按钮,可逐个开关打开与关闭。全部启动(界面),全部关闭(界面):点击此按钮,可打开关闭开关模块中所显示的所有已知的开关。全部启动(板卡),全部关闭(板卡):点击此按钮,可打开关闭串口连接的所有板卡中所有已知的开关。
输入项目区域:此区域各项操作与输出项目区域类似,主要用于输入项目检测
计划任务:
机会任务部分用于定义按钮基于时间的自动执行功能,所有添加的计划任务,都会进入到项目的任务列表,计划任务需要手动启动,否则不会执行,需要点击计划任务的执行任务按钮,已启动计划任务的执行。注意:每次选择别的按钮或者类别时计划任务列表会动态变化,如果不想列表变化,可以再计划任务列表上单击右键,选择锁定列表,列表锁定后,里面的项目就不会随着选择而变化了。计划任务执行是,所执行的条目是已在里面勾选的条目。
系统设置功能:
用户可根据自己需要,定义开关的状态图标。
波特率9600,8个数据位,一个停止位,无校验位。
每个数据帧包含8个字节。
分别是:
数据头(1Byte),地址(1Byte),功能码(1Byte),数据(4Bytes),校验和(1Byte)。
数据头:
一字节 固定为 0x55
目标地址:
一字节 板卡的485地址,16进制,1-255。
功能码:
一字节
数据字节:
四字节,先发送第一字节,然后第二,三,四个字节。
返回数据内容含义:第一、二为为输入,如果目标板卡仅为输入板,或者是PC机发送的控制指令,第一、二字节为0,第三、四字节为继电器状态数据。
控制数据含义见表1。
校验:
一字节,将前面的所有数据相加,取模。
功能码与对应的数据说明(数据为十六进制):
表1:
功能码 |
功能码说明 |
数据内容 |
0x06 |
点动 OFF-ON(按位) |
数据字节: 1:表示组序号(1-16) 2:时间(0-255)0表示关闭该组点动功能 3:线路高字节 4:线路低字节 |
0x07 |
按位闪烁(多路闪烁) |
数据字节: 1:表示组序号(1-16) 2:时间(0-255)0表示关闭该组闪烁功能 3:线路高字节 4:线路低字节 |
0x08 |
点动 ON-OFF(按位) |
数据字节: 1:表示组序号(1-16) 2:时间(0-255)0表示关闭该组点动功能 3:线路高字节 4:线路低字节 |
0x09 |
点动 OFF-ON |
数据字节: 3:时间 4:线路 |
0x10 |
读取当前继电器板的状态 (最多支持16路输入,16路输出) |
返回数据字节: 1:输入检测高字节 2:输入检测低字节 3:继电器状态高字节 4:继电器状态低字节 0xIH,0xIL,0xOH,0xOL |
0x11 |
断开某一路 |
数据字节: 4:线路序号(1-16) |
0x12 |
吸合某一路 |
数据字节: 4:线路序号(1-16) |
0x13 |
按位执行 |
数据中的第3,4个字节,每个字节8位,共16位。代表16路继电器的状态,1代表吸合0代表断开。最后一个字节的第0位代表第一个继电器,依次类推。 |
0x14 |
组断开 |
数据中的第3,4个字节,每个字节8位,共16位。代表16个继电器的操作,1代表断开0代表保持原来状态。最后一个字节的第0位代表第一个继电器,依次类推。 |
0x15 |
组吸合 |
数据中的第3,4个字节,每个字节8位,共16位。代表16个继电器的操作,1代表吸合0代表保持原来状态。最后一个字节的第0位代表第一个继电器,依次类推。 |
0x16 |
组翻转 |
数据中的第3,4个字节,每个字节8位,共16位。代表16个继电器的操作,1代表状态翻转0代表保持原来状态。最后一个字节的第0位代表第一个继电器,依次类推。 |
0x17 |
闪烁(单路) |
数据字节: 3:时间 4:线路 |
0x18 |
点动 ON-OFF |
数据字节: 3:时间 4:线路 |
说明:不同的功能码配合不同的数据内容代表不同的功能。所有的继电器板支持0x10-0x13功能码。
下位机返回只是把上位机发送的数据的数据头由0x55改为0x22,校验和采用新的校验和,其他数据原样返回。
数据头一字节 0x22
本机地址一字节
数据类型一字节0
数据四个字节:
数据0输入状态,高字节,顺序为第16路-第9路,每位代表输入状态,1代表输入有效,0为无效。
数据1输入状态,低字节,顺序为第8路-第1路,每位代表输入状态,1代表输入有效,0为无效。
数据2数据3代表16路继电器的当前状态。
数据2:继电器状态高字节,顺序为第16路-第9路,每位代表输出状态,1代表闭合,0为断开。
数据3:继电器状态低字节,顺序为第8路-第1路,每位代表输出状态,1代表闭合,0为断开。
校验和将前面的所有数据相加得到
上位机发送:
55 01 11 00 00 00 01 68 断开第一路继电器
55 01 11 00 00 00 02 69 断开第二路继电器
55 01 12 00 00 00 01 69 吸合第一路继电器
55 01 12 00 00 00 02 6A 吸合第二路继电器
55 01 13 00 00 55 55 13 按照55 55 两个字节的16个位来打开和关闭所有的继电器
下位机不回答
上位机发送:
55 01 10 00 00 00 00 66 查询当前的继电器状态
下位机回答
22 01 10 IH IL OH OL HH
含义为:
地址为1的继电器板16个继电器的状态用OH OL代表
地址为1的继电器板16个输入检测的状态用IH IL代表
HH代表校验和
(C#语言,伪指令)
publicenumRelayType :uint
{
///<summary>
///开
///</summary>
ON =0x12,
///<summary>
///关
///</summary>
OFF =0x11,
///<summary>
///位控制
///</summary>
BYTECTRL=0x13,
///
///
///
GROUPON=0x15,
GROUPOFF=0x14,
///<summary>
///查询
///</summary>
INQUIRE=0x10
}
publicstaticbyte[] CreateCMD(short _Address, int _Line, RelayType _type)
{
byte[] command = newbyte[8];
command[0] = (byte)ProtocolHead;
command[1] = (byte)(_Address % 256);
command[2] = (byte)_type;
command[3] = 0;
command[4] = 0;
command[5] = (byte)(_Line >> 8);
command[6] = (byte)_Line;
int sum = 0;
for (inti = 0; i<= 6; i++)
{
sum = sum + command[i];
}
command[7] = (byte)(sum % 256);
return command;
}
publicstaticintGetState(byte[] arrRecMsg,int Line)
{
int state = (arrRecMsg[5] << 8) + arrRecMsg[6];
return (state >> (Line - 1)) & 1;
}
publicstaticintGetInputState(byte[] arrRecMsg, int Line)
{
int state = (arrRecMsg[3] << 8) + arrRecMsg[4];
return (state >> (Line - 1)) & 1;
}
privatevoidPowerON()
{
//SendCMD(Address, Line, RelayType.ON); //单路启动
//GroupSelectedSwitch(tems, RelayType.GROUPON); //成组启动
}
privatevoidPowerOFF()
{
//SendCMD(mlvi.uAddress, mlvi.uLine, RelayType.OFF);//单路关闭
//GroupSelectedSwitch(lv_Items.SelectedItems, RelayType.GROUPOFF);//成组关闭
}
///</summary>
///<param name="statemsg">串口收到的字节</param>
privatevoidSetDevState(byte[] statemsg)
{
foreach (Items)
{
//分析输出状态
if (statemsg[1] == item.uAddress)
{
intdevstate = GetState(statemsg, item.uLine);
item.ImageIndex = devstate;
}
}
//分析输入状态
foreach (Items)
{
if (statemsg[1] == item.uAddress)
{
intdevstate = GetInputState(statemsg, item.uLine);
item.ImageIndex = devstate;
}
}
}
modbus控制寄存器地址说明:
功能码01:读线圈状态
地址: 1-16
读16个继电器的当前状态
功能码02:读DI状态
地址: 1-16
读16个DI的当前状态
功能码05写单个线圈
地址: 1-16
设置16个继电器的当前状态
功能码06:写寄存器
注意事项:地址01-16支持单独控制某一个继电器,地址1001-1004支持通过一条指令控制所有继电器
地址:01控制第1个继电器,0断开1吸合2翻转其他不支持
请检查电源电压及极性,控制器默认电压为直流12V,超出电压范围则造成控制器损坏。
请检查电源实际容量是否达标,建议使用12V2A或者标称功率大于15W的电源适配器。
控制器电路板上喷涂有三防漆,请将表笔拧入端子后测量通断。
杭州乾北信息技术有限公司 © 2020. All Rights Reserved. Power by ZKEACMS
Carreygroup menber 浙ICP备14039940号-1 浙公网安备 33010802005579号