模拟量 AI 采用 SM311 模块是 8x12Bit(8 通道 12 位)对应货号是 6ES7 331-7KF02-OABO,在模数转化上利用传感器或变送器的, 电压或电流取出的值,到 AI 模块上进行转换, 然后把值传给西门子的 CPU 进行处理, 从而检测控制传感器的值,如图:
模拟量输入模块
模拟量输入用于连接电压和电流传感器、 热电耦、电阻和热电阻, 用来实现PLC 与模拟量过程信号的连接。
模拟量输入模块将从过程发送来的模拟信号转换成供 PLC 内部处理用的数字信号。
本次工程用的是 SM311 输入模块如下图所示。该模块具有如下特点:
分辨率为 9 到 15 位+符号位(用于不同的转换时间) ,可设置不同的测量范围。
通过量程模块可以机械调整电流 /电压的基本测量范围。
用 STEP 7硬件组态工具可进行微调。模块把诊断和超限中断发送到可编程控制器的 CPU 中。
模块向 CPU 发送详细的诊断信息。
模拟量输入模块的接线方式
两线制电流和四线制电流都只有两根信号线, 它们之间的主要区别在于:两线制电流的两根信号线既要给传感器或者变送器供电,又要提供电流信号 ;而四线制电流的两根信号线只提供电流信号。
因此,通常提供两线制电流信号的传感器或者变送器是无源的 ;而提供四线制电流信号的传棚宴感器或者变送器是有源的。
因此,棚盯当 PLC 的模板输入通道设定为连接四线制传感器时, PLC 只从模板通道的端子上采集模拟信号, 如图 2-3,而当 PLC 的模板输入通道设定为连接二线制传感器时,如图 2-2,PLC 的模拟输入模板的通道上还要向外输出一个直流 24V的电源,以驱动两线制传感器工作。
传感器型号
◆两线制 (本身需要供给 24vDC 电源的,输出信号为 4-20MA ,电流)即+接 24vdc,负输出 4-20mA 电流。
◆四线制 (有自己的供电电源, 一般是 220vac ,信号线输出 +为 4-20ma 正,-为 4-20ma负。
01、(以 2 正、 3 负为例 ),两线制时正极 2 输出 24VDC 电压, 3 接收电流 ,所以遇到两线制传感器时, 一种接法是 2 接传感器正, 3 接传感器负 ;跳线为两线制电流信号。二种接法是 2 悬空,3 接传感器的负,同时传感器正要接柜内 24vdc;跳线为两线制电流信号。
02、(以 2 正、3 负为例 ),四线制时正极 2 是接收电流, 3 是负极。(四线制好处是传感器负极信号与柜内 M 为不同电平时不会影响精度很大链和和,因为是传感器本身电流的回路 )遇到四线制传感器时,一种方法是 2 接传感器正, 3 接传感器负,plc 跳线为 4 线制电流。
“传感器正与 plc 的 3 相连, 2 悬空,跳线为两线制电流。”此条在四线制和二线制传感器均适用,大家可以自己试验,好用的顶起来。
03、(以 2 正、3 负为例 ),四线制传感器与 plc 两线制跳线接法:信号线负与柜内 M 线相连。将传感器正与 plc 的 3 相连, 2 悬空,跳线为两线制电流。
04、(以 2 正、3 负为例),电压信号:2 接传感器正, 3 接传感器负, plc 跳线为电压信号。
量程卡的设置
量程卡 在模板的左侧装有量程卡,允许的设置为“ A”,“B”,“C”和“ D”,分别适用于不同的测量的类型和范围。在安装模板前必须正确地设置它。
没有量程卡的模拟量模板具有适应电压和电流测量的不同接线端子,这样,通过正确地连接有关端子可以设置测量的类型。
可以用WinApi实现,需要包含windows.h。
需要两个模块,一个是检测回车键的模块,一个是模拟输入指令的模块。
检测回车键,有两个函数可以用: GetKeyState和GetAsyncKeyState,两个函数的参数都是虚拟键码,虚拟键码可以在网站上查询:虚拟键码 | Microsoft Learn
两个函数的返回值相同:返回一个short型的数,short型是16位有符号的数据类型,如果要查询的键被按下,返回值最高位被置1,则这个数表示负数,所以可以用<0或>0来判断。
两个函数的区别扰饥孝在于,GetKeyState返回的不是键盘真实状态,而是程序获得的键盘消息。简单地说,如果程序没有获得焦点,则无法获得按键信息,返回的是没有按键的状态。而GetAsyncKeyState返回的是按键的真实状态。
将GetAsyncKeyState放入循环,每次循环检测有没有按下回车键,如果按下则模拟输入指令;每次循环后Sleep一段时间,节约系统资源。
模拟输入指令同样有两种方法:向指定窗口发送按键信息sendMessage和模拟按键
由于我测试的软件无法用第一个方法,我只介绍第二个方法。
模拟按键就像真实按键一样,只有目标窗口获得焦点时,按键信息才会被目标窗口接收到。因此,一方面,程序不能获得焦点,只能用GetAsyncKeyState函数;另一方面,我们需要让目标窗口获得焦点。
让目标窗口获得焦点。最简单的方法是手动 *** 作,点击一下。当然也可以用FindWindow函数,或者由程序启动目标程序并获得句柄,然后调用winapi使其获得焦点。由于需求是按回车键开始模拟按键,手动 *** 作即可,这里不多赘述。
模拟按键一般使用函数Keybd_event。函数有4个参数肢缓,一般情况下,第2、4个参数置0即可,第1个参数是按键的虚拟键码,第3个参数是按键状态,0是按下,KEYEVENTF_KEYUP是抬缓稿起。注意按下和抬起之间建议Sleep几毫秒,否则目标窗口可能无法获取到按键信息。
模拟鼠标点击一般使用mouse_event,一般与SetCursorPos(x,y)函数一起使用。与Keybd_event类似,mouse_event有5个参数。第1个为dwFlags,如下图。第2、3个参数分别表示鼠标的相对位置,一般置0。第4个参数是dwData,滚轮移动数量,正值向前,负值向后。第5个参数一般置0。
使用方法与Keybd_event函数相似。用SetCursorPos(x,y)函数将鼠标光标移到指定位置(距离屏幕左边x,距离屏幕上边y),用mouse_event模拟鼠标点击。也可以先用mouse_event鼠标按下后,再用SetCursorPos(x,y)模拟鼠标拖动。最好中间也Sleep几毫秒。
请点击输入图片描述
GetKeyState_百度百科
GetAsyncKeyState_百度百科
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)