西门子S7-200模块6ES7212-1BB23-0XB8
专业销售西门子S7-200/300/400/1200/1500PLC,ET200分布式I/O:ET200S、ET200M、ET200SP、ET200PRO、3RW系列软启动器(3RW30/3RW40/3RW44/3RW31)、3RK系列电机启动器、数控系统、变频器(MM420/MM430/MM440/S110/S120/G120/G120C/V10/V20/V60/V80/V90/G130/G150)、人机界面、触摸屏、伺服、电机、西门子通讯电缆、现场总线、DP接头、工控机,西门子低压电器,仪器仪表等,并可提供西门子维修服务,欢迎来电垂询。
作为****的工业自动化和数字化解决方案提供商,西门子PLC控制器在工业自动化领域具有广泛的应用。作为西门子PLC控制器的全国代理商,我们引入了西门子PLC模块总代理,提供*新的西门子PLC控制器和西门子PLC模块,我们致力于为客户提供*优质的西门子PLC控制器产品,也提供各种控制面板和自动化系统的设计、开发和集成服务,帮助客户提高生产效率和管理效益。
图1为模拟一个油机配电屏控制面,该软件可以对三相输出电压、电流、功率因数这些实时信号进行采集、显示并存储,并对设备的动作状态、故障情况采集到数据库中。该控制面上方有一系列的控制按钮,点击某一按钮就会向下位机发送相应的控制命令,控制下位机动作。
在通信过程中,由于计算机为主机,而plc为从机,plc只有在接收到计算机发送的信息后,才发送数据。计算机发送数据的次数并不是与其接收数据次数是一一对应的,计算机每点击一次发送控制命令的按钮(请参看图1)后,plc就要向计算机传输存于其缓冲区内的所有数据,而每引发一次oncomm事件只能传输8个字节,假如plc的发送缓冲区中一共右50个数据,那么每要求向上传送一次数据,就会相应的引发7次oncomm事件,每引发一次oncomm事件程序就会一直执行到endsub为止。这一点可以通过在发送数据的程序中加入测试语句 “debug.print‘start’",在endsub前加一测试语句“debug.print‘end’"来验证,我们可以清楚的在立即窗口中发现每一个start后有7个end。
6与数据库绑定的控件
采集数据的*终目的不仅要把需要显示的数据(比如:日常量)显示在界面上,还要把数据记录到数据库中,以备日后查询。显示数据的过程很容易实现,就是把接收缓冲区的内容按照事先约定好的顺序依次取出即可。要把数据记录到数据库就需要用到数据库绑定控件,在本工程中用到的是adodc控件,这一控件也不包括在常用的工具框中,仍然要依照加mscomm控件的方法把工具条microsoftado datacontrol6.0(sp4)(oledb)加到工具框中,就可以把这一控件拖入bbbb(在本次工作中把adodc控件放在了程序运行时不显示的查询画面中,这样就可以完成记录到数据库和查询工作)中,通过设定adodc1的connectionbbbbbb(要求与事先建好的数据库所存储的地址相联接)、commandtype(由于要向数据库写入数据要把它设置为2-adcmdtable)以及recordsource(如果的数据库包含多个表,就要选择一个与此adodc1相对应的表)属性(其他属性用默认值即可)就绑定完毕。
在编程序时,可以通过下面的语句把传递上来的信息整理并写进数据库:
if rcv(5) then
with adodc1
.recordset.addnew
.recordset(“设备名称")=“断路器1"
.recordset(“动作状态")=“合"
.recordset(“动作时间")=now
.recordset.update
end with
end if
其中“设备名称"“动作状态"“动作时间"是所绑定的数据库的字段名,等号后面的值是满足条件语句时向所绑定的数据库的相应的字段所加的字段值,在本工程中在数组rcv中暂放了从接收缓冲区中接收到的所有数据,而rcv(5)所放置的是是否合断路器1这个动作信息,约定plc送上来的数据中rcv(5)=1表示合断路器1,有上述语句,其他的动作状态记录、故障状态记录及日常量记录与上述程序几乎相同,由于日常量不需要每时每刻都要记录到数据库,在日常量向数据库写入时用了静态变量count来计时,假如count的值每增加1时间就增加1s,要求每半个小时记录一次,那么就可以用countmod 1800 =0来实现这一时间的控制