内容发布更新时间 : 2024/11/8 18:28:47星期一 下面是文章的全部内容请认真阅读。
串口自定义协议框架说明
概述
串口自定义协议的驱动目前可以支持三个串口同时定制自由协议,分别为Customized UART protocol1,Customized UART protocol2,Customized UART protocol3,可对应三个串口。组态的使用方式同其他的PLC组态方式一样,直接连接屏即可,通过LW和LB寄存器进行数据的交换。
框架说明
串口自定义协议程序的流程图
循环执行ProcessComx
图1
需要用户实现的函数
void ProcessComx(int fd)
调用方式:周期执行,间隔可调用Delay函数来加大循环周期,fd为串口句柄 功能:用户程序的“main函数”
供用户调用的API函数
void Delay(int ms)
功能:用于延迟ProcessComx的运行周期,防止频繁读写,减轻控制器的通信压力 参数:ms的单位为毫秒, 非零
int ReadData(int fd, unsigned char *read_buff, int count, int ms)
功能:从串口读取count个数据,存放在read_buff中。ms是读数据超时时间。 参数:ms的单位为毫秒, 非零
int WriteData(int fd, unsigned char *read_buff, int count)
功能:从串口发送count个数据,发送数据存放在read_buff中。
unsigned short Read_LW(unsigned int n)
功能:读取LWn的寄存器的值 参数:n偏移量,最大为9999
void Write_LW(unsigned int n,unsigned short val) 功能:将val 写入LWn的寄存器
参数:n偏移量、最大8999,val待写入的值
void CopyToLW(unsigned int offset,const void *src, int n)
功能:由src所指的内存区域复制n个字节到Lw_offset所在的内存区域 参数:src和LW_offset所在的内存区域不能重叠
void CopyFromLW(unsigned int offset,const void *src, int n)
功能:由Lw_offset所在的内存区域到src所指的内存区域复制n个字节 参数:src和LW_offset所在的内存区域不能重叠
void SetLBON(unsigned int n) 功能:设置LBn寄存器为1 参数:n偏移量、最大8999
void SetLBOFF(unsigned int n)
功能:设置LBn寄存器为0 参数:n偏移量、最大8999
int GetLB(unsigned int n)
功能:读取LBn寄存器的状态 参数:n偏移量、最大9999
int SetLWBON(unsigned int n, unsigned int offset)
功能:设置LW.b寄存器为1,如设置LW5.4,则n=5,offset=4 参数:n偏移量、最大8999,offset最大为16
int SetLWBOFF(unsigned int n, unsigned int offset)
功能:设置LW.b寄存器为0,如设置LW5.4,则n=5,offset=4 参数:n偏移量、最大8999,offset最大为16
int GetLWB(unsigned int n, unsigned int offset)
功能:读取LW.b寄存器的状态,如设置LW5.4,则n=5,offset=4 参数:n偏移量、最大9999,offset最大为16
如何生成驱动
1. 用全功能版的cygwin覆盖EV5000中的
2. 在cygwin所在目录新建一个名为“customized_driver”文件夹
3. 在custmoized_driver目录下是三个文件夹,分别代表可自定义的三种自由协议