发布成功
项目任务是在一块由STC12C5A控制的,带有12个继电器输出和18个输入的控制板上, 开发:
通过485通信的协议控制继电器吸合和断开的软件(需求和协议已规划和整理好)
通过485通信的协议可以修改12个继电器输出和18个输入的对应关系,例如1对1或者1对1、2、18,2对2、17,这样原本按1对应1输出可以修改为1、2、18输出
具体需求稍后上传
开发目标
在发包方提供的基于STC12C5A16S2的继电器板上开发软件
发包方提供材料清单
STC12C5A16S2单片机资料
继电器板
继电器板的原理图
大致功能要求
1. 通过485接口发送私有协议可以读取输入(开关量和触点输入)和输出(继电器)的状态.
2. 输入支持开关量和触点输入
3. 有输入时可以根据对应关系在输出端输出
4. 通过485接口发送私有协议可以更改输入对应输出的对应关系
5. 要求全面引入STC的加密功能, 使烧入的程序不能被破解
6. 发包方可以发布某一个或一串STC ID适用的烧入目标程序或包含目标程序的EXE发布给客户使用而不被破解. 而且这个可以让发包方选择这个EXE是否可以仅在首次运行的这一台PC上运行还是可以在任意多台PC机上运行.
实现方式
通过一张链表来实现, 这张表是一张二维表, 最上面横向是输入序列,最左边纵向是输出序列, 准备通过它们的对应关系来控制输入和输出的对应.
所有的输入和输出状态,以及端口的配置数据全部存在这张表中.
输入和输出的对应关系需要条件和参数传递,应此通过这个表的IF(条件)和Select(参数)链接到另2个表中
表的具体内容请看目录下文件:”链表.xlsx”
程序的模块组成
计划将该程序分为:
1. 输入输出状态读取和控制模块
这个模块负责处理通过485接口发送和接收的输入输出状态读取和控制相关的协议,以及根据协议读取输入和输出状态控制输出的功能.
2. 输入检测模块
这个模块负责处理输入, 它根据一个可以调整检测周期的协议修改后的周期参数,来周期性的检测输入
具体实现:
1.定义一个InterfaceCheckTime变量,用于提供输入处理模块用于检测外部接口的循环周期,InterfaceCheckTime变量的值来源于表的2JKLM
2.为每一个输入定义二个变量,一个叫InxN一个叫InxP,其中X是输入号,InxN用于存储输入的当前值,InxP用于存储输入之前一个监测周期监测的值,InxN和InxP的初始值来源于表的4JKLM,表的初始值始终为0和0,程序运行中InxN和InxP变量的值存在RAM中断电丢失,而不是和表一样放在EPROM中.
3.为每一个输入定义一个变量:InxED,它只有两个值0/1表示打开和关闭,其中X是输入号。
DEL
6.为每一个输入设置一个变量:InXsc,它只有两个值0/1表示开关量输入和触点输入,其中X是输入号。
7.为每一个输入设置一个变量:InXs,它只有两个值0/1表示开关量输入是低电平触发还是高电平触发。
8.为每一个输入设置一个变量:InXc,它只有两个值0/1表示触点输入是前沿触发还是后沿触发。
DEL
程序流程:
1.InputCheckTime变量定义的定时器到时了吗?到了开始读端口高低电平0/1,同时将InputCheckTime重置为2JKLM的值开始递减;没到时不执行继续跳到外部让其他程序执行.
2.进入读取18个输入端口的循环,首先看这个端口的InxED值是否为1(x是端口号),为1说明端口打开,那么就将该端口InXn的值赋予InXp,将这个周期读取的输入寄存器数据赋予InXn,而InxED值是否为0(x是端口号)的说明端口关闭了,不用读取它的值
3.直到把全部18个输入端口的值读取完毕跳出循环
3. 输入确认和对应输出执行模块
这个模块根据输入检测模块提供的数据判断是否有输入, 再根据输入的条件判断是否满足, 然后执行select选择的输出,并根据参数执行相应的延迟和延迟关闭.
具体实现:
1.设置一个循环来处理所有18个输入的处理
2.检查每个输入的InxN和InxP是否不同,不同说明于之前的状态不同意味着该输入端口有输入
3.然后读取InxST的值,看接口是被定义为开关还是触点输入类型
4.如果是开关量的,取出InxN的值,看它是1=高电频还是0=低电频,如果是1就执行J这一列的操作,如果是0就执行K这一列的操作
5.操作步骤:1.首先读取IF里的条件要求,看看是否满足条件(IF条件的处理方式请看IF表单),如果不满足就不执行,如果满足执行表格中对应的左边的输出项目,并携带Select参数执行,执行前判断相应行的IF条件是否满足.
4. 链表
见目录
5. 链表配置协议
再议
1、我爱方案网是会员制服务,服务商通过竞标后即可联系雇主;
2、项目预算与报价不代表最终成交价格,成交价以双方协商为准;
3、平台提供设计项目对接服务,希望促成高效合作,对交易双方不收取佣金,谢谢留意!