quote:以下是引用火麒麟在2011-04-16 11:29:30的发言:quote:以下是引用www123456在2011-04-15 13:06:39的发言:quote:以下是引用血色梦幻在2011-04-15 11:15:04的发言:
1、如果整个控制系统都是siemens的话,还是用S7通信,方便而且可靠!如果控制系统中带有其他的品牌控制的话还是要用TCP/IP的,通用性和速度都比较好了啊!
2、快慢的话是相对了啊!TCP/IP毕竟通用,设备发展的也相对快些;s7稳定性要好但是其发展要慢一些!另外快慢和整个系统配置等多方面都有关系!
3、设置mac、ip是必须的,每台设备相当于一个人一样,都有自己的身份证一样,否则通讯就分不清了,把给张三的数据给李四、王五了系统就乱了啊 !
确实如此,比如编程方式影响也很大,接收块执行速度过慢,发送速度快于接收,所以应保证发送块速度不快于接收速度,即保证均衡“节拍”。例如把发送块放到OB35中执行,接收块放OB1中来提高接收速度,就会减少数据的通信较长延迟,达到最佳效果。
对此保留疑问,发送块放在OB35里?发送完成需要持续几个周期的。另外,通讯的握手方面西门子的例程里都很清晰,只有一个发送任务完成或错误后才激活下一个发送。接收完成且无错后再激活接收,功能块里的send_done,NDR这些参数和状态就是让你处理握手过程的。反正我的发送和接收都是这样处理的,没有用固定脉冲触发。
不知道我理解的对不对,希望高手指教。
的确,我也不喜欢用固定脉冲触发,在STEP7 V5.4 SP3 的帮助中有一个TCP通讯例子,但是在V5.4 SP5中例程却没有了。OB1中例程如下:
CALL FC 5 (
ACT:= M100.0,
ID:= 1,
LADDR:= W#16#100,
SEND:= P#DB100.dbx0.0 BYTE 240,
LEN:= 240,
DONE:= M100.1,
ERROR:= M100.2,
STATUS := MW102 );
R M100.0;
SET;
A M100.1;
JC done;
SET;
A M100.2;
JC err;
BEU;
done: S M100.0; BEU;
err: NOP 1;
NOP 1;
S M100.0;
BEU;
OB100中例程如下
SET
S M100.0
通过以上的TCP发送例程去处理的通讯的话,应比定时脉冲触发要好,但有一个问题,FC5的DONE信号应该是CP发送数据完成信号,就是说接收方确认了发送方的数据。这时候再继续发送下一包数据,就不会产生发送拥堵的情况。呵呵,我觉得这样才能更好的保证发送和接收的平衡。
我觉得例程中对于错误的处理简单了些,比如说对于8302H号错误,说明接收方已经来不及处理发送方的数据了,这时候还要继续发送??这时候应该根据实际各错误代号分别做出处理,或者在界面上提示出错信息,由操作人员要选择处理方法。
管理员注:本帖已被纳入此次探讨发帖整理,请
点此详阅。