论上位机设计与实现(200分)(200分)

  • 主题发起人 主题发起人 cancheung
  • 开始时间 开始时间
C

cancheung

Unregistered / Unconfirmed
GUEST, unregistred user!
讨论关于上位机的设计与实现,包括:
1.如果做活动协议...(可以自定义)
2.如何实现通信与界面分离.
3.多线程如何实现....
4.通信逻辑处理设计......
...............

希望有实践经验的前辈指点....
 
1、所谓协议,只是你自己定义的数据传输格式而已。可能会根据项目的不同,定义自己的数据格式,然后使用通用的协议进行传输。

2、通讯与界面的分离,那你可以参考一些组态软件。使用类似临时表的东西存储下位机读回来的各种状态信息,你的显示和数据处理界面只是针对这个临时表(或者临时数据区)。
这样通讯的部分只管都数据回来,显示部分只管取数据,互不相关。

3、至于线程代码,不需要多说了。
 
以上前两个问题,送你两个字来实现: “接口”
多线程,用很容易,用好不容易,不是一两句话能说清楚,建议找本基础的教材看看吧
 
非常感谢楼上二位大侠.

"接口","分离","活动"一直在脑袋里转.....

"多线程,用很容易,用好不容易"(引用楼上)
我想与下位机通信,只是"读写容易,逻辑处理就不容易了"....

所以加多一点,
4.通信逻辑处理设计......
 
呵呵,可以分成几个模块,设计的优良与否就要看你的功底和经验了。
 
利用一些接口,比如,opc接口,可以读取下位机的任何数据。关于opc你可以查专门的资料,好多组态软件都带有。
 
同zywcd的看法.
 
1.所谓协议,简单的讲就是上位机或者终端如何将得到的数据按照你定义的规则分解,比如一个接收语句可以按照:前导符(#1)+终端地址(0001)+当前的CID+当前的步骤+有效字符串长度+有效字符串+校验+结束符(#2),满足条件就表明该字符串是合法的,否则要么你继续接收并将后面接收的累加(可能接收字符串比较长),要么清空后重新接收;至于终端也类似,但是因为是底层,协议处理也比较复杂,需要你认真全面,不过如果是一般的通用终端就简单一点,因为可能不需要你编写终端程序
2.一般而言,管理软件和通讯软件是不应该合并的,对一个比较成熟的系统来说,最好包括:管理软件(一般客户或者高层管理人员使用),服务软件(界于管理软件和通讯软件之间,通讯软件得到计划需通过服务软件,当然一般简单的系统可以省略),通讯软件(即上位机软件,直接操作终端通讯,可以连接或者断开串口或者终端),终端软件等
3.如果是通过串口编程的话,建议一个串口创建一个线程(可能你会用上Moxa卡,即一种PCI卡,可以模拟多个串口),每个线程根据终端地址类轮巡(发送),可在Your线程.Execute中循环,先接收再发送,别忘记Sleep,接收时根据协议你就可以知道是谁给你发送的,并做相应处理
4.通讯逻辑处理:
RCID: INTEGER; //当前的CID
RSTEP: INTEGER;//当前的步骤
我们根据当前接收到的这两个变量知道你做了什么,然后根据同时得到的信息或者给变量赋值,或者直接跳转到下一步,每个终端类实例记录当前的步骤,发送时发送指定的下一步步骤
总之这是比较复杂的,你最好先从简单的做起
p.RCID := RCID; //接收到的CID
p.RSTEP := RSTEP; //接收到的STEP
p.SendCid := SendCid; //要发送的CID
p.SendStep := SendStep;//要发送的STEP
p.Descript := Descript;//功能描述
 
受教了!!
本人现在做的就是上位软件设计!!
 
另外一个原则,做这样的系统需要可靠性,不需要你使用什么复杂的技术,可靠就好。
 
学习中〉。。
希望讨论可以继续,更加的深入一些〉。。
 
To:all
现在思路越来越清澈了,谢谢各位.

To:dey-999
对第4部分的通讯逻辑处理:能否更深入地谈谈您的见解?期待您的回复.
 
明白一些了
 
不管你怎么做,最主要的是长时间运行不死机.
 
呵呵,在你的帖子上见到新老两个同事:)
 
TO:楼上
既然这么有缘见到你的同事,是否应该给点建议或意见呢??

欢迎继续讨论!
 
多人接受答案了。
 
后退
顶部