四川凉山彝族自治州西门子工控机(授权)总代理 西门子IPC一级经销商
- 供应商
- 广东湘恒智能科技有限公司
- 认证
- 西门子PLC
- 西门子伺服电机
- 西门子触摸屏
- 西门子电缆
- 西门子变频器
- 西门子模块
- 联系电话
- 13510737515
- 手机号
- 13185520415
- 联系人
- 董海波
- 所在地
- 惠州大亚湾澳头石化大道中480号太东天地花园2栋二单元9层01号房(仅限办公)
- 更新时间
- 2024-07-06 07:00
四川凉山彝族自治州西门子工控机(授权)总代理 西门子ipc一级经销商
3.编写轮询程序
所谓轮询就是依次询问,假设我们有3个设备作为modbus从站,从站地址(站号)依次为1,2,3,使用case语句依次对这3个设备进行读写操作,而读出和写入的数据分别存入3套不同的变量当中。
建立设备变量
使用一个结构体来描述一个设备的所有信息,包括5个状态字(states:array[0..4] ofword)和5个控制字(ctrl:array[0..4] of word),将结构体声明为数量为3的数组,存放3个设备的数据。
在整个循环开始前,设定起始设备地址,然后按照“读操作触发,读数据,读设备地址+1,延时,写数据,写操作触发,写设备地址+1,延时”的顺序持续循环,按照设备地址号选择上面的结构体变量:
读操作
istep=0时,关闭读写触发,设定读写设备地址为1;
istep=10时,读操作触发,模块发出读数据命令,模块置位busy信号;
istep=11时,等待读操作完成,模块读到设备数据后会置位done信号,复位busy信号,根据信号状态将读到的数据(read_data)写入设备数据结构体(devicedata.states),如果设备地址=1,则写入devicedata[1].states,设备地址变化,写入的结构体也会相应的变化,保证不同设备的数据不会互相干涉。这里加一个判断,一段时间读不到数据返回10步骤重新进行读操作。
istep=12时,用计数的方式做一个简单的延时功能,避免因读写频率太快导致设备反应不过来。
展开全文