发表于:2009-11-23 23:23:46
楼主
S7-200通信编程
1.引言
可编程控制器(简称PLC)作为新型的工业控制计算机,以其程序设计简单,改变程序灵活方便,通用性好,可靠性高,能在恶劣的工业环境下长期工作等显著特点,已广泛地应用于工业自动化控制的各个领域。目前功能较强的PLC已从早期的单一逻辑控制功能,发展到不仅能够实现开关量的实时处理,而且还能够实时处理各类模拟量,实现浮点运算和PID调节,并且还具有较强的通信功能,可以组成不同规模的适应工业环境的实时网络系统。
2.正文
S7-200系列通信模式有两种:一种是点对点(PPI)通信协议,用于PLC与其编程器或西门子公司的人机接口产品之间的通信;另一种是对用户完全开放的自由口模式(free port mode),由用户自行规定通信的协议.PPI模式只能在PLC停止方式(STOP)下通信,而自由口模式只能在PLC运行方式(RUN)下通信。我们通常采用自由口通信方式。
在进行通信之前,应先对串口初始化。对S7-200 PLC的初始化是通过设置特殊标志位SMB30来实现的。对于发送,S7-200系列PLC有专门的发送指令用于发送数据,格式为: XMT TABLE PORT。 TABLE为发送数据的字节数即数据长度,最大为255。而要发送的数据必须存储在TABLE的后面。例如,TABLE的存储区域为VB100,要发送“ABC”三个字符,存储格式应为图1所示。PORT指定通信口,必须为0;当正在发送数据时,PLC特殊标志位SM4.5为0,发送完后,SM4.5为1。因此可通过判断SM4.5的状态来进行发送后处理。
对于接收,S7-200没有专门的接收指令,它是通过读特殊标志位符一个一个由SMB2送入接收数据存储区,所以在成批传送数据时应注意频率。如果上位机发送太快,下位机来不及取走SMB2中的字符时,下一个到达的字符将会冲掉尚未取走的字符。下位机接收数据还存在一个问题,就是如何知道已经收到了数据。这里S7-200 PLC提供了一个接收中断,每接受一个字符产生一次中断。中断事件号为8。这样我们就可以编一段中断程序,用来处理接受到的字符。中断程序应短一些。在实际应用中,我们只在中断程序中设置一个标志位,而把字符处理放在中断程序之外。图2给出通信流程图,及已调试通过的部分程序附在结尾。