PHP+TCP控制开关量继电控制器(设备型号EIO0402)

寻技术 PHP编程 / R语言 2023年07月08日 148

研发的I/O系列采集控制模块,主要用来采集现场的I/O输入信号,并输出I/O控制信号,同时还集合了串口服务器和Modbus网关的功能。产品完全按照工业级标准进行设计,功能强大、抗干扰能力强、防雷击及浪涌冲击,宽电压输入,能够在-40℃~80℃范围内长期稳定工作。

I/O系列采集控制模块,是我公司的明星系列产品,功能强大,应用十分灵活方便:
(1)可通过模块自带串口控制现场其他的串口设备,降低施工费用
(2)可多个模块进行总线组网,使I/O点数得到灵活扩展
(3)可采集现场的I/O输入信号,并输出I/O控制信号
(4)I/O控制同时支持以太网和RS485信号通信方式,支持标准的Modbus协议
(5)I/O信号类型可根据现场需要进行灵活配置
(6)输入支持事件响应,事件支持滤波处理
(7)输出支持初始状态锁定、输出锁定及安全电压设定
(8)两个模块可以在无电脑参与的情况下进行遥控操作,支持一对多或多对一遥控
(9)支持WEB网页和PC软件等多种参数配置方式,配置参数方便灵活
(10)能现场对用户的配置进行测试确保配置正确
(11)可通过远程命令对模块进行控制
(12)集合I/O采集,控制输出,串口服务器,Modbus网关功能于一身
(13)以太网口和串口均可读取并控制I/O状态
(14)数据上报与动作数据自由切换
(15)可在云端直接控制,并可上报自定义内容
(16)10/100M自适应以太网接口,支持动态IP(DHCP)和静态IP
(17)具有自动报告IP的功能,支持在线更新固件

利用PHP控制开关量设备代码:

function tcp($sendStr,$bin,$port){
	
	$host = "10.64.245.200";//串口服务器IP
	//$port 端口

	$socket = socket_create(AF_INET, SOCK_STREAM, getprotobyname("tcp"));  // 创建Socket
	socket_set_option($socket,SOL_SOCKET,SO_RCVTIMEO,array("sec"=>3, "usec"=>0 ) );//接收超时
	socket_set_option($socket,SOL_SOCKET,SO_SNDTIMEO,array("sec"=>1, "usec"=>0 ) );//发送超时

	if (socket_connect($socket, $host, $port)) {  //连接
		socket_write($socket, $sendStr);  // 逐组数据发送
		$receiveStr = '';
		$receiveStr = socket_read($socket, 1024, PHP_BINARY_READ);  // 采用2进制方式接收数据
		
		if ($bin=='1'){
			$receiveStrHex = bin2hex($receiveStr);  // 将2进制数据转换成16进制
		}else{
			$receiveStrHex = $receiveStr;  // 不转
		}
		return $receiveStrHex;//返回的值
	}
	
	socket_close($socket);// 关闭Socket
}

//触发及返回结果
$get_value=tcp($type,$bin,502);//502为开关量控制器的通讯设置---》IO通讯设置----》通讯本地端口:
$json_arr = array('back_status'=>'ok','message'=>$get_value);
echo json_encode($json_arr);

前端按钮(EIO0402设备支持白话协议,这点很方便,不用再为二进制与十六进制转换头疼了):

<input type="button" name="Submit44" class="input1" value="打开所有继电器" onclick="tcp_control('EIO0402','OPENALL','0')"/>
<input type="button" name="Submit55" class="input1" value="关闭所有继电器" onclick="tcp_control('EIO0402','CLOSEALL','0')"/>
关闭

用微信“扫一扫”