You have:
$InsertQuery->bindColumn("modalidad2", "s", "".($modalidadE) ."", "WA_DEFAULT");
Most likely that column doesn't have a default value, so you would need something like:
$InsertQuery->bindColumn("modalidad2", "s", "".($modalidadE) ."", "WA_BLANK");
The other issue is that you must not be getting a value set for $modalidadE. This happens because you have the attribute: readonly="readonly"
When a field is set to readonly it isn't actually submitted with the form. To fix that you could probably use:
<?php
$modalidadE= "Este texto será siempre el mismo";
if(isset($_POST['modalidadE'])){
$modalidadE= $_POST['modalidadE'];} ?>
instead of what you have now:
<?php
if(isset($_POST['modalidadE'])){
$modalidadE= $_POST['modalidadE'];} ?>