西门子PLC模块遵义授权代理商SIEMENS原装 西门子PLC遵义授权代理商,遵义西门子PLC代理,西门子PLC代理
在组态连接时,应指定通信伙伴和连接类型,以及连接的特殊属性。组态时将为每个连接自动分配一个唯一的“本地标识符”(本地ID)。在调用通信块时,需要使用本地标识符。
3.客户机与服务器
基于连接的通信分为单向通信和双向通信。在双向通信中,通信双方都需要调用通信块,一方调用发送块来发送数据,另一方调用接收块来接收数据。
与双向通信不同,单向通信只需要通信的一方编写通信程序。编写通信程序一方的CPU为客户机(Client),不需编写通信程序一方的CPU为服务器(Server)。客户机是向服务器
请求服务的设备,它是主动的,需要调用通信块对服务器的数据进行读、写操作。服务器是提供特定服务的设备,服务经客户机要求启动。服务器是通信中的被动方,通信功能由它的操作系统执行。
定义数组、结构和字符串
执行菜单命令“视图”→“数据视图”,切换到数据视图方式,将显示数组和结构中各元素的初始值和实际值(见图4-8)
数据块的数据视图显示方式
在数据视图方式,显示变量的初始值和实际值,用户只能修改变量的实际值,修改后需要下载数据块。如果用户输入的实际值与变量的数据类型不符,将用红色显示错误的数据。在数据视图方式,用菜单命令“编辑”→“初始化数据块”,可以恢复变量的初始值。1800
(3)访问数组中的数据
本例中的数组是数据块的一部分,访问数组中的数据时,需要指出数据块和数组的名称,以及数组元素的下标,例如”TANK”.PRESS【2,1】。其中的TANK是数据块DB4的符号名,PRESS是数组的名称,它们用英语的句号分开。方括号中是数组元素的下标,该元素是数组中的第4个元素(见图4-8)。
4. S7通信
S7通信是专为SIMATICS7和C7优化设计的通信协议,提供简明、强有力的通信服务。所有S7和C7PLC都集成了S7通信服务,通过S7服务,用户程序可以读取或改写通信伙伴的数据。S7-300/400PLC广泛地使用S7通信,它主要用于S7-300/400CPU之间的主-主通信、CPU与功能模块(FM)之间、CPU与西门子人机界面TP/OP(触摸屏/操作员面板)和组态软件 WinCC之间的通信。
S7通信可以用于工业以太网、PROFIBUS或MPI网络。这些网络的S7通信的组态和编程方法基本上相同。
S7系统的设备可以实现下列S7功能(与设备的型号有关,有的只能实现部分功能):
1)编程、测试、调试和诊断S7-300/400PLC的全部STEP7在线功能。
2)自动地与HMI(人机界面)交换数据。
3)S7站点之间的数据传输。
一组从站的输出同步与输入冻结
(1)同步输出与解除同步
通常情况下,DP主站周期性地将输出数据发送到DP从站的输出模块上。DP主站调用用SFC11发送SYNC(同步)控制命令,组态的DP从站组中的所有从站将切换到同步模式,DP主站将当前的输出数据发送给从站,并指示相关DP从站冻结各自的输出。DP从站组将主站的输出数据存放在它们的内部缓冲区,将它们送到输出模块,并保持输出状态不变。这样可以同步激活一组DP从站上的输出数据。
每执行一次SYNC控制命令,该组从站将新的输出数据发送到输出模块上。只有用SFC11发送控制命令UNSYNC,才能解除DP从站组的SYNC模式,使该组DP从站返回正常的循环数据传送状态,即DP主站发送的数据立即被传送到从站的输出点。
(2)输人信号的冻结与解除冻结
通常情况下,DP主站按照PROFIBUS-DP的总线周期,周期性地读取DP从站的输入数据,供CPU使用。如果需要得到一组DP从站同一时刻的输入数据,可以通过SFC11将FREEZE(冻结)命令发送到该组DP从站来实现。
当FREEZE命令被发送到一组DP从站时,组内所有的DP从站切换到FREEZE模式,即它们的输入模块上的信号被冻结,并将它们传送到CPU 的过程映像输入区,以便DP主站来读取这些信号。接收到下一个FREEZE命令时,DP从站更新和重新冻结它们的输入数据只有用SFC11发送UNFREEZE命令,才能解除DP从站的FREEZE模式,使DP主站重新开始周期性地接收从站当前的输入状态。
4)读、写别的S7站点的数据,通信伙伴不需要编写通信程序。
5)控制通信伙伴CPU的停止和起动。
6)监视通信伙伴CPU的运行状态。
S7 协议之多组读取
对于很多其他的通信协议,当我们遇到数据变量比较零散,同时读取多个存储区或者一个存储区多个不同部分的时候,我们只能针对每个存储区或者每块区域做一个数据请求,但是西门子S7协议可以解决这样的问题。
西门子S7协议有一个非常强大的一个地方,可以同时读取很多个不同的存储区,*大支持19种,总共读取长度仍然受PDU的限制。
这里我们仍然以实验测试为例,体验多组读取带来的美妙体验。
假设我们的通信组配置如下:
通信组01:读取I区从0开始的1个字节
通信组02:读取Q区从0开始的1个字节
通信组03:读取M区从0开始的200个字节
通信组04:读取M区从500开始的50个字节
通信组05:读取M区从1000开始的60个字节
通信组06:读取DB100从0开始的20个字节
通信组07:读取DB100从20开始的20个字节
通信组08:读取DB100从40开始的20个字节
通信09:读取DB100从60开始的20个字节
我们采用常用S7-1200PLC,通过配置软件实现配置以上9个通信组,开始通信测试,首先我们选择的是单组读取的方式,就是针对每个组,依次进行读取,结果如下,耗时大约200ms,这个时间应该相对来说还是比较正常的。