丽江西门子PLC代理商
西门子S7-200和S7-200SMART的以太网通信都采用S7协议的单向通信,可以作客户机或服务器,每个读操作多传输222字节,每个写操作多传输212字节。
它们在性能上的区别如下:
1)S7-200 SMART的CPU集成了一个以太网接口和RS-485接口。S7-200的以太网通信需要配备一块价格比CPU226还高的CP 243-1以太网模块。
2)S7-200 SMART的以太网接口有一个用于编程计算机的连接,还有8个用于hmi(人机界面)的连接,8个用于以太网设备的主动的GET/PUT连接,和8个被动的GET/PUT连接。上述的25个连接可以同时使用。S7-200SMART与高性价比的SMART 700 HMI配合使用非常方便。
CP 243-1只有一个用于编程计算机的连接,和8个S7连接。
3)S7-200和S7-200 SMART都用向导来组态以太网通信。S7-200 SMART的GET/PUT向导的操作简化到了,S7-200的以太网向导需要多设置十多个参数。
4)S7-200的以太网通信需要调用向导生成的ETH0_CRL,对于每一个连接、连接中的每一个数据传输,都需要调用一次向导生成的子程序ETH0_XFR。
S7-200 SMART的以太网通信只需要调用一次向导生成的NET_EXE子程序。
5)S7-200在以太网通信中作服务器也需要用向导来组态,并调用子程序ETH0_CRL。
而S7-200 SMART作服务器不需要用向导来组态,也不需要调用通信子程序。
6)S7-200SMART之间用以太网通信交换数据不需要附加的硬件成本,比S7-200的网络读写指令的MPI通信的字节数(16字节)和传输速率大得多。S7-200SMART通过以太网还可以与S7-1200和S7-300/400通信
使用高速,以达到节能的目的。在本程序设计中使用昆仑通态MCGS触摸屏进行关联其中M0.0为启动电梯,M0.1停止电梯,M0.2光电感应开关(感应是否有人员乘坐电梯),光电开关检测到有人员乘坐电梯时,启用高速运行,10S内无人员再次乘坐电梯。那么电梯自动从高速切换到低速。
一、PLC程序设计
步:(按下启动按钮M0.0,启动系统标志位,M1.0启动并自锁,Q0.0线圈得电。)
第二步:(当M0.2光电开关感应到信号,启动电机高速输出,Q0.1线圈得电。
在10秒内光电感应开关M0.2没有感应到信号,定时器TON定时时间到,TON的位状态为1,Q0.1电机高速输出断开,定时时间清零。Q0.0线圈得电,电机低速运行。在10秒内光电开关I0.2感应到信号,I0.2常闭触点断开,TO重新计时。)
二、PLC运行演示
步:(电梯启动后,Q0.0线圈得电,电梯以低速运行,用高速的状态控制低速的输出当高速运行时低速断开)
第二步:(光电开关感应带信号,光电开关感应带信号,在10S内光电开关没有被感应到TON状态位变为1高速断开。
在10S内,光电开关感应到信号,定时器重新计时。)
三、昆仑通态 MCGS触摸屏配置与地址关联
步:(双击设备窗口—双击通用TCP属性—本地IP触摸屏地址—远程IP PLC地址)
第二步:(根据PLC地址变量关联地址)
四、昆仑通态触摸屏界面设计,HMI画面设计与演示
步(设计画面如下所示:)
第二步:(演示效果)
来自西门子技术支持热线的故事:S7-200plc中,如何将大于32767的整数转换成正实数?
铃~~~!电话响起------您好!欢迎您拨打西门子技术支持热线。
客户:我这边是个S7-200的PLC系统,226 CN PLC的port0口做modbus主站,读取一个仪表的数据,数据能通信,但是读过来的数据不对。
工程师:根据您的描述,那么应该已经通信上了,我们可以后再排查程序问题。首先请检查接线,引脚3是信号+,引脚8是信号-。
另外,请问有核实两边的数据存储格式是否一致吗?因为西门子plc的数据存储格式是低位高字节,按照以VW0为例,就是高8位为VB0,低8位为VB1.如果仪表那边是高位高字节,即:高8位为VB1,低8位为VB0.那么两边正好相反,即便通信上了,数据对不上是可能的。西门子的低位高字节数据存储格式示意请参见:
客户:好,我先去核实一下。= = = = = =
客户:您好,modbus通信已经没问题了。PLC这边数据已经读取进来,我想问下读到的数应该是什么格式的。我这边一个数65500,PLC这边为什么是负数。
工程师:PLC在程序中监控和运算多是以有符号整数进行的,VW或者VD的高位是符号位,如果对于Word来说,大于32767后数据为负。
通过modbus通信过来的数都是负数是吗?刚才65500的数是多少?除了程序块监控外,状态表在线监控,数据格式选择无符号后数据读取是否正常。
客户:哦,都是大数才为负数,应该是都大于32767的。状态表里譬如VW100吧,无符号数是65500,有符号数是-35,数据格式选择无符号的就正确。
工程师:数据存储实际上都是按照二进制进行的,只是读取它时的数据格式不同而已,您可以在状态表中选择无符号数。
客户:不是啊,我就是要正数。关键是我把这个数转换成实数后还带着负号,我port 1口连了第三方的触摸屏,触摸屏上选择的是实数连接,读上来后屏那边显示的是负数,不行啊。
工程师:嗯~,请问您是怎么进行编程转换的。
客户:我就是先用I_DI,再DI_R。不行啊,大数就错了,小数才不带符号。
工程师:您先别着急,按照正常的编程方式,您的思路是正确的,可对于负数来说就不行了。可以换种思路来考虑,对于word或者d-word的格式来说,数据的高位是符号位。那么我们开始转换成双字的时候,去掉符号就行了。
客户:我也试过,让这个数与16#7F相乘来去掉符号位,那就不对了,数就不对了。你这也不行啊
工程师:请先不要着急,我说的不是这个方法。在转换成双字的时候不要把高位当作符号位,如下图,先来了解符号位的定义:
通过I_DI的转化,实际上是将VW0-VD0,可是如果将VW0直接放在VW2上,同时VW0清0,直接去读取VD0是什么情况?原先VW0中的符号位,在VW2中,并不是VD0的高位即符号位,在VD0里就是数据了。而与此同时,我们去掉了负号是吗。
举例:VW0=65500(无符号整数),经过I_DI给VD10.
对比:VD0,双字转换后的VD10,和仅仅将VW0传送给VW6后的VD4,这几个数的比较,请参见下面的实验结果:
客户:我明白了,是我把问题想复杂了,原来简单的传送就可以解决问题了