桥接模式下EPICS与电脑主机建立TCP连接

1 IP参数配置

为了使win10端的网络调试助手与EPICS成功通信,在配置好Vmware虚拟机的桥接网络设置后,对EPICS的IOC配置进行更改,将IOC的st.cmd中的PS1设备IP地址更改为win10端的网络IP地址:

 Centos-EPICS端IP:192.168.1.5  电脑主机端IP:192.168.1.2

2网络通信实验

重新编译IOC以后执行./st.cmd

同时在电脑主机win10端打开网络调试助手,设置通信协议为TCP Server,端口号为8000:

 

 相当于用电脑模拟温度流量检测设备,作为TCP服务器上传数据给EPICS。

通信结果:

 主机端网络调试助手与虚拟机EPICS系统通信

可见通信成功,EPICS向网络调试助手发送符合协议设置的帧数据。

3自定义通信协议实验

更改proto文件的数据通信格式:

 结合db文件中record写法:

 通信流程:

  1. EPICS与PS1:192.168.1.2:8000设备连接后;
  2. EPICS的GetVol端口请求电压数据获取,发送0xAA 0x01 0xFF.其中AA为帧头、FF为帧尾,01代表请求电压数据;
  3. 温度流量检测计(网络通信助手模拟)在接收到电压读请求后发送0xAA 0x01 “%R” 0xFF.共7个字节,其中AA为帧头、FF为帧尾,01代表请求电压数据,“%R”代表单精度浮点数。
  4. 此时EPICS将接收到的单精度浮点电压数据“%R”更新到yyling:voltage:ai节点中。

4数据编码方法

不区分单精度/双精度或整型/短整型/长整型。

 (1)%r:将整型数据直接转化成十六进制数后,直接发送。(可以用计算器算。)

示例中2是指发出去的十六进制数占2个字节(不足时补零,超出时舍弃高位溢出部分)(默认值是1),0是无符号标志。

 (2)%R:将浮点数按照IEEE754编码后发送。(IEEE 754单精度浮点数转十进制 / 十进制转单精度浮点数 / 在线转换

默认按单精度浮点数转换,因此发送4字节。(我不知道师姐为啥都是写的"%0.4R",抓包显示和"%R"结果是一样的,官方介绍里面也没有提到这样的写法,所以我觉得想要按照单精度浮点数转换的话直接写"%R"就可以了。)

 (3)%f:将浮点数转换成ASCII码发送。(http://www.ab126.com/goju/1711.html

%5.2f:5指整个数占5个字节(包括小数点),2值小数点后保留2位,即小数点后占2个字节。此时3.9发送时作为“03.90”来编码发送,即30332e3930。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值